Slide 1

Slide 1 text

© SAKURA internet Inc. 分散DBを運⽤してみて TiDB の仕組みと実例 2022-07-27 @ #さくらの⼣べ Tech Night #5 Online さくらインターネット株式会社 技術推進統括担当執⾏役員 兼 CIO/CISO 江草 陽太

Slide 2

Slide 2 text

2 ⾃⼰紹介 @chibiegg 江草 陽太 【所属】 • さくらインターネット株式会社 執⾏役員 技術推進統括担当 兼 CISO • IzumoBASE株式会社 取締役 【経歴】 • ロボカップジュニア (中学・⾼校) / NHK⼤学ロボコン • ⼤阪⼤学⼯学部電⼦情報⼯学科情報通信⼯学専攻 • 個⼈事業主 (⼤学⽣時代に開業) • ⼤阪⼤学⼤学院⼯学研究科中退 【趣味】 旅⾏/温泉/写真/電⼦⼯作/プログラミング/かわいい服

Slide 3

Slide 3 text

© SAKURA internet Inc. NewSQL TiDBの仕組み TiDBの運用 エンハンスドデータベース (TiDB) の紹介

Slide 4

Slide 4 text

© SAKURA internet Inc. 分散データベース / NewSQL

Slide 5

Slide 5 text

© SAKURA internet Inc. SQLをインターフェースとし 強い整合性を持ち トランザクションをサポートする 分散データベース (RDBMS) である NewSQLとは

Slide 6

Slide 6 text

© SAKURA internet Inc. 独自のインターフェースを持ち 簡単で 高いパフォーマンスを提供する 分散データベース (not RDBMS) である トランザクションに対応せず、ゆるい整合性 (結果整合性) を持つ NoSQL (Not Only SQL)

Slide 7

Slide 7 text

© SAKURA internet Inc. 今まで通りSQLを使いつつ NoSQLのようなスケーラビリティや利便性を享受したい || NewSQL それでもSQL (RDBMS) が使いたい

Slide 8

Slide 8 text

© SAKURA internet Inc. • Spanner (Google、プロプライエタリ、独自) • CockroachDB (CockroachLabs、OSS 、PostgreSQL互換) • TiDB (PingCAP、OSS、MySQL互換) • YugaByteDB (Yugabyte、OSS、PostgreSQL互換) NewSQLの例

Slide 9

Slide 9 text

© SAKURA internet Inc. TiDBの仕組み

Slide 10

Slide 10 text

© SAKURA internet Inc. どのように分散RDBMSが動作するか 簡単にご紹介します

Slide 11

Slide 11 text

© SAKURA internet Inc. TiDBのコンポーネント https://docs.pingcap.com/tidb/stable/tidb-architecture から改変 3要素が基本 • PD (Placement Driver) • クラスタの頭脳 • データ配置の決定 • トランザクションの管理 etc. • TiDB (SQL Layer) • SQLを解釈し処理を⾏う • TiKV (Storage Layer) • レコードやインデックスを Key-Valueとして保存する

Slide 12

Slide 12 text

© SAKURA internet Inc. テーブルとKey-Valueの関係 https://docs.pingcap.com/tidb/stable/tidb-computing • データベースやテーブルの定義はKey-ValueとしてTiKVに格納されます • テーブル内の各行は一つのKey-ValueとしてTiKVに格納されます • t{TableID}_r{RowID} を利⽤する • t10_r1, t10_r2, t10_r3 のようなキー名が利⽤されます • Unique Indexは一つのKey-ValueとしてTiKVに格納されます • t{TableID}_i{IndexID}_indexedColumnsValue を利⽤する • t10_i1_indexedColumnsValue のようなキーに 値として RowID が格納されます • 他のIndexは Key として TiKVに格納されます • t{TableID}_i{IndexID}_{Value}_{RowID} を利⽤する • t10_i1_10_1, t10_i1_20_2, t10_i1_30_3 など

Slide 13

Slide 13 text

© SAKURA internet Inc. ⼀般的なRDBMSとの違い (⼀部) 旧来のRDBMS TiDB レイテンシ ⼩さい ⼤きい 処理できるクエリ数 スペックによって固定 ノードを増やすことで増減可能 容量 ローカルディスクによって固定 ノードを増やすことで増減可能 台数 2台で冗⻑構成が動く 最低でも8台 https://docs.pingcap.com/tidb/stable/hardware-and-software-requirements

