書店員向け情報 HELP
出版者情報
書店注文情報
分散SQLクエリエンジンTrino徹底ガイド
- 初版年月日
- 2024年3月28日
- 書店発売日
- 2024年3月19日
- 登録日
- 2024年1月18日
- 最終更新日
- 2024年3月21日
紹介
Trinoは、分散SQLクエリエンジンと呼ばれるツールで、異なるデータソースに対して標準的なSQLで効率的なアクセスを可能にするオープンソースのツールです。分散実行を使用して膨大なデータを効率的にクエリするために、ゼロから設計と開発が行われました。
本書は、Trinoの主要開発者である3人が、Trino自体の紹介から、インストール、設定と運用、事例紹介まで、全貌を余すところなく執筆しています。また、翻訳も、日本のコミュニティのメンバーが担当しており、実質的なオフィシャルガイドといえます。
Trinoについての包括的で実践的なガイドであり、次のようなポイントをカバーしています。
・Trinoの基本
Trinoのアーキテクチャ、クエリエンジンの概要、データソースへの接続方法など、基本的なトピックを詳しく解説しています。Trinoを利用するだけであれば詳細に知っておく必要はありません、使いこなすためには押さえておくべき知識です。
・クエリの最適化
Trinoのクエリパフォーマンスを最大化するためのベストプラクティスとチューニング方法についての具体的なアドバイスがあります。
・セキュリティと認証
データセキュリティ、アクセス制御、認証の設定方法についてのガイダンスが提供されています。Trinoはさまざまなデータソースにアクセスできるため、セキュリティには細心の注意を払う必要があります。
・実践的な使用例:Trinoを使用して実際のビジネスケースを解決する方法についての実践的な例が豊富に含まれています。実際の事例での具体的な数字が示されています。
・エコシステムと統合: Trinoをほかのツールやプラットフォームと統合する方法について詳細に説明しています。
本書は『Trino: The Definitive Guide, 2nd Edition』(O'Reilly Media, 2022)の日本語版です。
目次
序文
著者前書き
日本語版のための前書き
訳者前書き
第1部 Trinoを使い始める
第1章 Trinoの紹介
1.1 ビッグデータの問題点
1.2 Trinoの出番
1.2.1 パフォーマンスとスケーラビリティを考慮した設計
1.2.2 SQL-on-Anything
1.2.3 データストレージとクエリのコンピューティングリソースの分離
1.3 Trinoのユースケース
1.3.1 単一のSQL分析アクセスポイント
1.3.2 データウェアハウスとソースシステムへのアクセスポイント
1.3.3 SQLベースのアクセスを提供する
1.3.4 フェデレーテッドクエリ
1.3.5 仮想データウェアハウスのセマンティックレイヤー
1.3.6 データレイククエリエンジン
1.3.7 SQLによる変換とETL
1.3.8 高速な応答時間による、よりよいインサイト
1.3.9 ビッグデータ、機械学習、人工知能
1.3.10 その他のユースケース
1.4 Trinoのリソース
1.4.1 Webサイト
1.4.2 ドキュメント
1.4.3 コミュニティチャット
1.4.4 ソースコード、ライセンス、バージョン
1.4.5 コントリビュート
1.4.6 本書のリポジトリ
1.4.7 アヤメのデータセット
1.4.8 フライトのデータセット
1.4.9 Trinoの簡単な歴史
1.5 まとめ
第2章 Trinoのインストールと設定
2.1 DockerコンテナでTrinoを試す
2.2 アーカイブファイルからのインストール
2.2.1 Java仮想マシン(JVM)
2.2.2 Python
2.2.3 インストール
2.2.4 設定
2.3 データソースの追加
2.4 Trinoの実行
2.5 まとめ
第3章 Trinoの使い方
3.1 Trinoのコマンドラインインタフェース
3.1.1 はじめに
3.1.2 ページネーション
3.1.3 履歴と補完
3.1.4 追加の診断情報
3.1.5 クエリの実行
3.1.6 出力フォーマット
3.1.7 エラーを無視する
3.2 Trino JDBCドライバ
3.2.1 ドライバのダウンロードと登録
3.2.2 Trinoへの接続の確立
3.3 TrinoとODBC
3.4 クライアントライブラリ
3.5 Trino Web UI
3.6 TrinoにおけるSQLサポート
3.6.1 概念
3.6.2 最初の例
3.7 まとめ
第2部 Trino詳説
第4章 Trinoのアーキテクチャ
4.1 コーディネーターとワーカー
4.1.1 コーディネーター
4.1.2 ディスカバリサービス
4.1.3 ワーカー
4.2 コネクタを使ったアーキテクチャ
4.3 カタログ、スキーマ、テーブル
4.4 クエリ実行モデル
4.5 クエリプランニング
4.5.1 クエリのパースと分析
4.5.2 初期クエリプランニング
4.6 最適化ルール
4.6.1 述語のプッシュダウン
4.6.2 クロス結合除去
4.6.3 TopN
4.6.4 部分集計
4.7 実装ルール
4.7.1 ラテラル結合の非相関化
4.7.2 セミ結合(IN)の非相関化
4.8 コストベースドオプティマイザー
4.8.1 コストの概念
4.8.2 結合のコスト
4.8.3 テーブルの統計情報
4.8.4 フィルタ統計
4.8.5 パーティションテーブルのテーブル統計
4.8.6 結合列挙
4.8.7 ブロードキャスト結合と分散結合
4.9 テーブルの統計情報を使用した作業
4.9.1 Trino ANALYZE
4.9.2 ディスクへの書き込み時の統計収集
4.9.3 Hive ANALYZE
4.9.4 テーブル統計の表示
4.10 まとめ
第5章 本番環境の構築
5.1 設定の詳細
5.2 サーバ構成
5.3 ロギング
5.4 ノードの設定
5.5 JVM設定
5.6 起動スクリプト
5.7 クラスタ構築
5.8 RPMインストール
5.8.1 インストールディレクトリの構造
5.8.2 設定
5.8.3 Trinoのアンインストール
5.9 クラウド環境へのクラスタ構築
5.10 Kubernetesデプロイメント用のHelmチャート
5.11 クラスタのサイズ設定に関する考慮事項
5.12 まとめ
第6章 コネクタ
6.1 設定
6.2 RDBMSコネクタの例:PostgreSQL
6.2.1 クエリプッシュダウン
6.2.2 並列処理と同時実行
6.2.3 その他のRDBMS用コネクタ
6.2.4 セキュリティ
6.2.5 クエリパススルー
6.3 TrinoのTPC-HコネクタとTPC-DSコネクタ
6.4.1 Apache HadoopとHive
6.4 分散ストレージデータソース用のHiveコネクタ
6.4.2 Hiveコネクタ
6.4.3 Hiveスタイルのテーブル形式
6.4.4 管理テーブルと外部テーブル
6.4.5 パーティション化されたデータ
6.4.6 データのロード
6.4.7 ファイルフォーマットと圧縮
6.4.8 MinIOの例
6.5 現代的な分散ストレージ管理と分析
6.6 非リレーショナルデータソース
6.7 Trino JMXコネクタ
6.8 ブラックホールコネクタ
6.9 メモリコネクタ
6.10 その他のコネクタ
6.11 まとめ
第7章 高度なコネクタの例
7.1 Phoenixを使用したHBaseへの接続
7.2 キーバリューストアコネクタの例:Accumulo
7.2.1 Trino Accumuloコネクタを利用
7.2.2 Accumuloにおける述語のプッシュダウン
7.3 Apache Cassandraコネクタ
7.4 ストリーミングシステムコネクタの例:Kafka
7.5 ドキュメントストアコネクタの例:Elasticsearch
7.5.1 概要
7.5.2 設定と利用方法
7.5.3 クエリ処理
7.5.4 全文検索
7.5.5 まとめ
7.6 Trinoにおけるクエリフェデレーション
7.7 抽出、変換、読み込み、フェデレーテッドクエリ
7.8 まとめ
第8章 SQLの利用
8.1 Trinoのステートメント
8.2 Trinoのシステムテーブル
8.3 カタログ
8.4 スキーマ
8.5 インフォメーションスキーマ
8.6 テーブル
8.6.1 テーブルおよび列プロパティ
8.6.2 既存のテーブルのコピー
8.6.3 クエリ結果から新しいテーブルを作成
8.6.4 テーブルの修正
8.6.5 テーブルの削除
8.6.6 コネクタによるテーブルの制限
8.7 ビュー
8.8 セッション情報と設定
8.9 データ型
8.9.1 コレクションデータ型
8.9.2 日付と時刻のデータ
8.9.3 型の変換
8.10 SELECTステートメントの基本
8.11 WHERE句
8.12 GROUP BY句とHAVING句
8.13 ORDER BY句とLIMIT句
8.14 JOINステートメント
8.15 UNION句、INTERSECT句、EXCEPT句
8.16 グループ化操作
8.17 WITH句
8.18 サブクエリ
8.18.1 スカラーサブクエリ
8.18.2 EXISTSサブクエリ
8.18.3 量化されたサブクエリ
8.19 テーブルからデータの削除
8.20 まとめ
第9章 高度なSQL
9.1 関数と演算子の概要
9.2 スカラー関数と演算子
9.3 比較演算子
9.4 論理演算子
9.5 BETWEENステートメントによる範囲の選択
9.6 IS(NOT)NULLによる値の検出
9.7 算術関数と算術演算子
9.8 三角関数
9.9 定数とランダム関数
9.10 文字列関数と演算子
9.11 文字列とMAP
9.12 Unicode
9.13 正規表現
9.14 複雑なデータ型のネストを展開
9.15 JSON関数
9.16 日付と時刻の関数と演算子
9.17 ヒストグラム
9.18 集計関数
9.18.1 MAP集計関数
9.18.2 近似集計関数
9.19 ウィンドウ関数
9.20 ラムダ式
9.21 地理空間関数
9.22 プリペアドステートメント
9.23 まとめ
第3部 Trinoのユースケース
第10章 セキュリティ
10.1 認証
10.1.1 パスワード認証とLDAP認証
10.1.2 その他の認証方式
10.2 認可
10.2.1 システムアクセスコントロール
10.2.2 コネクタアクセスコントロール
10.3 暗号化
10.3.1 Trinoクライアントとコーディネーター間の通信暗号化
10.3.2 JavaキーストアとJavaトラストストアの作成
10.3.3 Trinoクラスタ内の通信の暗号化
10.4 認証局と自己署名証明書の比較
10.5 証明書の認証
10.6 Kerberos
10.6.1 前提条件
10.6.2 Kerberosクライアント認証
10.7 データソースへのアクセスとセキュリティの設定
10.8 HiveコネクタによるKerberos認証
10.8.1 Hive メタストアサービスの認証
10.8.2 HDFSの認証
10.9 クラスタの分離
10.10 まとめ
第11章 Trinoとほかのツールの統合
11.1 Apache Supersetによるクエリやビジュアライゼーション
11.2 RubiXによるパフォーマンスの向上
11.3 Apache Airflowによるワークフロー
11.4 組み込みTrinoの例:Amazon Athena
11.5 便利な商用ディストリビューション:Starburst EnterpriseとStarburst Galaxy
11.6 その他の統合例
11.7 カスタムインテグレーション
11.8 まとめ
第12章 本番環境
12.1 Trino Web UIによるモニタリング
12.1.1 クラスタレベルの詳細
12.1.2 クエリのリスト
12.1.3 クエリの詳細画面
12.2 Trino SQLのクエリのチューニング
12.3 メモリ管理
12.4 タスクの同時並行性
12.5 ワーカーのスケジューリング
12.6 ネットワーク上のデータ交換
12.6.1 同時並行性
12.6.2 バッファサイズ
12.7 JVM(Java Virtual Machine)のチューニング
12.8 リソースグループ
12.8.1 リソースグループの定義
12.8.2 スケジューリングポリシー
12.8.3 セレクタルールの定義
12.9 まとめ
第13章 実際の事例
13.1 デプロイメントとランタイム・プラットフォーム
13.2 クラスタのサイジング
13.3 Hadoop/Hive移行のユースケース
13.4 その他のデータソース
13.5 ユーザーとトラフィック
13.6 まとめ
終わりに
索引
訳者後書き
著者プロフィール
上記内容は本書刊行時のものです。