すべてのプロダクト
Search
ドキュメントセンター

Tablestore:Presto Server の構成と SQL の使用例

最終更新日:Apr 30, 2026

PrestoDB を Tablestore に接続するには、Presto Server のカタログおよびスキーマを構成します。接続後は、本トピックの SQL 使用例を用いてデータ操作を行います。

サーバー構成

Presto Server のカタログおよびスキーマを構成します。

  • カタログ構成では、コネクタ設定とスキーマ構成モードを定義します。スキーマは、メタテーブルによる動的構成またはローカルファイルによる静的構成のいずれかで設定します。

  • 動的構成(メタテーブルモード)の場合、Presto Server 起動前にスキーマ構成は不要です。SQL コマンドラインインターフェイス (CLI) を起動した後に、スキーマおよびマッピングテーブルを作成します。

カタログ構成

カタログ構成ファイルは、PrestoDB インストールフォルダ内の etc/catalog/tablestore.properties にあります。

connector.name=tablestore
tablestore.schema-mode=meta-table
#tablestore.schema-mode=file
tablestore.schema-file=/users/test/tablestore/presto/tablestore.schema
tablestore.meta-instance=metastoreinstance
tablestore.endpoint=http://metastoreinstance.cn-hangzhou,ots.aliyuncs.com/
tablestore.accessid=****************
tablestore.accesskey=**************************
tablestore.meta-table=meta_table
tablestore.auto-create-meta-table=true

構成項目

必須

説明

connector.name

tablestore

はい

コネクタの名前です。tablestore に設定する必要があります。

tablestore.schema-mode

meta-table

はい

スキーマ構成モードです。有効な値は以下のとおりです。

  • meta-table:メタテーブルを使用した動的構成。メタデータストレージ用の Tablestore インスタンス情報が必要です。

  • file:ローカルファイルを使用した静的構成。ローカル静的ファイルの完全なパスが必要です。

tablestore.schema-file

/users/test/tablestore/presto/tablestore.schema

はい、条件付きの

tablestore.schema-modefile に設定されている場合にのみ必要です。

ローカル静的ファイルの完全なパスです。詳細については、「スキーマ構成」をご参照ください。

tablestore.meta-instance

metastoreinstance

はい、条件付きの

tablestore.schema-modemeta-table に設定されている場合にのみ必要です。

メタデータを格納する Tablestore インスタンスです。詳細については、「インスタンス」をご参照ください。

重要

設定されたインスタンスがご利用の Alibaba Cloud アカウントに存在することを確認してください。

tablestore.endpoint

http://metastoreinstance.cn-hangzhou,ots.aliyuncs.com/

はい、条件付きの

tablestore.schema-modemeta-table に設定されている場合にのみ必要です。

メタデータを格納する Tablestore インスタンスのエンドポイントです。詳細については、「エンドポイント」をご参照ください。

tablestore.accessid

はい、条件付きの

tablestore.schema-modemeta-table に設定されている場合にのみ必要です。

メタデータインスタンスへのアクセス権限を持つ Alibaba Cloud アカウントまたは Resource Access Management (RAM) ユーザーの AccessKey ID および AccessKey Secret です。

tablestore.accesskey

条件付き必須

tablestore.meta-table

meta_table

はい、条件付きの

tablestore.schema-modemeta-table に設定されている場合にのみ必要です。

メタデータを格納する Tablestore テーブルの名前です。

tablestore.auto-create-meta-table

true

いいえ

tablestore.schema-modemeta-table に設定されている場合にのみ適用されます。

メタデータテーブルを自動作成するかどうかを指定します。デフォルトは true で、スキーマ作成時にメタデータテーブルが自動的に作成されます。

スキーマ構成

スキーマは、メタテーブルによる動的構成(推奨)またはローカルファイルによる静的構成のいずれかで設定します。

メタテーブルによる動的構成

  • Presto Server 起動前にスキーマ構成は不要です。

  • 接続および SQL CLI 起動後、create schema コマンドおよび create table コマンドを使用して、スキーマおよびマッピングテーブルを作成します。詳細については、「スキーマの作成」および「マッピングテーブルの作成」をご参照ください。

ローカル静的ファイルによる構成

ローカル静的ファイルのパスは、カタログ構成で指定された tablestore.schema-file の完全なパスと一致する必要があります。

サーバー上に以下の内容のファイルを作成します。

