SlideShare une entreprise Scribd logo
1  sur  35
© 2022 NTT DATA Corporation
NewSQL/分散SQLデータベース よろず勉強会 #2
YugabyteDBを使ってみよう - part2 -
2022/12/22
NTTデータ 笠原 辰仁
© 2022 NTT DATA Corporation 2
© 2022 NTT DATA Corporation 2
00
はじめに
© 2022 NTT DATA Corporation 3
自己紹介
• NTTデータ 技術開発本部 笠原 辰仁
• 本日は、まだあまり馴染みのない分散データベースのOSSプロダクトであるYugabyteDBの概
観や利用方法を紹介
• 興味があるので手始めに簡単に触ってみたい、どんな特長のあるプロダクトかをざっくり知りた
い、という方々の一助になれば・・
• 本日は前回の勉強会の続きとなります!
• YugabyteDBの概要などを少し振り返ります
• 本資料は公開しますので、細かい部分はそちらで確認いただけます
© 2022 NTT DATA Corporation 4
本日のアジェンダ
1.YugabyteDBの概要とアーキテクチャ
2.YugabyteDBの導入と操作
3.YSQLによるDBへの処理
4.YugabyteDBの管理
【注意】
本日紹介するYugabyteDBでは、機能追加や変更が活発に行われているため、本日の講演内容と最新版のプロダクトとの
齟齬が出やすいことが想定されます。参考として公式のオンラインマニュアルのリンクも添えていますので、試行の際に躓く場合は
マニュアルを参考してください。
本資料の説明には2022年11月上旬での最新版であるYugabyteDBのバージョン2.15(2.15.2)を利用しています。
なお、一部実機でのデモを行う予定ですが、そちらはバージョン2.17(2.17.0)を使います!
2.5. 前回の簡単な振り返り
© 2022 NTT DATA Corporation 5
© 2022 NTT DATA Corporation 5
2.5
前回の簡単な振り返り
© 2022 NTT DATA Corporation 6
YugabyteDBの概要
Yugabyte社が中心に開発しているOSSプロダクト。PostgreSQL/Cassandraとの互換性があり、
高い可用性とスケーラビリティを持つ分散データベース。
YugabyteDB
開発主体 Yugabyte 社 ( https://www.yugabyte.com/ )
開発体制 Github上での開発。JIRAも併用。 ( https://github.com/yugabyte/yugabyte-db )
開発言語 DB本体は主に C/C++ (PostgreSQLのコードを流用している部分はC)
ユーティリティやCLIはPython
製品形態 YugabyteDB Core :YugabyteDB本体
YugabyteDB Anyware :YugabyteDBのセルフマネージド用のユーティリティ群
YugabyteDB Managed : YugabyteDBのマネージドサービス
ライセンス Apache License 2.0とPolyform Free Trial License 1.0.0の2つのライセンス形態がある。
Polyformライセンスは主にYugabyteDB Anywareに関するコード部分となる。(ソースツリーの managed
ディレクトリ以下の部分。バイナリには-managedのサフィックスを含む)
( https://docs.yugabyte.com/preview/legal/#licenses )
© 2022 NTT DATA Corporation 7
【前回の振り返り】 YugabyteDBの概要
非常に高いPostgreSQLとの互換性を持つ。
• ほとんどのDDL/DML/DCLのシンタックスをサポート
• PostgreSQLが持っているデータ型や組み込み関数もOK
• Extensionも主要なものはカバー
• NewSQLとしては珍しく外部キーやトリガ、ユーザ定義関数、ストアドプロシージャもサポート
• TiDBやCockroachDBなども追随しているが一歩リード、な感じ
• トランザクション分離レベルとしてもRead Committedもサポートし、PostgreSQLと同じよう
な振る舞いが可能
• JDBCなどPostgreSQL用のドライバも広く利用可能
© 2022 NTT DATA Corporation 8
【前回の振り返り】 YugabyteDBのアーキテクチャ
ユーザデータの配置先・ユーザ・権限などのメタデータを管理する「YB-Master」と、
ユーザデータを保持するとともに、ユーザリクエストを処理する「YB-Tserver」の2つのコンポーネントから構成される。
複数のYB-MasterとYB-Tserverで構成されるクラスタをYugabyteDBクラスタ(Universe)と呼ぶ。
YugabyteDBクラスタ (Universe)
YugabyteDBノード#1
YB-Master
YB-Tserver
YugabyteDBノード#2
YB-Master
YB-Tserver
YugabyteDBノード#3
YB-Master
YB-Tserver
YB-Masterはクラスタ全体の
メタデータ管理を担当
YB-Tserverはクエリ処理や
ユーザデータの保管を担当
© 2022 NTT DATA Corporation 9
【前回の振り返り】 Tablet
ユーザデータ(テーブルとインデックス)はTabletと呼ばれる単位で分割され、
各TserverのDocDBへ分散配置(シャーディング)される。Tabletは1台のLeaderと
複数(replication factorで変動)のFollowerから成る。
基本的にユーザからの読み書きリクエストはLeaderのTabletに対して実行される。
Masterと同じく、ユーザデータもRaftによりLeader選出と冗長化が行われている。
Tablet1
(Leader)
Tablet1 Tablet1
Tablet2
(Leader)
Tablet2 Tablet2
Tablet3
Tablet3 Tablet3
(Leader)
YB-Tserver YB-Tserver YB-Tserver ユーザからは一つのテーブル
に見えるが内部的に複数の
Tabletに分割される。
分割はHash or Rangeが
選択可能。
分割数や配置は基本的に
自動で決定・実施。
© 2022 NTT DATA Corporation 10
【前回の振り返り】 YugabyteDBのインストール
YugabyteDBのインストール方法にはいくつかあるが、
ここでは公式に公開しているバイナリを入手する方法を紹介。
最新版の資材は https://docs.yugabyte.com/preview/quick-start/linux/#download-yugabytedb を参照。
以下はyugabyteユーザを追加し、python3を入手後、alternativesコマンドでpythonコマンドがpython3を向くように設定
した後、実際のインストールへ移るコマンド例。
(yugabyteユーザの作成は任意で、別のユーザ名でも可。python3もインストール済みならスキップ可)
# useradd yugabyte
# yum install -y python3
# alternatives --set python /usr/bin/python3
# yum install -y wget
# su - yugabyte
$ wget https://downloads.yugabyte.com/releases/2.15.2.1/yugabyte-2.15.2.1-b1-linux-x86_64.tar.gz
$ tar zxvf yugabyte-2.15.2.1-b1-linux-x86_64.tar.gz
$ cd yugabyte-2.15.1.0
$ ./bin/post_install.sh
以上で終わり。資材の格納先は任意なのでダウンロード/解凍後に好きなディレクトへ移しても問題ない。
なお yugabyte-xxx.tar.gzは約300MB、展開後は約1.1GB程度のサイズとなる。
© 2022 NTT DATA Corporation 11
【前回の振り返り】 YugabyteDBの起動と停止
YugabyteDBの起動は基本的にMasterサーバ(YB-Master)の起動を行い、
それからTabletサーバ(YB-Tserver)を起動する手順となる。
起動と停止(初期化含む)には以下のコマンドを利用可能。
説明 備考/注意
yb-master YB-Masterの起動用コマンド。
yb-tserver YB-Tserverの起動用コマンド。
yugabyted yb-masterとyb-tserverをラップし、簡易的にクラ
スタの設定や起動/停止を行うコマンド。動作確
認や開発、試験時の利用を想定。
商用利用は非推奨。複数ノードでのクラスタ
構成などをサポート。
yb-ctl yb-masterとyb-tserverをラップし、簡易的にクラ
スタの設定や起動/停止を行うコマンド。動作確
認や開発、試験時の利用を想定。
商用利用は非推奨。シングルノードのみでの
クラスタ構成などをサポート。yb-ctlコマンドで
生成したデータディレクトリはyb-ctlでのみ再
利用可。
クラスタ構成を組んでの起動などはやや煩雑なコマンドとなるため、利便用のコマンドとしてyugabytedとyb-ctlが用意されている。
従来はyb-ctlが主に用いられてきたようだが、最近はyugabytedの機能拡充が目立つ。
簡易的な動作確認であれば、構築されるクラスタの機能としては変わらないためどちらを選んでも良い。
本資料ではyugabytedコマンドを利用した実例で解説を進める。
© 2022 NTT DATA Corporation 12
【前回の振り返り】 YugabyteDBの起動
yugabytedコマンドを利用する場合、以下のように「yugabyted start」とするだけで起動できる。
$ yugabyted start
Starting yugabyted...
? System checks
? YugabyteDB Started
? WARNING: Cluster started in an insecure mode without authentication and encryption enabled. For non-
production use only, not to be used without firewalls blocking the internet traffic.
+----------------------------------------------------------------------------------------------------------+
| yugabyted |
+----------------------------------------------------------------------------------------------------------+
| Status : Running. |
| Replication Factor : 1 |
| Web console : http://127.0.0.1:7000 |
| JDBC : jdbc:postgresql://127.0.0.1:5433/yugabyte?user=yugabyte&password=yugabyte |
| YSQL : bin/ysqlsh -U yugabyte -d yugabyte |
| YCQL : bin/ycqlsh -u cassandra |
| Data Dir : /home/yugabyte/var/data |
| Log Dir : /home/yugabyte/var/logs |
| Universe UUID : e8bffde5-b7e1-4837-83b8-15c0d6008d0b |
+----------------------------------------------------------------------------------------------------------+
? YugabyteDB started successfully! To load a sample dataset, try 'yugabyted demo'.
? Join us on Slack at https://www.yugabyte.com/slack
? Claim your free t-shirt at https://www.yugabyte.com/community-rewards/
© 2022 NTT DATA Corporation 13
© 2022 NTT DATA Corporation 13
03
YSQLによるDBへの処理
© 2022 NTT DATA Corporation 14
ysqlshによる接続と操作
YugabyteDBのYSQLでの接続はysqlshコマンド、もしくはPostgreSQL用のドライバや
コマンド(psqlなど)を利用可能。
$ ysqlsh
ysqlsh (11.2-YB-2.15.2.1-b0)
Type "help" for help.
yugabyte=# CREATE TABLE test (c1 int primary key, c2 text);
CREATE TABLE
yugabyte=# ¥d+ test
Table "public.test"
Column | Type | Collation | Nullable | Default | Storage | Stats target | Description
--------+---------+-----------+----------+---------+----------+--------------+-------------
c1 | integer | | not null | | plain | |
c2 | text | | | | extended | |
Indexes:
"test_pkey" PRIMARY KEY, lsm (c1 HASH)
yugabyte=# INSERT INTO test SELECT generate_series(1,10000), md5(clock_timestamp()::text);
INSERT 0 10000
基本的にPostgreSQLと同じ
シンタックスであればほとんど実行可能。
メタコマンド(¥~)もおおよそ
カバーされている
© 2022 NTT DATA Corporation 15
【参考】非サポートのシンタックス対応
YugabyteDBではPostgreSQLで実施可能なVACUUMやCHECKPOINTなどの処理、
およびDDLのオプションの一部などはサポートしていない。
ただしそれらの多くはERRORとせずにWARNING扱い(無視)とすることで処理のアボートを回避している。
下記はPostgreSQLのソースに同梱されているpgbenchというベンチマークツールによる初期化の様子を
抜粋したもの。
$ pgbench -i -s 1 -h 127.0.0.1 -p5433
dropping old tables...
NOTICE: table "pgbench_accounts" does not exist, skipping
NOTICE: table "pgbench_branches" does not exist, skipping
NOTICE: table "pgbench_history" does not exist, skipping
NOTICE: table "pgbench_tellers" does not exist, skipping
creating tables...
WARNING: storage parameter fillfactor is unsupported, ignoring
WARNING: storage parameter fillfactor is unsupported, ignoring
WARNING: storage parameter fillfactor is unsupported, ignoring
(中略)
HINT: Set 'ysql_beta_features' yb-tserver gflag to true to suppress the warning for all beta features.
WARNING: VACUUM will be ignored
creating primary keys...
done in 17.98 s (drop tables 0.03 s, create tables 1.07 s, client-side generate 5.69 s, vacuum 2.79 s, primary keys 8.40 s).
© 2022 NTT DATA Corporation 16
PostgreSQLとの差異/注意点
PostgreSQLとの高い互換性を持つYugabyteDBだが、当然ながら非互換なものもある。
一般的な使い方をするうえで注意した方が良いポイントをいくつかピックアップする。
• トランザクション分離レベルの設定
• DDLはトランザクショナルではないこと
• CREATE INDEXはデフォルトでCONCURRENTLYであること
なお、非互換に関しては以下のマニュアルにまとまっている。
https://docs.yugabyte.com/preview/explore/ysql-language-features/postgresql-compatibility/
https://docs.yugabyte.com/preview/faq/compatibility/#ycql-compatibility-with-apache-cassandra-ql
© 2022 NTT DATA Corporation 17
DDLはトランザクショナルではないこと
YugabyteDBではテーブル作成やインデックス作成、TRUNCATEといった処理は
トランザクションとして実行できない(※)
PostgreSQLではROLLBACKできるが、それができないので注意。
yugabyte=# BEGIN;
BEGIN
yugabyte=# CREATE TABLE t1 (c1 int primary key, c2 text);
CREATE TABLE
yugabyte=# ROLLBACK ;
ROLLBACK
yugabyte=# SELECT * FROM t1;
c1 | c2
----+----
(0 rows)
yugabyte=# INSERT INTO t1 SELECT generate_series(1,10000), 'AAA';
INSERT 0 10000
yugabyte=# BEGIN;
BEGIN
yugabyte=# TRUNCATE t1;
TRUNCATE TABLE
yugabyte=# ROLLBACK ;
ROLLBACK
yugabyte=# SELECT count(*) FROM t1;
count
-------
0
(1 row)
CREATE TABLEの例 TRUNCATEの例
※HEADにはDDLをAtomicに行うための改善パッチが段階的に導入されている。
https://github.com/yugabyte/yugabyte-db/commit/6e604ba9a00842d4e114ef70708c99b6d2fac2af
© 2022 NTT DATA Corporation 18
トランザクション分離レベルの設定
YugabyteDBでは複数のトランザクション分離レベルをサポートしており、Beta機能では
あるがRead Committedでの動作(PostgreSQLのデフォルトと同じ振る舞い)も可能。
ただし、それを利用するにはTserverの「yb_enable_read_committed_isolation」パラメータを有効にする必要がある。
-- PostgreSQLにもある以下のパラメータでも確認できるが、実際には作用しない
yugabyte=# SHOW default_transaction_isolation ;
default_transaction_isolation
-------------------------------
read committed
-- 実際に分離レベルとして作用するのは以下のパラメータ
yugabyte=# SHOW yb_effective_transaction_isolation_level ;
yb_effective_transaction_isolation_level
------------------------------------------
repeatable read
-- 「default_transaction_isolation」を設定しても実際には変更されていない・・
yugabyte=# SET default_transaction_isolation TO "read committed";
SET
yugabyte=# SHOW yb_effective_transaction_isolation_level ;
yb_effective_transaction_isolation_level
------------------------------------------
repeatable read
© 2022 NTT DATA Corporation 19
トランザクション分離レベルの設定
YugabyteDBでは複数のトランザクション分離レベルをサポートしており、Beta機能では
あるがRead Committedでの動作(PostgreSQLのデフォルトと同じ振る舞い)も可能。
ただし、それを利用するにはTserverの「yb_enable_read_committed_isolation」パラメータを
有効にする必要がある。
-- 以下のようにパラメータを指定してTserverを起動する必要がある。
$ yugabyted start --tserver_flags="yb_enable_read_committed_isolation=true"
-- 適切にTserverのパラメータを有効にすることでRead Committedになる
yugabyte=# SHOW default_transaction_isolation ;
default_transaction_isolation
-------------------------------
read committed
yugabyte=# SHOW yb_effective_transaction_isolation_level ;
yb_effective_transaction_isolation_level
------------------------------------------
read committed
© 2022 NTT DATA Corporation 20
CREATE INDEXはデフォルトでCONCURRENTLYであること
YugabyteDBではインデックスの作成をデフォルトでCONCURRENTLYに行う。
(YugabyteDBではindex backfillと呼ぶ)
これはインデックス作成対象のテーブルへの更新処理をブロックしない一方、作成時間が長くなる。
NONCONCURRENTLYを付与すると対象テーブルへの排他ロックを取る一方、作成時間は短縮する。
大量の空のテーブルとインデックスを作成する場合にはNONCONCURRENTLYを付与すると良い。
yugabyte=# CREATE TABLE cic (c1 int);
CREATE TABLE
yugabyte=# ¥timing
Timing is on.
yugabyte=# CREATE INDEX cic_idx1 On cic (c1);
CREATE INDEX
Time: 3067.489 ms (00:03.067)
yugabyte=# CREATE INDEX NONCONCURRENTLY cic_idx2 On cic (c1);
CREATE INDEX
Time: 268.417 ms
© 2022 NTT DATA Corporation 21
CREATE INDEXはデフォルトでCONCURRENTLYであること
CONCURRENTLYでのインデックス作成が失敗するとインデックスの定義だけが
残存する。(これはPostgreSQLと同じ仕様)
作成に失敗したインデックスの再作成前に削除が必要なことに注意。
yugabyte=# INSERT INTO cic VALUES(1), (1);
INSERT 0 2
yugabyte=# CREATE UNIQUE INDEX cic_u_idx1 On cic (c1);
ERROR: Aborted: ERROR: duplicate key value violates unique constraint "cic_u_idx1"
yugabyte=# TRUNCATE cic;
TRUNCATE TABLE
yugabyte=# CREATE UNIQUE INDEX cic_u_idx1 On cic (c1);
ERROR: relation "cic_u_idx1" already exists
yugabyte=# SELECT indexrelid::regclass, indisvalid FROM pg_index WHERE NOT indisvalid;
indexrelid | indisvalid
------------+------------
cic_u_idx1 | f
© 2022 NTT DATA Corporation 22
© 2022 NTT DATA Corporation 22
04
YugabyteDBの管理
© 2022 NTT DATA Corporation 23
YugabyteDBの管理
DBの管理には様々あるが、本資料では以下の項目について紹介する。
• クラスタの状態/情報を確認する
• yb-adminコマンドで確認する
• ノード追加と削除
• MasterとTserverを追加/削除しスケールさせる
• Web UIを使う
• Web UIで各種情報を確認する
• 監視(メトリクス監視)
• PrometheusとGrafanaと連携しメトリクスを可視化する
© 2022 NTT DATA Corporation 24
クラスタの状態/情報を確認する
YugabyteDBではクラスタ管理用にyb-adminコマンドが用意されている。
yb-adminではおよそ以下のことができる。DBAの作業に該当することはほぼカバーする。
• クラスタ状態の確認
• MasterやTserverの数や状態、Tabletの配置状況など
• クラスタ構成の変更
• Masterの追加やレプリケーション数の変更、Master/TserverのDecommissionなど
• テーブルやTabletの構成変更
• テーブルのレプリケーション数変更やTabletの分割、再配置など
• バックアップ/リストア
• 手動でのスナップショット取得や自動バックアップのスケジュール設定など
その他いろいろ
詳細はマニュアルを参照 -> https://docs.yugabyte.com/preview/admin/yb-admin
© 2022 NTT DATA Corporation 25
クラスタの状態/情報を確認する
YugabyteDB試用に際してyb-adminで多用するのは以下のコマンドとなる。
-master_addressesはMasterが複数いれば全MasterのIP:portの組を指定するのが
一般的だが、LEADERのMasterが含まれていれば良い。
-- Masterの状態を確認
$ yb-admin -master_addresses "127.0.0.1:7100" list_all_masters
Master UUID RPC Host/Port State Role
de21a4e44387425abbe4493631dbc49b 127.0.0.1:7100 ALIVE LEADER
f3514d982165448da71199cc4242bf90 127.0.0.2:7100 ALIVE FOLLOWER
bb46c71afd0242d3a8e60cd103750e9c 127.0.0.3:7100 ALIVE FOLLOWER
-- Tserverの状態を確認
$ yb-admin -master_addresses "127.0.0.1:7100" list_all_tablet_servers
Tablet Server UUID RPC Host/Port Heartbeat delay Status Reads/s Writes/s Uptime SST total size SST uncomp size SST #files Memory
3ba6f5f1545c4052ae69403d253c0328 127.0.0.3:9100 0.76s ALIVE 0.00 0.00 1132 80.83 KB 190.31 KB 1 64.65 MB
1e22539c24f548f6b63d232391eb9476 127.0.0.2:9100 0.76s ALIVE 0.00 0.00 1142 80.83 KB 190.31 KB 1 82.25 MB
4b2534e0864142b2a0706bd388e40896 127.0.0.1:9100 0.76s ALIVE 0.00 0.00 1162 80.83 KB 190.31 KB 1 77.32 MB
-- Tabletの状態を確認
$ yb-admin -master_addresses "127.0.0.1:7100" list_tablets ysql.test1 t1
Tablet-UUID Range Leader-IP Leader-UUID
3e7bf5ea759147859dc7f5a2292521c0 partition_key_start: "" partition_key_end: "H¥200¥000¥003¥350!" 127.0.0.2:9100 1e22539c24f548f6b63d232391eb9476
9559e27874824a39b2f301223ff00fbf partition_key_start: "H¥200¥000¥003¥350!" partition_key_end: "H¥200¥000¥013¥270!" 127.0.0.3:9100 3ba6f5f1545c4052ae69403d253c0328
2ee47bf19fb04858b09a17ed71463a35 partition_key_start: "H¥200¥000¥013¥270!" partition_key_end: "" 127.0.0.1:9100 4b2534e0864142b2a0706bd388e40896
テーブルやTabletの状態確認、変更を行う場合、DB(Keyspace)を指定するが、
ysql.dbname or ycql.keyspacenameのように修飾が必要になるので注意
© 2022 NTT DATA Corporation 26
ノード追加と削除
YugabyteDBではMasterとTserverを適宜クラスタへ追加することで冗長性や性能の向上を
実施できる。以下、テーブルを明示的に4つのTabletで作成し、ノード追加によるそれらTabletの
Leaderが均等にリバランスしている様子をコマンド結果で示す。
-- 以下は1台のローカルマシン上で3つのMasterとTserverを起動しクラスタを構成
$ yugabyted start --base_dir=/home/yugabyte/ydata/node1 --listen=127.0.0.1
$ yugabyted start --base_dir=/home/yugabyte/ydata/node2 --listen=127.0.0.2 --join=127.0.0.1
$ yugabyted start --base_dir=/home/yugabyte/ydata/node3 --listen=127.0.0.3 --join=127.0.0.1
yugabyte=# CREATE TABLE t1 (c1 int primary key, c2 text) SPLIT INTO 4 TABLETS;
CREATE TABLE
yugabyte=# INSERT INTO t1 SELECT generate_series(1,10000), 'AAA';
INSERT 0 10000
yugabyte=# ¥q
$ yb-admin list_tablets ysql.yugabyte t1
Tablet-UUID Range Leader-IP Leader-UUID
dc7ad7e2988742a8861b4c224e66b05a partition_key_start: "" partition_key_end: "?¥377" 127.0.0.2:9100 68c0f30f937140a9a0d1449e9c5cc01d
3739b68f0035419eb2b8d2e57937cef3 partition_key_start: "?¥377" partition_key_end: "¥177¥376" 127.0.0.1:9100 44ea2d19ea0b469184a0640713796f3b
82b1ef5f90604bc6a7a204953247b52e partition_key_start: "¥177¥376" partition_key_end: "¥277¥375" 127.0.0.2:9100 68c0f30f937140a9a0d1449e9c5cc01d
69b32c5c0ae441e8ade3bd46f923732c partition_key_start: "¥277¥375" partition_key_end: "" 127.0.0.3:9100 a8f45172236f451190cc55a74c41ceba
4つのTabletが3つのノードに配置されている
© 2022 NTT DATA Corporation 27
ノード追加と削除
-- もう1台のTserverを起動しクラスタに追加
$ yugabyted start --base_dir=/home/yugabyte/ydata/node4 --listen=127.0.0.4 --join=127.0.0.1
$ yb-admin list_tablets ysql.yugabyte t1
Tablet-UUID Range Leader-IP Leader-UUID
dc7ad7e2988742a8861b4c224e66b05a partition_key_start: "" partition_key_end: "?¥377" 127.0.0.2:9100 68c0f30f937140a9a0d1449e9c5cc01d
3739b68f0035419eb2b8d2e57937cef3 partition_key_start: "?¥377" partition_key_end: "¥177¥376" 127.0.0.1:9100 44ea2d19ea0b469184a0640713796f3b
82b1ef5f90604bc6a7a204953247b52e partition_key_start: "¥177¥376" partition_key_end: "¥277¥375" 127.0.0.4:9100 767b16ee4ac84184a27e08fef1cd0d01
69b32c5c0ae441e8ade3bd46f923732c partition_key_start: "¥277¥375" partition_key_end: "" 127.0.0.3:9100 a8f45172236f451190cc55a74c41ceba
4つのTabletが新規に追加されたノード(127.0.0.4)を
含めた4ノードにリバランスされた
© 2022 NTT DATA Corporation 28
ノード追加と削除
次に、ノード削除を行い削除対象のTserverノードにいたLeaderが別のノードに移る様子を見る。
-- yugabyted destoryでNode3を停止しデータディレクトリを破棄する
$ yugabyted destroy --base_dir=/home/yugabyte/ydata/node3
Stopped yugabyted using config /home/yugabyte/ydata/node3/conf/yugabyted.conf.
Deleted logs at /home/yugabyte/ydata/node3/logs.
Deleted data at /home/yugabyte/ydata/node3/data.
Deleted conf file at /home/yugabyte/ydata/node3/conf/yugabyted.conf.
$ yb-admin list_tablets ysql.yugabyte t1
Tablet-UUID Range Leader-IP Leader-UUID
dc7ad7e2988742a8861b4c224e66b05a partition_key_start: "" partition_key_end: "?¥377" 127.0.0.2:9100 68c0f30f937140a9a0d1449e9c5cc01d
3739b68f0035419eb2b8d2e57937cef3 partition_key_start: "?¥377" partition_key_end: "¥177¥376" 127.0.0.1:9100 44ea2d19ea0b469184a0640713796f3b
82b1ef5f90604bc6a7a204953247b52e partition_key_start: "¥177¥376" partition_key_end: "¥277¥375" 127.0.0.4:9100 767b16ee4ac84184a27e08fef1cd0d01
69b32c5c0ae441e8ade3bd46f923732c partition_key_start: "¥277¥375" partition_key_end: "" 127.0.0.1:9100 44ea2d19ea0b469184a0640713796f3b
削除されたノード(127.0.0.3)がLeaderだったTabletが
別のノードに変更された
© 2022 NTT DATA Corporation 29
© 2022 NTT DATA Corporation 29
05
おわりに
© 2022 NTT DATA Corporation 30
まとめ
本講演ではYugabyteDBの概要とアーキテクチャの簡単な説明、
および利用と管理の基本的な一連の流れを解説しました。
分散データベースは非常に取っつきにくい、扱いにくそう、というイメージがあるかもしれませんが
利用してみるだけならばとても簡単です。
YugabyteDBに限らず、昨今の類似プロダクト(TiDBやCockroachDBなど)は使い勝手を考
慮した便利なユーティリティやコマンドの充実にも力を入れています。
ぜひ、気になっている方々がいれば、実際に使ってみてください。
© 2022 NTT DATA Corporation 31
© 2022 NTT DATA Corporation 31
06
付録など
© 2022 NTT DATA Corporation 32
【参考】 Tabletの分割方法の指定
Tabletの分割は自動で行われるほか、テーブル作成時に予め分割しておくことも可能。
分割はHashかRangeとなるが、主キーやインデックスの定義方法で決まることになる。
Range SplitのテーブルにHash Splitのインデックス定義なども可能。
-- 主キーをASC/DESC付きでソートしたものを定義した場合はRange Splitとなる
yugabyte=# CREATE TABLE r_t1 (c1 int, c2 text, primary key (c1 ASC));
CREATE TABLE
-- 主キーのデフォルト(ASCなどを付与しない)定義ではHash Splitとなる
yugabyte=# CREATE TABLE h_t1 (c1 int, c2 text, primary key (c1));
CREATE TABLE
-- インデックスも同様のルール。なおRange Splitの場合は作成時にSplitの境界値を指定できる
yugabyte=# CREATE INDEX r_t1_idx ON r_t1 (c2 ASC) SPLIT AT VALUES((1000),(2000));
CREATE INDEX
-- Hash Splitの場合は作成時に分割数を指定できる
yugabyte=# CREATE INDEX h_t1_idx ON h_t1 (c2) SPLIT INTO 4 TABLETS;
CREATE INDEX
© 2022 NTT DATA Corporation 33
【参考】 yugabytedコマンドのその他ポイント
• yugabytedで3つ以上のMaster/Tserverを起動し—joinオプションでクラスタを構成すると、
自動的にreplication factorを3に設定し、冗長構成としてくれる
• ただしMasterは4つ以上の構成にしない(Tserverは4台上の追加がされる)
• Masterを4つ以上とするクラスタを構成する場合は手動でyb-masterを起動しクラスタに参加させる必要がある
• Tserverを4つ以上に増やしていってもreplication factorは3から変更されない
• replication factorを変更する場合は別途tserver_flagsオプションで変更する必要がある
• master_flagsやtserver_flagsオプションの指定は非常に長くなりやすく、かつクォート/ダブルクォートの指定が(正しい文法で
あっても)一部のケースでエラーで弾かれることがある。
• 以下のようにconfファイルを作成し、--tserver_flags=flagfile=/path/to/conf_fileという方法を取ると良い。
$ cat /tmp/tserver_flg.conf
--yb_enable_read_committed_isolation=true
--ysql_beta_features=true
--ysql_pg_conf_csv=password_encryption=scram-sha-256
--ysql_hba_conf_csv=host all kasa 127.0.0.1/32 scram-sha-256,host all all 0.0.0.0/0 trust,host all all ::0/0 trust
$ yugabyted start --tserver_flags=flagfile=/tmp/tserver_flg.conf
© 2022 NTT DATA Corporation 34
【参考】 ycqlshによる接続と操作
YugabyteDBのYCQLでの接続はycqlshコマンド、もしくはCassandra用のドライバや
コマンド(cqlshなど)を利用可能。
$ ycqlsh
Connected to local cluster at 127.0.0.1:9042.
[ycqlsh 5.0.1 | Cassandra 3.9-SNAPSHOT | CQL spec 3.4.2 | Native protocol v4]
Use HELP for help.
ycqlsh> DESCRIBE KEYSPACES;
system_auth system_schema system
ycqlsh> CREATE KEYSPACE test;
ycqlsh> USE test;
ycqlsh:test> CREATE TABLE t1 (c1 int primary key, c2 text);
ycqlsh:test> INSERT INTO t1(c1, c2) VALUES (1, 'AAA');
ycqlsh:test> SELECT * FROM t1;
c1 | c2
----+-----
1 | AAA
(1 rows)
基本的にCassandraと同じ
シンタックスであればほとんど実行可能。
© 2022 NTT DATA Corporation
その他、記載されている会社名、商品名、又はサービス名は、
各社の登録商標又は商標です。

Contenu connexe

Tendances

PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)Hironobu Suzuki
 
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...NTT DATA Technology & Innovation
 
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...NTT DATA Technology & Innovation
 
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...NTT DATA Technology & Innovation
 
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)NTT DATA Technology & Innovation
 
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
PostgreSQL 15 開発最新情報
PostgreSQL 15 開発最新情報PostgreSQL 15 開発最新情報
PostgreSQL 15 開発最新情報Masahiko Sawada
 
PostgreSQLでスケールアウト
PostgreSQLでスケールアウトPostgreSQLでスケールアウト
PostgreSQLでスケールアウトMasahiko Sawada
 
PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説Masahiko Sawada
 
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)NTT DATA Technology & Innovation
 
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)NTT DATA Technology & Innovation
 
