반응형
- 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 방식 두가지를 함께 구축함.
반응형