はじめに
普段MongoDBを使っているのですが、最近MySQLに触れる機会があってMySQLって便利だなと思ったと同時に、なぜNoSQLが採用されることがあるのだろうとふと思ったので調べてみました。
NoSQLデータベースとは
NoSQLはRDBMS以外のデータベースの総称です。
NoSQLが使われるようになった経緯
従来のRDBMSはデータの一貫性や複雑な検索や集計が可能といったメリットがある反面、拡張性が低くかったり、データが大量になると処理速度が遅くなるといったデメリットもありました。時代とともに大量の複雑なデータを扱う必要性が高まるなかで、豊富なデータを保存でき高速な処理を行えるNoSQLが台頭してきました。
NoSQLのメリット
高速な処理
RDBMSはトランザクションを使用してデータの整合性を保つために多くの処理が必要になるため、処理が遅くなる可能性があります。一方、NoSQLは必要な処理が少なく、処理速度が速いです。
柔軟なデータモデル
RDBMSはデータの整合性を保つために、データは固定の構造に従っている必要があります。これに対して、NoSQLは、データ構造が柔軟であり、構造化されたデータ以外にも、XMLやJSONなどのような半構造化データや画像や音声などのような非構造化データを扱うことができます。
スケーラビリティ
RDBMSはテーブルと呼ばれる形式でデータを整理し、データの整合性を保ちながら管理するために、元々1つのコンピュータ上で動作するように設計されています。
一方、NoSQLは、複数のサーバーにデータを分散させることができます。これにより、データの増加や負荷増加に対して、柔軟に拡張することができます。
NoSQLのデメリット
整合性は欠ける
トランザクションを使用しないのでRDBMSに比べ整合性は欠けます。ただし最近ではトランザクションをサポートするNoSQLデータベースもあるようです。
クエリ言語の制限
SQLと比べ複雑なクエリを実行することが困難な場合があります。
まとめ
なぜ普段MongoDBを使っているのかわかった気がします。自分が使う技術の特徴を理解するのは大切だと感じました。
参考
https://atmarkit.itmedia.co.jp/ait/articles/1102/24/news098.html
https://www.integrate.io/jp/blog/the-sql-vs-nosql-difference-ja/
https://products.sint.co.jp/siob/blog/rdbms
https://www.itreview.jp/labo/archives/8914
https://zenn.dev/nameless_sn/articles/nosql-manual