ストレージサービスの要件
Datomicのストレージサービスは、通常、次の3つの要件を満たす必要があります。
- キー値ストアのセマンティクスを実装する :インデックス付きキーの値を使用した効率的な読み取り/書き込みアクセス
- 一貫した読み取りのサポート 。例えばあなた自身の書き込みを読んでください。理想的には、競合なし/ロックフリーの読み取りです。
- サポート条件付きプット 。例えば楽観的ロック+スナップショットアイソレーション。
Datomicは、ストレージサービスを使用して、並べ替えられた圧縮されたdatomのブロックを格納します。これは、従来のデータベースシステムがファイルシステムを使用する方法と同様であり、上記の要件は、基盤となるストレージサービスとDatomicの間のAPIです。したがって、選択 ストレージサービスでは、これら3つの要件をどの程度サポートしているかに依存します 。
書き込みスケーラビリティ
Datomicに書き込むコンポーネントは、Transactorだけなので、通常、Datomicは基盤となるストレージサービスに大きな書き込み圧力をかけません。また、Datomicは、バックグラウンドインデックス作成ジョブを使用して、ノベルティが十分に蓄積されると(デフォルトでは最大32MBですが、構成可能)、ノベルティをストレージに統合します。これにより、一定の書き込み負荷がさらに軽減されます。 Datomicがすぐに書き込むのはトランザクションログだけです。
読み取りスケーラビリティ
Datomicは、キャッシュの複数のレイヤー、つまりmemcachedとpeers cacheを使用するため、理想的な状況、つまりワーキングセットがメモリに収まる場合、システムは読み取り圧力をあまりかけません。
システムロード
システムが巨大なを必要としない場合 書き込みのスケーラビリティとアプリケーションデータがメモリに収まる傾向がある場合、特定のストレージサービスの選択は無関係 もちろん、Datomicとは関係のない運用機能(バックアップ、管理ツールなど)を除きます。
一方、システムに巨大なが必要な場合 スケーラビリティを書き込むか、多数のピアがあり、それぞれがメモリに収まらないほど多くのデータを処理している場合(多くのデータセグメントをストレージから取得する必要があります)、水平方向に拡張できるストレージシステムが必要になります。 DynamoDB。コメントの1つで述べたように、任意の書き込みスケーラビリティが必要な場合、Datomicはとにかく適切なシステムではありません。