NoSQLの種類・特徴・良記事をまとめる
仕事でNoSQLに触れる機会がちょくちょくあるので、NoSQLの種類・特徴・良記事を簡単にまとめてみた。
NoSQLとは
特徴
- 拡張性と分散処理に優れている
- 大容量データの高速処理が可能
- データの整合性が緩い
種類
- キーバリュー型
- キーとバリューの単純な1対1管理。
- Dynamo,Redis
列指向型(カラム指向型)
- キーバリュー型に「列(カラム)」の概念を追加したもの。 行に付与されたキーが複数のカラムを保持しており、必要に応じてカラムを追加することができる。つまり行キーごとのカラム数を動的に増やすことが可能となる。
- RDBMSがレコード(行)を一塊のデータとして扱うのに対して、列(カラム)方向にデータを扱う。
- 特定の列の値をまとめて処理することに長けており、列単位での大量集計、大量更新が得意(ある列の値を一斉に更新する etc.)。
- 一方で複雑な検索・集計、特定の行を抜き出して更新・削除したりするのは苦手。
- Cassandra,Bigtable,HBase
Cassandraについてはこの辺りの記事が良かったです。
Cassandraでは、A・P(可用性・分断耐性)を担保するのに対し、冗長構成をとったRDBMSではC・A(整合性・可用性)を担保するように設計されています。
techblog.yahoo.co.jpCassandraの設計ポイントが分かりやすい。 qiita.com
ドキュメント型
- グラフ型
- グラフ構造を備えたデータベースで、ノード(頂点)、エッジ(辺)、プロパティ(属性)の3つの要素から構成され、ノード間の関係性を表現できる。データの構造が従来のリレーショナルではなくネットワーク状になっている場合に、格納・検索の面で威力を発揮する。
- Neo4j, InfiniteGraph
グラフデータベースとは何か ~ネットワーク状のデータ構造から瞬時に情報を検索するDBを解説 - アイマガジン|i Magazine|IS magazine
雑感
- Dynamo、Redisは触れた機会が多いけど使っててめっちゃ速い〜てなる。あとドキュメント型はFireStoreで触れたことあったけど、Mongoがドキュメント型であること、AWSにMongo互換のサービスがあることは知らんかった。
- 逆に列指向型(カラム指向型)のように行キーごとにカラム数を動的に増やせるデータモデルが存在することは仕事で調べるまで知らんかった。
- とりあえず思うことは、要件定義~設計するときにRDBで何とかしようとしがちやけど、NoSQLを選択肢に入れることでハッピーになれないか、はたまたログを吐き出すだけで要件を満たせないかなど柔軟に考えていきたい。まあ経験がモノを言うんかもしれんけど、、😡