PostgreSQL 14 モニタリング新機能紹介(PostgreSQL カンファレンス #24、2021/06/08)
PostgreSQL 14 モニタリング新機能紹介(PostgreSQL カンファレンス #24、2021/06/08)PostgreSQL 14 モニタリング新機能紹介(PostgreSQL カンファレンス #24、2021/06/08)
PostgreSQL 14 モニタリング新機能紹介(PostgreSQL カンファレンス #24、2021/06/08)NTT DATA Technology & Innovation
 
細かすぎて伝わらないかもしれない Azure Container Networking Deep Dive
細かすぎて伝わらないかもしれない Azure Container Networking Deep Dive細かすぎて伝わらないかもしれない Azure Container Networking Deep Dive
細かすぎて伝わらないかもしれない Azure Container Networking Deep DiveToru Makabe
 
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...NTT DATA Technology & Innovation
 
HA環境構築のベスト・プラクティス
HA環境構築のベスト・プラクティスHA環境構築のベスト・プラクティス
HA環境構築のベスト・プラクティスEnterpriseDB
 
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!NTT DATA Technology & Innovation
 
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 

Tendances (20)

PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
 
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
 
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
 
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
 
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
 
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PostgreSQL 15 開発最新情報
PostgreSQL 15 開発最新情報PostgreSQL 15 開発最新情報
PostgreSQL 15 開発最新情報
 
PostgreSQLでスケールアウト
PostgreSQLでスケールアウトPostgreSQLでスケールアウト
PostgreSQLでスケールアウト
 
PostgreSQLの運用・監視にまつわるエトセトラ
PostgreSQLの運用・監視にまつわるエトセトラPostgreSQLの運用・監視にまつわるエトセトラ
PostgreSQLの運用・監視にまつわるエトセトラ
 
PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説
 
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
 
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)
 
PostgreSQL 14 モニタリング新機能紹介(PostgreSQL カンファレンス #24、2021/06/08)
PostgreSQL 14 モニタリング新機能紹介(PostgreSQL カンファレンス #24、2021/06/08)PostgreSQL 14 モニタリング新機能紹介(PostgreSQL カンファレンス #24、2021/06/08)
PostgreSQL 14 モニタリング新機能紹介(PostgreSQL カンファレンス #24、2021/06/08)
 
細かすぎて伝わらないかもしれない Azure Container Networking Deep Dive
細かすぎて伝わらないかもしれない Azure Container Networking Deep Dive細かすぎて伝わらないかもしれない Azure Container Networking Deep Dive
細かすぎて伝わらないかもしれない Azure Container Networking Deep Dive
 
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
 
HA環境構築のベスト・プラクティス
HA環境構築のベスト・プラクティスHA環境構築のベスト・プラクティス
HA環境構築のベスト・プラクティス
 
Vacuum徹底解説
Vacuum徹底解説Vacuum徹底解説
Vacuum徹底解説
 
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
 
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
 

Similaire à YugabyteDBを使ってみよう - part2 -(NewSQL/分散SQLデータベースよろず勉強会 #2 発表資料)

ACRiウェビナー_GIGABYTE様ご講演資料
ACRiウェビナー_GIGABYTE様ご講演資料ACRiウェビナー_GIGABYTE様ご講演資料
ACRiウェビナー_GIGABYTE様ご講演資料直久 住川
 
Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)
Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)
Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
20171206 d3 health_tech発表資料
20171206 d3 health_tech発表資料20171206 d3 health_tech発表資料
20171206 d3 health_tech発表資料dcubeio
 
On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"
On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"
On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"Masaya Aoyama
 
オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)
オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)
オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)NTT DATA Technology & Innovation
 
MySQL clients
MySQL clientsMySQL clients
MySQL clientsyoku0825
 
about Eucalyptus (20121026) NII
about Eucalyptus (20121026) NIIabout Eucalyptus (20121026) NII
about Eucalyptus (20121026) NIIOsamu Habuka
 
[INSIGHT OUT 2011] A24 sql server wait events(mario broodbakker)
[INSIGHT OUT 2011] A24 sql server wait events(mario broodbakker)[INSIGHT OUT 2011] A24 sql server wait events(mario broodbakker)
[INSIGHT OUT 2011] A24 sql server wait events(mario broodbakker)Insight Technology, Inc.
 
RでGPU使ってみた
RでGPU使ってみたRでGPU使ってみた
RでGPU使ってみたKazuya Wada
 
Cloud impact on IT industry (in Japanese)
Cloud impact on IT industry (in Japanese)Cloud impact on IT industry (in Japanese)
Cloud impact on IT industry (in Japanese)shojiro-tanaka
 
Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)
Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)
Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)NTT DATA Technology & Innovation
 
