hijikitaroのブログ

しがないSIerとして、日々プロジェクトを管理し、システムを育て、日々お子を見守り育てる中での出来事や学びを淡々と書いています。

NoSQLとはなんなのか

はじめに

背景

今のご時世たくさんのデータを扱うにあたって、RDBだけではいけないと感じた。もうひとつはAmazon DynamoDBチュートリアルを実施してみてNoSQLに興味を持った。

目的

  • NoSQLの概要把握
  • NoSQLとRDBの違い概要把握

※以下記載内容よりかは基本参考の方がためになる、かつ、わかりやすいので・・・ご了承。

NoSQL

NoSQLとは

「Not Only SQL」の略とのことで、リレーショナルデータベース以外のデータベース管理のことらしい。

NoSQLとして代表的なものには、GoogleBigTable、アマゾンのAmazon DynamoDBなどがある。

データベースタイプ

キーバリュータイプ

「キー(Key)」に対して「値(Value)」で管理する。また、RDBのように項目を定義して持つことはせず、各キーごとに自由に値を持つことができる。イメージとしては、json形式。(Amazon DynamoDBJsonで管理される)

"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特性重視 柔軟性・拡張性重視

f:id:hijikitaro:20190813225954p:plain
image

終わりに

  • RDBだけでデータを管理することは限界だと思っていたこととJsonで何でもかんでもデータ管理したら意外と便利なんじゃないかと思っていたことが、NoSQLを調べてみてあながち間違いではなかった。
  • 今後はより多様なデータを扱うことが多くなると感じているため、NoSQLがエンタープライズでもどんどん使われるようになるなという感じ。(自分の業務では関わっていないだけなのかもしれないが・・・)
  • ただ、NoSQLとRDBは役割や用途が異なるため、どちらかがなくなることはないということ。
  • ドキュメントタイプとグラフタイプが全くわからいない・・・。
  • 触ってみないと実業務のどこで活用できるかがまだ不明確なため、せっかくなのでAWSで触ってみようかと

参考