MongoDB

NoSQL 과 RDB

macro 2012. 3. 8. 10:27
반응형
      • MySql 사용시
        • 부하 분산을 고려한 시스템 구축이 필요.
        • replication 과 cluster
          • replication 으로 구축시
            • master / slaves 로 구성 (single point of failure 해결)
            • master는 DML처리만 수행
            • slaves는 여러대를 놓을 수 있고, read 만 수행함.
            • 사용자 증대 등으로 인해 부하가 증가할 경우 slaves를 증설함.
            • 이경우는  부하 분산을 위해 slaves 를 로드밸런싱 해줘야 하므로 로드밸런서를 따로 하나 구축하여야 함.
          • cluster 로 구축시
            • Management Node, Data Node, SQL node 3개로 구성.
            • SQL node, Data node는 여러개를 놓고 구성할 수 있다.
            • 권장 구성은 Management-Node 2대, Data-Node 2대, SQL-Node 2대
            • shared nothing 방식이므로 공유디스크나 lock 에 대한 성능 저하는 발생하지 않는 장점.
            • Data node를 초기에 구축하면 나중에 데이터 증가로 인해 노드 추가시, 시스템 전체 정지하고 재구축을 해야 하는 단점이 있음.
      • NoSQL 사용시.
        • http://fantazic.com/archives/517
        • 몽고DB가 레퍼런스가 가장 많고 안정성과 기능적 측면에서 가장 나음.
        • 몽고DB 가용성 (2가지 방식)
          • 마스터 슬레이브 방식
            • mySql 의 마스터 슬레이브와 동일
          • Replica-Set
            • 클러스터링 방식
            • 안정적으로 서비스 하기 위해 최소한 서버 3대 이상 필요. (master 서버 2대, arbiter 서버 1대 설치)
        • 몽고DB 확장성 - Auto Sharding 제공
          • 많은 데이터를 여러 노드에 분산 저장 방식
          • 3종류 서버로 구성함. (mongod, mongod configsvr, mongos)
        • 장점
          • 데이터 스키마 변경이 서비스 중에도 자유롭다.
            • 운영 중 요구사항 변경 발생하여 어떠한 항목을 추가해야 하는 경우 쉬움.
          • 이차원 검색을 지원한다.
            • 위치 정보는 위도, 경도로 나타낼 수 있는 2차원 모델이므로 위치 검색에 유리.
        • 단점
          • 트랜잭션이 없음.
            • MySql과 같은 RDBMS 가 가지고 있는 트랜잭션(예-은행 예금 출금시 중간에 여러 단계를 거치는데, 중간에 에러가 나면 롤백하는 기능임) 기능이 없으므로, 포인트나 결재등 중요한 데이터에 대한 정합성 문제 발생할 수 있음.
      • DB 결론
        • 유저에 대한 정보는 MySql을 사용하여 트랜잭션을 보장.
        • 체크인이나 댓글등의 계속하여 증가하는 데이터는 몽고DB를 사용하여 확장성있게 저장.
        • 업체정보는 위치기반 쿼리로 빠르게 응답해야 하므로 몽고DB를 사용.
        • 통계 및 로그등의 데이터를 관리자에게 제공할때 대량의 데이터를 처리하게 되므로 몽고DB로 로그구성.
        • 몽고DB구성시 replica-set 방식과 auto-sharding 방식 두가지를 함께 구축함.
반응형