Trinoは、オープンソースの分散SQLクエリエンジンであり、さまざまなデータソースに対して高性能なインタラクティブクエリをサポートします。Trino OceanBaseコネクタを使用すると、標準SQLを使用してOceanBaseデータベースに対するクエリや分析を実行でき、データ探索、レポート生成、データソース間の連携クエリなどのシナリオに適しています。
バージョン互換性
コンポーネント |
バージョン要件 |
|---|---|
| Trino | ≥ 433 |
| OceanBase | ≥ V4.2.5 |
前提条件
Trinoを使用してOceanBaseデータベースに接続する前に、以下の点を確認してください:
- Dockerがインストール済みであること。Dockerのインストールについては、Docker公式ドキュメントを参照してください。
- Java 23.0.0以降のバージョン(64-bit)がインストールされていること。Javaのインストールについては、Oracle Java公式サイトを参照してください。
- OceanBaseデータベースのデプロイが完了し、MySQL/Oracleモードのユーザーテナントが作成されていること。ユーザーテナントの作成方法の詳細については、テナントの作成を参照してください。
手順
ステップ1:OceanBaseデータベースの接続文字列を取得する
OceanBaseデータベースのデプロイ担当者から接続文字列を取得します。例:
obclient -h$host -P$port -u$user_name -p$password -D$database_name
パラメータ説明:
$host:接続IPアドレス。ODP接続の場合はODPアドレスを使用し、直接接続の場合はOBServer IPを使用します。$port:接続ポート。ODPのデフォルトは2883、直接接続のデフォルトは2881です。$database_name:データベース名。注意
テナントに接続するユーザーには、データベースに対する
CREATE、INSERT、DROPおよびSELECT権限が付与されていなければなりません。ユーザー権限の詳細については、MySQLモードの権限分類およびOracleモードの権限分類を参照してください。$user_name:接続アカウント。ODP形式:ユーザー@テナント#クラスタまたはクラスタ:テナント:ユーザー。直接接続形式:ユーザー@テナント。$password:アカウントのパスワード。
接続文字列の詳細については、OBClientを使用してOceanBaseテナントに接続するを参照してください。
例:
obclient -hxxx.xxx.xxx.xxx -P2881 -utest_user001@mysql001 -p****** -Dtest
ステップ2:Trino OceanBaseプラグインをビルドする
この記事では、Trino 468バージョンを例に、Trino OceanBaseプラグインのビルドとデプロイの手順を紹介します。
Trino OceanBaseのソースコードをクローンします:
git clone https://github.com/oceanbase/trino-oceanbase.gitプロジェクトのルートディレクトリで以下のコマンドを実行してプラグインをビルドします:
cd trino-oceanbase ./mvnw clean package -DskipTests注意
trino-oceanbase/pom.xml内のparent.versionはTrinoと一致させてください。
ビルド完了後、プラグインファイルは
./target/trino-oceanbase-468ディレクトリに配置されます。以下のコマンドで確認できます:ls -l ./target/trino-oceanbase-468
ステップ3:Trinoコンテナをデプロイし、接続を設定する
ログ設定ファイル
log.propertiesを作成します:cat > ./log.properties << EOF io.trino=DEBUG EOFOceanBase接続設定ファイル
oceanbase.propertiesを作成します:cat > ./oceanbase.properties << EOF connector.name=oceanbase connection-url=jdbc:oceanbase://\$host:\$port/\$database_name connection-user=\$user_name connection-password=\$password oceanbase.compatible-mode=mysql oceanbase.auto-reconnect=true oceanbase.remarks-reporting.enabled=true decimal-mapping=ALLOW_OVERFLOW decimal-rounding-mode=HALF_UP EOFパラメータ説明:
$host:OceanBase接続アドレス。$port:OceanBase接続ポート。$database_name:データベース名。$user_name:接続ユーザー名。$password:接続パスワード。
Trino Dockerコンテナを起動します:
docker run -d \ --name trino \ -e TZ=Asia/Shanghai \ -v ./target/trino-oceanbase-468:/usr/lib/trino/plugin/oceanbase \ -v ./oceanbase.properties:/etc/trino/catalog/oceanbase.properties \ -v ./log.properties:/etc/trino/log.properties \ trinodb/trino:468 # コンテナの状態を確認します。 docker ps -a |grep trino
結果の検証
Trino CLIで SHOW CATALOGS; を実行します。
docker exec -it trino trino --execute 'SHOW CATALOGS;'
OceanBaseデータベース内のスキーマリストが正常に表示されれば、接続設定は正しいことを意味します。
"jmx"
"memory"
"oceanbase"
"system"
"tpcds"
"tpch"