質問

一時的なデータベースについて読んでいましたが、それらは時間の側面に組み込まれているようです。なぜこのようなモデルが必要なのでしょうか?

通常のRDBMSとの違いは?通常のデータベース、つまりRDBMSを使用して、発生する各トランザクションにタイムスタンプを関連付けるトリガーを使用することはできませんか?パフォーマンスが低下する可能性があります。しかし、一時的なデータベースが市場で強力なケースを持っていることにまだ懐疑的です。

現在のデータベースのいずれかがそのような機能をサポートしていますか

役に立ちましたか?

解決

テンポラルデータベースは、通常、一定のタイムスケール(秒またはミリ秒など)を持ち、測定データの変更のみを保存することにより、時系列データを効率的に保存します。 RDBMSのタイムスタンプは、測定ごとに個別に保存される値であり、非常に非効率的です。テンポラルデータベースは、SCADAなどのリアルタイム監視アプリケーションでよく使用されます。確立されたシステムは、OSISoftのPIデータベースです( http://www.osisoft.com/ )。

他のヒント

予定/日記を検討してください-1月1日から12月31日までです。これで、任意の日の予定/仕訳のダイアリーを照会できます。この順序は、有効時間と呼ばれます。ただし、予定/エントリは通常、順番に挿入されません。

4月4日の日記にどのような予定/エントリがあったかを知りたいとします。つまり、4月4日に私の日記にあったすべての記録。これは取引時間です。

アポイントメント/エントリを作成および削除できるなど。通常のレコードには、エントリの期間をカバーする開始および終了有効時間と、エントリが表示された期間を示す開始および終了トランザクション時間があります。日記。

この配置は、日記が歴史的改訂を受ける可能性がある場合に必要です。 4月5日、2月14日の予約が実際に2月12日に発生したことに気づいたとします。つまり、日記のエラーを発見しました。有効な時間画像が修正されるようにエラーを修正できます。 4月4日の日記は間違っています。ただし、予約/エントリのトランザクション時間も保存されます。その場合、4月4日にダイアリーを照会すると、2月14日にアポイントメントが存在したことが表示されますが、4月6日にクエリすると2月12日にアポイントメントが表示されます。

テンポラルデータベースのこのタイムトラベル機能により、データベースでのエラーの修正方法に関する情報を記録できます。これは、改訂がいつ行われたかを記録するデータの真の監査画像に必要であり、データがどのように改訂されたかに関するクエリを許可します 時間。

真の監査記録を提供し、ビジネスインテリジェンスを最大化するために、ほとんどのビジネス情報をこのバイテンポラルスキームに保存する必要があります。したがって、リレーショナルデータベースでサポートする必要があります。各データ項目は、2次元時間モデルの(おそらく無制限の)正方形を占有しているため、人々はGISTインデックスを使用してバイテンポラルインデックスを実装することが多いことに注意してください。ここでの問題は、GISTインデックスが実際に地理データ用に設計されており、一時データの要件が多少異なることです。

PostgreSQL 9.0の除外制約は、一時的なデータを整理する新しい方法を提供する必要があります。トランザクションと有効期間の期間は、同じタプルで重複しないようにしてください。

私が理解しているように(そして非常に単純化しすぎているので)、一時データベースは、データ自体と同様にデータがいつ有効であったかに関する事実を記録し、一時的な側面について照会することができます。最終的に、「有効時間」と「トランザクション時間」の表、または「有効時間」と「トランザクション時間」の両方の側面を含む「ビットテンポラル表」を処理することになります。次の2冊の本のいずれかを読むことを検討してください。

テンポラルデータベースは、金融サービス業界でよく使用されます。 1つの理由は、データを削除することはめったに(もしあるとしても)許可されないため、レコードのValidFrom-ValidToタイプフィールドを使用して、レコードがいつ正しいかを示すことです。

ウィキペディアの記事を読むこととは別に? 「監査ログ」を保持するデータベース。または同様のトランザクションログには、「一時的」であるというプロパティがあります。 誰がいつ誰に何をしたのかについての質問への回答が必要な場合は、一時データベースの適切な候補があります。

GPSの位置を数秒ごとに記録する単純な一時的なデータベースを想像できます。このデータを圧縮する機会は素晴らしいです。通常のデータベースでは、すべての行のタイムスタンプを保存する必要があります。大量のスループットが必要な場合、データが一時的なものであり、行の更新や削除が必要ないことがわかっているため、プログラムは一般的なRDBMSで継承される複雑さの多くを落とすことができます。

これにもかかわらず、通常、一時データは通常のRDBMSに保存されます。たとえば、PostgreSQLには一時的な拡張があり、これが少し簡単になります。

2つの理由が思い浮かびます:

  1. 一部は挿入および読み取り専用に最適化されており、パフォーマンスが劇的に向上します
  2. 従来のSQLよりも時間をよく理解している人もいます-秒、分、時間などで操作をグループ化できます

最新情報、一時データベースがSQL Server 2016に登場します。

カスタムメソッドで設定するのではなく、なぜテンポラルデータベースが必要なのか、そして& SQL Serverがシームレスに構成します。Channel9.msdnの詳細なビデオとデモを確認してください: https://channel9.msdn.com/Shows/Data-Exposed/Temporal-in-SQL-Server-2016

MSDNリンク: https:// msdn。 microsoft.com/en-us/library/dn935015(v=sql.130).aspx

現在、SQL Server 2016のCTP2(ベータ2)リリースで使用できます。

SQL Server 2016でテンポラルテーブルを使用する方法については、このビデオを確認してください。

「これで何ができるのか」に加えて、「何が古いものを統合するのか?」テンポラルデータベースは、「通常」の特定の一般化を表します。 SQLデータベース。そのため、以前は無関係と思われていた問題に対する統一されたソリューションが提供される場合があります。例:

  • Web同時実行性データベースに、複数のユーザーが標準の作成/更新/削除(CRUD)の変更を実行できるWeb UIがある場合、同時ウェブ変更の問題。基本的に、着信データの変更が、そのユーザーが最後にそれらのレコードを見た後に変更されたレコードに影響を与えないことを確認する必要があります。ただし、テンポラルデータベースがある場合は、「リビジョンID」のようなものがすでに関連付けられている可能性があります。タイムスタンプを一意かつ単調に昇順にするのが難しいため)もしそうなら、それは自然な「すでに組み込まれた」ものになります。データベースの更新中に他のユーザーのデータが破壊されるのを防ぐメカニズム。
  • 法律/税の記録法制度(税を含む)は、ほとんどのプログラマーよりも履歴データを重視しています。したがって、請求書のスキーマに関するアドバイスがよくあります。これにより、レコードの削除や自然な正規化に注意するように警告されます。方法-「現在の住所を忘れて、2001年にこの請求書をどの住所に郵送しましたか?」などの基本的な法的質問に答えられない可能性があります。一時的なフレームワークベースを使用すると、これらの問題(通常は一時的なデータベースを作成するための中間段階です)に対するすべての陰謀がなくなります。最も自然なスキーマを使用し、理にかなっている場合は削除します。いつでも戻って、過去の質問に正確に答えることができることを知っています。

