NoSQL(Not Only SQL)とはSQLを使わないで操作するデータベース全般のこと指す.データベースの構造が容易に変更でき,データの増加に柔軟に対応できる.しかしデータの正規化や表同士の結合,集計や検索は不時としているため,目的別に使い分ける必要がある.
NoSQLの分類
単にNoSQLと言ってもさまざまな使用方法があり,それに応じて分類ができる.
キーバリューストア型
最もシンプルな形で,キーとバリューだけのNoSQL.キーに対して1つのバリューがつくため,バリューの中身はレコードごとに異なっていても問題ない.構造が非常にシンプルなため,高速に処理できメモリ容量も少なく済む.キーのみで検索するため検索性能は低い.
キーバリューストア型のNoSQLはキャッシュサーバ等に使用され,代表的なものにRedisがある.Redisはキーバリュー形式で全てのデータを格納するため,キーでの検索が非常に高速にできる.
redisの詳細は下記サイトを参照
Redisとは?人気高まるデータベースの特徴と使い方を解説!
https://and-engineer.com/articles/YeirURAAAJMQQr8s
カラム指向型
キーバリューストア型のバリューにカラムが追加されたデータベース.このカラムは自由に追加ができる.全てのカラムに値が入っている必要はないため,データベースの自由度が高い.
カラム指向型の例としてcassandraがある.cassandraはキーバリューストア形式のNoSQLのDBですが,バリューの中に複数のカラムがあり,Wide Column Store形式になっている.詳しくは下記サイトを参照.
NoSQLデータベースCassandraの紹介 〜 ヤフーのデータ基盤を支える技術
https://tamotech.blog/wp-admin/post.php?post=1504&action=edit
ドキュメント指向型
1つのキーに1つのバリューが紐づいており,バリューはドキュメントの形式になっている.バリューはJSON形式やXML形式で表現される.このバリューは複雑な構造を持つことができ,さまざまなデータを保存することができる.またスケールアウトしやすい特徴がある.
ドキュメント指向型のNoSQLの代表例としてMongoDBがある.MongoDBではJSON形式のデータを扱うことができ,保存するデータのドキュメントを柔軟に変更できる.
Node.jsでMongoDBへ接続する方法と基本操作は下記記事を参考.
グラフ指向型
グラフ理論に基づいて,ノード間の方向性のあるリレーションで繋いで構造化するデータベースの方式.グラフ指向型はは以下の3つの概念で表現できる.
概念 | 説明 |
---|---|
ノード | 接点や頂点のことを指し,下記の図で言うところのuserが該当する. ノードはそれぞれにプロパティを所持している. ノードからエッジを介してリレーションを表現する |
プロパティ | ノードの属性情報 |
エッジ | ノード間の関係性(リレーション)を表現する. 方向とタイプを表現する. ※タイプとはtwitterでいうところの「Follow」または「いいね」等 |
下記の図はtwitter等のSNSの関係性の簡略図.それぞれのユーザが相互にフォローするような関係の時,ユーザ(ノード)とリレーション(エッジ)が指定されると,そのユーザと関係性がある特定のユーザを一意に取得することができる.
グラフ指向型の代表例としてAmazon Neptuneがある.Amazon Neptuneの詳細は下記サイトを参照
グラフデータベースとは?
https://aws.amazon.com/jp/nosql/graph/