OceanBase Database Proxy(略称:ODP)は、OceanBaseデータベース専用のプロキシサーバーです。OceanBaseデータベースのユーザーデータは、複数のレプリカとして各OBServerノードに保存されています。ODPはユーザーから送信されたSQLリクエストを受信し、最適なターゲットOBServerにSQLリクエストを転送し、実行結果をユーザーに返します。
なぜODPが必要か?
ODPはプロキシサーバーであり、データベースへのアクセスパスに1つのジャンプが追加されます。では、なぜODPが必要なのでしょうか?以下の図を例に説明します。
図中のAPPは業務プログラムです。APPの前には3台のODP(ODPのプロセス名はobproxy)があります。実際のデプロイメントでは、ODPとAPPの間には通常、負荷分散装置(例:F5)があり、リクエストを複数のODPに分散します。ODPの下にはOBServerノードがあり、図中には6台のOBServerノードがあります。
ODPを使用する理由は以下の通りです:
接続管理:OceanBaseクラスタは規模が大きく、マシンやソフトウェアに障害が発生したり、運用保守のためマシンが追加または削除される可能性が高いです。OBServerノードに直接接続する場合、上記のような状況が発生するとクライアント側で接続が切断されます。ODPはOBServerノード自体の分散型の複雑さを隠蔽し、クライアントがODPに接続することで、ODPが接続の安定性を保証し、OBServerノードの複雑な状態を処理します。
データルーティング:ODPはOBServerノード内のデータ分布情報を取得でき、ユーザーのSQLをデータが存在するマシンに効率的に転送し、実行効率を向上させます。例えば、テーブルt1のデータは図中のP1に、テーブルt2のデータはP2に、テーブルt3のデータはP3にあります。insert into t1 ステートメントに対して、ODPはSQLをZONE_2内のP1リーダーレプリカを含むマシンに転送できます。update t2 ステートメントに対して、ODPはSQLをZONE_1内のP2リーダーレプリカを含むマシンに転送できます。
ODPにより、分散データベースを単一マシンのデータベースのように利用できます。
ODPの特徴
OceanBaseデータベースの重要なコンポーネントとして、ODPは以下の特徴を備えています:
高性能転送
ODPはMySQLプロトコルと完全に互換性があり、OceanBase独自のプロトコルもサポートしています。マルチスレッド非同期フレームワークと透過的ストリーミング転送の設計を採用しており、データの高性能転送を保証すると同時に、マシンリソースへの消費を最小限に抑えます。
最適ルーティング
ODPは、ユーザーリクエストに関連するレプリカの位置、ユーザーが設定した読み書き分離のルーティングポリシー、OceanBaseデータベースの複数地域展開における最適なリンク、およびOceanBaseデータベースの各マシンの状態と負荷状況を十分に考慮し、ユーザーのリクエストを最適なOBServerノードにルーティングします。これにより、OceanBaseデータベース全体の高性能な稼働を最大限に保証します。
接続管理
あるクライアントの物理接続に対して、ODPは自身とバックエンドの複数のOBServerノードとの接続を維持し、バージョン番号に基づく増分同期方式を採用して各OBServerノード接続のセッション状態を維持します。これにより、クライアントが各OBServerノードに効率的にアクセスできるようになります。
専用プロトコル
ODPは、OBServerノードとのデフォルトでOceanBase専用プロトコルを採用しています。例えば、パケットにCRC検証を追加してOBServerノードとのリンクの正確性を保証したり、Oracle互換性のデータ型とインタラクションモデルをサポートするために伝送プロトコルを強化したりしています。
セキュリティと信頼性
ODPはSSLによるデータアクセスをサポートしており、MySQLプロトコルとの互換性も備えているため、お客様のセキュリティ要件を満たします。
メンテナンスが容易
ODPはステートレスであり、無制限の水平スケーリングをサポートします。複数のOceanBaseクラスタへの同時アクセスも可能です。豊富な内部コマンドにより、自身の状態をリアルタイムで監視でき、メンテナンスの利便性が大幅に向上します。
ライセンス
ODP Community Editionは完全にオープンソースであり、MulanPubL - 2.0ライセンスの下で提供されています。ソースコードの自由なコピーと利用が許可されています。ソースコードを変更または配布する際は、MulanPubL - 2.0ライセンスの条項を遵守してください。