はじめに
前回はKubeBlocksの解説と他類似OSSDB管理ソリューションの比較を行いました。今回はKubeBlocksでサポートされているDBソリューションについて説明します。
KubeBlokcsがサポートしているDB
KubeBlocksとはKubernetesクラスタ上にプライベートなDBaaS(Database as a Service)を構築するためのオープンソース基盤です。多種多様なDBソリューションを統一された方法で管理することができます。
また、KubeBlocksはDB以外にもメッセージキューやストレージシステムに対応しています。
ここではKubeBlocksがサポートしているDBソリューションの説明、そのDBソリューションがどのような場面で利用されるかといったユースケースの説明、KubeBlocksがサポートしているDBの種類について紹介します。
Relational Databases
Relational Databases(リレーショナルデータベース)とは
- データを行と列で構成されるテーブルで整理・格納するデータベースシステムです。リレーショナルデータベースではSQLという言語を使ってデータを操作します。
ユースケース
- 在庫管理や顧客の情報管理など、一貫性のあるデータの管理、データ同士で連携が必要なシステムで使用できます。
サポート対象DB
- MySQL:世界で最も広く使われているオープンソースのリレーショナルデータベース
- MariaDB:MySQLから派生したオープンソースのリレーショナルデータベース
- PostgreSQL:高機能さと拡張性が特徴のオープンソースのリレーショナルデータベース
- Vanilla PostgreSQL:カスタマイズしていない素のPostgreSQL
- OrioleDB:PostgreSQLの容量、機能、パフォーマンスを最新のアプローチで向上させるために設計された、新しいストレージエンジン
NoSQL
NoSQLとは
- リレーショナルデータベースではないデータベースの総称です。リレーショナルデータベースのような厳格な構造(スキーマ)を緩和することで処理を単純にできるため高速に大量のデータを処理できます。
ユースケース
- ソーシャルメディアやECサイトなど高速に大量のデータを処理する必要があるシステムに向いています。
サポート対象DB
- MongoDB:大容量データの保存に使用されるドキュメント指向の NoSQL データベース
- Redis:高速でオープンソースの、メモリ内のキーバリューデータストア
- etcd:強力な一貫性のある分散キーバリューストア
- ZooKeeper:分散システムをまとめる、信頼性の高い集中型サービス
OLAP Systems
OLAP Systems(オンライン分析処理)とは
- 複雑なデータベースのクエリを高速に処理する技術の一つです。大量に蓄積されたデータを多角的な視点から素早く分析、集計するために特化したシステム。以下の図は、オンライン分析処理の概念図です。
ユースケース
- 売り上げの分析やWebサイトのアクセス解析などのビジネスに関わるリアルタイム性が必要なシステムに向いています。
サポート対象DB
- Elasticsearch:本番規模のワークロードに最適化されたRESTful検索エンジン
- ClickHouse:列指向データベース
- StarRocks:リアルタイム、多次元、高度な同時データ分析が可能な高性能分析データウェアハウス高速な列指向データベース
- OpenSearch:オープンソースの分散型およびRESTful検索エンジン
Distributed SQL Databases
Distributed SQL Databases(分散SQLデータベース)とは
- 複数のサーバー(ノード)にデータを分散した状態で保存する仕組みです。データを分散して保存するが単一のリレーショナルデータベースのように振る舞うことが可能で可用性が高く高負荷の処理に強いという特徴があります。
ユースケース
- 金融プラットフォームなどの特に高可用性が求められるシステム、ユーザーが世界中にいるグローバルなオンラインサービスなど地理的に広範囲で展開され、一貫性を保つ必要があるシステムに向いています。
サポート対象DB
- TiDB:MySQL互換の分散データベース
- OceanBase-CE:C++ で開発された MySQL 互換の分散データベース
- PolarDB-X:MySQLをベースとした水平スケーリングをサポートするMySQL互換の分散データベース
Vector Databases
Vector Databases(ベクトルデータベース)とは
- テキスト、画像、音声などの複雑なデータを「ベクトル」という数値の配列に変換して保管します。意味の近さや類似性に基づいて高速で複合検索をすることができます。以下の図はベクトルデータベースの解説図です。
ユースケース
- ネットショッピングなどでの類似アイテムの推薦、意味検索など類似性や意味で検索を行うシステムで使用されます。
サポート対象DB
- Qdrant:ベクトルデータベースおよびベクトル類似性検索エンジン
- Weaviate:オープンソースのベクトルデータベース
- Milvus:非常に高速なクラウドネイティブのオープンソースベクトルデータベース
Time Series Databases
Time Series Databases(時系列データベース)とは
- 時間の経過とともに記録される時系列データを扱うことに特化したデータベースであり、時間の経過とともに記録されるデータを効率的に管理します。高速な書き込みと、特定の時間範囲での集計・分析処理を効率的に行えるように最適化されています。
ユースケース
- 需要予測、異常検知など時間ベースの分析が必要なシステムなど様々な分野で使用されています。
サポート対象DB
- InfluxDB:大規模な時系列データの処理に最適化された専用データベース
- VictoriaMetrics:監視ソリューションとしての利用に特化した時系列データベース
- GreptimeDB:スケーラビリティ、分析機能、効率性を重視したオープンソース時系列データベース
- TDengine:データベース、メッセージキュー、キャッシュ等の機能を統合した産業用IoT向けのデータプラットフォーム
Graph Databases
Graph Databases(グラフデータベース)とは
- データをノード(点)とエッジ(線)の集合体(グラフ)として捉えて格納するデータベースです。リレーショナルデータベースでは、テーブル同士の繋がりが増えるほど応答速度が低下します。一方、グラフデータベースは繋がりが増えても応答速度があまり低下しないというメリットがあります。以下の図は、グラフデータベースの概念図です。
ユースケース
- ソーシャルネットワーク、レコメンデーションなど繋がりがあるデータの検索などに向いています。
サポート対象DB
- Nebula:数兆のエッジと頂点を持つグラフを保存および処理できるオープンソースのグラフデータベース
Message Queues
Message Queues(メッセージキュー)とは
- アプリケーション間でデータを非同期で送受信するための中継役をするデータストレージです。キューがあることでデータを送る側も受け取る側も任意のタイミングで処理を行うことができます。以下の図はメッセージキューの概念図です。
ユースケース
- 非同期処理の実装、マイクロサービス間の疎結合化など、システムの応答性・信頼性などを向上させるために様々な場面で使用されています。
サポート対象ソリューション
- RabbitMQ:オープンソースの分散イベント ストリーミングプラットフォーム
- Apache Kafka:信頼性が高いメッセージングおよびストリーミングブローカー
- Apache Pulsar:オープンソースの分散メッセージングおよびストリーミングプラットフォーム
Storage System
Storage Systemとは
- デジタルデータを物理的・論理的に保管、管理するための仕組みや製品全般を差します。
ユースケース
- データベースやアプリケーションのバックアップ先やAI / 機械学習のデータストレージなど様々なデータの保存や管理に使用されます。
サポート対象ソリューション
- MinIO:AWS S3互換APIを提供するオブジェクトストレージソリューション
おわりに
今回の記事で見てきたように、KubeBlocksでは、多種多様なデータベースを、Kubernetesという共通の基盤の上で、統一された作法で管理することができるのがKubeBlocksの強みです。
KubeBlocksを利用することで開発者はインフラの細かな違いを意識することなく、アプリケーションの要件に最適なデータベースを利用できるようになります。
次回はKubeBlocksの導入としてKubernetes上にDBaaSを構築する手順を解説します。
参考文献
KubeBlocks公式:
https://kubeblocks.io/docs/preview/user_docs/overview/supported-addons
リレーショナルデータベースとは?メリット・デメリットや活用例を紹介:
https://primenumber.com/blog/relational-database
NoSQLデータベースとは?メリット・デメリットや活用例を紹介:
https://primenumber.com/blog/nosql
OLAPとは?特徴や実装方式から他の分析手法との比較も解説:
https://primenumber.com/blog/olap
OLAPデータベースにおける高速化の技術:
分散データベースとは?特徴とメリット・デメリットを解説:
https://www.anken-navi.jp/news/work-freelance/distributed-database/
CockroachDB公式サイト:
https://www.cockroachlabs.com/
TiDB公式サイト:
メッセージキューの基礎知識と活用方法:
Amazon SQSのユースケースとAWSサービスとの連携例:
https://qiita.com/kenogi/items/ea6154a0fc3e2d81622b
ベクトル・データベースとは:
https://www.oracle.com/jp/database/vector-database/
Vector DB 入門:
https://zenn.dev/atusi/articles/61b7f95b4df726
【2025年決定版】ベクトルDB完全比較とRAG最新活用:
https://arpable.com/artificial-intelligence/rag/vector-database-rag/
時系列データベースとは? 時系列データの活用例や専用DBの必要性について解説:
https://www.ctc-g.co.jp/keys/blog/detail/what-is-a-time-series-database
時系列データベースとは?基本と活用のメリット:
https://products.sint.co.jp/siob/blog/time-series-database
グラフデータベースとは?RDBとの違いや主要4製品の比較まとめ:
https://aerospike.co.jp/blog/what-is-graph-database/
グラフデータベースとは何か ~ネットワーク状のデータ構造から瞬時に情報を検索するDBを解説:
https://www.imagazine.co.jp/12805-2/
いまさら聞けない、ストレージとサーバの違い:
https://www.netapp.com/ja/blog/server-and-storage/
MinIO公式: