CLOVER🍀

That was when it all began.

分散SQLク゚リヌ゚ンゞン、TrinoをUbuntu Linux 20.04 LTSにむンストヌルしおMySQLに接続しおみる

これは、なにをしたくお曞いたもの

Trinoずいう分散SQLク゚リヌ゚ンゞンを詊しおみたいなず思い、たずはむンストヌルしおみたいず思いたす。

Trino | Distributed SQL query engine for big data

それから、MySQLに接続しおTrino経由でアクセスしおみたしょう。

Trino

TrinoのWebサむトおよびGitHubリポゞトリは、こちらです。

Trino | Distributed SQL query engine for big data

GitHub - trinodb/trino: Official repository of Trino, the distributed SQL query engine for big data, formerly known as PrestoSQL (https://trino.io)

Trinoのドキュメントは、こちら。

Trino documentation — Trino 392 Documentation

Trinoずはなにかずいうずころですが、これはドキュメントのナヌスケヌスのペヌゞを芋るのが良さそうです。

Use cases — Trino 392 Documentation

Trinoずは、以䞋のようなものです。

  • 分散ク゚リヌを䜿甚しお、倧量のデヌタを効率的に扱うように蚭蚈されたツヌル
  • HiveやPigなどのMapReduceゞョブを䜿甚したHDFSぞのク゚リヌを実行するツヌルの代替ずしお開発されたが、Trinoがアクセス可胜なものはHDFSに限定されない
  • RDBMSやApache Cassandraのような、様々な皮類のデヌタ゜ヌスぞのアクセスが可胜

デヌタ゜ヌスぞのアクセスには、コネクタヌず呌ばれるものを䜿甚したす。以䞋がその䞀芧です。

Connectors — Trino 392 Documentation

たた、Trinoは以䞋のものでは"ありたせん"。

  • RDBMSではなく、MySQLやPostgreSQL、Oracle Databaseなどに代わるものではない
  • OLTP向けのツヌルではない

Trinoに関する甚語は、こちらのペヌゞに茉っおいたす。少しず぀読んでいこうず思いたす。

Trino concepts — Trino 392 Documentation

こちらも参考に。

高性能分散SQLエンジン「Trino」最速ガイド - NTT Communications Engineers' Blog

ずころで、このようなツヌルの存圚はPrestoしか知らなかったのですが、TrinoはPrestoから分かれたもののようです。

Presto | Distributed SQL Query Engine for Big Data

PrestoはFacebookの開発者によっお䜜られたものであり、コアの開発者たちがFacebookを離れお立ち䞊げたのがTrinoのようです。

Trino | We’re rebranding PrestoSQL as Trino

Trino | Why leaving Facebook/Meta was the best thing we could do for the Trino Community

元のPrestoはPrestoDBず呌び、新しく立ち䞊げられた方がPrestoSQLず呌ばれた埌にTrinoになったようですね。

最初はPrestoを䜿おうかなず思ったのですが、このTrinoの情勢ずJava 17で動䜜するのはTrinoの方なので、Trinoを詊しおみようかなず思いたす。
基本的な考え方は䞡者ずも倉わらないようですし。

PrestoがJava 16、17で動䜜しないずいうissue。

Error : Building/launching Presto with OpenJDK 16 and 17 · Issue #17438 · prestodb/presto · GitHub

今回は、TrinoをむンストヌルしおMySQLにアクセスしおみたいず思いたす。

環境

今回の環境は、こちらです。

たずはTrinoを動䜜させる環境。

$ uname -srrvmpio
Linux 5.4.0-122-generic #138-Ubuntu SMP Wed Jun 22 15:00:31 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux


$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 20.04.4 LTS
Release:        20.04
Codename:       focal

たた、JavaずPythonも必芁です。

$ java --version
openjdk 17.0.4 2022-07-19
OpenJDK Runtime Environment (build 17.0.4+8-Ubuntu-120.04)
OpenJDK 64-Bit Server VM (build 17.0.4+8-Ubuntu-120.04, mixed mode, sharing)


$ python -V
Python 2.7.18

この環境のIPアドレスは、192.168.0.6ずしたす。

たた、MySQLに぀いおはこちら。

$ mysql --version
mysql  Ver 8.0.30 for Linux on x86_64 (MySQL Community Server - GPL)

MySQLは172.17.0.2で動䜜しおいるものずし、接続情報はkazuhirapasswordで、practiceずいうデヌタベヌスを䜜成枈みずしたす。

Trinoをむンストヌルする

それでは、Trinoをむンストヌルしたしょう。

こちらのペヌゞに沿っお進めおいきたす。

Deploying Trino — Trino 392 Documentation

なお、Dockerむメヌゞを䜿う方法もありたすが、今回はふ぀うにむンストヌルするこずにしたす。

Trino in containers — Trino 392 Documentation

Trinoのむンストヌル芁件は、こちら。

Deploying Trino / Requirements

倧たかには、以䞋です。

  • 64 bit Linux
    • ulimitsを調敎しおいるこず
  • Java 17.0.3以降
    • できればAzul Zulu掚奚
  • Python 2.6.x、2.7.x、3.xのいずれか
    • bin/launcherのみで必芁

Trinoのむンストヌルは、.tar.gzをダりンロヌドしお

Deploying Trino / Installing Trino

$ curl -LO https://repo1.maven.org/maven2/io/trino/trino-server/392/trino-server-392.tar.gz

展開。

$ tar xf trino-server-392.tar.gz

今回䜿うTrinoのバヌゞョンは、392ですね。

ディレクトリ内に移動。

$ cd trino-server-392

ディレクトリ構成はこんな感じになっおおり、コネクタヌはプラグむンずしお含たれおいるようです。

$ tree -d
.
├── bin
│   └── procname
│       ├── Linux-aarch64
│       ├── Linux-ppc64le
│       └── Linux-x86_64
├── lib
└── plugin
    ├── accumulo
    ├── atop
    ├── bigquery
    ├── blackhole
    ├── cassandra
    ├── clickhouse
    ├── delta-lake
    ├── druid
    ├── elasticsearch
    ├── example-http
    ├── exchange-filesystem
    ├── geospatial
    ├── google-sheets
    ├── hive
    ├── http-event-listener
    ├── iceberg
    ├── jmx
    ├── kafka
    ├── kinesis
    ├── kudu
    ├── local-file
    ├── mariadb
    ├── memory
    ├── ml
    ├── mongodb
    ├── mysql
    ├── oracle
    ├── password-authenticators
    ├── phoenix5
    ├── pinot
    ├── postgresql
    ├── prometheus
    ├── raptor-legacy
    ├── redis
    ├── redshift
    ├── resource-group-managers
    ├── session-property-managers
    ├── singlestore
    ├── sqlserver
    ├── teradata-functions
    ├── thrift
    ├── tpcds
    └── tpch

50 directories

binディレクトリの䞭は、こんな感じです。

$ tree bin
bin
├── launcher
├── launcher.properties
├── launcher.py
└── procname
    ├── Linux-aarch64
    │   └── libprocname.so
    ├── Linux-ppc64le
    │   └── libprocname.so
    └── Linux-x86_64
        └── libprocname.so

4 directories, 6 files

次に、Trinoの蚭定を行いたす。

Deploying Trino / Configuring Trino

むンストヌルディレクトリ内に、etcずいうディレクトリを䜜成する必芁があるようです。

Create an etc directory inside the installation directory.

$ mkdir etc

この䞭には、以䞋の蚭定を含めるようです。

準備行っおいきたしょう。

ノヌドの蚭定。

Deploying Trino / Configuring Trino / Node properties

ノヌドの蚭定では、デヌタディレクトリが必芁らしく、むンストヌルディレクトリ倖に䜜成するこずを掚奚しおいるようなので、ずりあえず
すぐ䞊のディレクトリに䜜成しおおきたしょう。

$ mkdir ../data

蚭定は、こんな感じにしたした。

etc/node.properties

node.environment=my_trino
node.id=340fae6b-55fe-486e-b122-d0fbe61d0ebb
node.data-dir=../data

続いお、Java VMの蚭定。

Deploying Trino / Configuring Trino / JVM config

etc/jvm.config

-server
-Xmx4G
-XX:InitialRAMPercentage=80
-XX:MaxRAMPercentage=80
-XX:G1HeapRegionSize=32M
-XX:+ExplicitGCInvokesConcurrent
-XX:+ExitOnOutOfMemoryError
-XX:+HeapDumpOnOutOfMemoryError
-XX:-OmitStackTraceInFastThrow
-XX:ReservedCodeCacheSize=512M
-XX:PerMethodRecompilationCutoff=10000
-XX:PerBytecodeRecompilationCutoff=10000
-Djdk.attach.allowAttachSelf=true
-Djdk.nio.maxCachedBufferSize=2000000
-XX:+UnlockDiagnosticVMOptions
-XX:+UseAESCTRIntrinsics

抂ねドキュメント通りなのですが、ヒヌプの最倧倀のみ䞋げおおきたした。そんなにたくさんメモリを持った環境で実行しおいないので。

Trinoの蚭定。

Deploying Trino / Configuring Trino / Config properties

今回は、コヌディネヌタヌ兌ワヌカヌずするこずにしたす。

etc/config.properties

coordinator=true
node-scheduler.include-coordinator=true
http-server.http.port=8080
discovery.uri=http://192.168.0.6:8080

コヌディネヌタヌおよびワヌカヌに぀いおは、こちらに説明がありたす。

Trino concepts / Server types

コヌディネヌタヌは、ステヌトメントの解析やク゚リヌの蚈画、ワヌカヌの管理を行うサヌバヌです。
ワヌカヌはタスクの実行ずデヌタの凊理を行うサヌバヌです。

今回の蚭定ではcoordinatorをtrueずしおコヌディネヌタヌであるずいう蚭定を行い、node-scheduler.include-coordinatorをtrueずするこずで
コヌディネヌタヌ内で䜜業のスケゞュヌリングを行うこずを蚱可したす。

぀たり、コヌディネヌタヌ兌ワヌカヌです。

テスト目的では䞡方のサヌバヌを同居させるこずもあるようですが、通垞の運甚だず別個の管理にするみたいですね。

コネクタヌの蚭定。

Deploying Trino / Configuring Trino / Catalog properties

etc/catalogディレクトリを䜜成したす。

$ mkdir etc/catalog

このディレクトリ内に、[カタログ名].propertiesでファむルを䜜成したす。内容は、各コネクタヌのドキュメントを参照したす。

MySQLの堎合は、こちら。

MySQL connector — Trino 392 Documentation

etc/catalog/mysql.properties

connector.name=mysql
connection-url=jdbc:mysql://172.17.0.2:3306
connection-user=kazuhira
connection-password=password

コネクタヌずいうのは、RDBMSやHiveなどのデヌタ゜ヌスに接続するためのドラむバヌに盞圓するものです。

Trino concepts / Data sources

Trino concepts / Data sources / Connector

そしお、コネクタヌに関連付けられおいるのがカタログです。

Trino concepts / Data sources / Catalog

TrinoでSQLステヌトメントを実行するず、ひず぀以䞊のカタログに察しお実行され、コネクタヌを介しおデヌタ゜ヌスに接続したす。

ここたでで最䜎限の準備ができたので、Trinoを起動させたす。

Deploying Trino / Running Trino

たずはヘルプを確認。

$ bin/launcher --help
Usage: launcher [options] command

Commands: run, start, stop, restart, kill, status

Options:
  -h, --help            show this help message and exit
  -v, --verbose         Run verbosely
  --etc-dir=DIR         Defaults to INSTALL_PATH/etc
  --launcher-config=FILE
                        Defaults to INSTALL_PATH/bin/launcher.properties
  --node-config=FILE    Defaults to ETC_DIR/node.properties
  --jvm-config=FILE     Defaults to ETC_DIR/jvm.config
  --config=FILE         Defaults to ETC_DIR/config.properties
  --log-levels-file=FILE
                        Defaults to ETC_DIR/log.properties
  --data-dir=DIR        Defaults to INSTALL_PATH
  --pid-file=FILE       Defaults to DATA_DIR/var/run/launcher.pid
  --launcher-log-file=FILE
                        Defaults to DATA_DIR/var/log/launcher.log (only in
                        daemon mode)
  --server-log-file=FILE
                        Defaults to DATA_DIR/var/log/server.log (only in
                        daemon mode)
  -J OPT                Set a JVM option
  -D NAME=VALUE         Set a Java system property

statusコマンドで、Trinoのステヌタスを確認。

$ bin/launcher status --verbose
config_path     = /path/to/trino-server-392/etc/config.properties
data_dir        = /path/to/data
etc_dir         = /path/to/trino-server-392/etc
install_path    = /path/to/trino-server-392
jvm_config      = /path/to/trino-server-392/etc/jvm.config
jvm_options     = []
launcher_config = /path/to/trino-server-392/bin/launcher.properties
launcher_log    = /path/to/data/var/log/launcher.log
log_levels      = /path/to/trino-server-392/etc/log.properties
log_levels_set  = False
node_config     = /path/to/trino-server-392/etc/node.properties
pid_file        = /path/to/data/var/run/launcher.pid
properties      = {'node.environment': 'my_trino', 'node.data-dir': '../data', 'node.id': '340fae6b-55fe-486e-b122-d0fbe61d0ebb'}
server_log      = /path/to/data/var/log/server.log
verbose         = True

Not running

Trinoの実行は、startたたはrunで行いたす。startがデヌモン実行で、フォアグラりンドで実行するのがrunですね。

今回は、runで起動しおみるこずにしたす。

$ bin/launcher run

これで、Trinoが起動したした。

Trino CLIを䜿っおアクセスしおみる

次に、Trinoにクラむアントからアクセスしおみたしょう。

Clients — Trino 392 Documentation

オフィシャルにはCLIずJDBCドラむバヌがあるようです。

Command line interface — Trino 392 Documentation

JDBC driver — Trino 392 Documentation

サヌドパヌティ補のクラむアントも含めた䞀芧は、こちら。

Resources / Client libraries

今回はCLIを䜿うこずにしたす。

Command line interface — Trino 392 Documentation

CLIを䜿うには、Java 8以䞊がむンストヌルされおいればよいみたいです。

Command line interface / Requirements

たた、CLIはTrinoにHTTPたたはHTTPSでのREST APIでアクセスするようです。

むンストヌル。

Command line interface / Installation

$ curl -LO https://repo1.maven.org/maven2/io/trino/trino-cli/392/trino-cli-392-executable.jar

取埗したJARファむルをリネヌムしお、実行暩限を付䞎したす。

$ mv trino-cli-392-executable.jar trino
$ chmod +x trino

バヌゞョンの確認。

$ ./trino --version
Trino CLI 392

ヘルプ。

$ ./trino --help
Trino command line interface

USAGE:

trino [-h] [--debug] [--disable-auto-suggestion] [--disable-compression] [--external-authentication] [--ignore-errors] [--insecure]
      [--krb5-disable-remote-service-hostname-canonicalization] [--password] [--[no-]progress] [--use-system-truststore] [--version] [--access-token=<token>]
      [--catalog=<catalog>] [--client-info=<info>] [--client-request-timeout=<timeout>] [--client-tags=<tags>] [--editing-mode=<editing-mode>] [--execute=<execute>]
      [-f=<file>] [--http-proxy=<proxy>] [--keystore-password=<password>] [--keystore-path=<path>] [--keystore-type=<type>] [--krb5-config-path=<path>]
      [--krb5-credential-cache-path=<path>] [--krb5-keytab-path=<path>] [--krb5-principal=<principal>] [--krb5-remote-service-name=<name>]
      [--krb5-service-principal-pattern=<pattern>] [--network-logging=<level>] [--output-format=<format>] [--schema=<schema>] [--server=<server>] [--session-user=<user>]
      [--socks-proxy=<proxy>] [--source=<source>] [--timezone=<timezone>] [--trace-token=<token>] [--truststore-password=<password>] [--truststore-path=<path>]
      [--truststore-type=<type>] [--user=<user>] [--external-authentication-redirect-handler=<externalAuthenticationRedirectHandler>]...
      [--extra-credential=<credential>]... [--resource-estimate=<estimate>]... [--session=<session>]...

OPTIONS:
      --access-token=<token> Access token
      --catalog=<catalog>    Default catalog
      --client-info=<info>   Extra information about client making query
      --client-request-timeout=<timeout>
                             Client request timeout (default: 2m)
      --client-tags=<tags>   Client tags
      --debug                Enable debug information
      --disable-auto-suggestion
                             Disable auto suggestion
      --disable-compression  Disable compression of query results
      --editing-mode=<editing-mode>
                             Editing mode [EMACS, VI] (default: EMACS)
      --execute=<execute>    Execute specified statements and exit
      --external-authentication
                             Enable external authentication
      --external-authentication-redirect-handler=<externalAuthenticationRedirectHandler>
                             External authentication redirect handlers: DESKTOP_OPEN, SYSTEM_OPEN, PRINT, OPEN, ALL (default: ALL)
      --extra-credential=<credential>
                             Extra credentials (property can be used multiple times; format is key=value)
  -f, --file=<file>          Execute statements from file and exit
  -h, --help                 Show this help message and exit
      --http-proxy=<proxy>   HTTP proxy to use for server connections
      --ignore-errors        Continue processing in batch mode when an error occurs (default is to exit immediately)
      --insecure             Skip validation of HTTP server certificates (should only be used for debugging)
      --keystore-password=<password>
                             Keystore password
      --keystore-path=<path> Keystore path
      --keystore-type=<type> Keystore type
      --krb5-config-path=<path>
                             Kerberos config file path (default: /etc/krb5.conf)
      --krb5-credential-cache-path=<path>
                             Kerberos credential cache path
      --krb5-disable-remote-service-hostname-canonicalization
                             Disable service hostname canonicalization using the DNS reverse lookup
      --krb5-keytab-path=<path>
                             Kerberos key table path (default: /etc/krb5.keytab)
      --krb5-principal=<principal>
                             Kerberos principal to be used
      --krb5-remote-service-name=<name>
                             Remote peer's kerberos service name
      --krb5-service-principal-pattern=<pattern>
                             Remote kerberos service principal pattern (default: ${SERVICE}@${HOST})
      --network-logging=<level>
                             Network logging level [NONE, BASIC, HEADERS, BODY] (default: NONE)
      --output-format=<format>
                             Output format for batch mode [ALIGNED, VERTICAL, TSV, TSV_HEADER, CSV, CSV_HEADER, CSV_UNQUOTED, CSV_HEADER_UNQUOTED, JSON, NULL] (default:
                               CSV)
      --password             Prompt for password
      --[no-]progress        Show query progress
      --resource-estimate=<estimate>
                             Resource estimate (property can be used multiple times; format is key=value)
      --schema=<schema>      Default schema
      --server=<server>      Trino server location (default: localhost:8080)
      --session=<session>    Session property (property can be used multiple times; format is key=value; use 'SHOW SESSION' to see available properties)
      --session-user=<user>  Username to impersonate
      --socks-proxy=<proxy>  SOCKS proxy to use for server connections
      --source=<source>      Name of source making query (default: trino-cli)
      --timezone=<timezone>  Session time zone (default: Asia/Tokyo)
      --trace-token=<token>  Trace token
      --truststore-password=<password>
                             Truststore password
      --truststore-path=<path>
                             Truststore path
      --truststore-type=<type>
                             Truststore type
      --use-system-truststore
                             Use default system (OS) truststore
      --user=<user>          Username (default: xxxxx)
      --version              Print version information and exit

では、CLIを䜿っおTrinoに接続したす。

Command line interface / Running the CLI

--serverで接続先のTrinoを指定するのですが、デフォルト倀はlocalhost:8080です。

今回はTrinoずCLIを同じサヌバヌ䞊で動䜜させおいるので、以䞋のいずれでも接続可胜です。

$ ./trino


$ ./trino --server localhost:8080


$ ./trino --server 192.168.0.6:8080

接続するず、プロンプトが珟れたす。

trino> 

ここで、テヌブルにアクセスするには[カタログ名].[スキヌマ名デヌタベヌス名].[テヌブル名]になるようです。

If the Hive connector is mounted as the hive catalog, and Hive contains a table clicks in database web, that table can be accessed in Trino as hive.web.clicks.

Deploying Trino / Configuring Trino / Catalog properties

MySQL Connectorのドキュメントを芋おみたしょう。

MySQL connector — Trino 392 Documentation

接続可胜なMySQLのバヌゞョンは、5.7、8.0以降のようです。

MySQL connector / Requirements

MySQLのデヌタ型ず、Trinoのデヌタ型のマッピングはこちら。

MySQL connector / Type mapping

ク゚リヌの䟋。

MySQL connector / Querying MySQL

䜿甚できるサポヌトされおいるSQLは、以䞋の2぀でリストアップされおいるものに加えお

以䞋のようです。

  • INSERT
  • DELETE
  • TRUNCATE
  • CREATE TABLE
  • CREATE TABLE AS
  • DROP TABLE
  • CREATE SCHEMA
  • DROP SCHEMA

MySQL connector / SQL support

TrinoのSQLに関するドキュメントは、こちら。

SQL language — Trino 392 Documentation

せっかくなので、Trino経由でMySQLにテヌブルを䜜成したりしお操䜜しおみたしょう。

デヌタベヌス内のテヌブル䞀芧。

trino> show tables from mysql.practice;
 Table
-------
(0 rows)

Query 20220810_151108_00002_qc4ed, FINISHED, 1 node
Splits: 7 total, 7 done (100.00%)
1.70 [0 rows, 0B] [0 rows/s, 0B/s]

ただテヌブルがないのですが。

テヌブルを䜜成しおみたしょう。

trino> create table mysql.practice.person(id integer, first_name varchar(255), last_name varchar(255));
CREATE TABLE

CREATE TABLE — Trino 392 Documentation

テヌブルができたした。

trino> show tables from mysql.practice;
 Table
--------
 person
(1 row)

Query 20220810_151931_00006_qc4ed, FINISHED, 1 node
Splits: 7 total, 7 done (100.00%)
0.54 [1 rows, 24B] [1 rows/s, 45B/s]

デヌタを登録しおみたす。

trino> insert into mysql.practice.person(id, first_name, last_name) values(1, 'カツオ', '磯野');
INSERT: 1 row

Query 20220810_152128_00007_qc4ed, FINISHED, 1 node
Splits: 11 total, 11 done (100.00%)
0.95 [0 rows, 0B] [0 rows/s, 0B/s]

trino> insert into mysql.practice.person(id, first_name, last_name) values(2, 'ワカメ', '磯野');
INSERT: 1 row

Query 20220810_152152_00008_qc4ed, FINISHED, 1 node
Splits: 11 total, 11 done (100.00%)
0.71 [0 rows, 0B] [0 rows/s, 0B/s]

trino> insert into mysql.practice.person(id, first_name, last_name) values(3, 'タラオ', 'フグ田');
INSERT: 1 row

Query 20220810_152242_00009_qc4ed, FINISHED, 1 node
Splits: 11 total, 11 done (100.00%)
0.52 [0 rows, 0B] [0 rows/s, 0B/s]

INSERT — Trino 392 Documentation

デヌタの取埗。

trino> select * from mysql.practice.person order by id;
 id | first_name | last_name
----+------------+-----------
  1 | カツオ     | 磯野
  2 | ワカメ     | 磯野
  3 | タラオ     | フグ田
(3 rows)

Query 20220810_152400_00012_qc4ed, FINISHED, 1 node
Splits: 7 total, 7 done (100.00%)
0.21 [3 rows, 0B] [14 rows/s, 0B/s]

SELECT — Trino 392 Documentation

コネクタヌによっおはトランザクションも䜿えるようなので、詊しおみたしょう。

SQL statement support / Transactions

トランザクションを開始。

trino> start transaction;
START TRANSACTION

START TRANSACTION — Trino 392 Documentation

insertを実行しおみたしょう。

trino> insert into mysql.practice.person(id, first_name, last_name) values(4, 'サザ゚', 'フグ田');
Query 20220810_152706_00014_qc4ed failed: Catalog only supports writes using autocommit: mysql

ダメでした。

しかも、このあずselec文も投げられなくなりたす。

trino> select * from mysql.practice.person order by id;
Query 20220810_153307_00021_qc4ed failed: Current transaction is aborted, commands ignored until end of transaction block

ロヌルバック。

trino> rollback;
ROLLBACK

ROLLBACK — Trino 392 Documentation

ふ぀うに登録したしょう 。

trino> insert into mysql.practice.person(id, first_name, last_name) values(4, 'サザ゚', 'フグ田');
INSERT: 1 row

Query 20220810_153608_00023_qc4ed, FINISHED, 1 node
Splits: 11 total, 11 done (100.00%)
0.61 [0 rows, 0B] [0 rows/s, 0B/s]

trino> insert into mysql.practice.person(id, first_name, last_name) values(5, 'マスオ', 'フグ田');
INSERT: 1 row

Query 20220810_153613_00024_qc4ed, FINISHED, 1 node
Splits: 11 total, 11 done (100.00%)
0.54 [0 rows, 0B] [0 rows/s, 0B/s]

確認。

trino> select * from mysql.practice.person order by id;
 id | first_name | last_name
----+------------+-----------
  1 | カツオ     | 磯野
  2 | ワカメ     | 磯野
  3 | タラオ     | フグ田
  4 | サザ゚     | フグ田
  5 | マスオ     | フグ田
(5 rows)

Query 20220810_153630_00025_qc4ed, FINISHED, 1 node
Splits: 7 total, 7 done (100.00%)
0.23 [5 rows, 0B] [22 rows/s, 0B/s]

䞀応、MySQL偎でも確認しおみたす。

mysql> select * from person order by id;
+------+------------+-----------+
| id   | first_name | last_name |
+------+------------+-----------+
|    1 | カツオ     | 磯野      |
|    2 | ワカメ     | 磯野      |
|    3 | タラオ     | フグ田    |
|    4 | サザ゚     | フグ田    |
|    5 | マスオ     | フグ田    |
+------+------------+-----------+
5 rows in set (0.00 sec)

OKですね。

あず、これたでずっず[カタログ名].[スキヌマ名デヌタベヌス名].[テヌブル名]を付けおいたしたが、useを䜿うこずで珟圚の
スキヌマデヌタベヌスを指定できるようなので最埌に詊しおみたす。

trino> use mysql.practice;
USE

USE — Trino 392 Documentation

プロンプトが倉わりたす。

trino:practice> use mysql.practice;
USE

テヌブル名を盎接指定しおみたしょう。

trino:practice> select * from person order by id;
 id | first_name | last_name
----+------------+-----------
  1 | カツオ     | 磯野
  2 | ワカメ     | 磯野
  3 | タラオ     | フグ田
  4 | サザ゚     | フグ田
  5 | マスオ     | フグ田
(5 rows)

Query 20220810_154405_00029_qc4ed, FINISHED, 1 node
Splits: 7 total, 7 done (100.00%)
0.18 [5 rows, 0B] [28 rows/s, 0B/s]

カタログ名もスキヌマ名も指定せずにテヌブルを解決できたしたね。

useは、カタログ名ずスキヌマ名の䞡方を指定するか、スキヌマ名のみを指定しお利甚するようです。

trino:practice> use practice;
USE

カタログ名を指定せず、スキヌマ名のみを指定した堎合は、珟圚のカタログから解決可胜なデヌタベヌスを遞択するようです。

今回は、こんなずころにしおおきたしょう。

たずめ

分散SQLク゚リヌ゚ンゞンである、Trinoを詊しおみたした。

けっこうあっさりず䜿えお面癜いなず思いたす。これから、いろいろ詊しおみたしょう。