{
	"account" : {
		"accessId" : "xxxxxxxx", ----- <Required> Alibaba Cloud アカウントまたは RAM ユーザーの AccessKey ID。
		"accessKey" : "xxxxxxxxxxxxxxx", ----- <Required> Alibaba Cloud アカウントまたは RAM ユーザーの AccessKey Secret。
	},
	"instances" : {
		"mydb" : { ----- <Required> PrestoDB 内のスキーマ名。
			"instanceName" : "myinstance", ----- <Required> Tablestore インスタンスの名前。
			"endpoint" : "http://myinstance.cn-hangzhou.ots.aliyuncs.com", ----- <Required> Tablestore インスタンスのエンドポイント。
			"tables": {
				"mytable" : { ----- <Required> PrestoDB 内のテーブル名。
					"originName" : "SampleTable", ----- <Optional> Tablestore 内の対応するテーブル名(大文字・小文字を区別)。設定しない場合は、Presto 内のテーブル名と同じになります。
					"columns" : [  ----- <Required> テーブルのメタデータ。すべてのプライマリキー列を含める必要があり、プライマリキー列の順序はテーブルのプライマリキー順序と同じである必要があります。
						{"name" : "gid", "type" : "bigint"},
						{"name" : "uid", "type" : "bigint"},
						{"name" : "c1", "type" : "boolean", "originName" : "col1"},
						{"name" : "c2", "type" : "bigint", "originName" : "col2"},
						{"name" : "C3", "type" : "varchar", "originName" : "col3"}
					]
				},
				"anotherTable" : {
					"originName" : "sampleTable2",
					"columns" : [
						{"name" : "gid", "type" : "bigint"},
						{"name" : "uid", "type" : "bigint"},
						{"name" : "a", "type" : "varchar"},
						{"name" : "b", "type" : "varchar"},
						{"name" : "c", "type" : "boolean"},
						{"name" : "d", "type" : "bigint"},
						{"name" : "e", "type" : "varchar"}
					]
				}
			}
		}
	}
}

構成項目

必須

説明

account

accessId

はい

Alibaba Cloud アカウントまたは RAM ユーザーの AccessKey ID および AccessKey Secret です。

accessKey

はい

instances(map(<schema_name> -> <schema_info>))

はい

スキーマ名からスキーマ情報へのマッピングを行う JSON マップです。

重要

PrestoDB ではスキーマ名の大文字・小文字は区別されません。

<schema_info>

instanceName

はい

このスキーマに対応する Tablestore インスタンス名です。詳細については、「インスタンス」をご参照ください。

endpoint

はい

Tablestore インスタンスのエンドポイントです。詳細については、「エンドポイント」をご参照ください。

tables(map(<table_name> -> <table_info>))

はい

PrestoDB にマウントされるテーブルの一覧です。

重要

<table_name> は PrestoDB で大文字・小文字を区別しません。

<table_info>

originName

いいえ

Tablestore 内の実際のテーブル名です。

  • 省略した場合、コネクタは自動的に PrestoDB テーブル名を対応する Tablestore テーブル名にマッピングします。

  • 指定した場合、コネクタはこの値を実際のテーブル名として使用します。

コネクタが Tablestore 内で対応するテーブルを見つけられない場合、そのテーブルに対する読み取りおよび書き込み操作は失敗します。

columns(list([<column_info>]))

はい

テーブルのメタデータで、定義済みのすべての列を含みます。

重要
  • Tablestore データテーブルのすべてのプライマリキー列を含める必要があります。プライマリキー列の名前および順序は、Tablestore テーブル内の実際の定義と一致している必要があります。

  • メタデータが正しくない場合、そのテーブルに対する以降のすべての読み取りおよび書き込み操作が失敗します。

<column_info>

name

はい

列名です。

重要

PrestoDB では列名の大文字・小文字は区別されません。

type

はい

列の型です。Tablestore 列型にマッピングされる PrestoDB でサポートされる型は、Bigint、Varchar、Varbinary、Double、Boolean です。

重要

PrestoDB 内の列型は、Tablestore 内の列型と一致している必要があります。

originName

いいえ

Tablestore データテーブル内の対応する列の名前です。

一般的な SQL 使用例

以下の SQL 使用例は、PrestoDB を通じて Tablestore データを操作する方法を示しています。すべての例では、Tablestore インスタンス myinstance に接続された testdb という名前のスキーマと、スキーマ (pk varchar, c1 double, c2 varchar, c3 varchar) を持つ exampletable という名前のマッピングテーブルを使用しています。

スキーマの作成

スキーマは Tablestore インスタンスへのアクセスおよび認証を構成します。以下の例では、Tablestore インスタンス myinstance にアクセスするための testdb という名前のスキーマを作成します。

CREATE SCHEMA tablestore.testdb
WITH (
  endpoint = 'https://myinstance.cn-hangzhou.ots.aliyuncs.com',
  instance_name = 'myinstance',
  access_id = '************************',
  access_key = '********************************'
);

パラメーター

必須

説明

endpoint

https://myinstance.cn-hangzhou.ots.aliyuncs.com

はい

Tablestore インスタンスのエンドポイントです。詳細については、「エンドポイント」をご参照ください。

instance_name

myinstance

はい

Tablestore インスタンスの名前です。詳細については、「インスタンス」をご参照ください。

access_id

****

はい

Alibaba Cloud アカウントまたは RAM ユーザーの AccessKey ID です。

access_key

**

はい

Alibaba Cloud アカウントまたは RAM ユーザーの AccessKey Secret です。