pg_standbyの今後について(第19回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_standbyの今後について(第19回PostgreSQLアンカンファレンス@オンライン 発表資料)pg_standbyの今後について(第19回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_standbyの今後について(第19回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
オープンソースデータベース GridDB ~ なぜ いま、データベースを開発したのか?その理由とGridDBの概要紹介 ~
オープンソースデータベース GridDB ~ なぜ いま、データベースを開発したのか?その理由とGridDBの概要紹介 ~オープンソースデータベース GridDB ~ なぜ いま、データベースを開発したのか?その理由とGridDBの概要紹介 ~
オープンソースデータベース GridDB ~ なぜ いま、データベースを開発したのか?その理由とGridDBの概要紹介 ~griddb
 
機械学習 (AI/ML) 勉強会 #2 IoT編
機械学習 (AI/ML) 勉強会 #2 IoT編 機械学習 (AI/ML) 勉強会 #2 IoT編
機械学習 (AI/ML) 勉強会 #2 IoT編 Fujio Kojima
 
楽天における安全な秘匿情報管理への道のり
楽天における安全な秘匿情報管理への道のり楽天における安全な秘匿情報管理への道のり
楽天における安全な秘匿情報管理への道のりRakuten Group, Inc.
 
サポート エンジニアが語る、Microsoft Azure を支えるインフラの秘密
サポート エンジニアが語る、Microsoft Azure を支えるインフラの秘密サポート エンジニアが語る、Microsoft Azure を支えるインフラの秘密
サポート エンジニアが語る、Microsoft Azure を支えるインフラの秘密ShuheiUda
 
JOSUG 34th Meetup
JOSUG 34th Meetup JOSUG 34th Meetup
JOSUG 34th Meetup irix_jp
 

Similaire à YugabyteDBを使ってみよう - part2 -(NewSQL/分散SQLデータベースよろず勉強会 #2 発表資料) (20)

ACRiウェビナー_GIGABYTE様ご講演資料
ACRiウェビナー_GIGABYTE様ご講演資料ACRiウェビナー_GIGABYTE様ご講演資料
ACRiウェビナー_GIGABYTE様ご講演資料
 
Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)
Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)
Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
20150630_MySQL勉強会
20150630_MySQL勉強会20150630_MySQL勉強会
20150630_MySQL勉強会
 
20171206 d3 health_tech発表資料
20171206 d3 health_tech発表資料20171206 d3 health_tech発表資料
20171206 d3 health_tech発表資料
 
On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"
On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"
On-premise コンテナ基盤と Hardware LB を使った "type LoadBalancer"
 
オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)
オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)
オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)
 
