최근 RDB의 대안으로 화두가 되고 있는 NoSQL(Not Only SQL) Database를 소개해 보도록 하겠습니다. 본 자료는 각종 포스트, 기사, 논문 등을 가반으로 작성하였음을 알려드립니다. « 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 Cloud14. 참고 자료 ○ 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 ○ MongoDBhttp://www.slideshare.net/madvirus/mongo-db http://www.ibm.com/developerworks/kr/library/j-javadev2-12/index.htmlhttp://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/ [출처] [본문스크랩] [NoSQL] NoSQL(Not Only SQL)|작성자 홈이루

[NoSQL] NoSQL(Not Only SQL)

Advertisements

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중