OceanBaseデータベースプロキシ(略称:ODP)は、OceanBaseデータベース専用のプロキシサーバーです。OceanBaseデータベースのユーザーデータは、複数のレプリカとして各OBServerノードに格納されています。ODPはユーザーから送信されたSQLリクエストを受信し、最適なターゲットOBServerに転送した後、実行結果をユーザーに返します。
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をアップグレードできます。 |