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

ACID transaction with Scalar DB on Cosmos DB

yito88
October 11, 2020

ACID transaction with Scalar DB on Cosmos DB

Scalar DB provides an ACID transaction on Cosmos DB. A "transaction" of Cosmos DB cannot operate items over multiple partitions or multiple containers. A transaction with Scalar DB can operate them on Cosmos DB.

https://github.com/scalar-labs/scalardb

yito88

October 11, 2020
Tweet

More Decks by yito88

Other Decks in Technology

Transcript

  1. © 2020 Scalar, inc. ⾃⼰紹介 • 分散データベースの開発 – 性能評価と改善 –

    障害時のデータ⼀貫性検証などを通して信頼性向上 – Cassandra 調査や検証、改善提案 • 以前は SSD の R&D やファームウェア開発 2
  2. © 2020 Scalar, inc. Cosmos DB におけるトランザクション • The database

    engine in Azure Cosmos DB supports full ACID (Atomicity, Consistency, Isolation, Durability) compliant transactions with snapshot isolation. All the database operations within the scope of a container's logical partition are transactionally executed within the database engine that is hosted by the replica of the partition. 4 https://docs.microsoft.com/en-us/azure/cosmos-db/database-transactions-optimistic-concurrency
  3. © 2020 Scalar, inc. • 同じパーティション内の item に対する操作のみトランザクション可 – 異なるパーティション間のトランザクション不可

    – 異なるコンテナ間のトランザクション不可 Cosmos DB におけるトランザクションの制限 5 ... Partition 0 Partition 1 Partition N Container A ... Container B トランザクション可 トランザクション不可 トランザクション不可 : Item
  4. © 2020 Scalar, inc. • 銀⾏⼝座 – パーティション・キー “name” (個⼈のアカウント)

    • 決済⽤、貯蓄⽤の⼆種類の残⾼間ではトランザクション可能 • ⼝座間ではトランザクション不可能 – 残⾼間で移動する処理に、⼝座間で送⾦処理すると不整合が発⽣ Partition “SUZUKI” 例: 送⾦トランザクション 6 { “name”: “ito”, “checking”: 0, “saving”: 10000 } { “name”: “suzuki”, “checking”: 3000, “saving”: 5000 } Partition “ITO” トランザクション可 トランザクション不可
  5. © 2020 Scalar, inc. Cosmos DB におけるトランザクション • トランザクションで操作したい item

    を同コンテナ同パーティションに⼊れなければ ならない – パーティションが不均等になる Þ Scalar DB でコンテナ、パーティション制限のないトランザクションを実現 7
  6. © 2020 Scalar, inc. Scalar DB on Cosmos DB •

    制限のない ACID トランザクションを使⽤可能 – 分離レベルとして、Snapshot と Serializable を選択可能 • Cosmos DB の利点を引き続き利⽤可能 – スケーラビリティ – RU によりスケールアウト – 安定したレイテンシ – ⾼可⽤性 – SLA 99.99% 9
  7. © 2020 Scalar, inc. Scalar DB on Cosmos DB の制限

    • グローバル分散に制限あり – Consistency Level として STRONG が必要なため – 将来的な対応を検討中 10
  8. © 2020 Scalar, inc. 性能評価 • ワークロード – 2 ⼝座間での送⾦トランザクション

    – 予め 10000 アカウントを挿⼊ • 環境 – Cosmos DB – RU – ⼝座データベース: 4000, 8000, 16000, 32000 (auto-scaled) – コーディネータデータベース: ⼝座データベースの 25% – メタデータ⽤データベース: 400 (最⼩) – クライアント: F2s_v2 (2 vCPUs, 4 GiB RAM) – Cosmos DB ネックになるまでトランザクションをリクエストするスレッド数を増 加させてから測定 11
  9. © 2020 Scalar, inc. まとめ • Cosmos DB のトランザクションにはコンテナ、パーティションに制限あり •

    Scalar DB により Cosmos DB でも制限のないトランザクションを実現 • Scalar DB トランザクション性能は Cosmos DB 上でスケールアウトする 13