MySQL clients
MySQL clientsMySQL clients
MySQL clients
 
【さくらのクラウド】ローカルルータ導入ガイド
【さくらのクラウド】ローカルルータ導入ガイド【さくらのクラウド】ローカルルータ導入ガイド
【さくらのクラウド】ローカルルータ導入ガイド
 
about Eucalyptus (20121026) NII
about Eucalyptus (20121026) NIIabout Eucalyptus (20121026) NII
about Eucalyptus (20121026) NII
 
[INSIGHT OUT 2011] A24 sql server wait events(mario broodbakker)
[INSIGHT OUT 2011] A24 sql server wait events(mario broodbakker)[INSIGHT OUT 2011] A24 sql server wait events(mario broodbakker)
[INSIGHT OUT 2011] A24 sql server wait events(mario broodbakker)
 
RでGPU使ってみた
RでGPU使ってみたRでGPU使ってみた
RでGPU使ってみた
 
Cloud impact on IT industry (in Japanese)
Cloud impact on IT industry (in Japanese)Cloud impact on IT industry (in Japanese)
Cloud impact on IT industry (in Japanese)
 
Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)
Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)
Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)
 
Microsoft azure
Microsoft azureMicrosoft azure
Microsoft azure
 
pg_standbyの今後について(第19回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_standbyの今後について(第19回PostgreSQLアンカンファレンス@オンライン 発表資料)pg_standbyの今後について(第19回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_standbyの今後について(第19回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
オープンソースデータベース GridDB ~ なぜ いま、データベースを開発したのか?その理由とGridDBの概要紹介 ~
オープンソースデータベース GridDB ~ なぜ いま、データベースを開発したのか?その理由とGridDBの概要紹介 ~オープンソースデータベース GridDB ~ なぜ いま、データベースを開発したのか?その理由とGridDBの概要紹介 ~
オープンソースデータベース GridDB ~ なぜ いま、データベースを開発したのか?その理由とGridDBの概要紹介 ~
 
機械学習 (AI/ML) 勉強会 #2 IoT編
機械学習 (AI/ML) 勉強会 #2 IoT編 機械学習 (AI/ML) 勉強会 #2 IoT編
機械学習 (AI/ML) 勉強会 #2 IoT編
 
楽天における安全な秘匿情報管理への道のり
楽天における安全な秘匿情報管理への道のり楽天における安全な秘匿情報管理への道のり
楽天における安全な秘匿情報管理への道のり
 
サポート エンジニアが語る、Microsoft Azure を支えるインフラの秘密
サポート エンジニアが語る、Microsoft Azure を支えるインフラの秘密サポート エンジニアが語る、Microsoft Azure を支えるインフラの秘密
サポート エンジニアが語る、Microsoft Azure を支えるインフラの秘密
 
JOSUG 34th Meetup
JOSUG 34th Meetup JOSUG 34th Meetup
JOSUG 34th Meetup
 

Plus de NTT DATA Technology & Innovation

NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)NTT DATA Technology & Innovation
 
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方NTT DATA Technology & Innovation
 
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...NTT DATA Technology & Innovation
 
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)NTT DATA Technology & Innovation
 
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)NTT DATA Technology & Innovation
 
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...NTT DATA Technology & Innovation
 
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)NTT DATA Technology & Innovation
 
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)NTT DATA Technology & Innovation
 
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)NTT DATA Technology & Innovation
 
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)NTT DATA Technology & Innovation
 
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...NTT DATA Technology & Innovation
 
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)NTT DATA Technology & Innovation
 
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)NTT DATA Technology & Innovation
 
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)NTT DATA Technology & Innovation
 
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...NTT DATA Technology & Innovation
 
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)NTT DATA Technology & Innovation
 
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)NTT DATA Technology & Innovation
 
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 

