OceanBase Database Proxy(略称:ODP)は、OceanBaseデータベース専用のプロキシサーバーです。OceanBaseデータベースのユーザーデータは、複数のレプリカとして各OBServerノードに保存されます。ODPはユーザーから送信されたSQLリクエストを受信し、最適なターゲットOBServerにSQLリクエストを転送し、実行結果をユーザーに返します。
ODPの概要
OceanBaseデータベースは従来の単一マシンデータベースとは異なり、分散型データベースです。各テーブル、あるいは同一テーブルの異なるパーティションが異なるマシンに保存されている可能性があります。テーブルへの読み書きを行うには、まずデータが属するテーブルまたはパーティションのリーダーレプリカの場所を特定し、その後に対応するSQLステートメントを実行する必要があります。これはアプリケーション層ではほぼ不可能です。ODPはOceanBaseデータベース専用のリバースプロキシソフトウェアであり、そのコア機能はルーティングです。クライアントから発信されたデータアクセスリクエストを正しいOBServerノードに転送し、OBServerノードの応答結果をクライアントに転送します。
クライアントがODPを介してOceanBaseデータベースのデータにアクセスするデータリンクは以下の図のとおりです。

ユーザーは任意のClientドライバーを使用してリクエストを発信します。リクエストはロードバランシングコンポーネントを通じて任意のステートレスなODPにアクセスされ、その後ODPがユーザーリクエストをバックエンドのOceanBaseクラスタ内の最適なOBServerノードに転送して実行します。
説明
ここでいうロードバランシングコンポーネントは、市販の製品であるSLBやF5などが該当します。
ODPはデータベースやテーブルのシャーディングを担当せず、SQLエンジンとして実行計画の生成やスケジューリングにも参加しません。純粋なリバースプロキシ転送のみを担当します。
各OBServerノードには完全なSQLエンジンとストレージエンジンが含まれており、ユーザーのSQLを解析して物理実行計画を生成し、実行する役割を担います。分散型のOBServerノード間ではPaxosプロトコルによって高可用性が保証されます。このアーキテクチャ設計では、ODPは基本的なルーティングと災害復旧機能のみを担い、データベースの機能はすべてOBServerノードが実装します。このように、よりシンプルかつ明確な分業により、各コンポーネントの性能を極限まで引き出すことができ、OceanBaseデータベース全体では単一マシンデータベースに近い性能を実現できます。
ODPはリクエストを正しいリーダーレプリカに送信することをサポートしており、特定の設定によっては読み書き分離やスタンバイ優先読み取りなどのシナリオもサポートします。さらに、OBServerノードがダウンしたり、アップグレードやメジャーコンパクションなどの状態変化が発生した場合でも、ブラックリストメカニズムにより、ユーザーリクエストが正常な状態のOBServerノードにルーティングされることが保証されます。
ODPの管理
OCPはODPに以下の管理機能を提供します。
操作 |
説明 |
|---|---|
| OBProxyクラスタの作成 | この操作を実行すると、OBProxyクラスタを作成できます。 |
| OBProxyパラメータの説明 | この操作を実行すると、OBProxyクラスタのパラメータを管理できます。 |
| OBProxyクラスタの削除 | この操作を実行すると、OBProxyクラスタを削除できます。 |
| OBProxyクラスタ内のすべてのOBProxyのアップグレード | この操作を実行すると、OBProxyクラスタ内のすべてのOBProxyをアップグレードできます。 |
| OBProxyクラスタ内のすべてのOBProxyの再起動 | この操作を実行すると、OBProxyクラスタ内のすべてのOBProxyを再起動できます。 |
| OBProxyが接続するOceanBaseクラスタの管理 | OCPを使用して、OBProxyに接続可能なOBクラスタを追加したり、既に接続されているOBクラスタを削除したりできます。 |
| OBProxyクラスタのパフォーマンス監視 | OCP上で、サービス監視情報とシステム監視情報を含むOBProxyクラスタのパフォーマンス監視情報を確認できます。 |
| OBProxyの追加 | この操作を実行すると、OBProxyクラスタにOBProxyを追加できます。 |
| OBProxyの起動 | この操作を実行すると、OBProxyを起動できます。 |
| OBProxy設定のリフレッシュ | この操作を実行すると、OBProxyの設定をリフレッシュできます。 |
| OBProxyの停止 | この操作を実行すると、OBProxyを停止できます。 |
| OBProxyの削除 | この操作を実行すると、クラスタ内のOBProxyを削除できます。 |
| OBProxyの再起動 | この操作を実行すると、クラスタ内のOBProxyを再起動できます。 |
| OBProxyのアップグレード | この操作を実行すると、クラスタ内のOBProxyをアップグレードできます。 |