NoSQL(Not-only SQL)을 정리 합니다.


RDBMS vs NoSQL



RDBMS 속성

{|cellspacing="0" cellpadding="2" border="1" width="100%" bgcolor="#FFFFFF" align="center" |- |width="30%" align="center" valign="middle" style="background-color:#eee;"|Atomicity (원자성) |width="70%" align="left" valign="middle"|

  • 트랜잭션 실행의 단일 상태(성공/실패)를 보장
  • 하나의 트랜잭션은 성공 또는 실패의 단일한 상태만 갖습니다. 즉 일부 실패, 일부 성공의 상태를 갖을 수 없습니다.
    |- |align="center" valign="middle" style="background-color:#eee;"|Consistency (일관성) |align="left" valign="middle"|
  • 성공적으로 완료된 트랜잭션의 데이터가 저장
    |- |align="center" valign="middle" style="background-color:#eee;"|Isolation (고립성) |align="left" valign="middle"|
  • 트랜잭션의 단독 실행을 보장 (트랜잭션간 간섭 방지)
    |- |align="center" valign="middle" style="background-color:#eee;"|Durability (지속성) |align="left" valign="middle"|
  • 성공적으로 실행된 트랜잭션의 데이터는 영원히 반영 |}
  • RDBMS의 한계
    • 확장성의 한계
    • 고정된 스키마
    • 비용의 한계성


NoSQL 속성

  • 약 150종의 NoSQL 솔루션이 존재함
    • 장점 : 수평 확장성 (Scale-out), 유연한 Schema, 고성능, 저비용
    • 단점 : 높은 수준의 데이터 정합성을 지원하는 업무에 적합하지 않음
  • CAP 이론 : 2002년 버클리대학의 Eric Brewer 교수에 의해 발표된 분산 컴퓨팅 이론
    {|cellspacing="0" cellpadding="2" border="1" width="100%" bgcolor="#FFFFFF" align="center" |- |width="30%" align="center" valign="middle" style="background-color:#eee;"|Consistency (일관성) |width="70%" align="left" valign="middle"|
  • 동시에 같은 데이터를 조회
    |- |align="center" valign="middle" style="background-color:#eee;"|Availability (가용성) |align="left" valign="middle"|
  • 항상 Read와 Write 가능 (단일 노드 관점)
    |- |align="center" valign="middle" style="background-color:#eee;"|Partition Tolerance (파티션 허용치) |align="left" valign="middle"|
  • 물리적 네트워크를 넘어서 동작 (노드간의 관계 관점) |}
  • CAP는 2가지만 만족할 수 있다.
    • CA 중심 : RDBMS
    • AP 중심 : NoSQL (Consistency 포기)
    • CP 중심 : NoSQL (Availability 포기)


NoSQL 분류 및 종류



NoSQL 분류

{|cellspacing="0" cellpadding="2" border="1" width="100%" bgcolor="#FFFFFF" align="center" |- |width="20%" align="center" valign="middle" style="background-color:#eee;"|Key-value |width="40%" align="left" valign="middle"| |width="40%" align="left" valign="middle"|


  • Voldemort
  • MemcacheDB
  • Membase
  • Azure Table Storage
  • Chordless
  • HamsterDB
  • Scalien
  • Dynamo
  • Berkeley DB (Ordered Key-value)
  • Oracle NoSQL Database 11g R2
    |- |align="center" valign="middle" style="background-color:#eee;"|Column Family |align="left" valign="middle"| |align="left" valign="middle"|
  • [[HBase]], [[Cassandra]], [[HyperTable]], Accumulo

  • Google BigTable
  • Amazon SimpleDB
  • Cloudata
  • Cloudera
  • HPCC
  • Stratosphere
  • Amazon Web Services
  • DataStax
    |- |align="center" valign="middle" style="background-color:#eee;"|Document |align="left" valign="middle"| |align="left" valign="middle"|
  • [[MongoDB]], [[CouchDB]], Riak
  • Couchbase, Scalaris (Memory), ElasticSearch

  • RethinkDB
  • RavenDB
  • MarkLogic Server
  • Clusterpoint Server
  • ThruDB
  • Terrastore
  • JasDB
  • 10gen
  • Cloudant
  • Couchbase
  • MarkLogic
    |- |align="center" valign="middle" style="background-color:#eee;"|Graph |align="left" valign="middle"| |align="left" valign="middle"|
  • Neo4J

  • Infinite Graph
  • Allegro Graph
  • OpenLink
  • HyperGraphDB
  • FlockDB
  • Trinity
  • InfoGrid
  • Sones
  • Bigdata
  • DEX
  • Virtusos
  • GraphBase
  • BrightstarDB
  • Meronymy |}
  • NewSQL : VoltDB, Clustrix, Google Spanner (분산 관계형 DBMS on BigTable)


NoSQL 종류



게임사의 환경





{| border="1" cellspacing="0" cellpadding="2" style="width: 100%;" |- | style="text-align: center; background-color: rgb(241, 241, 241);" | 용도 | style="text-align: center; background-color: rgb(241, 241, 241);" | 상세 |- | style="text-align: center;" | 서비스용 | - [CouchBase](CouchBase.md) : ElasticSearch 연동 모듈이 있음

|- | style="text-align: center;" | 분석용 | - [ElasticSearch](ElasticSearch.md)

|}

