NoSQLとはなんなのか
はじめに
背景
今のご時世たくさんのデータを扱うにあたって、RDBだけではいけないと感じた。もうひとつはAmazon DynamoDBのチュートリアルを実施してみてNoSQLに興味を持った。
目的
- NoSQLの概要把握
- NoSQLとRDBの違い概要把握
※以下記載内容よりかは基本参考の方がためになる、かつ、わかりやすいので・・・ご了承。
NoSQL
NoSQLとは
「Not Only SQL」の略とのことで、リレーショナルデータベース以外のデータベース管理のことらしい。
NoSQLとして代表的なものには、GoogleのBigTable、アマゾンのAmazon DynamoDBなどがある。
データベースタイプ
キーバリュータイプ
「キー(Key)」に対して「値(Value)」で管理する。また、RDBのように項目を定義して持つことはせず、各キーごとに自由に値を持つことができる。イメージとしては、json形式。(Amazon DynamoDBはJsonで管理される)
"Artist"が"Partition key"の位置づけ
{ "Artist" : "No One You Know", "songTitle" : "My Dog Spot" }, { "Artist" : "The Acme Band", "songTitle" : "Still in Love", "recordCompany" : "Company" }, { ~~~ }
ドキュメントタイプ
「ドキュメント」と呼ばれる構造的データ(オブジェクトまたはJSON)で管理する。らしい・・・
グラフタイプ
データとデータ間のつながりを管理する。ソーシャルネットワーキング、推奨エンジン、詐欺検出、知識グラフなどのネットワーク構造を持つ仕組みに適する。らしい・・・
その他タイプ
- インメモリ
- 検索
NoSQLとRDBの違い
特徴 | NoSQL | RDB |
---|---|---|
データ整合性 | 実行時にデータを合わせる(トランザクション) | 結果としてデータを合わせる |
データモデル | 行列によるテーブル定義。テーブル間の関係の定義 | キーバリュー、ドキュメント、グラフなどの様々なモデル |
特性 | ACID特性重視 | 柔軟性・拡張性重視 |
終わりに
- RDBだけでデータを管理することは限界だと思っていたこととJsonで何でもかんでもデータ管理したら意外と便利なんじゃないかと思っていたことが、NoSQLを調べてみてあながち間違いではなかった。
- 今後はより多様なデータを扱うことが多くなると感じているため、NoSQLがエンタープライズでもどんどん使われるようになるなという感じ。(自分の業務では関わっていないだけなのかもしれないが・・・)
- ただ、NoSQLとRDBは役割や用途が異なるため、どちらかがなくなることはないということ。
- ドキュメントタイプとグラフタイプが全くわからいない・・・。
- 触ってみないと実業務のどこで活用できるかがまだ不明確なため、せっかくなのでAWSで触ってみようかと