「Database Engineering Meetup #9: NewSQL」に参加してきました

NewSQLユースケース7選

ミックさん

  • NewSQLの本が去年出た
    • これまではTiDB中心の本が多かった
    • この本は複数の製品に対応
    • ユースケースも書いてあるのが特徴
  • NewSQL
    • RDB - NoSQL - 分散クラウドネイティブSQL
    • RDBとNoSQLでトレードオフだったところの両取りができる
      • 水平スケーラビリティ
      • 分散データベース
  • 分散データベース
    • クエリレイヤー/ストレージレイヤーそれぞれで分散
    • プライマリーがない
  • 主要な製品
    • Cloud Spanner
      • PostgreSQL
    • yugabyteDB
      • PostgreSQL
    • TiDB
      • MySQL
    • CockroachDB
      • PostgreSQL
      • 日本法人はない
    • AuroraDSQL
      • 第三リージョンをどこの国に置くかが問題
  • 事例
    • 2020年代に入って採用数が増えてきた
    • 日本も海外も
    • DoorDash
      • 海外のリテールEC
        • UberEatsみたいな
      • コロナ禍で利用者急造
      • CockroachDBに移行して更新負荷をスケールさせる
    • Flipkart
      • TiDBでwrite/read両方の処理を自働でスケール
      • k8s上で動作することで障害児はノードが自働復旧するので可用性高い
    • みんなの銀行
      • Cloud Spannerを勘定系で使っている
      • 東京/大阪でactive-activeにできる
    • Form3
      • イギリスのFinTech系企業
      • A2A決済
      • AWSが利用不可になったらどうするかという規制当局からの指摘
      • 特定クラウドプラットフォームに依存しない体制
      • CockroachDBをAWS/Azure/GoogleCloudのk8s上で動かすようにした
      • 日本ではマルチクラウドはそこまでだが海外だと進んでいる
        • 欧州のように法規制で進む可能性
        • 地政学上の懸念
    • レバテック
      • 増えすぎたデータベースの統合
      • 80人の開発組織で50データベース
      • TiDBの1つのクラスタに統合
      • マイクロサービスはトランザクションが難しい
        • 失敗した時に取り消すパターン
        • これをDB側で担保できるよさ
    • DMM.com
      • 異種混合データベースの統合
        • RDBやNoSQLも
      • TiDBにまとめた
    • Netflix
      • CockroachDBを採用
      • 地理分散で低遅延を

NewSQL: ストレージ分離と分散合意を用いたスケーラブルアーキテクチャ

ぶーとさん(株式会社hacomono)

  • コンピュートとストレージの分離
    • コンピュート
      • ステートレスな計算層
      • クエリパース
      • オプティマイザ
    • ストレージ
      • ステートフルな保存層
      • データの永続化
      • フィルタリング処理
    • なぜ分離したいか
      • ノード追加時の負荷軽減と高速化
        • 既存データのコピー作業がいらなくなる
        • なので負荷が高まる前に事前にスケールしないといけなかった
      • きめ細やかなスケーリング
        • コンピュート層がステートレスなので必要な時に追加削除できる
      • 異なるライフサイクルの分離
        • コンピュート層は負荷に応じてスケールしたい
        • ストレージ層は一定の量が必要
  • 分散合意アルゴリズム(Raft)
    • クラスタで合意した値がくつがえらないことを保証する仕組み
    • NewSQLの中で普及してるのはPaxosとRaft
    • Jepsen Test
    • Raftがやること
      • クラスタのフェイルオーバー
        • クラッシュしても自働でリカバリー
      • データの同期
        • ログレプリケーションとよんでる
        • StateMachineへの命令のこと
      • 一貫性の維持と分断耐性
        • リーダーを必ず経由するモデルで一貫性
        • 分断時にも過半数のノードに届けば動く
    • 役割
      • リーダー/フォロワー/候補者
      • リーダーがクラッシュしたらフォロワーが候補者となり投票の結果リーダーになる
    • スケールの壁
      • 単一Raftの限界
      • データの再文化とリーダーの分散配置
      • Multi-Raft

パネルディスカッション

ミックさん
ぶーとさん(株式会社hacomono)
山田 浩之さん(Scalar)
こばさん(Scalar)

  • NewSQL本当にいるのか
    • 結局はRDBとNoSQLの折衷案
    • 分析系は苦手
    • HTAP
      • トランザクションも分析も
  • DBのどこが好きか
    • SQLのチューニングをずっとやっていた
      • オプティマイザを長くさわってた
    • kvsの層
      • 分散合意
      • 従来不可能だったことを可能にしていくレイヤー
    • スケーラビリティ/アベイラビリティ

サイボウズの自社k8s環境におけるTiDB運用の現在地

渡邉 洋平さん(サイボウズ)

  • TiDB Operator v1では安定運用できてる
    • v2では変更が多い
  • TiDB + TiFlash

Kubernetesでセルフホストが簡単なNewSQLを求めて

nnaka2992さん(スリーシェイク)
https://speakerdeck.com/nnaka2992/seeking-a-newsql-database-thats-simple-to-self-host-on-kubernetes

  • いまどきはHelm ChartsとOperatorが推奨
  • CockroachDBはドキュメント不備が
  • どれも使えるので誤差の範囲

Keycloak を使った SSO で CockroachDB にログインする

kota2and3kanさん

  • Keycloakでユーザ認証してCockroachDBにアクセスできるようにするデモ