出版社を探す

分散SQLクエリエンジンTrino徹底ガイド

著:Matt Fuller
著:Manfred Moser
著:Martin Traverso

紙版

内容紹介

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 まとめ

終わりに
索引
訳者後書き
著者プロフィール

著者略歴

著:Matt Fuller
Starburstの共同設立者。Starburst以前は、Teradataのエンジニアディレクターとして、企業向けにTrinoを導入するために新しいCenter for Hadoop部門を構築する役割を果たしました。2015年以来、オープンソースのTrinoプロジェクトに貢献するチームを管理し、内部のTrinoプロダクトロードマップを主導してきました。Starburstは、後にTeradata内のこのチームから形成されました。Teradata以前は、Verticaの初期のエンジニアの1人で、クエリオプティマイザーを共同で構築しました。Very Large Databases(VLDB)の出版著者でもあり、データベース管理システム分野で米国特許を取得しています。
著:Manfred Moser
Starburstのコミュニティアドボケイト、ライター、トレーナー、ソフトウェアエンジニア。長い間、オープンソースソフトウェアの開発と普及に貢献してきました。Apache Mavenのコミッターであり、Hudsonなどの書籍を執筆し、オープンソースコミュニティとプロジェクトで活発に活動しています。経験豊富なトレーナーであり、Walmart Labs、Sonatype、Telusなどの企業向けに20,000人以上の開発者をトレーニングしています。データベースのバックグラウンドには、RDBMSスペースでのデータベースと関連アプリケーションの設計、およびビジネスインテリジェンスコンサルタントとしての経験を含んでいます。Trinoを使用できることに喜んでおり、Trinoコミュニティブロードキャストの共同ホストとしてTrinoの素晴らしさを広めています。
著:Martin Traverso
Trinoソフトウェア財団の共同設立者であり、Starburst CTO。Starburst以前は、Facebookのソフトウェアエンジニアとして、高速な対話型SQLアナリティクスの必要性を認識し、ほかの3人のエンジニアと協力してPresto(今のTrino)を開発し、Trinoの開発チームを主導しました。2013年春、Trinoは本番環境で展開され、同年秋にオープンソース化されました。それ以来、TrinoはFacebook内外で広く採用されています。Facebook以前は、ProofpointとNingでアーキテクトとして、多数の複雑なエンタープライズおよびソーシャルネットワークアプリケーションの開発とアーキテクチャ設計を指導しました。

ISBN:9784798071671
出版社:秀和システム
判型:B5変
ページ数:392ページ
定価:3600円(本体)
発行年月日:2024年03月
発売日:2024年03月19日
国際分類コード【Thema(シーマ)】 1:UB