データベースについて調べてみた

データベースについて調べたことのメモ。Oracle要素多めになる予定。

ドキュメントDBについて調べてみた

NoSQLに属するドキュメントDBについて、もう少し調べてみた。

ドキュメントDBの特徴

  • 1件のデータをドキュメントとして格納
  • ドキュメントのデータ構造は自由(RDBの様にテーブル構造を事前に決める必要がない)

KVSで言うところのValueに、JSONとか放り込んじゃえば、KVSもドキュメントDBも一緒なのでは?と思いましたが、ドキュメントDBは、JSONの中に含まれている属性を指定した検索やインデックス作成もできるところが、KVSとは違うようだ。

 

今の世の中、広く利用されているWebAPIでは、データ取得する際にJSONYAMLなどが使用されていて、これらをRDBMSに格納するのは難しい(JSONの様な階層化された情報を予めRDBMS側で定義するのが難しい)し、頑張ってRDBMSで定義をしても、WebAPIは仕様変更頻度が高いことが多いので、また頑張らなければいけない(仕様変更に対する追従スピードが劣る/負担が大きい)という点から、データ構造が自由なドキュメントDBというのが、生まれてきたようだ。

 

主なドキュメントDB

ドキュメントDBのプロダクトを調べてみると、よく見かけたのが以下2つ。

各プロダクトの特徴をまとめてみようと思ったが、ドキュメントDBとしての特徴は記載されていても、そのプロダクトの特徴というのが、ちょっと読み解けなかったので、両者を比較しているサイトの情報から、特徴をピックアップしてみることにした。

MongoDB
  • バイナリ形式でデータを保存するBSONを使用
  • 独自のクエリ言語を使用してデータを操作
  • マスタスレーブ型のレプリケーションが使用できる
  • Couchと比較すると高性能らしい
CouchDB
  • 半構造化JSON形式を使用
  • HTTPかJavaScriptAPIを使用してデータを操作
  • マルチマスタ(双方向)レプリケーションが使用できる

 

参考にしたサイト:

https://www.xplenty.com/jp/blog/couchdb-vs-mongodb-ja/

 

 

次の記事:カラムストア型DBについて調べてみた

 

前回の記事:KVSについて調べてみた