マッピングテーブルの作成

マッピングテーブルは、Tablestore インスタンス内の物理テーブルに対応します。

重要

マッピングテーブルを作成する際は、以下の点に注意してください。

  • マッピングテーブル内のフィールド型が Tablestore データテーブル内のものと一致していることを確認してください。詳細については、「フィールド型マッピング」をご参照ください。

  • マッピングテーブル名は Tablestore 内のテーブル名と一致している必要があります。

  • CREATE TABLE 文の table_name プロパティにより、PrestoDB テーブルが Tablestore 内の実際のテーブルにマッピングされます。異なる名前の複数のマッピングテーブルが同じ Tablestore データテーブルを指すことができます。

  • マッピングテーブルにはデータテーブルのすべてのプライマリキー列を含める必要がありますが、属性列はサブセットのみを含めることができます。

  • マッピングテーブル内のプライマリキー列の名前および順序は、Tablestore データテーブル内のものと一致している必要があります。各属性列は、origin_name パラメーターを使用して Tablestore 内の対応する列にマッピングします。

以下の例では、Tablestore データテーブルと同名の exampletable という名前のマッピングテーブルを作成します。

CREATE TABLE if not exists exampletable
(
   pk varchar,
   c1 double with (origin_name = 'col1'),
   c2 varchar with (origin_name = 'col2'),
   c3 varchar with (origin_name = 'col3')
) WITH (
   table_name = 'exampletable'
);

スキーマ操作

スキーマ作成後、すべてのスキーマを一覧表示するか、使用するスキーマを選択します。

すべてのスキーマを一覧表示

show schemas;

サンプル応答:

       Schema       
--------------------
 information_schema 
 testdb             
 testdb1            
(3 rows)

スキーマの使用

テーブルに対する操作を実行する前に、スキーマを選択します。

重要

テーブルに対する操作を実行する前に、スキーマを選択してください。

以下の例では、testdb スキーマを選択します。

use testdb;

サンプル応答:

USE

マッピングテーブル操作

マッピングテーブル作成後、スキーマ内のテーブルを一覧表示したり、テーブルメタデータを表示したり、マッピングテーブルを削除したりできます。

スキーマ内のテーブルを一覧表示

スキーマ選択後、そのテーブルを一覧表示します。

show tables;

サンプル応答:

      Table      
-----------------
 exampletable    
 sampletable     
 sampletabletest 
 table1          
 testtable       
(5 rows)

テーブルの説明

以下の例では、exampletable テーブルを説明します。

describe exampletable;

サンプル応答:

Column |  Type   | Extra | Comment 
--------+---------+-------+---------
 pk     | varchar |       |         
 c1     | double  |       |         
 c2     | varchar |       |         
 c3     | varchar |       |         
(4 rows)

マッピングテーブルの削除

以下の例では、table1 マッピングテーブルを削除します。

drop table table1;

サンプル応答:

DROP TABLE

データ操作

マッピングテーブル作成後、対応する Tablestore テーブルにデータを書き込んだり、データを読み取ったりできます。

重要

PrestoDB は Tablestore テーブルに対する UPDATE 操作または DELETE 操作をサポートしていません。

データの書き込み

  • 単一行の挿入

    以下の例では、exampletable に 1 行を挿入します。

    insert into exampletable values('101', 22.0, 'Mary', '10002');

    サンプル応答:

    INSERT: 1 row
  • バッチでのデータインポート

    重要

    バッチでデータをインポートする前に、送信先テーブルが存在し、そのスキーマがソーステーブルと一致していることを確認してください。

    以下の例では、exampletable のうち c1 < 50 の行を sampletable にコピーします。

    insert into sampletable select pk, c1, c2, c3 from exampletable where c1 < 50; 

    サンプル応答:

    INSERT: 3 rows

データの読み取り

  • すべての行の照会

    以下の例では、exampletable からすべてのデータを読み取ります。

    select * from exampletable;

    サンプル応答:

     pk  |  c1  |  c2  |  c3   
    -----+------+------+-------
     100 | 11.0 | Lily | 10001 
     101 | 22.0 | Mary | 10002  
     102 | 12.0 | Jim  | 10003   
    (3 rows)
  • 条件付きの行の照会

    以下の例では、exampletable のうち c1 < 15 かつ c3 = '10001' の行を照会します。

    select * from exampletable where c1 < 15 and c3 = '10001'; 

    サンプル応答:

     pk  |  c1  |  c2  |  c3   
    -----+------+------+-------
     100 | 11.0 | Lily | 10001 
    (1 row)

データの分析

  • 列の平均値の計算

    以下の例では、exampletablec1 列の平均値を計算します。

    select avg(c1) as Average from exampletable;

    サンプル応答:

    Average 
    ---------
        15.0 
    (1 row)
  • 総行数のカウント

    以下の例では、exampletable のすべての行をカウントします。

    select count(*) as total from exampletable;

    サンプル応答:

    total 
    -------
         3 
    (1 row)