참고 문헌



- [NoSQL 데이터 모델링 기법](https://docs.google.com/a/jopenbusiness.com/document/pub?id=10yun1BzZJZtm4H9H31V-v_FhY39pfjJjkoCafNniJ4U&embedded=true)
- [NoSQL 데이타 모델링 #1-데이타모델과, 모델링 절차, 2012.08](http://bcho.tistory.com/665)
- [NoSQL 데이타 모델링 #2- 데이타 모델링 패턴, 2012.08](http://bcho.tistory.com/666)

- [데이터 모델에 따른 Nosql 선택과 고려사항, 2011.06](http://knight76.tistory.com/entry/%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%AA%A8%EB%8D%B8%EC%97%90-%EB%94%B0%EB%A5%B8-Nosql-%EC%84%A0%ED%83%9D%EA%B3%BC-%EA%B3%A0%EB%A0%A4%EC%82%AC%ED%95%AD)
- [NoSQL – 도대체 어떻게 선택해야 할까?, 2012.02](http://kimws.wordpress.com/2012/02/26/nosql-%EB%8F%84%EB%8C%80%EC%B2%B4-%EC%96%B4%EB%96%BB%EA%B2%8C-%EC%84%A0%ED%83%9D%ED%95%B4%EC%95%BC-%ED%95%A0%EA%B9%8C/)

- [http://eincs.net/2012/06/nosql-is-not-useful/](http://eincs.net/2012/06/nosql-is-not-useful/)
- [http://highlyscalable.wordpress.com/2012/03/01/nosql-data-modeling-techniques/](http://highlyscalable.wordpress.com/2012/03/01/nosql-data-modeling-techniques/)
- [http://nosql-database.org/](http://nosql-database.org/)
- [http://en.wikipedia.org/wiki/Nosql](http://en.wikipedia.org/wiki/Nosql)
- [http://wiki.gizrak.com/w/index.php/NoSQL](http://wiki.gizrak.com/w/index.php/NoSQL)
- [http://sidnancy.kr/archives/77](http://sidnancy.kr/archives/77)
- [주요 NoSQL들에 대한 초간단 정리, 2012.08](http://kimws.wordpress.com/2012/08/07/%EC%A3%BC%EC%9A%94-nosql%EB%93%A4%EC%97%90-%EB%8C%80%ED%95%9C-%EC%B4%88%EA%B0%84%EB%8B%A8-%EC%A0%95%EB%A6%AC/)
- [http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis](http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis)
- [http://www.dataversity.net/the-nosql-movement-graph-databases/](http://www.dataversity.net/the-nosql-movement-graph-databases/)
- [https://docs.google.com/a/jopenbusiness.com/spreadsheet/ccc?key=0AlHPKx74VyC5dERyMHlLQ2lMY3dFQS1JRExYQUNhdVE#gid=0](https://docs.google.com/a/jopenbusiness.com/spreadsheet/ccc?key=0AlHPKx74VyC5dERyMHlLQ2lMY3dFQS1JRExYQUNhdVE.md#gid=0)

- [http://hanburn.tistory.com/106](http://hanburn.tistory.com/106)
- [http://dev.kthcorp.com/2011/07/08/mongodb-atfoursquare-biggest-reason-auto-sharding/](http://dev.kthcorp.com/2011/07/08/mongodb-atfoursquare-biggest-reason-auto-sharding/)
- [http://en.wikipedia.org/wiki/Graph_database](http://en.wikipedia.org/wiki/Graph_database)

- [http://www.techrepublic.com/blog/10things/10-things-you-should-know-about-nosql-databases/1772](http://www.techrepublic.com/blog/10things/10-things-you-should-know-about-nosql-databases/1772)
- [http://kerocat.tistory.com/1](http://kerocat.tistory.com/1)
- [http://bcho.tistory.com/621](http://bcho.tistory.com/621)

- [http://www.networkworld.com/news/tech/2012/102212-nosql-263595.html?page=1](http://www.networkworld.com/news/tech/2012/102212-nosql-263595.html?page=1)
- [http://www.brianfrankcooper.net/pubs/ycsb.pdf](http://www.brianfrankcooper.net/pubs/ycsb.pdf)
- [http://www.slideshare.net/hypermin/newsqldatabaseoverview](http://www.slideshare.net/hypermin/newsqldatabaseoverview)
- [http://wiki.gurubee.net/pages/viewpage.action?pageId=19005444](http://wiki.gurubee.net/pages/viewpage.action?pageId=19005444)

- NewSQL

- [http://blog.naver.com/PostView.nhn?blogId=gundallove&logNo=80189190857](http://blog.naver.com/PostView.nhn?blogId=gundallove&logNo=80189190857)
- [http://en.wikipedia.org/wiki/NewSQL](http://en.wikipedia.org/wiki/NewSQL)
[[Category:BigData|Category: BigData]]
분류: [NoSQL](분류_NoSQL.md)
공유하기