Slide 14

Slide 14 text

© SAKURA internet Inc. TiFlashによる分析 https://docs.pingcap.com/tidb/stable/tiflash-overview 分析に適した TiFlash に保存を行い OLAP (オンライン分析処理) にも活用 TiKVからTiFlashへ非同期にレプリケーションされ 参照時には自動的に適切なストレージが選択されます

Slide 15

Slide 15 text

© SAKURA internet Inc. • メンテナンス作業が容易 • ノード障害時のサービス影響が小さい • 容量やパフォーマンスの増減がスケールアウトによって可能 TiDBのメリット≒分散システムのメリット

Slide 16

Slide 16 text

© SAKURA internet Inc. TiDBの運⽤

Slide 17

Slide 17 text

© SAKURA internet Inc. • 公式のメンテナンスツール “tiup” がある • 構築・検査・アップデートなどが可能 構築とメンテナンスは tiup コマンドで

Slide 18

Slide 18 text

© SAKURA internet Inc. YAMLファイルに設定を書いて tiup を実行 PrometheusやTiDB Dashboardも入る 新規構築 pd_servers: - host: 172.16.5.134 name: pd-134 - host: 172.16.5.139 name: pd-139 - host: 172.16.5.140 name: pd-140 tidb_servers: - host: 172.16.5.134 - host: 172.16.5.139 - host: 172.16.5.140 tikv_servers: - host: 172.16.5.134 - host: 172.16.5.139 - host: 172.16.5.140 grafana_servers: - host: 172.16.5.134 monitoring_servers: - host: 172.16.5.134 tiup cluster deploy -p prod-cluster v6.1.0 topology.yaml

Slide 19

Slide 19 text

© SAKURA internet Inc. • tiup cluster update • tiup cluster scale-in / scale-out アップデートはローリングアップデートをしてくれる Raftのリーダー移動も自動 アップデートもスケールも tiup

Slide 20

Slide 20 text

© SAKURA internet Inc. さくらインターネットでのTiDBの活⽤

Slide 21

Slide 21 text

© SAKURA internet Inc. • sakura.io (LTEによるIoTプラットフォーム) • 「データストア(V2)」でTiKVを採⽤ (2018年ごろから) • 端末 (モジュール) からのデータを蓄積・検索に利⽤ • さくらのクラウド (Labプロダクト) • 開発中の⼀部機能において管理システムにTiDBを採⽤ • これまでならMariaDBやPostgreSQLを利⽤していた場⾯に導⼊ さくらインターネットでの導⼊

Slide 22

Slide 22 text

© SAKURA internet Inc. さくらのクラウド エンハンスドデータベース (TiDB)

Slide 23

Slide 23 text

© SAKURA internet Inc. 1. 「さくらのクラウド」にログイン 2. 作成したいデータベース名とパスワードを入力 3. 即時に利用可能 ⾃分でクラスタを作らなくても 利便性を感じて欲しい

Slide 24

Slide 24 text

© SAKURA internet Inc. データベースの作成

Slide 25

Slide 25 text

© SAKURA internet Inc. 情報の確認

Slide 26

Slide 26 text

© SAKURA internet Inc. 接続 SSL対応! --ssl-mode=VERIFY_IDENTITY も使えます

Slide 27

Slide 27 text

© SAKURA internet Inc. エンハンスドDB のメリット • すぐに使える • 5秒で作れる • 容量を気にせず利用できる • 使っている容量に応じて課⾦される • 最初から⼤きなディスクを⽤意しなくて良い • スペックを意識せずに利用できる • 同時接続数を後から増減できる • アップグレードやノード障害を意識しなくて良い • コネクションが切れてもすぐに再接続ができる

Slide 28

Slide 28 text

© SAKURA internet Inc. 私も使ってます

Slide 29

Slide 29 text

© SAKURA internet Inc. • Golang + go-sql-driver/mysql + gorm で実装 • Slack内のユーザー間で立て替えの管理を支援するBot Slack BotのDBとして

Slide 30

Slide 30 text

© SAKURA internet Inc. • Python + Django で実装 • ウェブフレームワークのORMをそのまま利用できる ひなたん写真館 「フィルムデジタル化サービス」 https://service.hinatan.net/ ウェブアプリケーションのDBとして

Slide 31

Slide 31 text

© SAKURA internet Inc. インターネットサービスのDBとして ご活⽤ください