4

「特定の時間に、特定の条件に一致するすべてのレコードの合計はどれくらいだったか」のような質問が重要なシステムを設計しています。

多値同時実行制御 (MVCC) は、監査証跡を永久に保持するため、ここでの方法のようです。

ただし、他のデータベース機能からまとめて処理するのではなく、データ ストレージがこれを処理できるとよいでしょう。現在、Oracle と CouchDB の他のデータベース エンジンは MVCC を使用していますが、舞台裏でのみ使用されています。これを使用して、競合を解決したり、実行時間の長いクエリで最近更新されたデータに遭遇したときに何をすべきかを決定したりします。しかし、「2009 年 1 月 20 日 17:00 のシステム状態で、このクエリは何を返すか」と明示的に言うことができるシステムは知りません。では、そのようなシステムはありますか? 理想的には、オープンソース?

4

2 に答える 2

1

私の知る限り、MVCC は以前のバージョンの行の期間を保証しません。そのターゲットは、トランザクションの同時実行制御です。行「x」のすべてのトランザクションがコミットされた場合、MVCC がその行の以前のバージョンを保持する必要はありません。

あなたはTemporal Databasesについて考えています。Snodgrass の古い本「Developing Time-Oriented Database Applications in SQL」は、特に PDF として入手できるようになった今、ざっと読む価値があります。テンポラル データベースを最初からやり直さなければならない場合は、Temporal Data & the Relational Modelや 6NF を扱うその他の本も読みます。('6NF' <> 'DKNF')

于 2011-05-23T11:39:19.630 に答える
1

Oracle でのフラッシュバック クエリを見てみましょう。

于 2011-05-22T23:55:52.140 に答える