A Comparative Performance Evaluation of SQL and NoSQL Databases Under Different Indexing and Cache Conditions
この研究は、様々なデータセットサイズ、インデックス戦略、およびキャッシュ条件下でMySQL 8.0.46とMongoDB 8.0.32をベンチマークしており、MongoDBがバルク書き込みに優れている一方で、両システムともルックアップにおいてインデックスから大きな恩恵を受けることを明らかにし、最終的にデータベースのパフォーマンスはどちらのモデルが普遍的に優れているかではなく、極めて文脈依存的であることを示している。
原論文は CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/) でライセンスされています。 これは以下の論文のAI生成解説です。著者が執筆したものではありません。技術的な正確性については原論文を参照してください。 免責事項の全文を読む
デジタル世界では、ほぼすべての行動が痕跡を残します。購入、ログイン、メッセージの送信――それぞれのイベントは、現代生活の記憶を保持する巨大な電子的な書類棚であるデータベースに保存されます。これらのシステムを円滑に稼働させ続けるために、エンジニアは主に2種類のファイリングシステムから選択しなければなりません。一方のタイプは「リレーショナル」として知られ、伝統的なスプレッドシートのように、厳格な行と列を持つ硬直したテーブルにデータを整理します。もう一方は「NoSQL」と呼ばれ、形状やサイズが変化し得る、柔軟で自己完結型のドキュメントとして情報を保存します。長年、どちらのシステムがより速く、あるいは優れているかという議論が続いてきました。しかし、その答えが単純であることは滅多にありません。なぜなら、速度はシステムに対して何を求めているのか、そしてどれだけのデータを検索しなければならないのかによって完全に左右されるからです。
最近のある研究は、理論ではなく、制御された実験によってこの疑問を解決しようと試みました。研究者のアミール・カーン、サワイラ・ガル、そしてアルージュ・シャハザディは、2つの人気のあるシステムであるMySQLとMongoDBが、同一の条件下でどのようにパフォーマンスを発揮するかを見るために、単一のコンピュータ上にテスト環境を構築しました。彼らは単にどちらが速いかを問うたのではありません。データの量が小さな塊から巨大な山へと増大したときに速度がどのように変化するか、そして、情報を素早く見つけるための特殊なショートカットである「インデックス」の使用が結果をどのように変えるのかを問いました。彼らは3つの特定のタスクをテストしました。大量の新しいデータをシステムに流し込むこと、特定の名前に基づいて単一のレコードを見つけること、そして多くのレコードをグループ化して合計を算出することです。
研究者たちはまず、合成のトランザクション記録を生成し、1万件、10万件、100万件の3つの異なるデータセットを作成しました。これらのレコードを両方のデータベースシステムにロードし、各タスクを完了するのにかかる時間を測定しました。最初のテストでは、大量の新しいデータを一度にシステムに書き込む作業を行いましたが、ドキュメントベースのシステムであるMongoDBが、一貫して高速であることを証明しました。100万件のレコードを扱う際、MongoDBは約12.5秒でタスクを完了しましたが、リレーショナルシステムであるMySQLは30秒近くかかりました。この差は、データセットが小さくても大きくても同様であり、純粋なデータ取り込みにおいては、ドキュメントベースのアプローチがこの特定の構成において明確な優位性を持っていることを示唆していました。
2番目のテストは、顧客IDによって特定の顧客を探すような、単一のレコードを見つけることに焦点を当てました。ここでは、インデックスの助けなしで行う場合と、インデックスを使用して行う場合で、レコードを見つけるのにかかる時間を測定しました。インデックスがない場合、システムは一致するものを見つけるためにすべてのレコードをスキャンしなければなりませんでした。データが100万件に増えると、この検索は両方のシステムにおいて非常に遅くなり、0.5秒以上を要しました。しかし、研究者がシングルフィールド・インデックス(各IDの場所を直接指し示す単純なリスト)を追加すると、結果は劇的に変化しました。レコードを見つける時間は両方のシステムともわずか1ミリ秒強へと急落しました。この99%を超える減少は、単純なルックアップにおいては、データベースの種類よりも、検索を導くための優れた地図が存在するかどうかの方がはるかに重要であることを示しました。
3番目のテストは、フィルタリングを伴う集計という、より複雑なものでした。研究者たちは、特定のカテゴリ内のすべてのトランザクションを見つけ、それらをステータスごとにグループ化し、合計金額を算出するようシステムに命じました。このタスクは、単にデータを見つけるだけでなく、ソート(並べ替え)と計算も必要となるため、より困難です。このシナリオでは、結果は一様ではありませんでした。小規模なデータセットではリレーショナルシステムの方が速い場合もありましたが、データが100万件に成長すると、ドキュメントベースのシステムが大幅にリードしました。ドキュメントシステムは約300ミリ秒でタスクを完了しましたが、リレーショナルシステムは1秒以上を要しました。
おそらく最も驚くべき発見は、この3番目のテストの最大データセットにおいて現れました。研究者がリレーショナルシステムのカテゴリフィールドにインデックスを使用して高速化を試みたところ、インデックスがない場合よりも、実際には処理が遅くなってしまったのです。インデックスを使用するとシステムは1秒以上かかり、インデックスがない場合は約700ミリ秒でした。この直感に反する結果はミスではなく、研究者は独立してテストを繰り返し、この特定の構成においてはインデックスが実際に遅延を引き起こしていることを確認しました。この特定の種類の複雑な計算においては、インデックスを使用するためのオーバーヘッドがそのメリットを上回ってしまうという、単純な「どちらが速いか」という結論では見落とされてしまう微細なニュアンスが存在するのです。
研究では、システムがすでに「ウォーム(温まった)」状態、つまり最近同様のリクエストを処理しており、データがメモリ内に準備されている状態での挙動についても調査しました。これらの条件下では、両方のシステムが高速化されましたが、その改善の度合いは異なっていました。ドキュメントシステムは、集計速度において大幅な向上を見せましたが、リレーショナルシステムによる向上はより緩やかなものでした。これらの知見は、パフォーマンスがソフトウェア自体の固定された特性ではなく、データサイズ、クエリの種類、インデックスの有無、そしてシステムの現在のメモリ状態の相互作用による流動的な結果であることを裏付けています。
最終的に、本研究は「普遍的な勝者は存在しない」と結論付けています。これら2つのデータベースモデルの選択は、単一の速度テストに基づいて行うことはできません。大量の新しいデータを迅速に取り込むことが目的であれば、ドキュメントベースのシステムが明確な優位性を示しました。単一のレコードを検索することが目的であれば、適切なインデックスが配置されている限り、両方のシステムは同等に優れた性能を発揮します。しかし、大量のデータを伴う複雑な計算を行う場合、そのパフォーマンスはデータの構造やインデックスの張り方によって変動します。この研究は、データの領域において、適切なツールとは何であるかは、常に「どのような仕事をするか」という具体的な目的に依存するということを思い出させてくれます。最も効率的な道筋は、ブランドを選ぶことではなく、成すべき仕事の独自の形を理解することによって見出されるのです。
自分の分野の論文に埋もれていませんか?
研究キーワードに一致する最新の論文のダイジェストを毎日受け取りましょう——技術要約付き、あなたの言語で。