コンサルでデータサイエンティスト

仕事でPythonを書いてます。機械学習、Webマーケティングに興味があります。趣味は旅です。

NoSQLのメリットと選ぶべき理由

NoSQLデータベースに触れる機会があったので、RDBMSとの違いを明らかにしながら利点や特徴についてまとめました。

目次

NoSQL とは

NoSQLとは Not only SQL の略であり、名前の通りデータの処理にSQLを必要としないデータベース (DB) です。1つのキーに対して1つの値を持つキー値型と、1つのキーに対して値だけでなく、配列など自由なデータ形式を持つことができるドキュメント型などが主に使われています。特徴としては、一意のキーに対して1つのデータが決まっているということがあります。これだけ書くと、MySQLやPostgresなどのRDBMSでもキーで検索して値を取り出せるし、そちらの方が便利なのでは?と感じる方も多いと思います。RDBMSとの違いを踏まえて、NoSQLのメリットを紹介していきます。


NoSQL のメリット

NoSQLが生まれた背景には、システムのあり方が多様化する中で、より柔軟なデータベースが求められていったということがあります。RDBMSは、データの複雑な関係構造を保持できる一方で、データの肥大化によって性能が劣化してしまうというデメリットがありました。ゲーム系のサービスや、アドテクノロジー、IoTシステムなど、大量のデータを扱うようなシステムのデータベースでは、データ量やユーザー数の増加・減少に応じて容量を柔軟に拡張したり、縮退させるような弾力的な拡張性が必要とされています。RDBMSは原則として1台のサーバーで動作するように設計されているのに対して、NoSQLはサーバを増加させると性能が改善するため、スケールアウトさせやすいというメリットがあります。そのため、データベース設計時にデータ量についてあまり考慮する必要がなく、ビッグデータと呼ばれるような大規模なデータ量を扱うときには強い味方となってくれるでしょう。

NoSQLを選ぶべき場面

ここまでで、NoSQLのメリットについて理解することができました。それでは実際にシステム要件を考えるときに、どのような場合にNoSQLデータベースを選択するべきかについて考えていきたいと思います。特にNoSQLが適しているのは、追加処理やデータ参照が多いシステムです。NoSQLはこれらの処理に最適化されているため、高速でデータの追加や参照が可能です。先ほど例を挙げたようなゲームのウェブサービスや、アドテク、センサデータなどを1秒間に何百件も扱うようなIoTシステムなどがこれに当てはまります。他にも画像データや音声データなどの非構造データを大量に保持したいときにはRDBMSよりもNoSQLのほうが有効でしょう。また、将来的にカラムを増やす可能性があるような時には、より柔軟なNoSQLデータベースのほうが扱いやすいと思います。

一方で、予約情報などのような厳密な処理が求められるシステムには適していないと言えます。しかし、最近ではこのような課題にも対応したNoSQLもあるようなので、開発するシステムに合ったデータベースを選んでいくことが大事だと思います。

まとめ

NoSQLのメリットと使用すべき場面についてご紹介しました。強みとしては、より柔軟に拡張でき、スケールアウトさせやすいということがありました。大量のデータを追加させていくようなシステムを開発する際は、ぜひ検討してみてはいかがでしょうか。

* 参考記事
https://academy.gmocloud.com/qa/20160509/2284
https://morizyun.github.io/blog/rdbms-nosql-merit-demerit/index.html
https://boxil.jp/mag/a3032/
https://employment.en-japan.com/engineerhub/entry/2017/11/22/110000