본문 바로가기

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

7.Redis, 그러면..언제 NoSQL을 사용해야 할까요? ^-^

반응형

NoSQL의 사용에 대해서 한번 생각해보자

  • 관계형 데이터베이스
    • 장점
      • 충분히 성숙된 기술
      • 범용 데이터 저장소로서 역할을 충분히 수행함.
      • 복잡한 업무 로직을 처리하는 분야에서 NoSQL 보다 더 나은 성능을 보임.
    • 단, 한계점은...
      • 관계형 데이터베이스의 특성상 제공 가능한 성능에 한계가있음.
  • 그럼에도 불구하고...
    • NoSQL이 필요한 상황이 발생할 소지가 생김.
      • NoSQL 이 필요한 경우
        • 대량의 단순 정보를 빠르게 저장하고 조회할 때
        • 관계형 데이터베이스가 처리하지 못하는 대량의 데이터를 저장할 때
        • 스키마가 고정되지 않은 데이터를 저장하고 조회할 때 
        • 기타 등등.
      • 즉, 위에서 언급한 관계형 데이터 베이스의 한계를 넘어선 성능이 필요할 때 NoSQL를 선택하면됨.

만일, NoSQL의 도입을 확정했다면...

  • 어떤 NoSQL을 사용할지 결정이 필요함.
    • "언제 NoSQL을 사용해야 될지?" 보다, "어떤 NoSQL을 선택하는가?" 가 중점 논점임.

그럼.. NoSQL을 선택할 때 고려사항은? 

  • 일관성모델
    • 생각해봐야할 점은?
    • 서비스에서 어느 정도의 일관성이 필요한지 먼저 확인필요.
    • ex) 만일 카산드라를 선택한 경우...
      • 강한 일관성이 필요한 서비스를 구현하기 위해서는 궁극적일관성을 지원하는 카산드라 선택을 하면 , 얻는 것보다 잃는것이 도 클 수 도 있음.
  • 데이터모델
    • 생각해봐야할 점은?
      • 제공하려는 기능이 키-값 모델과 같은 간단한 데이터 모델로 처리가 가능한지 ?
      • 또는, 문서 모델과 같이 중첩된 구조를 지원해야 하는지?
      • 즉, 선택한 NoSQL의 데이터 모델로 필요한 기능을 구현할 수 있는지에 대해서 확인 및 판단필요
  • 읽기/쓰기 성능
    • 생각해봐야할 점은?
      • 제공할 기능의 읽기/쓰기 비율에 대한 서비스의 확인 및 판단이 필요함.
      • case #1) 읽기/쓰기 모두 빠른 응답시간이 필요할 경우의 대안은?
        • 인 메모리 NoSQL
      • case #2) 상대적으로 읽기 비율이 높을 경우의 대안은?
        • 문서 모델 NoSQL
          • 상대적으로 읽기 비율이 높을 경우, B트리 인덱스 구조를 사용하는 문서 모델 NoSQL이 대안임.
  • 단일고장점
    • 생각해봐야할 점은?
      • 선택한 NoSQL이 단일 고장점을 가지고 있는지 확인 및 생각해봐야함.
      • 만약 단일 고장점을 가지고 있다면, 장애시 쉬운 복구가 가능한지에 대한 확인도 필요함.
      • 무정지 서비스가 중요 목표라면?
        • 많은 NoSQL 중 단일 고장점을 가진 NoSQL 선택은 피하시길...
  • 원자성지원
    • 생각해봐야할 점은?
    • 트랜잭션 지원 여부 확인
    • 단일 연산에 대한 원자성 지원 여부 확인.
  • 하드웨어 구성
    • 생각해봐야할 점은?
    • 선택한 NoSQL이  가지는 시스템 아키텍처를 도 확인해야함.
      • master-slave 구조의 NoSQL을 선택했다면, 저장되는 데이터의 최대크기는 절대적인 저장소크기의 절반
    • 내부의 구성요소와 하드웨어에 대한 기본 구성 정보도 파악해봐야할듯..
  • 무중단시스템
    • 시스템을 확장 시 시스템 중단이 필요한지 여부 확인 필요.
  • 정리하자면, NoSQL를 선택 할 때는 ?
    • 위의 나열한 고려사항을 정확히 확인하고, 개발할 서비스에서 필요한 부분과 필요 없는 부분을 먼저 선택한 후, 최종적으로 가장 최적화된 NoSQL을 선택하는 노력이 필요할 듯.
    • 일반적으로 NoSQL을 사용하는 서비스 구현은 한 가지 NoSQL만을 사용하여 모든 서비스를 제공하도록 구성하지 않음.
      • 즉, 서비스 부분을 나누어 별도의 NoSQL을 배치하는 것도 중요함.

결론

  • NoSQL을 사용한 서비스 구현은 한 가지 NoSQL만을 사용하여 제공하지 않고 서비스를 부분으로 나누어 적절한 NoSQL을 취사 선택해 사용해야함.
  • 위의 나열한 고려사항을 통해서, NoSQL 적용 기준을 확정하고, 나만의 서비스에 맞는 NoSQL을 선택할 때 비로소 NoSQL의 진가를 알 수 있게될것임.
  • NoSQL은 관계형 데이터 베이스의 한계를 극복하고 모든 장점만을 모아둔 솔루션을 아님.
    • "얻는것이 있다면 잃는 것이 반드시 있다. "라는 말은 꼭 명심해야 할것 같음.

  • 오늘의 명언 한마디
    • 금융지식과 자본이 없으면서 투자가가 되려는 것은, 경제적 자살행위이다. -로버트 기요사키, 『부자아빠, 가난한아빠2 』 중에서...

  • 오늘의 영어 한마디
    • 질문) How was the lecture?
      • 강연 어땠어?
    • 응답) It was fantastic. I learned so much!
      • 너무 감동적이었어, 많은 걸 배웠지.
    • 해설) 
      • "How was ~ ?" 는 "~은 어땠어?" 라는 의미
      • fantastic은 "공상적"이라는 뜻 이외에 "아주 멋진" 이라는 의미가 있음.
        • 벅찬 감격을 전할 때 많이 사용함.
728x90
300x250