動機
NoSQLの定義って? RDBとの違いは? ってところがわかってなかったので、ざっくり理解レベルですが調べたのでまとめてみました。
##RDB
レコード(行)とフィールド(列)でできたテーブルと呼ばれる表にデータを格納する。テーブルの各行はテーブル内で一意なキーを持っており、このキーと外部キーの関係を設定することで新しいテーブルを作ることができる。
CAP定理(Consistancy:一貫性、Availability:可用性、Partition tolerance:分断体制 の3つを同時に満たす分散システムは存在しない)のなかのCとAを保証する。Pは保証されていない。つまりデータは単一のサーバー内にある。
メリット:一貫性が保証されている。複雑なクエリを書ける
デメリット:大規模データになると処理が遅くなる事がある
参考
https://www.teracloud.co.jp/special_cap-theorem.html
https://tech-blog.rakus.co.jp/entry/20180919/nosql/bigdata
https://www.geekly.co.jp/column/cat-technology/1904_005/
NoSQL DB
No only SQLの略でSQL以外の技術を使ったDBのこと。キーバリュー型、カラム思考型、ドキュメント指向型などがある。
CAP定理のうち、Pを重視している。つまり、データを複数サーバーに分散して保管でき、1つのサーバーに障害があっても別のサーバーからデータを参照できることを重視する。これにより、1つのサーバーでは収容できない膨大なデータを扱うことができるなどのメリットが有る。
メリット:複数のサーバーに処理を水平分散できるため処理が早い。拡張しやすい。
デメリット:一貫性が保証されていない。複雑なクエリは書けない。
firestoreはドキュメント指向のデータベース
Cloud Firestore は NoSQL ドキュメント指向データベースです。SQL データベースとは違い、テーブルや行はありません。代わりに、データは「ドキュメント」に格納し、それが「コレクション」にまとめられます。
参考
https://firebase.google.com/docs/firestore/data-model?hl=ja