Redis Core, I/O, Transaction, Lock

DataBase/NoSQL 2023. 6. 3. 04:01

Redis Core Redis 는 기본적으로 싱글 스레드 모델을 사용하는 데이터베이스이다. 한번에 하나의 명령어만 처리할 수 있음을 뜻한다. 따라서, 하나의 연산에 대해 원자성을 보장할 수 있다. 조금 다르게 말하면, 병렬성(Parallelism) 없이 작업이 진행되고 동시성(Concurrency)으로 처리된다. 참고> 병렬성: 한 번에 여러가지 일을 처리 동시성: 한 번에 한가지 일을 하지만, 여러 가지 일을 돌아가면서 처리 (각각 GPU 와 CPU 를 연상해보자..) 따라서, 단일 연산에 대해 동시성 문제가 없다. 그래서 단일 연산에 대해 복잡한 동기화와 락 설정을 걱정하지 않아도 된다. 그러나, 하나의 Value에 대해 여러 연산(조회 후, 업데이트 등)을 처리함에 있어서 분산 환경일 경우 원자성..

Redis Data Type 3

DataBase/NoSQL 2023. 6. 2. 21:47

Redis 가 제공하는 Data Type 종류에 대해 계속 알아보겠다. 5. Sorted Set (ZSets) 하나의 Key 에 Value 로는 정렬된 데이터 집합으로 이루어진 형태이다. -> Key 는 변수이고, Value 는 C++ 의 set 이라 생각하면 편하다. -> 그런데 차이점은, Value 에 각 데이터들은 score 라는 값(숫자)이 존재하고 이를 바탕으로 정렬한다. (각 데이터는 member 로 불린다.) 특징 1. Redis 의 Sets 와 유사하게 유니크한 값의 집합이다. 2. 정렬된 상태를 유지한다. -> 최소/최대 값을 빠르게 조회할 수 있다. 3. 활용 랭킹(리더 보드) 기능에 활용 가능하다. 4. 대표적 명령어 명령어 기능 ZADD [Key] [Score] [Member] [S..

Article Thumbnail
Redis Data Type 2

DataBase/NoSQL 2023. 6. 2. 13:04

Redis 가 지원하는 Data Type 에 대해서 계속 알아보자.. 3. Sets Lists 와 동일하게 Key 하나에 Value 가 여러개의 집합으로 이루어져 있다. Value 만을 본다면, C++ 에서 unordered_set 과 비슷한 역할이다. 특징 1. 순서가 없고 유니크한 값의 집합 2. 개별 접근을 위한 인덱스가 존재하지 않지만, 개별 값의 존재 여부는 빠르게 체크 할 수 있다. 3. 집합 연산이 존재한다. (합집합, 교집합 등) 4. 활용 알고리즘 Union, Hash Table, Hash Set 등에 해당되는 모든 상황에서 활용가능하다. > 특정 시간동안 유저 한명 당 한번의 유효한 쿠폰을 발급하는 요구사항이 있을 때, 개발자는 Redis 의 Sets 를 사용할 수 있다. 특정 시간동안..

Article Thumbnail
Redis Data Type 1

DataBase/NoSQL 2023. 6. 2. 01:07

Redis 는 Key-Value store 이다. 이때, Value 에 해당하는 부분에서 다양한 데이터 구조를 지원한다. 하나씩 살펴보자.. 1. Strings Key 하나에 Value 는 문자열에 해당된다. 특징 1. 문자열을 저장할 때, Byte 배열로 저장된다. -> 따라서, 바이너리로 표현가능한 모든 데이터를 저장할 수 있다. (Binary-Safe) -> 주로 캐시에서 이용되며, 이를 이용해서 정적 웹 컨텐츠(HTML, JPG, JSON 등)들을 저장 2. 문자열에 저장할 수 있는 최대 크기는 512MB 이다. 3. 대표 명령어 명령어 기능 SET [Key] [Value] GET [Key] 해당 키에 문자열 값을 저장하고 반환 받는다. 덮어쓰기 가능 SET [Key] [Value] EX [Sec..

Article Thumbnail
Redis 시작해보기

DataBase/NoSQL 2023. 6. 1. 22:30

Redis 는 가장 대표적인 NoSQL 의 Key-Value 모델을 따르는 저장소이다. -> Hash Map 이라 생각해보자.. 간단하게 알아보는 대표적 특징 1. In-memory 저장소로 아주 빠른 접근 속도를 제공한다. 2. 세션 관리나 캐시 등의 목적으로 자주 사용된다. 3. Key-Value Store 이므로, 분산 환경을 제공하여 데이터 관점의 Shard(Cluster, Scale-Out) 가 가능하다. (물론, HA를 위한 Replica, Sentinel 개념도 존재) 4. Key 를 통해서만 값을 읽을 수 있다. (Value 단독 조회 불가능) 5. 범위 조회 등의 복잡한 질의 불가능 6. In-Memory 데이터를 주기적으로 디스크에 스냅샷으로 저장(RDB)하거나, 모든 변경을 로그 파..

MongoDB Sharded Cluster

DataBase/NoSQL 2023. 6. 1. 21:17

이번 포스트에서는 MongoDB 의 Sharded Cluster 배포 형태에 대해 알아보겠다. 사용 목적 Sharded Cluster 의 사용 목적은 다음 상황에 적절하다... 기존에 Replica Set 을 잘 이용하고 있다가.. 서비스가 잘 커서 MongoDB 에 많은 양의 데이터가 추가 되어 더이상 감당 할 수 없게 되었다.. 이 때, Sharding 을 통해 데이터를 샤드 키로 분산하여 여러개의 Replica Set 묶음으로 적재 할 수 있도록 할 수 있다. 아래 그림을 통하여 더 자세히 알아보도록 하자.. 위 그림은 대표적인 MongoDB 의 Sharded Cluster 형태를 나타낸다. 각 샤드는 내부에서 Replica Set 을 이루고 있다. Application 은 mongos 라는 라우터..

Article Thumbnail