NoSQL(非リレーショナル・データベース)
RDBMS(MYSQL)はよく使うがNoSQLはRedisぐらいしか使ったことがない為、使ってみたいなと思い調べてみた。
- 参考
- AWSのドキュメント NoSQL とは
- ZeNet Japan IoT時代のデータストア--躍進するNoSQL、拡張するRDB
NoSQLとは
一般的なデータベースはプライマリキーがあり、外部キーの制約でリレーションを構築してデータベースを構成し、
データを入れる際にはデータを入れるカラムにデータの方に応じた型を定義した後データを投入する。
NoSQLの場合はNoSQLのタイプにもよるが構造化されていないようなデータ(テキスト、動画、音声)や、半構造化データ(JSON、XML等)のデータをそのまま投入可能。
最近はNoSQLでもSQLのような物が使えるものも出てきたが一般的にはSQLを使った複雑なクエリの実行などができない変わりに処理が軽いため大量のデータを登録、分析、検索するような用途に向いている。
NoSQLの種類
キーバリューストア型
有名なプロダクト
- Redis, Memcached, DynamoDB
特徴
- あるキーに対応する値のペアを登録できる
- 水平スケーリングがやりやすい
ドキュメント型
有名なプロダクト
- MongoDB
特徴
- キーバリューストア型とは違いキーに対応するバリューではなく半構造化データのJSON, XMLなどのデータを格納する
- 階層構造を持つデータを保存できるのでアプリケーションのニーズに合わせて拡張することが容易
グラフ型
有名なプロダクト
- Neo4j, Neptune
特徴
- データとデータのつながりをデータベースとして管理ができる
- SNSのユーザー同士のフォロー、フォロワーの関係や、ネットワーク機器同士のつながりの様なデータのつながりを保存する
ワイドカラムストア型
有名なプロダクト
- Cassandra, Hbase
特徴
- 最近話題の「カラム型データベース」とはどんな仕組みのデータベースか?
- NoSQLの中では一番RDBMSに近いが、RDBMSはSQLを使って特定の行を抜き出すのが得意だが、ワイドカラム型のNoSQLは列単位でデータを抜き出すのが得意
- 時系列のデータで特定の列を抜き出して集計するの様な処理が得意だが、RDBMSのような行を抜き出して集計する、更新するなどの処理は不得意