OBKV-Table Javaクライアントは、OceanBaseデータベースにアクセスするための豊富なAPIを提供しています。本記事では、OBKV-Table Javaクライアントを使用してクラスタに接続するためのパラメータの設定と使用方法について説明します。
パラメータの説明
概要は以下のとおりです。
分類 |
構成パラメータ |
デフォルト値 |
説明 |
|---|---|---|---|
| タイムアウトとリトライ | RUNTIME_MAX_WAIT | 5000ms | 1回の呼び出しのタイムアウト時間。この時間内で再試行します。 |
| タイムアウトとリトライ | RPC_EXECUTE_TIMEOUT | 3000ms | RPCリクエストを実行するソケットのタイムアウト時間 |
| タイムアウトとリトライ | RPC_OPERATION_TIMEOUT | 2000ms | OceanBase内部でRPCリクエストを実行するタイムアウト時間 |
| タイムアウトとリトライ | RUNTIME.RETRY.TIMES | 3 | 実行中にリトライ可能なエラーが発生した場合のリトライ回数 |
| タイムアウトとリトライ | RUNTIME.RETRY.INTERVAL | 100ms | 実行エラー時のリトライ時間間隔 |
| 接続 | SERVER.CONNECTION.POOL.SIZE | 10 | 1台のサーバーに対する最大接続数 |
タイムアウトとリトライに関するパラメータ
実行に関する基本的なパラメータとして、特にRUNTIME_MAX_WAIT、RPC_EXECUTE_TIMEOUT、RPC_OPERATION_TIMEOUTの設定を確認してください。
設定の原則:RUNTIME_MAX_WAIT > RPC_EXECUTE_TIMEOUT > RPC_OPERATION_TIMEOUT
具体的には以下のとおりです:
パラメータ |
デフォルト値 |
説明 |
ベストプラクティス |
|---|---|---|---|
| RUNTIME_MAX_WAIT | 5000ms | 業務APPがOBKV-Tableクライアントに対して1回のインターフェース呼び出しで許容する最大タイムアウト時間です。この時間内には、失敗した場合のリトライが行われます。 | デフォルト値を推奨します。以下のシナリオでは、より大きな値に設定できます。
|
| RPC_EXECUTE_TIMEOUT | 3000ms | クライアントがRPCリクエストを送信してから、待機する最大時間です。 | デフォルト値を推奨します。以下のシナリオでは、より大きな値に設定できます。
|
| RPC_OPERATION_TIMEOUT | 2000ms | リクエストがサーバー側で実行される最大時間であり、トランザクションのタイムアウト時間も表します。 | デフォルト値を推奨します。以下のシナリオでは、より大きな値に設定できます。
|
| RUNTIME.RETRY.TIMES | 3 | 実行時にエラーが発生した場合、OBKV-Tableクライアントが内部リトライを行う回数です。 | デフォルト値を推奨します。業務シナリオに応じて、実際の状況に合わせて調整できます。 |
| RUNTIME.RETRY.INTERVAL | 100ms | 実行時にエラーが発生した場合、OBKV-Tableクライアントが内部リトライを行う間隔時間です。 | 異常による連続リトライによるメッセージストームを防ぐため、より大きな値に設定することを推奨します。 |
SERVER関連パラメータ
パラメータ |
デフォルト値 |
説明 |
ベストプラクティス |
|---|---|---|---|
| SERVER.CONNECTION.POOL.SIZE | 10 | 1台のサーバーに対する最大接続数。OBKV-TableクライアントはOBServerノードごとに接続プールを作成します。 |
|
パラメータ設定
インターフェース
ObTableClientのパラメータ設定インターフェースは以下のとおりです:
インターフェース |
説明 |
|---|---|
void addProperty(String key, String value) |
単一パラメータの値を設定します |
例
この例では、addPropertyインターフェースを使用してRPC_OPERATION_TIMEOUTの値を1000ミリ秒に設定します。
## 現在のクラスタを以下のように仮定する
## クラスタ名:obkv
## テナント名:obkv_table
## データベース名: obkv_table_db
## ユーザー名:test_user
## ユーザーパスワード:admin123
## システムテナントのユーザー:test_sys_user
## システムテナントのユーザーパスワード:sys123
## Config URL: http://127.0.0.1:8080/services?Action=ObRootServiceInfo&ObCluster=obkv
String paramURL = "http://127.0.0.1:8080/services?Action=ObRootServiceInfo&ObCluster=obkv&database=obkv_table_db";
ObTableClient obkvHandle = new ObTableClient();
obkvHandle.setParamURL(paramURL);
obkvHandle.setFullUserName("test_user@obkv_table#obkv");
obkvHandle.setPassword("admin123");
obkvHandle.setSysUserName("test_sys_user");
obkvHandle.setSysPassword("sys123");
obkvHandle.addProperty(Property.RPC_OPERATION_TIMEOUT.getKey(), "1000");
obkvHandle.init();
高度な構成パラメータ
上記の一般的な設定パラメータに加え、OBKV-Tableは以下の高度な機能の設定もサポートしています。
機能 |
説明 |
参考ドキュメント |
|---|---|---|
| 弱い整合性読み取りと最寄りデータセンターからの読み取り | フォロアーレプリカからのデータ読み取りをサポートし、リーダーレプリカの負荷とネットワーク遅延を軽減します。 | 詳細なパラメータ説明については、OBKV-Table 弱い整合性読み取りと最寄りデータセンターからの読み取りを参照してください。 |