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