YugabyteDBの可能性
PostgreSQLユーザの観点から見たYugabyteDBの性能面や運用面でのメリット
2023/04/11
SRA OSS LLC
彭 博 (ペン ボ)© 2023 SRA OSS LLC

1

SRA OSSはパートナーとしてYugabyteDB関連サービスを提供
SRA OSSは、これまでPostgreSQLをはじめとして、様々なOSSの商用サポートを提供してまいりました。この度、サポートで長年培ってきた経験とノウハウを活かし、より多くのお客様のニーズに応えるため、分散データベースのYugabyteDBの取り扱いを始めました。
SRAOSSはYugabyteDBのアセスメント・PoC、導入、サポートまでトータルに支援します。
• アセスメント・PoC支援• 導入支援• サポート支援

セミナーのアンケートにてご質問・ご要望をいただいたお客様むけ、個別にフォローアップさせて頂き、YugabyteDBの導入に興味のある一部のお客様に無償にてアセスメントを実施予定です。
© 2023 SRA OSS LLC

2

自己紹介ペン ボ• 名前： 彭 博 (Bo Peng)
pengbo@sraoss.co.jp• 所属：SRA OSS LLC
基盤技術グループ• 職務：• OSS技術サポート、ミドルウェア構築• クラスタリングソフトウェア: Pacemaker/Corosync• Kubernetes• など• PostgreSQLクラスタ管理ツールPgpool-II開発者© 2023 SRA OSS LLC

3

本日の流れ• YugabyteDBの特長• スケーラビリティ• 高可用性・耐障害性• PostgreSQLから移行の考慮事項© 2023 SRA OSS LLC

4

スケーラビリティ© 2023 SRA OSS LLC

5

PostgreSQLのスケールアウト
PostgreSQLの機能のみでスケールアウトするにはpostgres_fdwによるシャーディング

ストリーミングレプリケーション•

1台のプライマリと複数台のレプリカからなるストリーミング
レプリケーション構成•••

レプリカを増やすことで、参照処理をスケールアウトできる•

APP

データを複数台のPostgreSQLに分割配置
postgres_fdwを利用してSQLの実行負荷を分散させることで、スケールアウトを実現
参照・更新ともにスケールアウト可能

APP

参照

更新 参照

外部テーブル

プライマリ

レプリカ

レプリカ
外部テーブルレプリケーション

更新・参照
FDW
更新・参照
FDW

分散トランザクションが未対応

更新処理はスケールアウトできない© 2023 SRA OSS LLC

6

YugabyteDBのスケールアウト• 分散アーキテクチャを採用している• クエリレイヤとストレージレイヤに分かれている• 必要に応じてスケールアウト/スケールイン可能• 参照・更新ともにスケールアウト可能• 分散トランザクション対応

更新・参照

どのノードでも更新・参照可能

APP

分散アーキテクチャ

クエリレイヤクエリレイヤクエリレイヤストレージレイヤ

ストレージレイヤ

どのノードのストレージレイヤにも接続できるストレージレイヤ

follower

leaderレプリケーション

follower

レプリケーション

leaderfollowerfollowerfollowerfollower

leader

Node #1

Node #2

Node #3© 2023 SRA OSS LLC

tabletpeer

7

YugabyteDBのスケールアウト
ノードの追加ノードを追加すると、Tabletのリバランスは自動で行われる

leaderfollowerfollower

leaderfollowerfollower

leaderfollowerfollower

leaderleaderfollowerfollowerfollowerfollower

leader

Node #1

Node #2

Node #3

followerfollowerfollowerfollower

leaderfollowerfollower

leaderfollower

Node #1

Node #2

Node #3

Node #4

Node #4を追加© 2023 SRA OSS LLC

8高可用性・耐障害性© 2023 SRA OSS LLC

9

PostgreSQLで高可用性を実現するには• PostgreSQLでは高可用性機能が提供されていない• クラスタリングソフトウェアを用いて高可用性を実現するのが一般的
正常時

障害時
APPAPPVIP

VIP
クラスタリング
ソフトウェア系統切り替えにはダウンタイムが生じる

相互監視

クラスタリング
ソフトウェア

クラスタリング
ソフトウェア

クラスタリング
ソフトウェア

昇格

プライマリ

レプリカ

ストリーミングレプリケーション

プライマリ© 2023 SRA OSS LLC

10

YugabyteDBの高可用性• 高可用性機能がビルトインされている• ユーザにノードダウンを意識させることなく運用続行可能• 障害時、3秒以内に新しいリーダーが選出される• 更新・参照処理は透過的に新しいリーダーに継続• データ損失なし

follower

leaderleaderfollowerfollower
Node #1

Node #2

3秒以内に、followerからleaderに昇格(RF=3の場合)
3つのtabletを維持する
ために、別のノードにtabletを複製

follower

leaderleaderfollowerfollower

leaderfollower

leaderfollowerfollowerfollower

leaderfollowerfollower

leader

Node #3

Node #4

Node #1Node #3

Node #4

follower© 2023 SRA OSS LLC

Node #2

11PostgreSQLのDR構成例
非同期レプリケーションによる
サイト間データ同期
DRサイト

メインサイトカスケードレプリケーションによるサイト間データ同期
DRサイト

メインサイト

クラスタリング
ソフトウェア

クラスタリング
ソフトウェア同期
レプリケーション同期
レプリケーション

プライマリ

レプリカ

レプリカ

プライマリ

レプリカ

レプリカ

カスケードレプリケーション

非同期レプリケーション• データ損失の可能性あり• 運用がやや複雑• サイト障害時、手動でサイト切り替えが必要© 2023 SRA OSS LLC

