이번에 구매한 빅데이터 시대를 위한 NoSQL 핵심가이드를 보면서
책 내용중에 알아두어야 할 것들 적어 봅니다.
먼저 Memcached는 단독으로 replication을 지원하지 않는다.
repcached를 이용하여, 이중화 가능하니 알아두어야 할것 같다.
memcached는 데이터의 영속성을 가지고 있지 않으며, 데이터가 휘발성이므로
이를 보완하기 위한 제품들이 있으며, Tokyo tyrant라는 영속성 key-value형 store가 있으나
일본사람이 개발한 것이며, 데이터를 디스크에 저장하면서 memcached의 빠른 처리도 가능하나
많이 알려지지 않았으며 일본에서만 많이 사용한다고 한다. 그냥 이런게 있다는 정도만 알면
될것 같다.
redis는 salvatore sanfilippo가 개발한 오픈소스 소프트웨어 이며, 휘발성이면서 영속성을 가지고
있어 NoSQL 데이터베이스 중 memcached와 tokyo tyrant사이에 위치해 있는 key-value형 스토어
라고 이책에서는 설명하고 있다.
memcached는 배열형식의 데이터를 시리얼라이즈화 하여 처리하도록 해서 응답속도를 높일수
있지만 배열형식의 데이터를 다룰때 데이터 정합성에 주의를 기울여야 한다고 표현하였다.
이유인 즉슨 처리는 빠르지만 읽고 갱신하고 입력하는 사이에 다른 요청이 있을시에 atomic한
처리를 일반적으로 보장해주지 않아서 이다.
그래서 CAS(Check and Set)라는 조작을 통해 정합성을 보장하여야 한다.
데이터를 읽어 올때 cas id를 같이 불러와 현재 해당하는 데이터와 비교하여 입력하는 방식이다.
따라서 프로그램 코드에 반드시 결과값을 체크 해야 하며 입력에 실패한 경우에는 처리를 다시
해야 하는 로직을 작성해야 하르로 atimic하다고는 하지만 다소 번거럽고 복잡할수 있다는게 단점
으로 작용할수 있다고 생각합니다.
여기서 Redis의 장점이 보입니다.
redis는 리스트나 set과 같은 배열 형식의 데이터를 다루는데 특화 되어 있습니다.
redis는 따로 로직을 짜서 넣어주지 않아도 atomic한 처리가 가능합니다.
memcached는 주로 RDBMS의 cache로 사용하면서 간단한 조작에 특화 되어 있다고 하면
Redis는 단독 DB로도 사용가능하며, 관련 명령어도 많이 있으며, 여러 명령어를 통해
Atomic한 처리가 가능하게 설계되어 있다.
또한 2.0 버전 이전에서는 실제 메모리 이상의 데이터를 다루지 못하였지만 2.0이후 부터는
독자적인 가상메모리 기능이 추가되어 실제 메모리에 올릴수 없는 데이터를 디스크에 올려서
사용 가능 해졌으며, 이를 통해 빈번한 사용의 데이터는 메모리에 그렇지 않은 데이터는
디스크에서 읽어오도록 설정이 가능하다.
오늘 읽은 내용의 요점은 이정도같다. 제대로 이해하고 있는게 맞는지는 모르겠지만
지나가다 보시는 분들이 있으시면 언제라도 질책 부탁드리겠습니다.
^^
아직 많이 모자르는 지식이며, 배워나가는 사람이니 틀린지식은 언제든지 수정 부탁드리겠습니다.