Upgrade to Pro — share decks privately, control downloads, hide ads and more …

NewSQL その成り立ちとモチベーション

tzkoba
June 25, 2020
6.1k

NewSQL その成り立ちとモチベーション

tzkoba

June 25, 2020
Tweet

Transcript

  1. 2 最近やっていること • PGConf.Asia 2019 “Building PostgreSQL as a Service

    with Kubernetes” • NewSQL関連のブログ投稿 “2020年現在のNewSQLについて” “NewSQLコンポーネント詳解” + =∞
  2. 9 2-1.Spannerの登場 • Spanner: Google’s Globally Distributed Database(2012) を発表。 •

    SQL準拠、ACIDトランザクションをサポート。 • 地理分散が可能な、分散型SQLデータベース。 • 従来RDBが弱いとされた、Writeもスケールアウトが可能。 • 国内でもスマホゲームや決済アプリのプラットフォームとして利用される。
  3. 10 2-2.NewSQL(Spannerクローン)の成り立ち • NewSQL自体はNoSQLへの対比として生まれ、2011年頃に既に登場。 • VoltDBやNuoDBなど、NoSQLが解決できなかった課題(マルチマスタ・ スケールアウト型のRDB)の解決を目指していた。 • そして、Google Cloud

    Spanner以降、類似実装のOSSクローンが誕生する。 • その特徴は、 • 強い整合性を持ち、 • ACIDトランザクションをサポートする、 • (地球規模に展開可能な)分散SQLデータベース
  4. 11 2-3.Universal Databaseを目指す • SQLとCassandra互換(CQL)インターフェースを持つ、分散SQLデータベース。 tablet3 tablet2 tablet1 tablet4 tablet2

    tablet1 tablet4 tablet3 tablet1 tablet4 tablet3 tablet2 Distrbuted Txn Mgr Distrbuted Txn Mgr Distrbuted Txn Mgr Distrbuted Txn Mgr syscatalog syscatalog syscatalog • PostgreSQL互換のSQL エンジンを持つ。 • DocDBという分散スト レージを下層に配置。 • データはShardingかつ 冗長化される。 • Kubernetesでのオーケ ストレーションに対応。
  5. 13 Shard2 SQLクエリエンジン 分散Txn Mgr 3.NewSQLのコンポーネント概観 Shard1 SQLクエリエンジン 分散Txn Mgr

    • 拙blogでは分散SQLデータベースのコンポーネントを以下4つに分類。 • データの”整合性を保ち“、”冗長化”し、 ”分散“し、”永続化”する方法を解説 している。 Shard3 SQLクエリエンジン 分散Txn Mgr ① ストレージエンジン 如何にデータをローカルに永続化するか ② Sharding 如何にデータを分散して配置するか ③ Raft 如何にデータを冗長化し、可用性を実現するか ④ 分散トランザクション 如何にデータの整合性を保ちつつ、更新するか
  6. 14 3-①.ストレージエンジン • NewSQLではデータを各ノードに分散配置するが、ノードローカルなデータ 永続化を担当するのがストレージエンジン。 • RDBMSで使われていたB+Treeとは異なり、NewSQLではLSM-Treeを採用。 【特徴】 • TiDB(TiKV)、CockroachDBでは

    を利用している。 • YugaByteDBは独自開発のDocDBを用いる。 • なお、CockroachDBも独自ストレージエンジン(Pebble)の開発を進めてお り、このレイヤでの競争が激化しているように見える。 Read Efficiency Wrire Efficiency Space Efficiency B+Tree Best LSM Tree(Leveled) Best LSM Tree(Tiered) Best
  7. 16 3-③.Raft Tablet2 Tablet1 Tablet2 Table1 Tablet2 Tablet1 Tablet3 Tablet3

    Tablet3 • etcdなどは単一Raft グループで構成される 分散KVS。Leaderは 当然一つ。 • YugaButeDBなどはマ ルチRaftグループで、 グループ毎にLeader が存在。つまりマルチ マスタの構成となる (hotspot問題はあり)。 • NewSQLのデータ・レプリケーションにはRaft が使われている。 • Multi Raft Groupによりマルチマスタ構成を実現している。
  8. 18 まとめ • 複雑なマルチデータストア(Multiverse)は、DevOps双方に複雑性を招く。 マネージドなDBサービスでもK8sを使っても、完全には解消できない。 • そうした課題に対して、NewSQLは以下の特徴を持つ。 • 強い整合性を持ち、 •

    ACIDトランザクションをサポートし、 • (地球規模の展開が可能な)分散SQLデータベース • 特にSpannerの成功は、これまでのRDBMSの拡張性・一貫性に対する見方を 大きく変える可能性がある。 • NewSQLの構成要素を見ると、データの ”整合性を保ち“、”冗長化”し、 ”分散“し、”永続化”する という4要素に分解でき、各製品はそれらをどのように組み合わせるかで 最適化を図っている。