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

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

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for tzkoba tzkoba
June 25, 2020
6.4k

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

Avatar for tzkoba

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要素に分解でき、各製品はそれらをどのように組み合わせるかで 最適化を図っている。