간단히 NO-SQL 몇 개를 초급 수준에서 비교해 보았다. 


몽고DB :  Java를 이용하여 서버를 개발하는 인디/소호 개발의 관점에서 볼 때 최적!

  - json으로 DB에 기록을 해버리니, java개발자 입장에서는 java class가 바로 DB에 저장된다고 느낄 수 있다.
    (document 저장 방식이라고 부름)

 - geoSpace인덱싱이 매우 뛰어나서 혹시라도 지리적인 위치정보를 저장하는 경우, 조회에 관련된 많은 함수들이
    제공되고 속도도 빠르다. 지리 시스템이라면 초 강추!

 - 단점으로는 lock이 전체적으로 걸려서 write가 많은 시스템에선 비추라네요
  => (15.11월 글 참조) mongoDB3.0 부터는 wiredTiger엔진 사용시 row레벨lock(즉, document레벨락)지원.

 - Replication + failOver(장애복구)기능은 존재.

 - Clustering + 샤딩기능 : 존재하고, 확장(scaling or scale out)도 지원..    
     (참조:  http://yakoola.tistory.com/57 ) 


 Redis :  속도가 최우선인 시스템에 적합

   - 메모리 DB인 만큼 속도가 최우선시 되는 시스템에서 필수로 고려해야 한다.

    - 기초적인 사용법은 mySql수준이라서, 입문은 간단.

    - Replication 기능은 존재하지만 Async방식이라서 cluster상에서 일부 유실이 가능한 구조이다. 

    - failOver기능: 원래는 없었으나, 근래에는 sentinel기능이 도입되어 안정화 단계이다.

     - Clustering + 샤딩기능: 없으나 개발완료 단계이다. 올 여름 redis 3.0부터 배포가 되며, 16384개의 hash slot을
         미리 나눠좋고 샤딩을 하는 방식이다. 물론 slot조정이나 이동이 가능하다.
         (이전 버전에서는 clustering이 지원이 안되므로 zookeeper과 혼합해서 사용하는 방법이 혼용되었다)

 


Cassandra: 안정적인 시스템이며 write가 많은 초 대용량 시스템에 유리

      - 읽기보다 쓰기가 더 빠르다는데 시간을 재보진 않아서 믿지는 못하고 있지만
      -  Clustering기능이 뛰어나 안정된 시스템이라는 인상을 많이 준다. 



Posted by yongary
,