Redis HBO プロバイダー¶
Redis HBO プロバイダーは、履歴ベースの最適化 (HBO) の履歴統計を格納および取得するためのカスタム構成された Redis クライアントのロードをサポートします。Redis クライアントはステートフルであり、Lettuceに基づいています。RedisClient と RedisClusterClient の両方がサポートされており、RedisClusterAsyncCommandsFactory は、カスタム構成のためにユーザーが拡張することを意図しています。
構成¶
etc/catalog/redis-provider.propertiesを作成して、Redis HBO プロバイダープラグインをマウントします。
構成プロパティを適宜編集します。
構成プロパティ¶
次の構成プロパティを etc/catalog/redis-provider.properties で使用できます。
| プロパティ名 | 説明 | 
|---|---|
| 
 | Presto サーバーがコーディネーターであるかどうかを示すブール値プロパティ | 
| 
 | Redis サーバー URI | 
| 
 | Redis フェッチリクエストの最大タイムアウト (ミリ秒単位) | 
| 
 | Redis セットリクエストの最大タイムアウト (ミリ秒単位) | 
| 
 | 格納する Redis データの TTL (秒単位) | 
| 
 | このプラグインが本番環境で有効になっているかどうかを示すブール値プロパティ | 
| 
 | Redis 資格情報のパス | 
| 
 | クラスターモードが有効になっているかどうかを示すブール値プロパティ | 
履歴ベースの最適化のためのコーディネーター構成¶
これらのプロパティは、プランニングで履歴統計を追跡および使用するために、Presto コーディネーターの etc/config.properties で構成する必要があります。
| プロパティ名 | 説明 | デフォルト値 | 
|---|---|---|
| 
 | 履歴プラン統計の使用を有効にするブール値プロパティ | false | 
| 
 | 履歴プラン統計の追跡を有効にするブール値プロパティ | false | 
| 
 | 正規プラン内のノード数がこの制限内にある場合にのみ、履歴ベースの最適化を使用する整数値 | 1000 | 
| 
 | プランハッシュと統計収集におけるオプティマイザーのエンドツーエンドタイムアウトの期間 | 10 (秒) | 
資格情報¶
プラグインは、Redis にアクセスするために Redis サーバー URI プロパティ hbo.redis-provider.server_uri を必要とします。カスタム Redis デプロイメントによっては、追加の資格情報を追加する必要がある場合があります。
ローカルテストの設定¶
- Redis ドキュメントに従ってローカル Redis クラスターをセットアップして、Redis クラスターを作成します。 
- presto-main/etc/config.propertiesで、- ../redis-hbo-provider/pom.xml,\を- plugin.bundlesに追加します。
- presto-main/etc/に、これらのサンプルプロパティを使用してファイル- redis-provider.propertiesを作成します。- coordinator=true hbo.redis-provider.enabled=true hbo.redis-provider.total-fetch-timeoutms=5000 hbo.redis-provider.total-set-timeoutms=5000 hbo.redis-provider.default-ttl-seconds=4320000 hbo.redis-provider.cluster-mode-enabled=true hbo.redis-provider.server_uri=redis://:7001/
本番環境の設定¶
プラグイン JAR を本番環境の plugins ディレクトリに配置できます。
または、次の方法に従って、Presto ビルド中にプラグインがロードされるようにします。
- presto-server/src/main/assembly/presto.xmlの- <fileSets>にプラグインを登録するために、以下を追加します。- <fileSet> <directory>${project.build.directory}/dependency/redis-hbo-provider-${project.version}</directory> <outputDirectory>plugin/redis-hbo-provider</outputDirectory> </fileSet>
- redis-hbo-provider/src/main/resourcesに、Plugin エントリクラス- com.facebook.presto.statistic.RedisProviderPluginを持つファイル- META-INF.servicesを作成します。
- presto-server/pom.xmlで、モジュールへの依存関係を追加します。- <dependency> <groupId>com.facebook.presto</groupId> <artifactId>redis-hbo-provider</artifactId> <version>${project.version}</version> <type>zip</type> <scope>provided</scope> </dependency>
- (オプション) - com.facebook.presto.statistic.RedisClusterAsyncCommandsFactoryにカスタム Redis クライアント接続ログインを追加します。- 注: AsyncCommands は適切に提供する必要があります。