<< NoSQL(Not Only SQL) >>
1. 데이터베이스라고 부르지 말 것
○ 비정형스키마, 비관계형, 초대용량의 데이터저장소
○ 필요한만큼의 기능, RDBMS는 너무 복잡하고 무거움
2. 대용량 비정형데이터를 위한 분산데이터저장소
○ 성능향상, 분산병렬처리, 고가용성
3. NoSQL은 RDBMS와 Cache의 중간쯤에 위치
○ 지나치게 제한적인 RDBMS, 신뢰성에 취약한 Cache
○ ex) Cassandra(페이스북): 0.12ms만에 50GB를 디스크 기록, MySQL의 2500배 빠른 성능
4. 저렴한 PC 서버로 수평확장 가능한 분산아키텍처
○ 한두건 사라져도 아무도 모를 데이터에 RDBMS를 적용하는 것은 과잉대응, cf. Oracle RAC 솔루션
○ 대표주자는 Google의 BigTable 을 비롯해 MongoDB, Cassandra 등
5. 데이터 처리의 병목현상을 해결
○ 관계형 모델링을 구현하고 Application 내에서 처리하는 비용 절감
○ 도메인 모델로 Application을 단순한 구조로 구성 (모델링 사고 전환 필요)
6. 오픈소스 중심으로 발전
○ 아직 성장중인 미완성의 기술, 공식지원업체 없이 스스로 발전
○ 조건을 느슨하게 함으로써 얻을 수 있는 속도를 재발견하는 시도
7. Web2.0 이상에 적합한 데이터 솔루션
○ SNS 등 일부 특화 서비스에 적합하도록 개발 (아직 범용적이지 않음)
○ 기존 Media 콘텎츠, Social 서비스, UGC, M2M(사물통싞) 의한 데이터 폭발 대응
8. CAP 이론(분산파일시스템의 속성)
○ Consistency : 각각의 사용자가 항상 동일한 데이터를 조회한다.
○ Availability : 모든 사용자가 항상 읽고 쓸 수 있다.
○ Partition tolerance : 물리적 네트워크 분산 환경에서 시스템이 잘 동작한다.
9. CAP 이론과 NoSQL
○ CAP 중에서 C 또는 A를 일부 포기함으로써 분산 확장에 특화하여 NoSQL의 수평확장 기능을 강화
10. NoSQL의 구성요소
○ 분산처리시스템
■ 분산/복제, 버젂관리
■ 동기화 메카니즘
■ 클라이얶트 프로그래밍을 위한 API
■ 노드 확장, 장애 대응(Fault Tolerance)
○ 데이터모델
■ Key-Value
■ Column-Based
■ Document-Based
○ 병렬처리모델
■ MapReduce
■ 기본적인 Ad-hoc 질의 가능, 배치/순차 처리도 가능
11. NoSQL에 대한 현재시점의 평가
○ 기업 요구 수준의 SLA 제공 못함: 성공 케이스가 많지 않음
○ NoSQL과 Application을 연계하는 개발 비용이 크다.
ODBC, JDBC 같은 Adapter가 없음, 직접 API 이용 코딩
○ Join이 없어서 다양한 데이터 연계 출력이 어려움
12. NoSQL 활용시 고려사항
○ RDBMS를 대체한다는 접근은 옳지 않음: CRUD 위주 접근
○ 성능 튜닝에 많은 시행착오 필요 (신규 실서비스 개발시 부적합)
○ 데이터 증가에 따른 ROI 분석 필요 (도입타당성): 장비 규모나 장애로 인한 손실 비용
○ RDBMS에 부적합한 경우를 해결: 확장성, 비싼 비용, 비정규화(단순화)
13. NoSQL의 주요 제품
○ NOSQL 제품
■ MongoDB
■ Cassandra
■ HBase
○ 분산파일시스템 제품
■ GFS: Google File System
■ HDFS: Hadoop Dist. File System
■ Dynamo – Amazone S2
■ Neptune – Naver Cloud
■ Tenth – Daum Cloud
14. 참고 자료
○ NoSQL에 대해서#1 : http://blog.outsider.ne.kr/519?category=7
○ NP-Hard(그래프) : http://code-o-matic.blogspot.com/2010/07/google-file-system-bandwidth-problem.html
○ HBase : http://blog.naver.com/zedli?Redirect=Log&logNo=60100101537
○ 성능비교 : http://blog.xissy.pe.kr/?mid=blog&document_srl=4972364
○ 카산드라 소개 : 블로그 http://blog.naver.com/PostView.nhn?blogId=j70215&logNo=140116588786&viewDate=¤tPage=1&listtype=0
○ Google
■ GFS : http://labs.google.com/papers/gfs.html
■ BigTable : http://labs.google.com/papers/bigtable.html
○ MongoDB
http://www.slideshare.net/madvirus/mongo-db
http://www.ibm.com/developerworks/kr/library/j-javadev2-12/index.html
http://creatorw.tistory.com/tag/mongodb%20sql
○ MapReduce : http://www.slideshare.net/spirosd/mapreduce-distributed-computing-on-large-commodity-clusters
○ Document-Oriented DB : http://tostring.kr/38
○ StreamSQL : http://blog.cubrid.org/web-2-0/database-technology-for-large-scale-data/
[polldaddy rating=”7739789″]