반응형
샤딩이란?
- 다른 용어로 파티셔닝(Partitioning) 이라고 부름.
- 데이터 샤딩은 2가지 관점에서 유용함.
- 첫째, 더 많은 데이터를 Redis 에 저장할 수 있음.
- 복제를 사용 했을 경우
- Redis 에 저장 가능한 데이터의 전체 크기는 master 노드의 메모리 크기와 동일 하거나 더 작음.
- 즉, master 노드의 물리 메모리 크기보다 많은 데이터를 저장하면, 성능이 급격하게 저하될 수 있기때문에, master 노드의 메모리 크기에 의해서 저장 가능한 전체 데이터가 결정됨.
- Redis 에 저장 가능한 데이터의 전체 크기는 master 노드의 메모리 크기와 동일 하거나 더 작음.
- 반면, 샤딩을 사용 했을 경우
- 각 데이터를 특정 조건에 따라서 서버에 분산 저장하는 기법
- 그러므로, 샤딩은 동일한 개수의 하드웨어를 사용할 때 위에 설명한 복제에 비교해서 상대적으로 더 많은 데이터를 저장할 수 있는 장점.
- Redis 샤딩
- Redis 샤딩
- 복제를 사용 했을 경우
- 둘째, 샤딩을 통해서 쓰기 성능의 증대를 이룰 수 있음.
- 복제를 사용 했을 경우
- master 노드에 쓰기 연산이 발생하면, 복제된 나머지 노드에도 같은 쓰기 연산이 발생해야 동기화가 유지됨.
- 즉, 모든 노드가 동일한 쓰기 연산을 수행하게 되서 쓰기 성능이 증대되지 않음.
- master 노드에 쓰기 연산이 발생하면, 복제된 나머지 노드에도 같은 쓰기 연산이 발생해야 동기화가 유지됨.
- 반명 샤딩을 사용 했을 경우
- 하나의 샤드에 하나의 데이터만 존재하므로 쓰기 연산은 해당 샤드에만 발생하여 더 많은 쓰기 연산을 처리할 수 있게됨.
- 복제를 사용 했을 경우
- 샤딩의 종류
- 서버 측 샤딩
- 여러개의 노드로 구성된 클러스터에 데이터를 저장할 때 클러스터 레벨에서 데이터가 저장될 위치를 결정하는 것을 말함.
- 즉, 서버측 샤딩이 지원되는 NoSQL의 클라이언트는 데이터가 어느 노드에 위치하는지 신경 쓰지 않고 데이터를 저장하거나 조회하기 때문에 데이터 저장 위치의 투명성이 보장됨.
- 여러개의 노드로 구성된 클러스터에 데이터를 저장할 때 클러스터 레벨에서 데이터가 저장될 위치를 결정하는 것을 말함.
- 클라이언트 측 샤딩 (제가 알고 있는 지식으로는 Redis 는 위에 설명한 서버측 샤딩을 지원하지 않는다고 알고있는데 혹시 서버측 샤딩도 지원하게 Redis 가 업데이트가 되었으면 댓글 부탁드려요^^;)
- 종류
- 수직 샤딩(Vertical Sharding)
- 관계형 데이터베이스의 테이블에 해당하는 정보를 노드별로 분할하는 방법.
- 다시말해서, 데이터의 성격을 기준으로 논리적 분할을 적용한 것.
- ex) 메신저 시스템을 예를 들자면, 1번 노드는 유저정보, 2번 노드는 친구정보을 저장하는 방식
- 범위 지정 샤딩(Range Sharding)
- 키를 특정 범위를 기준으로 분할하여 저장하는 방법
- ex) 1번노드는 1~100 까지 저장, 2번노드는 101 ~ 200 까지 저장
- 키를 특정 범위를 기준으로 분할하여 저장하는 방법
- 해시 기반 샤딩(Hash Based Sharding)
- 키를 해시 함수를 이용하고 시스템만의 특정 연산을 추가해서 데이터의 위치를 결정하는 방법
- ex) 샤드 번호 = 해시함수("값") mod(%) 10
- 해시함수
- md5, sha1, crc32 기타 등등 이 있음
- 참고로, Jedis 는 샤딩을 위한 해시 함수로 md5, MurmurHash 알고리즘을 지원한다고 함.
- MurmurHash wiki 페이지
- 키를 해시 함수를 이용하고 시스템만의 특정 연산을 추가해서 데이터의 위치를 결정하는 방법
- 수직 샤딩(Vertical Sharding)
- 종류
- 서버 측 샤딩
- 첫째, 더 많은 데이터를 Redis 에 저장할 수 있음.
결론
- 샤딩은 데이터 복제방식과 비교해서 상대적으로 데이터 저장과 쓰기 성능 증대에 유용함.
- Redis 는 클라이언트측 샤딩만 지원한다고 함.
- 오늘도 Redis 관련 샤딩 마술(?) 한가지 획득 완료, 감사합니다. ^^;
- 오늘의 명언 한마디
- 제테크 방법에는 여러가지가 있지만, 각자의 성향과 환경에 맞게 실천하는 것이 가장 중요하다고 생각한다.
- 경매는 주먹잡이들(?)의 세상인줄 알았는데 20대 남녀와 30~40대 주부들이 꽤나 많은 자리를 차지하고 있어 조금 당황했다.
- 한편으로는 경매가 암울한 이미지를 털어내고 많이 대중화되어 누구나 쉽게 참여할 수 있는 하나의 투자업으로 변모하고 있다는 것을 알게되어 심적부담을 많이 덜 수 있었다.
- 장기적 접근이 가능하니 제2의 직업으로도 손색이 없다. -오은석(북극성주)지음, "월급쟁이를 위한 부동산 경매" 중에서..
- 오늘의 영어 한마디
- 질문) It's not good for you to eat your food so fast.
- 빨리 먹는 건 건강에 안좋아.
- 대답) I know. It's a bad habit.
- 나도 나쁘다는 건 알아.
- 해설
- "It's not good for you to ~ "는 ~하는 것은 너에게 안좋다라는 의미
- 빨리먹다
- eat food so fast 로 보통 표현함.
- 유사한 표현
- 폭식 : eat too much
- "a bad habit" 는 나쁜 버릇 임.
- 질문) It's not good for you to eat your food so fast.
728x90
300x250
'좋아하는 것_매직IT > 9.redis' 카테고리의 다른 글
31.Redis, 운영 시 메모리 설정은 어떻게 해야 할까요? (0) | 2021.01.15 |
---|---|
30.Redis, 운영 시 임계점에 대해서 알아 볼까요? ^^ CPU, Memory, Network에 대해서.. (0) | 2021.01.15 |
28.Redis, 레디스 복제에 대해서 알아볼까요? 다중 복제의 단점을 보완하기 위한 계층형 복제란 ? ^^ (0) | 2021.01.15 |
26.Redis, 레디스 복제에 대해서 알아볼까요? 단일 복제는 ? ^^ (0) | 2021.01.15 |
25.Redis, 레디스에서 말하는 복제에 대해서 전반적으로 정리해 보면? (0) | 2021.01.15 |