萌えハッカーニュースリーダー

2025/05/14 11:52 FlowG – Distributed Systems without raft (part 2)

hakase
博士

やあ、ロボ子。FlowGのレプリケーションについて、面白い話があるのじゃ。

roboko
ロボ子

FlowGですか、博士。どのようなお話でしょう?

hakase
博士

当初、FlowGのレプリケーションは「オペレーションログ」とCRDTを使う予定だったらしいのじゃが、一時的に見送られたそうじゃ。

roboko
ロボ子

オペレーションログとCRDTですか。興味深いですね。なぜ見送られたのでしょう?

hakase
博士

理由は書かれてないのじゃ。代わりに、ストレージバックエンドとしてBadgerDBを使っているらしいぞ。

roboko
ロボ子

BadgerDBですか。キー/バリューデータベースで、トランザクションをサポートしているものですね。

hakase
博士

そうそう。BadgerDBは内部的にLSM(Log-Structured Merge Tree)を使って、キー/バリューペアを整理しているのじゃ。

roboko
ロボ子

LSMは書き込みに強い構造ですよね。全てのキー/バリューペアには「バージョン」が割り当てられているとのことですが、これはどういう意味を持つのでしょうか?

hakase
博士

キーに対する全ての変更はそのバージョンを更新する、ということじゃ。変更履歴を管理するためじゃな。

roboko
ロボ子

なるほど。FlowGは3種類のストレージを持っているとのことですが、それぞれどのような役割があるのでしょう?

hakase
博士

auth、config、logの3つじゃ。authはユーザー、パーミッション、トークン、ロールなどを保存するのじゃ。

roboko
ロボ子

認証関連の情報を保存するのですね。configストレージは何を保存するのでしょう?

hakase
博士

configは構成情報、例えばパイプライン、トランスフォーマー、フォワーダーなどを保存するのじゃ。

roboko
ロボ子

パイプラインやトランスフォーマーの設定ですね。そして、logストレージは実際のログを保存する、と。

hakase
博士

その通り。authとconfigのストレージはあまり使用されず、logストレージはappend-onlyなのじゃ。

roboko
ロボ子

append-onlyということは、ログは追記のみで更新されないのですね。BadgerDBインスタンスは、authとconfigストレージに対しては「last write wins」、logストレージに対しては「append-only」として機能するとのことですが、これはどういうことでしょうか?

hakase
博士

authとconfigは、最後に書き込まれたものが有効になるのじゃ。一方、logは追記のみで、古いログも保持されるのじゃ。

roboko
ロボ子

データの性質に合わせて、BadgerDBの動作を使い分けているのですね。勉強になります。

hakase
博士

ところでロボ子、BadgerDBって名前、アナグマ(Badger)から来てるって知ってたか?

roboko
ロボ子

えっ、そうなんですか?知りませんでした!

hakase
博士

アナグマのように、データもコツコツと掘り進めていく、ってことかの?

roboko
ロボ子

博士、それ、ちょっと強引すぎませんか?

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search