일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- Container
- JPA
- mysql
- CI/CD
- 컨테이너
- 스프링 시큐리티
- Spring
- computer science
- Hackathon
- 자바
- 가상화
- 영속성 컨텍스트
- 스프링
- 웹 서버
- 도커
- 배포
- 스프링 배치
- 스프링 부트
- spring boot
- spring cloud
- Spring Security
- CS
- vm
- 백엔드
- virtualization
- ORM
- 해커톤
- Redis
- 데이터베이스
- Java
- Today
- Total
목록Computer Science/Database (11)
개발 일기
만약 RAM보다 더 큰 데이터가 Redis에 저장될때이 전에도 다뤘듯이 레디스는 C언어 코드로 작성된 In-memory cache 솔루션이며 caching, 세션 관리, pub/sub, 순위표, 처리율 제한(sorted set) 등 다양한 곳에 활용되지만 In-memory cache답게 시스템 성능을 높이기 위해 캐시 시스템으로 많이 사용된다. 이때, 어쨋든 물리적인 RAM 용량은 한정되어 있을텐데 이 RAM이 부족하면 어떻게 될까?OS가 더 이상 메모리를 못 주면 Redis가 “Redis: OOM(Out of memory) command not allowed when used memory than‘maxmemory’” 에러를 일으킨다고 한다. 그런데 이때 만약 Swap 메모리 설정 시, 메모리가 부족하..

