본문 바로가기

좋아하는 것_매직IT/9.redis

29.Redis, 샤딩에 대해서 알아볼께요. ^^.. Redis 는 클라이언트 측 샤딩만 지원한다네요..ㅎ

반응형

샤딩이란?

  • 다른 용어로 파티셔닝(Partitioning) 이라고 부름.
  • 데이터 샤딩은 2가지 관점에서 유용함.
    • 첫째, 더 많은 데이터를 Redis 에 저장할 수 있음.
      • 복제를 사용 했을 경우
        • Redis 에 저장 가능한 데이터의 전체 크기는 master 노드의 메모리 크기와 동일 하거나 더 작음.
          • 즉, master 노드의 물리 메모리 크기보다 많은 데이터를 저장하면, 성능이 급격하게 저하될 수 있기때문에, master 노드의 메모리 크기에 의해서 저장 가능한 전체 데이터가 결정됨.
      • 반면, 샤딩을 사용 했을 경우
        • 각 데이터를 특정 조건에 따라서 서버에 분산 저장하는 기법
        • 그러므로, 샤딩은 동일한 개수의 하드웨어를 사용할 때 위에 설명한 복제에 비교해서 상대적으로 더 많은 데이터를 저장할 수 있는 장점.
          • Redis 샤딩
    • 둘째, 샤딩을 통해서 쓰기 성능의 증대를 이룰 수 있음.
      • 복제를 사용 했을 경우
        • 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 페이지 

결론

  • 샤딩은 데이터 복제방식과 비교해서 상대적으로 데이터 저장과 쓰기 성능 증대에 유용함.
  • 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" 는 나쁜 버릇 임.
728x90
300x250