본문 바로가기

IT/Database5

MCC (Multiversion Concurrency Control) 이번 포스팅에서는 MVCC라는 단어에 대한 개념을 정리해보려고 한다.MCC는 Multiversion Concurrency Control로 MVCC라고도 한다. 단어에서도 어림짐작 할 수 있듯이 여러 버전을 동시에 제어하는 것이다. 예시에 보았듯이, MCC 또는 MVCC는 DBMS에서 동시에 들어오는 요청을 제어 할 수 있도록 사용하는 일반적인 방식이다. 사실 동시 제어를 가장 간단하게 하는 방법은 쓰기 작업이 끝날때까지 대기하고 이후 읽는 것인데 이 방법은 사용자를 오랫동안 기다리게 할 수 있다.때문에 MCC는 각 요청 마다 동일한 데이터지만 버전이 다른 스냅샷(해당 시점의 데이터)를 가진 뒤, 스냅샷의 데이터가 수정되면 또 다른 버전을 만들고 이전 버전은 주기적으로 삭제*한다. 때문에 읽고 있는 스냅샷.. 2019. 2. 19.
[Redis] Cluster Redirection RedirectionClient는 모든 Cluster Node에게 요청 메시지(Query)를 보낼 수 있다. (Master, Slave 다 포함해서)이전 포스팅에서도 언급했지만 Cluster Node는 Cluster 내의 모든 Node와 통신을 하기 때문에, 즉 각 Node의 상태를 알고 있기 때문에 Client가 어떤 Node에 접근하든 상관하지 않는다.다만, Redis Cluster가 Hash Slot을 사용하기 때문에 요청 메시지의 Key 값이 접근하는 Node 에 존재하지 않을 수 있다.이런 경우에 요청 받은 Node는 Node Map을 확인하고 MOVED 에러를 발생시킨다. 그림 1. MOVED Error 위 그림 1을 확인해보자.Redis Client가 Node 0에 접근하여 Slot 1에 해.. 2019. 1. 6.
[Redis] Cluster Overview Redis ClusterRedis에서 사용하는 Cluster 즉, Clustering은 데이터를 분산시키는 방법이다. (분산 시스템처럼)때문에 Redis에서는 한 곳의 Node 자원만 사용하는 것이 아닌 다른 Node 자원 또한 사용하여 전체 computing 자원을 최대한 사용하려 한다. 그림 1. Redis Cluster (+ Node 1과 통신 환경) Redis Cluster를 간략하게 그린 그림 1을 보면 computing 자원을 최대한 사용한다는 의미를 알 수 있다. 예를 들어 각각의 Computer가 64GB의 메모리를 가진다면 총 10 대의 Computer라고 가정했을 때 우리는 최대 640GB의 메모리를 사용 할 수 있다.그림 1로 따진다면 우리는 최대 256(64 * 4)GB를 사용 할 .. 2019. 1. 6.
[Redis] Partitioning *https://redis.io/topics/partitioning해당 포스트는 위의 URL을 번역(의역)한 것입니다. 파티셔닝(Partitioning)은 여러 개의 Redis 인스턴스에 데이터를 나누는 과정이다. 그래서 모든 인스턴스는 키의 여느 부분(subset) 정도*는 가지고 있다.이 문서에서는 파티셔닝에 대한 개념을 설명하고, Redis 파티셔닝 방법을 소개할 것이다.*사용자의 데이터를 각 인스턴스에 나누기 때문에, 각 인스턴스는 전체 데이터의 키의 부분을 어느 정도 가지고 있다는 의미 왜 파티셔닝이 유용한 것일까?Redis의 파티셔닝은 2가지 주요한 목적이 있다.- 파티셔닝은 다른 인스턴스들의 메모리를 사용하기 때문에 더 많은 데이터를 저장 할 수 있다. ## 파티셔닝이 없으면 단일 인스턴스로.. 2018. 12. 10.