関数名前空間マネージャー¶
警告
これは積極的に開発中の実験的な機能です。関数名前空間マネージャーの構成方法は変更される可能性があります。
関数名前空間マネージャーは、SQL 関数の保存と取得をサポートし、Presto エンジンが関数の作成、変更、削除などのアクションを実行できるようにします。
関数名前空間は、catalog.schema
(例: example.test
) の形式です。これは、関数を保存するためのスキーマと考えることができます。ただし、テーブルやビューの保存はサポートされておらず、関数のみをサポートするため、完全なスキーマではありません。
組み込み関数とユーザー定義関数のいずれも、それぞれの Presto 関数は関数名前空間に存在します。すべての組み込み関数は、presto.default
関数名前空間に存在します。関数の完全修飾名は、関数が存在する関数名前空間とそれに続く関数名です (例: example.test.func
)。組み込み関数はクエリ内で関数名前空間を省略して参照できますが、ユーザー定義関数は完全修飾名で参照する必要があります。関数は、完全修飾名とパラメーター型リストによって一意に識別されます。
各関数名前空間マネージャーは、カタログ名にバインドされ、そのカタログ内のすべての関数を管理します。既存のコネクターのカタログ名を使用することは、動作が定義されておらずテストもされていないため推奨されず、将来は許可されなくなります。
現在、これらのカタログ名は実際のカタログに対応していません。セッションでカタログとして指定することはできず、CREATE SCHEMA、ALTER SCHEMA、DROP SCHEMA、またはSHOW SCHEMAS もサポートしていません。代わりに、名前空間は以下の方法を使用して追加できます。
構成¶
Presto は現在、すべての関数名前空間マネージャー関連情報を MySQL に保存しています。
example
カタログを管理する MySQL ベースの関数名前空間マネージャーをインスタンス化するには、管理者は最初に実行中の MySQL サーバーが必要です。MySQL サーバーが localhost:1080
で到達できると仮定して、次の内容を含む etc/function-namespace/example.properties
ファイルを追加します。
function-namespace-manager.name=mysql
database-url=jdbc:mysql://example.net:3306/database?user=root&password=password
function-namespaces-table-name=example_function_namespaces
functions-table-name=example_sql_functions
Presto が上記の MySQL 関数名前空間マネージャー構成で最初に起動すると、存在しない場合は 2 つの MySQL テーブルが作成されます。
example_function_namespaces
は、example
カタログの関数名前空間を格納します。example_sql_functions
は、example
カタログの SQL 呼び出し関数を格納します。
etc/function-namespace
の下に複数のプロパティファイルを配置することで、複数の関数名前空間マネージャーをインスタンス化できます。それらは同じテーブルを使用するように構成できます。その場合、各マネージャーは、バインド先のカタログのエントリのみを作成および操作します。
新しい関数名前空間を作成するには、example_function_namespaces
テーブルに挿入します。
INSERT INTO example_function_namespaces (catalog_name, schema_name)
VALUES('example', 'test');
構成リファレンス¶
function-namespace-manager.name
は、インスタンス化する関数名前空間マネージャーのタイプです。現在、mysql
のみがサポートされています。
次の表に、MySQL 関数名前空間マネージャーでサポートされているすべての構成プロパティを示します。
名前 |
説明 |
---|---|
|
MySQL 関数名前空間マネージャーで使用される MySQL データベースの URL。 |
|
このマネージャーによって管理されるすべての関数名前空間を格納するテーブルの名前。 |
|
このマネージャーによって管理されるすべての関数を格納するテーブルの名前。 |