$30 off During Our Annual Pro Sale. View Details »

YBM分散トポロジー体験ハンズオン.pdf

YugabyteDB Japan
November 30, 2023
75

 YBM分散トポロジー体験ハンズオン.pdf

2023/11/30 開催「YugabyteDB Managed 分散トポロジーの体験ハンズオン」の資料です。

YugabyteDB Japan

November 30, 2023
Tweet

More Decks by YugabyteDB Japan

Transcript

  1. Yugabyte © 2023 – All Rights Reserved Yugabyte © 2023

    – All Rights Reserved 2023/11/30 YugabyteDB Managed 分散トポロジーの体験ハンズオン 🔸🔹🔸13:30 - から開始します。開始まで、しばらくお待ちください。🔸🔹🔸
  2. Yugabyte © 2023 – All Rights Reserved 本日のアジェンダ • はじめに

    10分 ◦ 自己紹介 ◦ オンライン受講のご案内 • YugabyteDB とは 30分 ◦ 高い可用性と回復性 ◦ 柔軟なトポロジー ◦ 分散クエリ実行 • ハンズオン1: シングル・リージョンとマルチ・リージョン 50分 ◦ ハンズオン説明&実施 • 休憩 10分 • ハンズオン2 : ジオ・パーティション 50分 ◦ ハンズオン説明&実施 • まとめ 10分 ◦ YugabyteDB Managed その他のリソース ◦ お知らせ ◦ アンケート
  3. Yugabyte © 2023 – All Rights Reserved Yugabyte © 2023

    – All Rights Reserved はじめに
  4. Yugabyte © 2023 – All Rights Reserved YugabyteDB Managed 分散トポロジーの体験ハンズオン

    YugabyteDB Managedの高可用で耐障害性の高いクラスター構成を体験したい方 向けのハンズオンです。シ ングルリージョン(マルチAZ)、マルチリージョン、ジオ・パーティションのクラスタを構築して、それぞれの特性を 確認します。 対象者: • リージョンレベルの耐障害性を実現したい方 • アプリケーションのグローバル展開を検討されている方 • GDPR対応やデータのローカリティなど、データ保管場所やレイテンシー低減に興味をお持ちの方 前提知識: • クラウド・ネットワークについての基本的な知識 (VPC, Firewall rule, peering, ssh接続など) ハンズオン実施に必要なもの: • インターネット接続可能な端末 • ブラウザ (Chrome, Safari, Microsoft Edge, Firefoxなど) • ターミナルやコマンドプロンプト
  5. Yugabyte © 2023 – All Rights Reserved オンライン受講のご案内 本ワークショップは、オンライン (Zoom)

    で開催します。スムーズにご受講いただくため、以下の点をご確認く ださい。 • Zoom が使用可能であること • VoIP(インターネット音声接続 )が使用可能であること、もしくは 1台の電話回線 ◦ 詳細はZoomのシステム要件をご確認ください。 • 2つのモニター ◦ ハンズオンは「ウォークスルー」という手法を使って行われます。各エクササイズにおいて、イン ストラクターと同時に、ご自身が手を動かしながら実施する方法です。 ◦ 1つ目のモニターは、Zoomを通じて共有されている、インストラクターの画面を確認するため、 2 つ目のモニターは、ご自身がエクササイズを完了するために使います。 ◦ セカンダリモニター、または、 PCとタブレットの2つで接続するという方法も可能です。
  6. Yugabyte © 2023 – All Rights Reserved セッション中のコミュニケーションについて • 何かエラーが出ている、手順を聞き逃したなど、ご質問があり

    ましたら気軽にQ&Aボタンまたはチャットからお願いします。 • ペースを合わせるため、進捗状況を確認させていただくことが あります。「・・・まで終わった方は 挙手ボタンでお知らせくださ い」とお声がけします。 ◦ 「全員の手を下げる」は講師側でできます。
  7. Yugabyte © 2023 – All Rights Reserved Yugabyte © 2023

    – All Rights Reserved YugabyteDBとは
  8. Yugabyte © 2023 – All Rights Reserved YugabyteDBについて 9 Kannan

    Mikhail Karthik クラウドネイティブアプリケーションに向け たモダンなデータベース オープンソースでの提供 商用利用でも十分な実績のある スケールデータベース RDBMS分野での実績 • 10 years as Core Oracle DB engineer スケーラビリティを考慮した アーキテクチャとオペレーションの実践 • Core DB Team at Facebook 2007 - 2013 • Scaled data platforms from 30m to 1.4 Bn users • Ran DBaaS: +1 Trillion ops/day, +100 PB イノベーションによる裏付け • Co- Creators of Cassandra and Hbase エンタープライズに向けた実装 • Built distributed storage layer at Nutanix Founders
  9. Yugabyte © 2023 – All Rights Reserved YugabyteDB の提供モデル YugabyteDB

    Managed フルマネージドDBaaS YugabyteDB 分散SQLデータベース YugabyteDB Anywhere セルフマネージド DBaaS AWS or GCP or Azure YugabyteDB 100% オープンソース Any Cloud - お手持ちの環境 コミュニティ・サポート 24x365 エンタープライズサポート Day2 Opsを最適にするUI マネージドサービス 自動パッチ適用 ビルドインのセキュリティ バックアップ&リカバリ 10
  10. Yugabyte © 2023 – All Rights Reserved 長所の「いいとこ取り」をした2層の論理アーキテクチャ プラグイン可能なクエリ層 YCQL

    API Cassandra 互換 YSQL API Postgres 互換 その他のAPI (予定) DocDB - 分散ドキュメントストア 自動シャー ディング ロード バランス 分散トランザ クション Raftコンセン サス オンプレミスの データセンター あらゆる環境にデプロイ可能 ドキュメント・ストレージ (カスタムRocksDB)
  11. Yugabyte © 2023 – All Rights Reserved PostgreSQLのアーキテクチャ SQL APP

    Postmaster (Authentication, authorization) Rewriter Planner Optimizer Executor WAL Writer BG Writer … DISK PostgreSQL Query Layer の再利用
  12. Yugabyte © 2023 – All Rights Reserved PostgreSQLを分散ストアに対応 SQL APP

    Postmaster (Authentication, authorization) Rewriter Planner Optimizer Executor YugaByte DB Node YugaByte DB Node … … YugaByte DB Node Planner, Optimizer, Executor を拡張 DocDBで、 ストレージを置 換
  13. Yugabyte © 2023 – All Rights Reserved DocDB: 自動シャーディングとロードバランス •

    プライマリキーをベースに、テーブルをシャード (tablet)と呼ばれる細かい単位に分割 • HashあるいはRangeでのシャーディングがある(デフォルトは Hash) • シャードはデータベースノードに配布され、ロードを分散する
  14. Yugabyte © 2023 – All Rights Reserved DocDB:レプリケーションとRaftによる分散トランザクション管理 follower follower

    leader leader follower follower leader follower follower update update update update Node#1 Node#2 Node#3 • tabletと呼ばれるシャーディングの単位でレプリケーションを実施 • RAFT コンセンサスが行われるグループを タブレットピアと呼ぶ • 設定されたコピー数 (RF:Replication Factor, 3がデフォルト)分、各ノードにコピーされる 各タブレットピアの中でリーダーが一つ選ばれる リーダーはnodeやzoneなどを意識して自動的に分散 タブレットピア
  15. Yugabyte © 2023 – All Rights Reserved YugabyteDB クラスタの内部コンポーネント node1

    node2 node3 node4 Raft グループのリーダ (serves writes & strong reads) Raft グループのフォロワー (serves timeline-consistent reads & ready for leader election) syscatalog yb-master1 YB-Master サービス - メタデータと構成管理 - タブレットのロードバランシン グやバックグラウンドの管理 操作 (テーブルの作成や変更 など)を行う syscatalog yb-master2 syscatalog yb-master3 クラスタ管理 管理クライアント アプリケーション クライアント クエリ層 クエリ層 Txn Mgr クエリ層 Txn Mgr クエリ層 Txn Mgr … yb-tserver1 tablet3 tablet2 tablet1 YB-TServer サービス - クエリ層+ドキュメントストア - どのノードからもRead/Writeリク エストに対応 - タブレット・ピアをホスト - Raftグループを構成しレプリケー ションを行う - RFの値と同じまたはそれ以上の 数のプロセスが必要 yb-tserver2 yb-tserver3 yb-tserver4 … tablet4 tablet2 tablet1 … tablet4 tablet3 tablet1 … tablet4 tablet3 tablet2 分散 SQL API Txn Mgr
  16. Yugabyte © 2023 – All Rights Reserved Yugabyte © 2023

    – All Rights Reserved クラスター・バランシング 高い可用性と回復性
  17. Yugabyte © 2023 – All Rights Reserved 自動バランシング:スケールアウト (ノード追加) Tablet

    T1 Tablet T2 Tablet T3 Tserver 1 Tablet T1 Tablet T2 Tablet T3 Tserver 2 Tablet T1 Tablet T2 Tablet T3 Tserver 3 Tserver 4 Tablet T1 タブレット数: 3 3 3 2 3 3 1 2 2 3 2 Tablet T2 ◦ ノードを追加するだけで、クラスター・バランサがタブレットを移動
  18. Yugabyte © 2023 – All Rights Reserved 自動バランシング:スケールイン (ノード削除) Tablet

    T1 Tablet T2 Tablet T3 Tserver 1 Tablet T1 Tablet T2 Tablet T3 Tserver 2 Tablet T1 Tablet T2 Tablet T3 Tserver 3 Tserver 4 Tablet T1 タブレット数: 3 3 3 2 3 3 1 2 2 3 2 Tablet T2 T1 と T2 が レプリカ数不足 (under-replicated) tserver 4 をブラックリスト ◦ ブラックリストを使用して、ノード削除前に安全にタブレットを移動
  19. Yugabyte © 2023 – All Rights Reserved 自動バランシング:ノードのアップグレード Tablet T1

    Tablet T2 Tablet T3 Tserver 1 Tablet T1 Tablet T2 Tablet T3 Tserver 2 Tablet T1 Tablet T2 Tablet T3 Tserver 3 tserver 3をリーダー・ブラックリスト ◦ サービス停止を防ぐため、リーダー・ブラックリストを実施
  20. Yugabyte © 2023 – All Rights Reserved 自動バランシング:ノード障害 Tablet T1

    Tablet T2 Tablet T3 Tserver 1 Tablet T1 Tablet T2 Tablet T3 Tserver 2 Tablet T1 Tablet T2 Tablet T3 Tserver 3 Tserver 4 Tablet T2 Tablet T3 ◦ RAFT によりリーダーがすぐに変更 (3 秒) ◦ 一定期間過ぎてもハートビートが戻らない場合、クラスター・バランサがレプリカを移動 (デフォ ルト15分)
  21. Yugabyte © 2023 – All Rights Reserved Yugabyte © 2023

    – All Rights Reserved 柔軟なトポロジー
  22. Yugabyte © 2023 – All Rights Reserved AZレベルからマルチクラウドまで対応するクラスタトポロジー 複数クラウド、複数リージョン ゾーン間での一貫性

    WANのレイテンシーなし リージョンレベルの耐障害性なし リージョン間での一貫性 リージョン間WANのレイテンシー リージョンレベルの耐障害性 クラウド間での一貫性 クロスクラウドのWANレイテンシー クラウドレベルの耐障害性 1 1 単一リージョン、複数ゾーン 1 2 単一クラウド、複数リージョン 1 3 複数クラウド、複数リージョン 23
  23. Yugabyte © 2023 – All Rights Reserved xCluster 異なるリージョンの2つのクラスタ間で非同 期のレプリケーション

    Region 2 Region 3 Region 1 ストレッチクラスタ リージョンをまたがる同期レプリケーション YugabyteDBのマルチリージョン構成オプション ※YugabyteDB Managedでは未サポート
  24. Yugabyte © 2023 – All Rights Reserved 読み取りをスケールさせる方法 ◦ 書き込みは同期レプリケーション

    ◦ ステイル値 (デフォルト30秒) だけ古いデータを発生 したトランザクション順序通りに読み取る フォロワーリード ◦ 非同期レプリケーションによる読み取り専用レプリカ ◦ 書き込みはクラスタのリーダー・タブレットで リードレプリカ 3 ノードクラスタ (RF=3) Node#1 Node#2 Node#3 Tablet #1 Tablet #2 Tablet #3 Tablet #1 Tablet #1 Tablet #2 Tablet #2 Tablet #3 Tablet #3 クライア ント AZ 1 AZ 2 AZ 3 リード レプリカ
  25. Yugabyte © 2023 – All Rights Reserved ジオパーティション Placementの指定により特定のクラウドプロバイダ、地域、またはゾーンにデータを配置 ◦

    テーブルスペースを指定してパーティ ション・テーブルを作成することで、論 理的な一つのテーブルでありながら 行レベルで特定の地域にデータを保 持することが可能 ◦ 関連するユーザーやアプリ ケーションの近くにデータを配 置して低レイテンシを実現 ◦ コンプライアンス対応のため データを特定地域に保管 ◦ 強い一貫性かつ低レイテンシの読み 取り/書き込みが可能 マルチリージョン テーブルスペース 単一リージョン テーブルスペース 単一ゾーン テーブルスペース id geo 1 米国 id geo 4 英国 id geo 2 インド 3 インド 2
  26. Yugabyte © 2023 – All Rights Reserved さまざまなデプロイメントパターン • 読み取りメインのレプリカをデプロイし低レ

    イテンシーを実現 • 更新系処理はマスタにアクセス • プライマリのデータをそのまま複製 • Placementと呼ばれる物理的な地域 のグループを作成 • Placementグループでデータ共有 • クラスタは一つ • クラスタ間でテーブルを共有 • レプリケーションは非同期 • 単方向もしくは双方向 • リージョンやクラウドを 跨いだクラスタ構成 • 強い一貫性を保つ • 地域間レイテンシーが発生 ストレッチクラスター (同期) リードレプリカ (レプリカへは非同期) 地理的(Geo) パーティション (同期) xCluster レプリケーション (レプリカへは非同期)
  27. Yugabyte © 2023 – All Rights Reserved 柔軟なデプロイメント・オプション 一貫性 読み込みのレイテンシ

    書き込みのレイテンシ 使用目的 オプション 1 マルチゾーン・クラスタ 強い一貫性 低い (リージョン内で1-10ms程度) 低い (リージョン内で1-10ms程度) ゾーンレベルの回復性 オプション 2 マルチリージョン・ ストレッチクラスタ 書き込みは一貫性、 読み込みは調整可能 (follower readsを利用) 強い一貫性では高く、 結果整合性では低い リージョン間の距離に依存 ゾーンレベルの回復性 オプション 3 xCluster 単方向・非同期の レプリケーション ソースクラスタでは強い一貫 性、レプリカクラスタではトラ ンザクションの順序性・原子 性を保証 低い (リージョン内で1-10ms程度) 低い (リージョン内で1-10ms程度) バックアップとDR、 低レイテンシのI/O オプション 4 xCluster 双方向・非同期のレ プリケーション 結果整合性 (タイムライン一貫性) 低い (リージョン内で1-10ms程度) 低い (リージョン内で1-10ms程度) バックアップとDR、 低レイテンシのI/O オプション 5 ジオ・パーティション 強い一貫性 リージョン内は低い(1-10 ms) リージョン間は高い(40-100ms) リージョン内は低い(1-10 ms) リージョン間は高い(40-100ms) コンプライアンス対応、 ユーザの近くにデータを配置す ることによる低レイテンシのI/O オプション 6 リードレプリカ プライマリクラスタでは強い一 貫性、レプリカクラスタでは結 果整合性 低い (プライマリクラスタと同じリージョン 内で1-10 ms程度) 低い (リージョン内で1-10ms程度) 低レイテンシの読み込み (DRソリューションではない) 28 ハンズオンの対象
  28. Yugabyte © 2023 – All Rights Reserved Yugabyte © 2023

    – All Rights Reserved 分散クエリ実行
  29. Yugabyte © 2023 – All Rights Reserved Node テーブル (データ)

    配置の違い ◦ テーブルは単一ディスクに保管 ◦ 全データ/インデックスがローカルにある モノリシック・データベースの場合 ◦ テーブルは自動シャーディング ◦ タブレット(シャード)は各ノードに分散配置 YugabyteDBの場合 テーブルのタブレット テーブル分割 (自動シャーディング ) 3 ノードクラスタ (RF=3) Node#1 Node#2 Node#3 Tablet #1 Tablet #2 Tablet #3 Tablet #1 Tablet #1 Tablet #2 Tablet #2 Tablet #3 Tablet #3 データを どう分散させるか (プライマリキー) が重要!
  30. Yugabyte © 2023 – All Rights Reserved クエリ処理の違い ◦ クエリ層とストレージが1:1かつ同一システム

    ◦ クエリ層でフィルタや結合、集計を実施 モノリシック・データベースの場合 ◦ クエリ層とストレージが1:Nかつ分散 ◦ 分散環境での効率的なクエリ実行 が必要 YugabyteDBの場合 PostgreSQLクエリ層 Postmaster Rewriter Planner Optimizer Executor YSQL Postmaster Rewriter Planner Optimizer Executor
  31. Yugabyte © 2023 – All Rights Reserved YugabyteDBでパフォーマンスを向上するには スキーマの最適化 ◦

    インデックスの最適化 ▪ セカンダリインデックス ▪ 部分インデックス ▪ カバリング・インデックス クエリ・チューニング ◦ 実行計画の確認 ◦ hint_planの使用 パフォーマンス分析 ◦ パフォーマンス・アドバイザ ◦ スロークエリの発見 ◦ ホットスポットの検出 データモデリング ◦ クエリパターンの把握 ◦ 分散/スケールのための手動シャーディ ングやパーティショニング削除 ◦ スキーマ (シャーディング)の調整
  32. Yugabyte © 2023 – All Rights Reserved コロケーション tablet3 tablet2

    tablet1 tablet4 tablet3 tablet2 tablet1 tablet4 tablet3 tablet2 tablet1 tablet4 tablet3 tablet2 tablet1 tablet4 tablet3 tablet2 tablet1 tablet4 tablet3 tablet2 tablet1 tablet4 tablet3 tablet2 tablet1 tablet4 tablet3 tablet2 tablet1 tablet4 tablet3 tablet2 tablet1 tablet4 tablet3 tablet2 tablet1 tablet4 tablet3 tablet2 tablet1 tablet4 tablet3 tablet2 tablet1 tablet4 tablet3 tablet2 tablet1 tablet4 tablet3 tablet2 tablet1 tablet4 tablet3 tablet2 tablet1 tablet4 … … … … 小さなテーブルが多数あるデータベースだったら? 比較的小さなテーブルを分割しすぎることによる影響 • 少量データ取得にも複数ノードアクセスが必須 • ノードあたりのタブレット数増大 • RaftコンセンサスやRPCのトラフィック増大 • 1000タブレットあたり、約0.4 vCPUのオーバーヘッドが 発生 コロケーション • シャーディングを行わない • コロケーション・データベース内にのみ作成可能 • コロケーションする/しないはテーブル毎に指定可能 1個のタブレットに 100個のテーブルを コロケーション colocation tablet colocation tablet colocation tablet tablet3 tablet2 tablet1 tablet4 tablet3 tablet2 tablet1 tablet4 tablet3 tablet2 tablet1 tablet4 tablet3 tablet2 tablet1 tablet4 tablet3 tablet2 tablet1 tablet4 tablet3 tablet2 tablet1 tablet4
  33. Yugabyte © 2023 – All Rights Reserved プッシュダウン (Pushdown) ノード

    YugabyteDB ストレージ層 tablet3 tablet2 tablet1 ノード YSQL クエリ層 tablet4 tablet3 tablet2 ノード YSQL クエリ層 YugabyteDB ストレージ層 tablet1 tablet4 tablet3 YSQL クエリ層 tablet2 tablet1 tablet4 ノード クライアント 1. PostgreSQLの実行ツリー を構築 2. プッシュダウンするサブツ リーを識別 3. プッシュダウンを送信する ノードを識別 4. DocDBストレージ層の PostgreSQLライブラリを 使ってサブツリーを実行 PostgreSQLではクエリ層で行う処理を DocDBにオフロードし効率的に実行
  34. Yugabyte © 2023 – All Rights Reserved プッシュダウンの例 • 集約のプッシュダウン

    (Aggregate Pushdown) ◦ リモートノードからのデータ転送量をできるだけ抑えるため、各ノードの DocDBで事前の集約処理を 行ってから、リクエストしたクエリ層で最終集計を行う • 述語のプッシュダウン (Predicate Pushdown) ◦ リモートノードからのデータ転送量をできるだけ抑えるため、各ノードの DocDBで事前のフィルター を行ってから、リクエストしたクエリ層でレスポンスを集約する • 結合のプッシュダウン (Batched Nested Loop) ◦ Joinを処理するためのリモートノードとのループ回数をできるだけ抑えるため、リモートの DocDB側 でバッチ的にJoinを行う • シーケンスのプッシュダウン (Sequence) ◦ シーケンス値を取得する last_valueとnext_val()呼び出しが、パフォーマンス劣化を生じるため、シー ケンス値の生成をリモートの Doc DBで行う • 重複除外のプッシュダウン (DISTINCT) ◦ SELECT DISTINCT文の実行時に、Skip ScanまたはLoose index Scanにより重複データのインデッ クスをスキップすることでスキャンを高速化
  35. Yugabyte © 2023 – All Rights Reserved パフォーマンス・アドバイザ ◦ ボトルネックの特定と、性能改善のためのアドバイ

    スを提供 ◦ Index (使用されてないIndexの特定) ◦ Schema (Rangeシャーディングへの変更) ◦ Connection Skew (ノードあたりのコネクション数) ◦ Query Load Skew ( ノードあたりのクエリ数) ◦ CPU Skew and CPU Usage ◦ YugabyteDB Managed でのみ利用可能 ◦ YugabyteDB Anywhereについては今後対応予定 Managed Anywhere
  36. Yugabyte © 2023 – All Rights Reserved スロークエリ Anywhere Managed

    • YugabyteDBユニバースで実行されたクエリの統 計情報を分析 (YSQLのみ) ◦ 実行速度の遅いデータベース操作を識別 ◦ クエリの実行時間を経時的に評価 ◦ チューニングが必要なクエリの候補を発見 • YugabyteDB Managed ◦ User ◦ Total Time (実行時間) ◦ Count (実行数) ◦ Rows (返されるテーブル行の合計数) ◦ Database • YugabyteDB Anywhere ◦ 上記に加え、以下の詳細を表示 ▪ 最大/最小/平均/標準偏差の実行時間 ▪ テンポラリテーブルの使用メモリ
  37. Yugabyte © 2023 – All Rights Reserved 統計情報 (pg_stat) 38

    • SQL実行の統計情報をクエリを受信した TServer の共有メモリに保存 ◦ 各ノードで確認する必要あり ◦ 通常のクエリは正規化され集計 ◦ ユーティリティクエリは集計されない • pg_stat_statements ◦ SQLの実行統計を提供 ◦ 実行の遅いクエリの特定 ◦ YSQLでViewをクエリ/リセット ▪ select * from pg_stat_statements; ▪ select pg_stat_statements_reset(); • pg_stat_activity ◦ データベース接続の情報を提供 ◦ アイドル状態のコネクションが多すぎる場合、他の 管理関数 (pg_terminate_backend等) と組み合わ せて使用 ◦ YSQLでViewをクエリ ▪ select * from pg_stat_activity OSS Anywhere Managed yugabyte=# \d pg_stat_statements View "pg_catalog.pg_stat_statements" Column | Type | Collation | Nullable | Default ---------------------+------------------+-----------+----------+--------- userid | oid | | | dbid | oid | | | queryid | bigint | | | query | text | | | calls | bigint | | | total_time | double precision | | | min_time | double precision | | | max_time | double precision | | | mean_time | double precision | | | stddev_time | double precision | | | rows | bigint | | | shared_blks_hit | bigint | | | shared_blks_read | bigint | | | shared_blks_dirtied | bigint | | | shared_blks_written | bigint | | | local_blks_hit | bigint | | | local_blks_read | bigint | | | local_blks_dirtied | bigint | | | local_blks_written | bigint | | | temp_blks_read | bigint | | | temp_blks_written | bigint | | | blk_read_time | double precision | | | blk_write_time | double precision | | | 共有バッファはないので YugabyteDBでは表示されない
  38. Yugabyte © 2023 – All Rights Reserved 統計情報 (yb_stats) 3

    ◦ パフォーマンス測定のための詳細な統計情報の収 集が可能なオープンソースツール ◦ ワンストップのデータソースを提供 ◦ YugabyteDBのデフォルトサービスではないので、 Githubからのセットアップが必要 ◦ https://github.com/fritshoogland-yugabyte/yb_stats ◦ 二つの動作モード ◦ アドホックモード ▪ パフォーマンスデータの差分を表示 ▪ データはストアをせずに、パフォーマンスデー タのみ取得して表示 ◦ スナップショットモード ▪ データは全て収集されストアされる ▪ アウトプットはスナップショットの番号を表示 OSS Anywhere Managed
  39. Yugabyte © 2023 – All Rights Reserved 実行計画 (QUERY PLAN)

    とは ◦ クエリ層のPlannerが出力するSQLの実行手順 ◦ データの検索・取得 ◦ テーブルの結合 ◦ データの整形(ソートなど) ◦ 以下のルールで順序が決まる ◦ 順番に子要素をたどり一番子孫の要素から実行し、親要 素に遡っていく ◦ 兄弟要素がある場合は先に記述されている行から順に子 要素をたどる ◦ EXPLAIN + <オプション> + <SQL> で確認 ◦ ノードはインデント および →で階層化 ◦ オプションで出力内容 /方法をカスタマイズ OSS Anywhere Managed 実行ステップ=ノード
  40. Yugabyte © 2023 – All Rights Reserved Yugabyte © 2023

    – All Rights Reserved ハンズオン
  41. Yugabyte © 2023 – All Rights Reserved ハンズオン1:シングルリージョン (RF=3) YSQL

    クエリ層 YugabyteDB ストレージ層 tbl3-c tbl3-b tbl1 tbl2 tbl1_idx YSQL クエリ層 YugabyteDB ストレージ層 YSQL クエリ層 YugabyteDB ストレージ層 tbl1 tbl2 tbl1_idx tbl1 tbl2 tbl1_idx tbl3-a tbl4-c tbl4-b tbl4-a tbl3-c tbl3-b tbl3-a tbl4-c tbl4-b tbl4-a tbl3-c tbl3-b tbl3-a tbl4-c tbl4-b tbl4-a 東京 az-1 東京 az-2 東京 az-3 ※図表上は省略していますが、tbl3_idxも非コロケーションのタブレットとして作成されます。 コロケート・テーブル 自動シャーディングされず、同じタブレットに複数のテー ブルやインデックスがまとめて配置される。比較的小さ いテーブルやデータ量が増加しないテーブルに適して いる (100万行以下、まとめた時のタブレットのサイズが 20-40GB)。 コロケーションを使用しない場合 各テーブルは、デフォルトでノードの数 (この場合3つ) のタブレットに分割される。分割数を指定したり、データ 量の増加に合わせて自動分割させることも可能。データ 量が多いテーブルや、増加が予想されるテーブルに適 している。
  42. Yugabyte © 2023 – All Rights Reserved ハンズオン1:マルチリージョン (RF=3) YSQL

    クエリ層 YugabyteDB ストレージ層 tbl3-c tbl3-b tbl1 tbl2 tbl1_idx YSQL クエリ層 YugabyteDB ストレージ層 YSQL クエリ層 YugabyteDB ストレージ層 tbl1 tbl2 tbl1_idx tbl1 tbl2 tbl1_idx tbl3-a tbl4-c tbl4-b tbl4-a tbl3-c tbl3-b tbl3-a tbl4-c tbl4-b tbl4-a tbl3-c tbl3-b tbl3-a tbl4-c tbl4-b tbl4-a 東京 大阪 シンガポール 優先リージョン ※図表上は省略していますが、tbl3_idxも非コロケーションのタブレットとして作成されます。 優先リージョン 優先リージョンには、リーダー・タブレットが優先的に配 置される。読み取り、書き込みの処理はリーダー・タブ レットが対応し、Raftコンセンサスは少なくとも 1つのフォ ロワーからの応答で成立するため、トランザクションのコ ミットにシンガポールとの RPCを常に待つわけではな い。
  43. Yugabyte © 2023 – All Rights Reserved ハンズオン 1 実施結果例

    (単位: ms) コロケーション コロケーション 非コロケーション (分散) テーブル名 tbl1, tbl2 tbl3, tbl4 シングル・リージョン select 94.329 128.925 insert 19.810 23.563 join 2577.275 11053.587 join (BNL) 151.008 199.022 マルチ・リージョン select 75.348 146.859 insert 41.056 29.406 join 2932.358 3473.969 join (BNL) 142.353 359.570
  44. Yugabyte © 2023 – All Rights Reserved Yugabyte © 2023

    – All Rights Reserved - 休憩 - 🍵🍡 🔸🔹🔸15:20 - から再開します。🔸🔹🔸
  45. Yugabyte © 2023 – All Rights Reserved ハンズオン2:ジオ・パーティション (RF=1) https://yugabytedb-japan.github.io/

    YSQL クエリ層 YugabyteDB ストレージ層 YSQL クエリ層 YugabyteDB ストレージ層 YSQL クエリ層 YugabyteDB ストレージ層 東京 フランクフルト カリフォルニア tablespace_ap tablespace_eu tablespace_us customers_us customers_eu customers_ap customers orders orders_us orders_eu orders_ap ジオ・パーティション 特定カラムの値をベースに、パーティションに分 割。パーティションがテーブルスペースに紐づけら れているため、行ごとにデータが配置される場所 を指定することが可能。
  46. Yugabyte © 2023 – All Rights Reserved Yugabyte © 2023

    – All Rights Reserved クロージング
  47. Yugabyte © 2023 – All Rights Reserved 高可用性と耐障害性 地理分散 水平方向の拡張性

    PostgreSQL互換 YugabyteDB 鍵となる提供価値 トップ3の小売企業がテキサス州の猛 吹雪で一部のRegionが停電になる中、 障害を回避25万以上のQPSを実現し ながら事業継続を実現 複数の米国トップ10に入る小売業者 が、YugabyteDBをスケールアウトし、 ピーク時のトラフィック( Black Friday, Cyber Monday)に対応 Admiral社は、5つの地域と3つの大陸 にデータを分散して配置し、グローバル での読み取り遅延を 3ms以下に抑え、 ユーザーエクスペリエンスを向上 米国トップ5にランキングする金融機関 が、データスタックを DB2から YugabyteDBにモダナイズ あらゆる 環境で利用可能
  48. Yugabyte © 2023 – All Rights Reserved YugabyteDB その他のリソース •

    YugabyteDB Managed ◦ チュートリアル:Cloud Shell でサンプルデータベースの作成とデータ投入後に表示 ◦ Labs: グローバルなトポロジーの変化とクライアントの位置によるレイテンシを確認できる共有 デモ環境 • Yugabyte University (日本語字幕つき) ◦ UCF100: Introduction to Distributed SQL ◦ UCF101: Introduction to YugabyteDB • Yugabyte Japan Workshop ◦ YugabyteDB Managed の拡張性と耐障害性 ◦ Dedicatedの3ノードクラスタを使用して ノード障害時にもワークロードが継続処理 されることを確認
  49. Yugabyte © 2023 – All Rights Reserved アンケートへのご協力をお願いします YugabyteDBの日本語ハンズオンコンテンツをより良く、充実させていくために、ご意見を お

    聞かせいただけますと幸いです。 • 内容(カバー範囲やレベル) • 時間 • 開催方法 • その他 https://forms.gle/srNTK1C1Tka7fMqR8
  50. Yugabyte © 2023 – All Rights Reserved Yugabyte © 2023

    – All Rights Reserved Thank You Follow us on Twitter: twitter.com/YugabyteDB_JP Join us on Slack (#yb-japan-users): www.yugabyte.com/slack Star us on GitHub: github.com/yugabyte/yugabyte-db