データベースの性能を向上させるための手法には、大きく分けて「スケールアップ」と「スケールアウト」の2つがあります。「スケールアップ」とは、データベースが動作しているサーバーの単体性能を向上させることです。具体的には、メモリを追加する、CPU を追加する、 ストレージをSSD に交換する、という手段が考えられます。一方「スケールアウト」とは、サーバーの数を増やすことで性能向上を狙うものです。
それぞれの手法は一長一短ありますが、 スケールアップによる性能向上には物理的な限界があります。スケールアウトの場合、必要に応じてサーバーの台数を追加していけば、データ量が爆発的に増加したとしても十分に対応できます。ただしそのためには、データベースの性能がサーバー台数に比例しなければなりません。投入したハードウェアリソースの量に比例して全体のスループットが向上するシステムのことを、スケーラビリティ(scalability) のあるシステムと呼びます。スケーラビリティはデータ量が日々増大していくIoT アプリケーションでは、非常に重要な指標の一つとなります。
従来のRDB は原理上、スケールアウトによって性能向上させることが難しく、スケーラビリティの悪いシステムでした。NoSQL データベースには様々な種類がありますが、多くのNoSQL データベースで共通の特徴として、処理やデータ構造がシンプルなため、スケーラビリティが非常に高いことが挙げられます(例: Performance evaluation of NoSQL databases, A. Gandini, et. al., RDBMS vs NoSQL: Performance and Scaling Comparison, Christoforos Hadjigeorgiou)
GridDB は、それらのNoSQL データベースの中で比較しても、特に高いスケーラビリティを誇ります。下図に示したように、我々は30ノードまでのサーバー数追加に対してリニアに性能が向上していることを確認しています。ベンチマーク手法の詳細に関しては、こちらのホワイトペーパーを参照下さい。
また、スケールアウトによる性能向上の際に、スケーラビリティと並んで重要な指標としてサーバ追加中の可用性(Availability) が挙げられます。いくらスケーラビリティが高いデータベースであっても、サーバー追加の際にサービスが止まってしまう場合、綿密な計画が必要となり、性能向上を気軽に実行することは難しくなります。GridDB の場合、スケールアウトでのシステム拡張は、運用中のシステムを停止することなく対応できます(*)。また、システムに新たに組み込んだノードには、システムの負荷に応じて適切にデータが配置されます。GridDBが負荷バランスを最適化するため、運用管理者がデータ配置を気にする必要はありません。このような運用を自動化する仕組みが組み込まれており、運用も容易になっています。
* GridDB SE/AE バージョンでサポートされる機能です。
いかかでしょうか?サービスを止めること無く、いつでも性能を向上できるのは、GridDB の最大のメリットの一つです。はじめは小規模な構成でスタートし、あなたのビジネスの成長に応じて拡張していくことが可能です。性能に関する柔軟性が低いRDBの代わりに、是非GridDB を使ってみてください。Community Edition なら、Apache License でいつでも無料で利用可能です。
ブログの内容について疑問や質問がある場合は Q&A サイトである Stack Overflow に質問を投稿しましょう。 GridDB 開発者やエンジニアから速やかな回答が得られるようにするためにも "griddb" タグをつけることをお忘れなく。 https://stackoverflow.com/questions/ask?tags=griddb