1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

CBcloudAdvent Calendar 2024

Day 10

2相コミットについて調べたので書く

Posted at

概要

  • Firestoreの裏側の仕組みについて調べてた
  • 2相コミットというワードについて調べたので理解のために記す
  • なんか間違えてたらマサカリください

メモ

分散データベースとは

  • 言わずとも
  • 複数サーバにデータ、またはデータベースを分散して管理する仕組み
  • BigQueryとかSpannerとかSnowflakeもそういう類のものだと思ってる(厳密には違いそうだけど)

分散データベースで困ること

サービスや仕組みによって、色々あると思いますが、ここではトランザクションだけにフォーカスします。

スケーラビリティを達成するため、複数サーバにデータベースがあるので、データの整合性の担保に課題がある。

分散データベース(中身は3台、A,B,Cというデータベース)へ書き込みを行いたい。となった場合、ユーザーからはクエリを投げ、A,B,Cそれぞれにコミットすれば良いがそう単純な話ではない。

Aが失敗した場合どうするのかーとか、A,B,C全部にちゃんと書き込めたのかーとか色々考える必要がある。

2相コミット(2フェーズコミット)

ここで「2相コミット」という方法をメモする。

簡単に書くと「コミットを2回に分けて実行する」という方法。

  1. 1段階目にマネージャーみたいな機能(Coordinatorと呼ぶらしい)が、書き込む分散サーバすべてに問い合わせを行い、コミットできるか確認を行う
  2. 全てコミット可能と確認ができれば、2段階目としてデータの更新を行う

という2段階を取るので2相コミットと呼ばれる。なるほど

絵があるとわかりやすいので下記ありがたい記事引用

この方式を利用しているサービス

ぱっと調べた見た感じつかってそうなサービス

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?