2016-04-19 7 views
1

私はDocumentDbからすべての "新しい"レコードを取得するプロセスを実装しようとしています。ここでは、 "プロセスが最後に実行されてからすべてのドキュメントが追加または変更されます"Azure DocumentDb "最高水準点" /タイムスタンプ

SQL Serverには、データベース内のすべての行と列に一意に増加する単調性が保証されているrowversionがあります。

DocumentDbにはAzure Searchのインデックス作成に最高水準点として使用されている_tsがありますが、それはどのように機能しますか。読み取りと同時に複数の文書が挿入された場合、すべての文書が同じ_ts値を持つ可能性があります。次回の読み込みで、_tsとの比較が厳密に大きい場合、いくつかの文書が見落とされます。それ以上の場合は、いくつかの文書が2回目に取り出されます。

これは安全に使用できますか?

答えて

1

_tsプロパティはドキュメント固有のものであり、ドキュメントのコレクションではありません。特定のドキュメントが更新された時刻を表します(1970年1月1日以降の秒数)。

_tsプロパティを使用しても、コレクション内のすべてのドキュメントで最高水準点が得られるわけではありません。各ドキュメントには独自の_tsプロパティ(別のドキュメントの_tsプロパティと同じ値を持つ可能性があります)があります。

もう少し詳しくは、this answerを参照してください。

+0

個々のドキュメントで最高水準点として使用することは安全ですか? – nlawalker

+0

いいえ、_ts最高水準点と同じ値のすべての文書を再フェッチする必要があります。同じドキュメントの場合、_etag値が変更されていないかどうかを確認することができます。 –

関連する問題