12

YugabyteDBのDR構成例
マルチリージョン構成

xCluster構成

複数のリージョンに跨ってクラスタを構築

クラスタ間双方向非同期レプリケーション
更新 参照

Region A

参照

DRサイト(Region B)
Zone A

メインサイト(Region A)
Zone A

Region C

Region B

利点• データ損失なし• 手動切り替え不要

双方向非同期レプリケーション

Zone B

利点

欠点•Zone B

Zone C

レイテンシーあり•© 2023 SRA OSS LLC

低レイテンシー

Zone C欠点•

非同期レプリケーション

13

PostgreSQLから移行の考慮事項© 2023 SRA OSS LLC

14

YugabyteDB構成の設計
Replication Factor (RF)同一tablet peerにおけるtabletの数

Fault Tolerance (FT)
データの整合性を保証しながら、正常に運用を継続させるノード障害の最大数n個のノード故障に耐えるには RF = 2n + 1
TServerの台数はRF以上でなくてはならない
follower

leaderfollower

leaderfollowerfollowerfollowerfollower

leader

Node #1

Node #2

Node #3© 2023 SRA OSS LLC

1台のノード障害が発生しても、残りの2台で運用を継続させるにはRF=3が必要

15

シャーディング方法
ホットスポットを回避するようにスキーマを設計することが重要
ホットスポットとは？
書き込みが 1 つのシャード (tablet) に集中してしまう現象

ホットスポット

Leaderuser_id

name

201

…

202

…

203

…

…

…

主キーが単調増加/減少の場合、新しいデータが同一tabletに追加され、同一tabletに書き込みが集中してしまう© 2023 SRA OSS LLC

16

シャーディング方法• Tabletの分割• プライマリキーで自動的に行われる• 予めTablet数を指定することも可能• Tabletの分割方法はHashまたはRange• ホットスポットを防ぐためにHashシャーディングを使う
デフォルトではHASH分割となる

Hashシャーディングの場合

CREATE TABLE user_table (user_id int, name VARCHAR NOT NULL, PRIMARY KEY (user_id));
Rangeシャーディングの場合
CREATE TABLE user_table (user_id int, name VARCHAR NOT NULL, PRIMARY KEY (user_id ASC));
Rangeシャーディングの場
合は、ASC/DESCを指定© 2023 SRA OSS LLC

17

SERIAL型の注意点• YugabyteDBでSERIAL型を使う場合、新しいIDを取得するために、余分なオーバヘッドが発生する• 頻繁にSERIAL型のデータをINSERTすると、パフォーマンスが低下しやすくなる
解決策①
シーケンスのキャッシュサイズを大きくする (デフォルト1)
ALTER SEQUENCE <シーケンス名> CACHE 1000;

解決策②
SERIAL型の代わりにUUID型を使う
CREATE EXTENSION IF NOT EXISTS pgcrypto;
CREATE TABLE user_table (user_id UUID DEFAULT gen_random_uuid(),name VARCHAR NOT NULL,PRIMARY KEY (user_id));© 2023 SRA OSS LLC

18テーブルスペース(tablespace)の使い方の違い
PostgreSQLのテーブルスペースYugabyteDBのテーブルスペース•

テーブルやインデックスを格納する領域•

テーブルやインデックスの配置を制御する仕組み•

デフォルトのテーブルスペースとは異なるディスクやファイルシステムに格納できる•

テーブルスペースを利用することで、テーブルをクラウドプロバイダーやリージョン、AZといった配置情報に紐づけて、データの配置を制御することが可能
用途用途••

デフォルトのテーブルスペースの容量不足に対応
パフォーマンス向上•

ユーザの近くにデータを配置することで、読み取りレイテンシを短縮

Tablespace #1
CREATE TABLESPACE ts1 LOCATION '/data/pgdata';

Tablespace #2

Tablespace #3

CREATE TABLE t1 (...) TABLESPACE ts1;
CREATE TABLESPACE us_east_1a_zone_tablespace
WITH (replica_placement='{"num_replicas": 3, "placement_blocks": [{"cloud":"aws","region":"us-east-1","zone":"us-east-1a","min_num_replicas":3}]}');
CREATE TABLE t1 (...)
TABLESPACE us_east_1a_zone_tablespace;© 2023 SRA OSS LLC

19

アプリケーションでの配慮事項• リトライ処理の追加• デフォルトのトランザクション分離レベルが異なる• コンフリクトによってトランザクションがアボートされた時に(エラー
コード 40001: serialization_failure)、リトライするように修正• Read CommittedはBeta版としてリリースされている (2023/4時点)• パフォーマンス向上のため、プリペアドステートメントの使用が推奨されている© 2023 SRA OSS LLC

20

データの移行方法① 移行ツールYugabyteDB Voyagerを使う• 移行手順の簡素化• スキーマ分析レポートによる修正方法の提案
インポート

エクスポートMySQLMariaDB
PostgreSQL
OracleSchemaData
Indexes/Triggers

SchemaData

スキーマ分析 -> 修正YB-Voyager② pg_dump/ysql_dumpを使う© 2023 SRA OSS LLC

21

非互換機能について
YugabyteDBはPostgreSQL互換だが、非互換機能もある

非互換機能に関してはドキュメントをご参照ください。
https://docs.yugabyte.com/preview/explore/ysql-languagefeatures/postgresql-compatibility/© 2023 SRA OSS LLC

22

ご清聴ありがとうございました。

製品・サービスに関するお問い合わせ:sales@sraoss.co.jp© 2023 SRA OSS LLC

03-5979-2701
23