Plus de NTT DATA Technology & Innovation (20)

NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
 
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
 
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
 
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
 
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
 
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
 
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
 
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
 
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
 
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
 
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
 
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
 
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
 
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
 
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
 
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
 
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
 
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
 
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
 

Dernier

TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 

Dernier (8)

TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 

YugabyteDBを使ってみよう - part2 -(NewSQL/分散SQLデータベースよろず勉強会 #2 発表資料)

  • 1. © 2022 NTT DATA Corporation NewSQL/分散SQLデータベース よろず勉強会 #2 YugabyteDBを使ってみよう - part2 - 2022/12/22 NTTデータ 笠原 辰仁
  • 2. © 2022 NTT DATA Corporation 2 © 2022 NTT DATA Corporation 2 00 はじめに
  • 3. © 2022 NTT DATA Corporation 3 自己紹介 • NTTデータ 技術開発本部 笠原 辰仁 • 本日は、まだあまり馴染みのない分散データベースのOSSプロダクトであるYugabyteDBの概 観や利用方法を紹介 • 興味があるので手始めに簡単に触ってみたい、どんな特長のあるプロダクトかをざっくり知りた い、という方々の一助になれば・・ • 本日は前回の勉強会の続きとなります! • YugabyteDBの概要などを少し振り返ります • 本資料は公開しますので、細かい部分はそちらで確認いただけます
  • 4. © 2022 NTT DATA Corporation 4 本日のアジェンダ 1.YugabyteDBの概要とアーキテクチャ 2.YugabyteDBの導入と操作 3.YSQLによるDBへの処理 4.YugabyteDBの管理 【注意】 本日紹介するYugabyteDBでは、機能追加や変更が活発に行われているため、本日の講演内容と最新版のプロダクトとの 齟齬が出やすいことが想定されます。参考として公式のオンラインマニュアルのリンクも添えていますので、試行の際に躓く場合は マニュアルを参考してください。 本資料の説明には2022年11月上旬での最新版であるYugabyteDBのバージョン2.15(2.15.2)を利用しています。 なお、一部実機でのデモを行う予定ですが、そちらはバージョン2.17(2.17.0)を使います! 2.5. 前回の簡単な振り返り
  • 5. © 2022 NTT DATA Corporation 5 © 2022 NTT DATA Corporation 5 2.5 前回の簡単な振り返り
  • 6. © 2022 NTT DATA Corporation 6 YugabyteDBの概要 Yugabyte社が中心に開発しているOSSプロダクト。PostgreSQL/Cassandraとの互換性があり、 高い可用性とスケーラビリティを持つ分散データベース。 YugabyteDB 開発主体 Yugabyte 社 ( https://www.yugabyte.com/ ) 開発体制 Github上での開発。JIRAも併用。 ( https://github.com/yugabyte/yugabyte-db ) 開発言語 DB本体は主に C/C++ (PostgreSQLのコードを流用している部分はC) ユーティリティやCLIはPython 製品形態 YugabyteDB Core :YugabyteDB本体 YugabyteDB Anyware :YugabyteDBのセルフマネージド用のユーティリティ群 YugabyteDB Managed : YugabyteDBのマネージドサービス ライセンス Apache License 2.0とPolyform Free Trial License 1.0.0の2つのライセンス形態がある。 Polyformライセンスは主にYugabyteDB Anywareに関するコード部分となる。(ソースツリーの managed ディレクトリ以下の部分。バイナリには-managedのサフィックスを含む) ( https://docs.yugabyte.com/preview/legal/#licenses )
  • 7. © 2022 NTT DATA Corporation 7 【前回の振り返り】 YugabyteDBの概要 非常に高いPostgreSQLとの互換性を持つ。 • ほとんどのDDL/DML/DCLのシンタックスをサポート • PostgreSQLが持っているデータ型や組み込み関数もOK • Extensionも主要なものはカバー • NewSQLとしては珍しく外部キーやトリガ、ユーザ定義関数、ストアドプロシージャもサポート • TiDBやCockroachDBなども追随しているが一歩リード、な感じ • トランザクション分離レベルとしてもRead Committedもサポートし、PostgreSQLと同じよう な振る舞いが可能 • JDBCなどPostgreSQL用のドライバも広く利用可能
  • 8. © 2022 NTT DATA Corporation 8 【前回の振り返り】 YugabyteDBのアーキテクチャ ユーザデータの配置先・ユーザ・権限などのメタデータを管理する「YB-Master」と、 ユーザデータを保持するとともに、ユーザリクエストを処理する「YB-Tserver」の2つのコンポーネントから構成される。 複数のYB-MasterとYB-Tserverで構成されるクラスタをYugabyteDBクラスタ(Universe)と呼ぶ。 YugabyteDBクラスタ (Universe) YugabyteDBノード#1 YB-Master YB-Tserver YugabyteDBノード#2 YB-Master YB-Tserver YugabyteDBノード#3 YB-Master YB-Tserver YB-Masterはクラスタ全体の メタデータ管理を担当 YB-Tserverはクエリ処理や ユーザデータの保管を担当
  • 9. © 2022 NTT DATA Corporation 9 【前回の振り返り】 Tablet ユーザデータ(テーブルとインデックス)はTabletと呼ばれる単位で分割され、 各TserverのDocDBへ分散配置(シャーディング)される。Tabletは1台のLeaderと 複数(replication factorで変動)のFollowerから成る。 基本的にユーザからの読み書きリクエストはLeaderのTabletに対して実行される。 Masterと同じく、ユーザデータもRaftによりLeader選出と冗長化が行われている。 Tablet1 (Leader) Tablet1 Tablet1 Tablet2 (Leader) Tablet2 Tablet2 Tablet3 Tablet3 Tablet3 (Leader) YB-Tserver YB-Tserver YB-Tserver ユーザからは一つのテーブル に見えるが内部的に複数の Tabletに分割される。 分割はHash or Rangeが 選択可能。 分割数や配置は基本的に 自動で決定・実施。
  • 10. © 2022 NTT DATA Corporation 10 【前回の振り返り】 YugabyteDBのインストール YugabyteDBのインストール方法にはいくつかあるが、 ここでは公式に公開しているバイナリを入手する方法を紹介。 最新版の資材は https://docs.yugabyte.com/preview/quick-start/linux/#download-yugabytedb を参照。 以下はyugabyteユーザを追加し、python3を入手後、alternativesコマンドでpythonコマンドがpython3を向くように設定 した後、実際のインストールへ移るコマンド例。 (yugabyteユーザの作成は任意で、別のユーザ名でも可。python3もインストール済みならスキップ可) # useradd yugabyte # yum install -y python3 # alternatives --set python /usr/bin/python3 # yum install -y wget # su - yugabyte $ wget https://downloads.yugabyte.com/releases/2.15.2.1/yugabyte-2.15.2.1-b1-linux-x86_64.tar.gz $ tar zxvf yugabyte-2.15.2.1-b1-linux-x86_64.tar.gz $ cd yugabyte-2.15.1.0 $ ./bin/post_install.sh 以上で終わり。資材の格納先は任意なのでダウンロード/解凍後に好きなディレクトへ移しても問題ない。 なお yugabyte-xxx.tar.gzは約300MB、展開後は約1.1GB程度のサイズとなる。
  • 11. © 2022 NTT DATA Corporation 11 【前回の振り返り】 YugabyteDBの起動と停止 YugabyteDBの起動は基本的にMasterサーバ(YB-Master)の起動を行い、 それからTabletサーバ(YB-Tserver)を起動する手順となる。 起動と停止(初期化含む)には以下のコマンドを利用可能。 説明 備考/注意 yb-master YB-Masterの起動用コマンド。 yb-tserver YB-Tserverの起動用コマンド。 yugabyted yb-masterとyb-tserverをラップし、簡易的にクラ スタの設定や起動/停止を行うコマンド。動作確 認や開発、試験時の利用を想定。 商用利用は非推奨。複数ノードでのクラスタ 構成などをサポート。 yb-ctl yb-masterとyb-tserverをラップし、簡易的にクラ スタの設定や起動/停止を行うコマンド。動作確 認や開発、試験時の利用を想定。 商用利用は非推奨。シングルノードのみでの クラスタ構成などをサポート。yb-ctlコマンドで 生成したデータディレクトリはyb-ctlでのみ再 利用可。 クラスタ構成を組んでの起動などはやや煩雑なコマンドとなるため、利便用のコマンドとしてyugabytedとyb-ctlが用意されている。 従来はyb-ctlが主に用いられてきたようだが、最近はyugabytedの機能拡充が目立つ。 簡易的な動作確認であれば、構築されるクラスタの機能としては変わらないためどちらを選んでも良い。 本資料ではyugabytedコマンドを利用した実例で解説を進める。
  • 12. © 2022 NTT DATA Corporation 12 【前回の振り返り】 YugabyteDBの起動 yugabytedコマンドを利用する場合、以下のように「yugabyted start」とするだけで起動できる。 $ yugabyted start Starting yugabyted... ? System checks ? YugabyteDB Started ? WARNING: Cluster started in an insecure mode without authentication and encryption enabled. For non- production use only, not to be used without firewalls blocking the internet traffic. +----------------------------------------------------------------------------------------------------------+ | yugabyted | +----------------------------------------------------------------------------------------------------------+ | Status : Running. | | Replication Factor : 1 | | Web console : http://127.0.0.1:7000 | | JDBC : jdbc:postgresql://127.0.0.1:5433/yugabyte?user=yugabyte&password=yugabyte | | YSQL : bin/ysqlsh -U yugabyte -d yugabyte | | YCQL : bin/ycqlsh -u cassandra | | Data Dir : /home/yugabyte/var/data | | Log Dir : /home/yugabyte/var/logs | | Universe UUID : e8bffde5-b7e1-4837-83b8-15c0d6008d0b | +----------------------------------------------------------------------------------------------------------+ ? YugabyteDB started successfully! To load a sample dataset, try 'yugabyted demo'. ? Join us on Slack at https://www.yugabyte.com/slack ? Claim your free t-shirt at https://www.yugabyte.com/community-rewards/
  • 13. © 2022 NTT DATA Corporation 13 © 2022 NTT DATA Corporation 13 03 YSQLによるDBへの処理
  • 14. © 2022 NTT DATA Corporation 14 ysqlshによる接続と操作 YugabyteDBのYSQLでの接続はysqlshコマンド、もしくはPostgreSQL用のドライバや コマンド(psqlなど)を利用可能。 $ ysqlsh ysqlsh (11.2-YB-2.15.2.1-b0) Type "help" for help. yugabyte=# CREATE TABLE test (c1 int primary key, c2 text); CREATE TABLE yugabyte=# ¥d+ test Table "public.test" Column | Type | Collation | Nullable | Default | Storage | Stats target | Description --------+---------+-----------+----------+---------+----------+--------------+------------- c1 | integer | | not null | | plain | | c2 | text | | | | extended | | Indexes: "test_pkey" PRIMARY KEY, lsm (c1 HASH) yugabyte=# INSERT INTO test SELECT generate_series(1,10000), md5(clock_timestamp()::text); INSERT 0 10000 基本的にPostgreSQLと同じ シンタックスであればほとんど実行可能。 メタコマンド(¥~)もおおよそ カバーされている
  • 15. © 2022 NTT DATA Corporation 15 【参考】非サポートのシンタックス対応 YugabyteDBではPostgreSQLで実施可能なVACUUMやCHECKPOINTなどの処理、 およびDDLのオプションの一部などはサポートしていない。 ただしそれらの多くはERRORとせずにWARNING扱い(無視)とすることで処理のアボートを回避している。 下記はPostgreSQLのソースに同梱されているpgbenchというベンチマークツールによる初期化の様子を 抜粋したもの。 $ pgbench -i -s 1 -h 127.0.0.1 -p5433 dropping old tables... NOTICE: table "pgbench_accounts" does not exist, skipping NOTICE: table "pgbench_branches" does not exist, skipping NOTICE: table "pgbench_history" does not exist, skipping NOTICE: table "pgbench_tellers" does not exist, skipping creating tables... WARNING: storage parameter fillfactor is unsupported, ignoring WARNING: storage parameter fillfactor is unsupported, ignoring WARNING: storage parameter fillfactor is unsupported, ignoring (中略) HINT: Set 'ysql_beta_features' yb-tserver gflag to true to suppress the warning for all beta features. WARNING: VACUUM will be ignored creating primary keys... done in 17.98 s (drop tables 0.03 s, create tables 1.07 s, client-side generate 5.69 s, vacuum 2.79 s, primary keys 8.40 s).
  • 16. © 2022 NTT DATA Corporation 16 PostgreSQLとの差異/注意点 PostgreSQLとの高い互換性を持つYugabyteDBだが、当然ながら非互換なものもある。 一般的な使い方をするうえで注意した方が良いポイントをいくつかピックアップする。 • トランザクション分離レベルの設定 • DDLはトランザクショナルではないこと • CREATE INDEXはデフォルトでCONCURRENTLYであること なお、非互換に関しては以下のマニュアルにまとまっている。 https://docs.yugabyte.com/preview/explore/ysql-language-features/postgresql-compatibility/ https://docs.yugabyte.com/preview/faq/compatibility/#ycql-compatibility-with-apache-cassandra-ql
  • 17. © 2022 NTT DATA Corporation 17 DDLはトランザクショナルではないこと YugabyteDBではテーブル作成やインデックス作成、TRUNCATEといった処理は トランザクションとして実行できない(※) PostgreSQLではROLLBACKできるが、それができないので注意。 yugabyte=# BEGIN; BEGIN yugabyte=# CREATE TABLE t1 (c1 int primary key, c2 text); CREATE TABLE yugabyte=# ROLLBACK ; ROLLBACK yugabyte=# SELECT * FROM t1; c1 | c2 ----+---- (0 rows) yugabyte=# INSERT INTO t1 SELECT generate_series(1,10000), 'AAA'; INSERT 0 10000 yugabyte=# BEGIN; BEGIN yugabyte=# TRUNCATE t1; TRUNCATE TABLE yugabyte=# ROLLBACK ; ROLLBACK yugabyte=# SELECT count(*) FROM t1; count ------- 0 (1 row) CREATE TABLEの例 TRUNCATEの例 ※HEADにはDDLをAtomicに行うための改善パッチが段階的に導入されている。 https://github.com/yugabyte/yugabyte-db/commit/6e604ba9a00842d4e114ef70708c99b6d2fac2af
  • 18. © 2022 NTT DATA Corporation 18 トランザクション分離レベルの設定 YugabyteDBでは複数のトランザクション分離レベルをサポートしており、Beta機能では あるがRead Committedでの動作(PostgreSQLのデフォルトと同じ振る舞い)も可能。 ただし、それを利用するにはTserverの「yb_enable_read_committed_isolation」パラメータを有効にする必要がある。 -- PostgreSQLにもある以下のパラメータでも確認できるが、実際には作用しない yugabyte=# SHOW default_transaction_isolation ; default_transaction_isolation ------------------------------- read committed -- 実際に分離レベルとして作用するのは以下のパラメータ yugabyte=# SHOW yb_effective_transaction_isolation_level ; yb_effective_transaction_isolation_level ------------------------------------------ repeatable read -- 「default_transaction_isolation」を設定しても実際には変更されていない・・ yugabyte=# SET default_transaction_isolation TO "read committed"; SET yugabyte=# SHOW yb_effective_transaction_isolation_level ; yb_effective_transaction_isolation_level ------------------------------------------ repeatable read
  • 19. © 2022 NTT DATA Corporation 19 トランザクション分離レベルの設定 YugabyteDBでは複数のトランザクション分離レベルをサポートしており、Beta機能では あるがRead Committedでの動作(PostgreSQLのデフォルトと同じ振る舞い)も可能。 ただし、それを利用するにはTserverの「yb_enable_read_committed_isolation」パラメータを 有効にする必要がある。 -- 以下のようにパラメータを指定してTserverを起動する必要がある。 $ yugabyted start --tserver_flags="yb_enable_read_committed_isolation=true" -- 適切にTserverのパラメータを有効にすることでRead Committedになる yugabyte=# SHOW default_transaction_isolation ; default_transaction_isolation ------------------------------- read committed yugabyte=# SHOW yb_effective_transaction_isolation_level ; yb_effective_transaction_isolation_level ------------------------------------------ read committed
  • 20. © 2022 NTT DATA Corporation 20 CREATE INDEXはデフォルトでCONCURRENTLYであること YugabyteDBではインデックスの作成をデフォルトでCONCURRENTLYに行う。 (YugabyteDBではindex backfillと呼ぶ) これはインデックス作成対象のテーブルへの更新処理をブロックしない一方、作成時間が長くなる。 NONCONCURRENTLYを付与すると対象テーブルへの排他ロックを取る一方、作成時間は短縮する。 大量の空のテーブルとインデックスを作成する場合にはNONCONCURRENTLYを付与すると良い。 yugabyte=# CREATE TABLE cic (c1 int); CREATE TABLE yugabyte=# ¥timing Timing is on. yugabyte=# CREATE INDEX cic_idx1 On cic (c1); CREATE INDEX Time: 3067.489 ms (00:03.067) yugabyte=# CREATE INDEX NONCONCURRENTLY cic_idx2 On cic (c1); CREATE INDEX Time: 268.417 ms
  • 21. © 2022 NTT DATA Corporation 21 CREATE INDEXはデフォルトでCONCURRENTLYであること CONCURRENTLYでのインデックス作成が失敗するとインデックスの定義だけが 残存する。(これはPostgreSQLと同じ仕様) 作成に失敗したインデックスの再作成前に削除が必要なことに注意。 yugabyte=# INSERT INTO cic VALUES(1), (1); INSERT 0 2 yugabyte=# CREATE UNIQUE INDEX cic_u_idx1 On cic (c1); ERROR: Aborted: ERROR: duplicate key value violates unique constraint "cic_u_idx1" yugabyte=# TRUNCATE cic; TRUNCATE TABLE yugabyte=# CREATE UNIQUE INDEX cic_u_idx1 On cic (c1); ERROR: relation "cic_u_idx1" already exists yugabyte=# SELECT indexrelid::regclass, indisvalid FROM pg_index WHERE NOT indisvalid; indexrelid | indisvalid ------------+------------ cic_u_idx1 | f
  • 22. © 2022 NTT DATA Corporation 22 © 2022 NTT DATA Corporation 22 04 YugabyteDBの管理
  • 23. © 2022 NTT DATA Corporation 23 YugabyteDBの管理 DBの管理には様々あるが、本資料では以下の項目について紹介する。 • クラスタの状態/情報を確認する • yb-adminコマンドで確認する • ノード追加と削除 • MasterとTserverを追加/削除しスケールさせる • Web UIを使う • Web UIで各種情報を確認する • 監視(メトリクス監視) • PrometheusとGrafanaと連携しメトリクスを可視化する
  • 24. © 2022 NTT DATA Corporation 24 クラスタの状態/情報を確認する YugabyteDBではクラスタ管理用にyb-adminコマンドが用意されている。 yb-adminではおよそ以下のことができる。DBAの作業に該当することはほぼカバーする。 • クラスタ状態の確認 • MasterやTserverの数や状態、Tabletの配置状況など • クラスタ構成の変更 • Masterの追加やレプリケーション数の変更、Master/TserverのDecommissionなど • テーブルやTabletの構成変更 • テーブルのレプリケーション数変更やTabletの分割、再配置など • バックアップ/リストア • 手動でのスナップショット取得や自動バックアップのスケジュール設定など その他いろいろ 詳細はマニュアルを参照 -> https://docs.yugabyte.com/preview/admin/yb-admin
  • 25. © 2022 NTT DATA Corporation 25 クラスタの状態/情報を確認する YugabyteDB試用に際してyb-adminで多用するのは以下のコマンドとなる。 -master_addressesはMasterが複数いれば全MasterのIP:portの組を指定するのが 一般的だが、LEADERのMasterが含まれていれば良い。 -- Masterの状態を確認 $ yb-admin -master_addresses "127.0.0.1:7100" list_all_masters Master UUID RPC Host/Port State Role de21a4e44387425abbe4493631dbc49b 127.0.0.1:7100 ALIVE LEADER f3514d982165448da71199cc4242bf90 127.0.0.2:7100 ALIVE FOLLOWER bb46c71afd0242d3a8e60cd103750e9c 127.0.0.3:7100 ALIVE FOLLOWER -- Tserverの状態を確認 $ yb-admin -master_addresses "127.0.0.1:7100" list_all_tablet_servers Tablet Server UUID RPC Host/Port Heartbeat delay Status Reads/s Writes/s Uptime SST total size SST uncomp size SST #files Memory 3ba6f5f1545c4052ae69403d253c0328 127.0.0.3:9100 0.76s ALIVE 0.00 0.00 1132 80.83 KB 190.31 KB 1 64.65 MB 1e22539c24f548f6b63d232391eb9476 127.0.0.2:9100 0.76s ALIVE 0.00 0.00 1142 80.83 KB 190.31 KB 1 82.25 MB 4b2534e0864142b2a0706bd388e40896 127.0.0.1:9100 0.76s ALIVE 0.00 0.00 1162 80.83 KB 190.31 KB 1 77.32 MB -- Tabletの状態を確認 $ yb-admin -master_addresses "127.0.0.1:7100" list_tablets ysql.test1 t1 Tablet-UUID Range Leader-IP Leader-UUID 3e7bf5ea759147859dc7f5a2292521c0 partition_key_start: "" partition_key_end: "H¥200¥000¥003¥350!" 127.0.0.2:9100 1e22539c24f548f6b63d232391eb9476 9559e27874824a39b2f301223ff00fbf partition_key_start: "H¥200¥000¥003¥350!" partition_key_end: "H¥200¥000¥013¥270!" 127.0.0.3:9100 3ba6f5f1545c4052ae69403d253c0328 2ee47bf19fb04858b09a17ed71463a35 partition_key_start: "H¥200¥000¥013¥270!" partition_key_end: "" 127.0.0.1:9100 4b2534e0864142b2a0706bd388e40896 テーブルやTabletの状態確認、変更を行う場合、DB(Keyspace)を指定するが、 ysql.dbname or ycql.keyspacenameのように修飾が必要になるので注意
  • 26. © 2022 NTT DATA Corporation 26 ノード追加と削除 YugabyteDBではMasterとTserverを適宜クラスタへ追加することで冗長性や性能の向上を 実施できる。以下、テーブルを明示的に4つのTabletで作成し、ノード追加によるそれらTabletの Leaderが均等にリバランスしている様子をコマンド結果で示す。 -- 以下は1台のローカルマシン上で3つのMasterとTserverを起動しクラスタを構成 $ yugabyted start --base_dir=/home/yugabyte/ydata/node1 --listen=127.0.0.1 $ yugabyted start --base_dir=/home/yugabyte/ydata/node2 --listen=127.0.0.2 --join=127.0.0.1 $ yugabyted start --base_dir=/home/yugabyte/ydata/node3 --listen=127.0.0.3 --join=127.0.0.1 yugabyte=# CREATE TABLE t1 (c1 int primary key, c2 text) SPLIT INTO 4 TABLETS; CREATE TABLE yugabyte=# INSERT INTO t1 SELECT generate_series(1,10000), 'AAA'; INSERT 0 10000 yugabyte=# ¥q $ yb-admin list_tablets ysql.yugabyte t1 Tablet-UUID Range Leader-IP Leader-UUID dc7ad7e2988742a8861b4c224e66b05a partition_key_start: "" partition_key_end: "?¥377" 127.0.0.2:9100 68c0f30f937140a9a0d1449e9c5cc01d 3739b68f0035419eb2b8d2e57937cef3 partition_key_start: "?¥377" partition_key_end: "¥177¥376" 127.0.0.1:9100 44ea2d19ea0b469184a0640713796f3b 82b1ef5f90604bc6a7a204953247b52e partition_key_start: "¥177¥376" partition_key_end: "¥277¥375" 127.0.0.2:9100 68c0f30f937140a9a0d1449e9c5cc01d 69b32c5c0ae441e8ade3bd46f923732c partition_key_start: "¥277¥375" partition_key_end: "" 127.0.0.3:9100 a8f45172236f451190cc55a74c41ceba 4つのTabletが3つのノードに配置されている
  • 27. © 2022 NTT DATA Corporation 27 ノード追加と削除 -- もう1台のTserverを起動しクラスタに追加 $ yugabyted start --base_dir=/home/yugabyte/ydata/node4 --listen=127.0.0.4 --join=127.0.0.1 $ yb-admin list_tablets ysql.yugabyte t1 Tablet-UUID Range Leader-IP Leader-UUID dc7ad7e2988742a8861b4c224e66b05a partition_key_start: "" partition_key_end: "?¥377" 127.0.0.2:9100 68c0f30f937140a9a0d1449e9c5cc01d 3739b68f0035419eb2b8d2e57937cef3 partition_key_start: "?¥377" partition_key_end: "¥177¥376" 127.0.0.1:9100 44ea2d19ea0b469184a0640713796f3b 82b1ef5f90604bc6a7a204953247b52e partition_key_start: "¥177¥376" partition_key_end: "¥277¥375" 127.0.0.4:9100 767b16ee4ac84184a27e08fef1cd0d01 69b32c5c0ae441e8ade3bd46f923732c partition_key_start: "¥277¥375" partition_key_end: "" 127.0.0.3:9100 a8f45172236f451190cc55a74c41ceba 4つのTabletが新規に追加されたノード(127.0.0.4)を 含めた4ノードにリバランスされた
  • 28. © 2022 NTT DATA Corporation 28 ノード追加と削除 次に、ノード削除を行い削除対象のTserverノードにいたLeaderが別のノードに移る様子を見る。 -- yugabyted destoryでNode3を停止しデータディレクトリを破棄する $ yugabyted destroy --base_dir=/home/yugabyte/ydata/node3 Stopped yugabyted using config /home/yugabyte/ydata/node3/conf/yugabyted.conf. Deleted logs at /home/yugabyte/ydata/node3/logs. Deleted data at /home/yugabyte/ydata/node3/data. Deleted conf file at /home/yugabyte/ydata/node3/conf/yugabyted.conf. $ yb-admin list_tablets ysql.yugabyte t1 Tablet-UUID Range Leader-IP Leader-UUID dc7ad7e2988742a8861b4c224e66b05a partition_key_start: "" partition_key_end: "?¥377" 127.0.0.2:9100 68c0f30f937140a9a0d1449e9c5cc01d 3739b68f0035419eb2b8d2e57937cef3 partition_key_start: "?¥377" partition_key_end: "¥177¥376" 127.0.0.1:9100 44ea2d19ea0b469184a0640713796f3b 82b1ef5f90604bc6a7a204953247b52e partition_key_start: "¥177¥376" partition_key_end: "¥277¥375" 127.0.0.4:9100 767b16ee4ac84184a27e08fef1cd0d01 69b32c5c0ae441e8ade3bd46f923732c partition_key_start: "¥277¥375" partition_key_end: "" 127.0.0.1:9100 44ea2d19ea0b469184a0640713796f3b 削除されたノード(127.0.0.3)がLeaderだったTabletが 別のノードに変更された
  • 29. © 2022 NTT DATA Corporation 29 © 2022 NTT DATA Corporation 29 05 おわりに
  • 30. © 2022 NTT DATA Corporation 30 まとめ 本講演ではYugabyteDBの概要とアーキテクチャの簡単な説明、 および利用と管理の基本的な一連の流れを解説しました。 分散データベースは非常に取っつきにくい、扱いにくそう、というイメージがあるかもしれませんが 利用してみるだけならばとても簡単です。 YugabyteDBに限らず、昨今の類似プロダクト(TiDBやCockroachDBなど)は使い勝手を考 慮した便利なユーティリティやコマンドの充実にも力を入れています。 ぜひ、気になっている方々がいれば、実際に使ってみてください。
  • 31. © 2022 NTT DATA Corporation 31 © 2022 NTT DATA Corporation 31 06 付録など
  • 32. © 2022 NTT DATA Corporation 32 【参考】 Tabletの分割方法の指定 Tabletの分割は自動で行われるほか、テーブル作成時に予め分割しておくことも可能。 分割はHashかRangeとなるが、主キーやインデックスの定義方法で決まることになる。 Range SplitのテーブルにHash Splitのインデックス定義なども可能。 -- 主キーをASC/DESC付きでソートしたものを定義した場合はRange Splitとなる yugabyte=# CREATE TABLE r_t1 (c1 int, c2 text, primary key (c1 ASC)); CREATE TABLE -- 主キーのデフォルト(ASCなどを付与しない)定義ではHash Splitとなる yugabyte=# CREATE TABLE h_t1 (c1 int, c2 text, primary key (c1)); CREATE TABLE -- インデックスも同様のルール。なおRange Splitの場合は作成時にSplitの境界値を指定できる yugabyte=# CREATE INDEX r_t1_idx ON r_t1 (c2 ASC) SPLIT AT VALUES((1000),(2000)); CREATE INDEX -- Hash Splitの場合は作成時に分割数を指定できる yugabyte=# CREATE INDEX h_t1_idx ON h_t1 (c2) SPLIT INTO 4 TABLETS; CREATE INDEX
  • 33. © 2022 NTT DATA Corporation 33 【参考】 yugabytedコマンドのその他ポイント • yugabytedで3つ以上のMaster/Tserverを起動し—joinオプションでクラスタを構成すると、 自動的にreplication factorを3に設定し、冗長構成としてくれる • ただしMasterは4つ以上の構成にしない(Tserverは4台上の追加がされる) • Masterを4つ以上とするクラスタを構成する場合は手動でyb-masterを起動しクラスタに参加させる必要がある • Tserverを4つ以上に増やしていってもreplication factorは3から変更されない • replication factorを変更する場合は別途tserver_flagsオプションで変更する必要がある • master_flagsやtserver_flagsオプションの指定は非常に長くなりやすく、かつクォート/ダブルクォートの指定が(正しい文法で あっても)一部のケースでエラーで弾かれることがある。 • 以下のようにconfファイルを作成し、--tserver_flags=flagfile=/path/to/conf_fileという方法を取ると良い。 $ cat /tmp/tserver_flg.conf --yb_enable_read_committed_isolation=true --ysql_beta_features=true --ysql_pg_conf_csv=password_encryption=scram-sha-256 --ysql_hba_conf_csv=host all kasa 127.0.0.1/32 scram-sha-256,host all all 0.0.0.0/0 trust,host all all ::0/0 trust $ yugabyted start --tserver_flags=flagfile=/tmp/tserver_flg.conf
  • 34. © 2022 NTT DATA Corporation 34 【参考】 ycqlshによる接続と操作 YugabyteDBのYCQLでの接続はycqlshコマンド、もしくはCassandra用のドライバや コマンド(cqlshなど)を利用可能。 $ ycqlsh Connected to local cluster at 127.0.0.1:9042. [ycqlsh 5.0.1 | Cassandra 3.9-SNAPSHOT | CQL spec 3.4.2 | Native protocol v4] Use HELP for help. ycqlsh> DESCRIBE KEYSPACES; system_auth system_schema system ycqlsh> CREATE KEYSPACE test; ycqlsh> USE test; ycqlsh:test> CREATE TABLE t1 (c1 int primary key, c2 text); ycqlsh:test> INSERT INTO t1(c1, c2) VALUES (1, 'AAA'); ycqlsh:test> SELECT * FROM t1; c1 | c2 ----+----- 1 | AAA (1 rows) 基本的にCassandraと同じ シンタックスであればほとんど実行可能。
  • 35. © 2022 NTT DATA Corporation その他、記載されている会社名、商品名、又はサービス名は、 各社の登録商標又は商標です。