최근에 Redis Cluster CLI 툴을 개발해봤는데 Redis Cluster에 대해 조금 더 깊이 이해해보고자 작성하려고 한다. LY Corporation Tech Blog의 글을 참고해서 현업에서 어떻게 하는지 대략 알아보고 구체적으로 뜯어보고자 한다.해당 글 작성자를 그냥 개발자님이라고 칭하겠다.장애 발생?개발자님께서는 입사 초기 팀원들 그리고 일을 하면서 뼈저리게 느끼는 부분이 "장애는 언제든지 발생할 수 있다는 점"이라고 한다.SW라면 개발 능력의 범주 안에서 직접 트러블 슈팅을 하거나 리소스를 많이 사용한다면 로직을 개선하며 최적화하는 등을 할 수 있지만,HW를 구성하는 CPU, RAM 등 부품 중 어느 하나라도 문제가 발생하면 PM(Physical Machine) 혹은 HV(Hypervi..

https://ai-back-end.tistory.com/176 [Redis] Redis 뜯어보기 1 - 내부 구조 및 동작 방식(feat. I/O-Multiplexing)https://ai-back-end.tistory.com/98 [Redis] Redis(Remote Dictionary Server) 이해하고 사용하기OAuth2.0+JWT에서 Refresh Token을 백엔드 단에서 소유하고 있기 위해 Redis에 저장했다. 그냥 다들 그렇게하니까 그렇게 처리ai-back-end.tistory.comRedis 프로세스가 어떻게 명령어를 받고 처리하는지에 대해서 알아봤었는데 이번에는 Redis하면 빠질 수 없는 Pub/Sub에 대해서 알아보려고한다.https://www.youtube.com/watch?..

이전 글에서는 Redis가 클라이언트로부터 들어오는 명령어를 독립적으로 처리하거나, 파이프라인으로 한 번에 받더라도 I/O 멀티플렉싱을 통해 싱글 스레드에서 처리하는 구조를 살펴봤습니다. 이번 글에서는 소켓으로 들어온 명령어가 파싱된 이후 Redis 내부에서 어떻게 처리되는지, processCommand()를 중심으로 자세히 들여다보겠다.Redis 명령어 처리 및 전파 흐름시작에 앞서 전체적인 흐름은입력 버퍼에서 명령어를 파싱 → 타입별 Command 함수 호출 → DB 접근 → 클라이언트 응답 → AOF/Replication 전파Redis에서 클라이언트 명령어가 들어오면, 싱글 스레드 기반의 이벤트 루프가 이를 I/O Multiplexing을 통해 처리한다.전체 흐름을 단계별로 보면 다음과 같다. 첫번..

https://ai-back-end.tistory.com/98 [Redis] Redis(Remote Dictionary Server) 이해하고 사용하기OAuth2.0+JWT에서 Refresh Token을 백엔드 단에서 소유하고 있기 위해 Redis에 저장했다. 그냥 다들 그렇게하니까 그렇게 처리해봤는데 정확히 알고 쓴다는 느낌이 없어서 이번 기회에 Redis에 대해 이해ai-back-end.tistory.com 작년 9월에 한 번 Redis에 대해 공부했지만, 이제는 Redis와 더 친숙해졌고 어떨때 사용되는지 더 와닿고 있는데, 그래서 이번에는 단순한 사용법이 아니라 내부 동작 원리까지 깊게 이해하고자 합니다.최근 SLASH 23 - 실시간 시세 데이터 안전하고 빠르게 처리하기 영상을 보았는데, 발표자..

드링크리 프로젝트에서는 가게(Store) 정보를 관리하는 과정에서 가게에 등록된 여러 개의 이미지를 저장해야 했고 이를 위해 store_image 테이블을 별도로 분리하여 관리하기로 했다.id이미지의 고유 ID (PK)store_id가게 ID (FK)storeImageUrl이미지 URLstoreImageType이미지 타입 (메뉴, 내부, 기타 등)storeImageDescription이미지 설명이때, 특정 가게(store_id)에 속한 이미지를 빠르게 조회해야 하는 경우가 많기 때문에 MySQL Index를 적용해서 기존 방식과 성능 비교를 해보기로 했다. 조금 더 구체적으로 왜 인덱스를 도입하고자 하는지 정리해보겠다. 왜 인덱스를 도입하고자 하는가?100만 건 이상의 데이터에서 인덱스 기준이 하나도 잡..
SQLD를 공부했었는데 그때 윈도우 함수에 대해 제대로 이해하지 못하고 통과 해버린 것 같았다.SQL을 공부하면서 뭔가 그룹을 지어서 그 그룹에 대한 통계를 내는 용도로 쓰이는 걸 봤는데 GROUP BY랑 도대체 뭐가 잘 알지 못했다.그래서 도대체 뭐가 다른지 그리고 어떻게 쓰이는지에 대해 간단히 정리해보게 됐다.윈도우 함수(Window Function)SQL의 윈도우 함수란 행과 행 간을 비교, 연산, 정의하기 위한 함수이다. 분석함수 또는 순위함수라고 하기도 한다. 다른 함수들처럼 중첩해서 사용할 수는 없지만 서브쿼리에서는 사용가능하다.❓그래서 GROUP BY랑 뭐가 다른데?가장 큰 차이는 아마 결과(출력) 방식. 즉, 데이터의 유지 방식인 것 같다.조금 더 풀어서 설명해보자면 GROUP BY의 경우..

채팅 데이터를 저장하기 위해 NoSQL을 사용해야겠다는 판단이 들어 Dynamo DB는 유료라 래퍼런스가 많은 Mongo DB를 한번 부트 프로젝트와 연결하기 위해 Mongo DB에 대해서 정리해보게 됐다.Mongo DB 대용량 데이터를 처리할 때 우수한 성능을 발휘하는 고성능, 고가용성 및 쉬운 확장성을 제공하는 NoSQL 데이터베이스이다.Document-Oriented 지향➜ 데이터를 배열 및 중첩 Document와 같은 복잡한 데이터 유형을 효율적으로 저장할 수 있는 유연한 JSON과 유사한 형식인 BSON(Binary JSON)으로 저장하여 각 문서는 고유의 스키마를 가지므로, 서로 다른 구조의 문서를 하나의 컬렉션에 저장Schema-less관계형 데이터베이스와 같이 트랜잭션(roll-back, ..