사용자 도구

사이트 도구


kb:nosql

NoSql

말이 많으니 좀 파보자.

기본적인 시작은 마소: NoSQL이란 무엇인가?에 잘 정리되어 있다.

  • NoSQL은 RDBMS와는 달리 데이터 간의 관계를 정의하지 않는다
  • RDBMS에 비해 훨씬 더 대용량의 데이터를 저장할 수 있다
  • 분산형 구조
  • 고정되지 않은 테이블 스키마
  • Consistency, Availability, Partitioning 셋 중에 둘만 지원한다.
  • 요건 나중에 바뀌지 않으려나. 똑똑한 사람 많을텐데.

분류

아직 태동기라 그런지 분류가 매우 많다. 사실 어디까지를 NoSql이라 불러야하는지도 잘 모르겠다.

http://en.wikipedia.org/wiki/NoSQL 위키피디어에는 다음과 같이 분류되어 있다.

Term Matching Database
KV Cache Memcached, Repcached, Coherence, Infinispan, eXtreme Scale, JBoss Cache, Velocity, Terracotta
KV Store Keyspace, Flare, SchemaFree, RAMCloud
KV Store - Eventually consistent Dynamo, Voldemort, Dynomite, SubRecord, MotionDb, DovetailDB
Data-structures server Redis
KV Store - Ordered TokyoTyrant, Lightcloud, NMDB, Luxio, MemcacheDB, Actord
Tuple Store Gigaspaces, Coord, Apache River
Object Database ZopeDB, DB4O, Shoal
Document Store MarkLogic, CouchDB, MongoDB, Jackrabbit, XML-Databases, ThruDB, CloudKit, Persevere, Riak Basho, Scalaris
Wide Columnar Store BigTable, HBase, Cassandra, Hypertable, KAI, OpenNeptune, Qbase, KDI

제품

다 조사해볼 수는 없으니 잘 알려진 것들만 조사해보자. 기준이 되는 기능들은 마소 홈페이지에 있던 걸 기반으로…

  1. Sorting (SQL의 Order By)
  2. Join (RDBMS에서 2개의 Table을 Foreign Key를 이용해 join)
  3. Grouping (SQL 문의 group by)
  4. Range Query (where key>“start” and key<“end”와 같이 일정 범위 내의 내용을 쿼리해오는 기능)
  5. Index (RDBMS에 Index를 지정해 select query 성능을 높이는 기능)
  • Redis – C/C++, C#, Java, JavaScript (Node.js), Lua, etc. 왠만한 건 다 바인딩 있는 모양.
  • Memcached – C/C++, PHP, Java, Python, Ruby, Perl, MySQL, PostgreSQL, 등등. 데이터베이스 내부에서 UDF 혹은 USP로 접근하는 게 재미있네.
  • MongoDB – C++, C# 바인딩 있는 모양
  • Cassandra – Python, Java, .Net, Ruby, PHP, Perl, C++, etc
  • HBase – Java only?
kb/nosql.txt · 마지막으로 수정됨: 2015/07/20 09:46 저자 excel96