NoSQLについてまとめてみる 〜前編〜
はじめに
こんばんは、tikedaです。
7月末までは時系列データ解析のお仕事に携わっていました。8月から元の部署へ戻り、お仕事させて頂いています。
今私がいるチームでは、主にストレージ系の研究開発に取り組んでいます。私自身はDBや分散ストレージの知識に乏しいので、これを機に勉強しようと思い、その証を、記事として残していこうと思っています。間違いなどありましたら、ご指摘いただけると幸いです。
前編は概要だけまとめます。
RDBとNoSQL
DBMS(Data Base Management System)をざっくり分けると、テーブルを組み合わせて表現するRDB(Relational Data Base)とその他のNoSQL(Not-only Structured Query Language)に分けられます。
それぞれの特徴やPros/Consは、以下の記事の解説がわかりやすいです。
トランザクションのサポートや拡張性など、色々なトレードオフがありますが、利用シーンによって使い分けることが大切だと感じました。
中でも今回は、NoSQLについて調べます。
NoSQLって何?
以下の記事が非常に参考になりました。
データモデルによって、大きく4種類に分けられます:
- Key-Value Store
鍵(Key)とそれに対応する値(Value)を格納する、簡潔なDB。
例. Memcached, Redis - Column Store
データをrawではなくcolumnに分割して格納するDB。
例. Apache Cassandra, Apache HBase - Document Store
XMLやJSONのような、スキーマレスで柔軟な構造を持つことが可能なDB。
例. MongoDB, Apache CouchDB, Amazon DynamoDB - Graph Store
グラフ構造のDB。
例. Neo4j, InfiniteGraph
ざっとこんな感じです。
次回は 各DBの特徴についてまとめます。