一方、時間モデル自体は、改訂管理を完了するための途中であり、さらなるアプリケーションを刺激する可能性があります。たとえば、リビジョン管理システムのように、SQLの上に独自の一時的なファシリティをロールし、分岐を許可するとします。分岐が制限されていても、「サンドボックス化」を簡単に提供できます。 -他のユーザーに目に見える変更を引き起こすことなく、放棄してデータベースを操作および変更する機能。これにより、複雑なデータベースで非常に現実的なユーザートレーニングを簡単に提供できます。

単純なマージ機能を使用した単純な分岐は、一般的なワークフローの問題を単純化する可能性もあります。たとえば、非営利団体には、ボランティアや低賃金労働者がデータ入力を行っている場合があります。各ワーカーに独自のブランチを与えることで、スーパーバイザーが作業を確認したり、「通常の」ユーザーに表示されるメインブランチにマージする前に作業を改善したりすることができます。ユーザー。ブランチは、許可を簡素化することもできます。ユーザーに一意のブランチを使用/表示する権限のみが付与されている場合、考えられるすべての不要な変更を防止することについて心配する必要はありません。とにかく意味のある変更のみをマージします。

時間データベースの私の理解は、特定の種類の時間情報を保存することを目的としています。標準のRDBMSでそれをシミュレートすることもできますが、それをサポートするデータベースを使用すると、多くの概念の組み込みイディオムがあり、クエリ言語はこれらの種類のクエリに最適化される可能性があります。

これは、RDBMSではなくGIS固有のデータベースを操作することに似ています。すぐに使えるRDBMSで座標を突き出すことができますが、適切な表現(グリッドファイルなど)を使用する方が高速な場合があり、トポロジなどのSQLプリミティブを使用すると便利です。

学術データベースといくつかの商用データベースがあります。タイムセンターにはいくつかのリンクがあります。

一時データベースが役立つ別の例は、データが時間とともに変化する場合です。私は数年間、電力小売店で働き、メーターの測定値を30分間ブロックしました。これらのメーターの測定値はいつでも修正できますが、測定値の変更履歴を振り返る必要がありました。

したがって、最新の測定値(30分間の消費に関する「現在の理解」)がありましたが、消費に関する過去の理解を振り返ることができました。テンポラルデータベースが適切に機能するように調整できるデータがある場合。

(それを言って、SQLで手彫りしましたが、それはかなり前のことでした。最近はその決定をしません。)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top