2

簡単な質問。

1) トランザクションを実行すると、そのトランザクションの結果が返されたときに、すべてのピアが更新されますか? それとも、他のピアは最終的にトランザクションの変更を反映しますか?

2) ピアはどのように状態を更新しますか? 私が理解していることから、ピアはストレージに直接アクセスでき、独自のキャッシュです。だから、彼らはあなたが求めているものを持っていないとき、私は彼らがそれを倉庫から取り出すだけだと思います. ピアは、自分の情報が古くなっていることをどのように知ることができますか?

3) ストレージ/バックエンドの選択はどの程度重要ですか? MySQL などの db はサーバー/クライアント関係に最適化されているため、Datomic に最適化されたストレージ ソリューションを作成することはできないでしょうか? それとも、それだけの価値はありませんか?

4

1 に答える 1

5

1) 更新されていることが保証されている唯一のピアは、トランザクションを要求しているピアです。他の人は最終的に変化を見るでしょう。アプリケーションでピア調整が必要な場合は、ブロッキング(sync connection t)関数を使用してそれを実現する必要があります。詳細については、datomic-docsを参照してください。

2) トランザクターは、接続されているすべてのピアに新しい変更をブロードキャストします。ピアの状態は、トランザクターからのノベルティと、ストレージから直接取得するデータ セグメントで構成されます。繰り返しますが、sync関数はトランザクションと通信して、への呼び出しの前に書き込まれたすべてのトランザクションsyncが使用可能になるまでピアがブロックされるようにします。他のほとんどの関数は、トランザクターまたはブロックと通信しません。

3) システムが大規模な書き込みスケーラビリティを必要とせず、アプリケーション データがメモリに収まる傾向がある場合、特定のストレージ サービスの選択は、もちろん、運用機能 (バックアップ、管理ツールなど) を除いて、一般的に無関係です。 ) Datomic とは何の関係もありません。ストレージ バックエンドは Datomic にどのように影響するかを参照してください。詳細については。

于 2013-11-09T17:14:09.947 に答える