NoSQLって何?
-
RDBMSとの対義語
-
Not Only SQLの略(SQLだけでない)
-
DBの操作をSQL以外で行える
-
リレーショナルデータベース(SQLベースのデータベース)以外のデータベース管理システムの総称
-
これまでのRDBで使えるデータモデルは、テーブル構造だけだったが、テーブル構造だけでなく以下のデータモデルも使える
- キーバリュー型
- カラム指向型
- ドキュメント指向型
- グラフ指向型
なんでNoSQLが生まれたの?なんで必要になったの?どんな課題を解決するの?
「RDBの処理遅いな〜」という課題を解決
RDBはデータ量が増えすぎると性能が劣化してしまう。
最近IoTとかでビックデータ扱うんだよな〜RDBのままだと性能が心配だな〜
→あ、じゃあRDBではテーブルの整合性を保つためのトランザクションとか複雑な処理やってるけど、そんなことやらずにシンプルな作りにすれば、高速化できるんじゃね。
→NoSQLおぎゃーおぎゃー
「今後データ量が増えたときどうしよう」という課題を解決
従来のRDBシステムは原則として1台のサーバーで動作するように設計されている。
これだといずれデータ量が増えた時に1台のサーバーだけでは処理能力が足りない。
→あ、じゃあスケールアウトしやすいDB作っちゃえばいいじゃん
→NoSQLおぎゃーおぎゃー
NoSQLのメリット
- 処理が高速
- スケールアウトしやすい(サーバー増やして、処理能力向上)
- 様々なデータ構造に対応している(画像や音声などの非構造化データやJSON・XMLなどの半構造化データ)
NoSQLのデメリット
- スケールアウトによる処理の分散や、トランザクションがなかったり、データの一貫性を確保できない
- 扱えるデータモデルが多い分、処理が複雑になるため、複雑なクエリに対応しにくい
- 学習コストが高い
どういうところで使われるの
- IoT
- ソーシャルメディア
- リアルタイムアナリティクス
- ECサイト
- モバイルアプリケーション
- 金融機関
で、結局どういう時NoSQL使うの?
大量データの利用とシステムの柔軟性を実現したい場合に利用するのがいいらしい
参考文献
https://products.sint.co.jp/topsic/blog/nosql
https://www.dsk-cloud.com/blog/gc/about-nosql#:~:text=多様な形式のデータ,複雑になるためです%E3%80%82
https://www.softbanktech.co.jp/corp/hr/recruit/articles/101/
https://blog.trocco.io/glossary/nosql#NoSQLdetabesuno_huo_yong_li