Frage

Ich las über zeitliche Datenbanken und es scheint, dass sie in der Zeit Aspekten aufgebaut haben. Ich frage mich, warum wir ein solches Modell brauchen?

Wie anders ist es von einem normalen RDBMS? Können wir nicht haben eine normale Datenbank heißt RDBMS und sagen einen Auslöser haben, die einen Zeitstempel mit jeder Transaktion zuordnet, was geschieht? sein kann, es wäre eine Performance Hit. Aber ich bin immer noch skeptisch auf zeitliche Datenbanken einen starken Fall auf dem Markt haben.

Ist eine der vorliegenden Datenbanken unterstützen eine solche Funktion?

War es hilfreich?

Lösung

Eine zeitliche Datenbank speichert effizient eine Zeitreihe von Daten, die typischerweise von einem festen Zeitrahmen (beispielsweise Sekunden oder sogar Millisekunden) aufweisen, und dann nur die Änderungen in den gemessenen Daten zu speichern. Ein Zeitstempel in einem RDBMS ist ein diskret gespeicherte Wert für jede Messung, was sehr ineffizient ist. Eine zeitliche Datenbank wird häufig in Echtzeit-Monitoring-Anwendungen wie SCADA verwendet. Ein etabliertes System ist die PI-Datenbank von OSIsoft ( http://www.osisoft.com/ ).

Andere Tipps

Betrachten Sie Ihren Termin / Journal Tagebuch - es geht von Jan 01-31 Dezember Jetzt können wir das Tagebuch für Termine / Journaleinträge an jedem beliebigen Tag abfragen. Diese Reihenfolge ist die gültige Zeit genannt. Allerdings Termine / Einträge werden nicht in der Regel eingesetzt, um.

Angenommen, ich möchte wissen, was Termine / Einträge in meinem Tagebuch am 4. April waren. Das heißt, alle Datensätze, die am 4. April in meinem Tagebuch existierten. Dies ist die Transaktionszeit .

Da Termine / Einträge erstellt und gelöscht werden können usw. Ein typischer Datensatz einen Anfang und Ende gültige Zeit hat, das die Zeit des Eintrags und einen Anfang und Ende Transaktionszeit, die die Periode, während der anzeigt deckt der Eintrag in der erschienen Tagebuch.

Diese Anordnung ist notwendig, wenn das Tagebuch erfahren kann historische Revision . Angenommen am 5. April Mir ist klar, dass die Ernennung ich am 14. Februar hatte tatsächlich ereignete sich am 12. Februar also ich einen Fehler in meinem Tagebuch entdecken - ich den Fehler korrigieren kann, so dass die gültige Zeit Bild korrigiert wird, aber jetzt meine Frage, was war im Tagebuch am 4. April wäre falsch, es sei denn, sind die Transaktionszeiten für Termine / Einträge ebenfalls gespeichert. In diesem Fall, wenn ich mein Tagebuch ab 4. April Abfrage wird es zeigen einen Termin bestanden am 14. Februar, aber wenn ich ab 6. April abfragen würde es einen Termin zeigen am 12. Februar.

Diese Zeitreise-Funktion einer zeitlichen Datenbank ermöglicht es, Informationen darüber zu erfassen, wie Fehler in einer Datenbank korrigiert werden. Dies ist notwendig, für eine echte Prüfung Bild von Daten, die erfasst, wenn Revisionen vorgenommen wurden und ermöglicht Abfragen in Bezug auf, wie Daten über überarbeitet worden Zeit.

Die meisten Business-Informationen sollten in diesem bitemporalen Schema, um eine echte Audit-Aufzeichnung zur Verfügung zu stellen gespeichert werden und Business Intelligence zu maximieren - daher den Bedarf an Unterstützung in einer relationalen Datenbank. Beachten Sie, dass jedes Datenelement eine einnimmt (möglicherweise unbegrenzt) Platz in dem zweidimensionalen Zeitmodell, weshalb die Menschen oft einen GIST-Index verwenden, um bitemporalen Indizierung zu implementieren. Das Problem hierbei ist, dass ein GIST Index wirklich für geographische Daten und die Anforderungen an den zeitlichen Daten sind etwas anders ausgelegt ist.

PostgreSQL 9.0 Ausschluss Einschränkungen sollten neue Wege der zeitlichen Daten zu organisieren liefern z.B. Transaktion und gültige Zeiträume sollten nicht für die gleiche Tupel überlappen.

Wie ich es verstehe (und über vereinfacht enorm), eine zeitliche Datenbankaufzeichnungen Fakten über, wenn die Daten gültig war, sowie die die Daten selbst, und ermöglicht es Ihnen, auf die zeitlichen Aspekte abzufragen. Sie am Ende mit ‚gültiger Zeit‘ zu tun und ‚Transaktionszeit‘ Tabellen oder ‚bitemporalen Tabellen‘ beid ‚gültige Zeit‘ und ‚Transaktionszeit‘ Aspekte beinhalten. Sie berücksichtigen sollten, eine dieser beiden Bücher zu lesen:

Temporal Datenbanken werden häufig in der Finanzdienstleistungsindustrie. Ein Grund dafür ist, dass Sie selten (wenn überhaupt) sind erlaubt alle Daten zu löschen, so ValidFrom -. ValidTo Typfelder auf Datensätzen verwendet werden, um eine Anzeige zu liefern, wenn ein Datensatz korrekt war

Neben dem Lesen des Wikipedia-Artikel ? Eine Datenbank, die ein „Audit-Protokoll“ oder ähnliches Transaktionsprotokoll hat einige Eigenschaften des Seins „zeitliche“ hält. Wenn Sie Antworten auf Fragen zu müssen , wer was zu wem und wann , dann haben Sie einen guten Kandidaten für eine zeitliche Datenbank bekommen.

Sie können eine einfache zeitliche Datenbank vorstellen, die nur Ihre GPS-Position meldet sich alle paar Sekunden. Die Möglichkeiten zum Komprimieren dieser Daten sind groß, eine normale Datenbank müßten Sie für jede Zeile einen Zeitstempel zu speichern. Wenn Sie viel Durchsatz erforderlich, um die Daten zu wissen, zeitliche und dass Aktualisierungen und Löschungen zu einer Reihe wird nie erlaubt, das Programm benötigt werden erben in einem typischen RDBMS viel von der Komplexität fallen zu lassen.

Trotzdem sind temporale Daten in der Regel nur in einem normalen RDBMS gespeichert. PostgreSQL, zum Beispiel hat einige zeitliche Erweiterungen , was macht dies ein wenig leichter.

Zwei Gründe in den Sinn kommen:

  1. Einige sind für Einsatz optimiert und nur lesen und kann dramatische perf Verbesserungen bieten
  2. Einige haben eine besseres Verständnis von Zeit als herkömmliche SQL - so dass für Operationen, die von Sekunde, Minute, Stunde Gruppierung, usw.

Nur ein Update, Temporal Datenbank kommt zu SQL Server 2016.

alle Zweifel zu löschen, warum man eine zeitliche Datenbank benötigen, anstatt mit benutzerdefinierten Methoden konfigurieren, und wie effizient und nahtlos SQL Server für Sie konfiguriert, überprüfen Sie die eingehende Video und Demo auf Channel9.msdn hier: https://channel9.msdn.com/Shows/Data-Exposed / Temporal-in-SQL-Server-2016

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

Zur Zeit der CTP2 (Beta 2) Version von SQL Server 2016 Sie damit spielen können.

Überprüfen Sie Dieses Video wie Temporal Tabellen in SQL Server 2016 verwenden.

Neben „welche neuen Dinge kann ich damit tun“, könnte es sinnvoll sein, zu prüfen, „was für alte Dinge macht es vereinigen?“. Die zeitliche Datenbank stellt eine besondere Verallgemeinerung der „normalen“ SQL-Datenbank. Als solches kann es Ihnen eine einheitliche Lösung für die Probleme geben, die bisher in keinem Zusammenhang erschien. Zum Beispiel:

  • Web Concurrency Wenn Sie Ihre Datenbank, die eine Web-Oberfläche hat, die Standard mehrere Benutzer ausführen können erstellen / aktualisieren / löschen (CRUD) Änderungen, haben Sie die Concurrent Web ändert Problem . Grundsätzlich müssen Sie prüfen, ob ein eingehendes Datenänderung keine Datensätze beeinflusst, die sich geändert haben, da die Benutzer das letzte Mal die Datensätze sah. Aber wenn Sie eine zeitliche Datenbank haben, ist es sehr wahrscheinlich verbindet schon so etwas wie eine „Revision ID“ mit jedem Datensatz (aufgrund der Schwierigkeit, Zeitstempel einzigartig und monoton steigend). Wenn ja, dann wird, dass die natürliche „bereits eingebauten“ Mechanismus für während Datenbank-Updates die Verfälschungs von Daten anderer Benutzer zu verhindern.
  • Legal / Steuersätze Das Rechtssystem (einschließlich Steuern) Orte eher mehr Wert auf historische Daten als die meisten Programmierer tun. So werden Sie oft Beratung für Rechnungen zu Schemas finden und solche, die Sie warnt vor Löschen von Datensätzen oder Normalisierungs in einem natürlichen hüten Weg - was zu einer Unfähigkeit, wie grundlegende rechtliche Fragen zu beantworten, führen kann „ihre aktuelle Adresse vergessen, welche Adresse haben Sie versenden Rechnung im Jahr 2001?“ Mit einem zeitlichen Rahmen Basis, die alle die Machenschaften dieser Probleme (sie sind in der Regel auf halbem Wege vor, um eine zeitliche Datenbank zu haben) gehen weg. Sie verwenden einfach das natürlichste Schema, und löschen, wenn es sinnvoll sein, zu wissen, dass Sie jederzeit zurückgehen und historische Fragen genau beantworten.

Auf der anderen Seite ist das zeitliche Modell selbst ist auf halbem Weg Revisionskontrolle zu vervollständigen, die weiteren Anwendungen ergeben könnte. Angenommen, Sie Ihre eigene zeitliche Anlage oben auf SQL rollen und erlauben Verzweigung, wie in Versionskontrollsystemen. Auch könnte begrenzte Verzweigung machen es einfach „Sandbox“ bieten - die Fähigkeit, mit zu spielen und die Datenbank ändern mit Leib und Seele, ohne an andere Benutzer keine sichtbaren Veränderungen verursacht. Das macht es leicht, äußerst realistische Schulung der Anwender auf einer komplexen Datenbank zu liefern.

Einfache Verzweigung mit einer einfachen Zusammenführung Anlage könnte auch einige gemeinsamen Workflow-Probleme vereinfachen. Zum Beispiel könnte eine gemeinnützige Freiwilligen haben oder Niedriglohndateneingabe zu tun. jeden Arbeiter ihren eigenen Zweig geben könnte macht es einfach, ein Supervisor zu ermöglichen, ihre Arbeit zu überprüfen oder sie (zum Beispiel de-duplification) zu verbessern, bevor es in den Hauptzweig verschmelzen, wo es sichtbar zu „normalen“ Anwender werden würde. Branchen könnten auch Berechtigungen vereinfachen. Wenn ein Benutzer nur die Erlaubnis erteilt wird ihre einzigartige Zweig zu verwenden / sehen, müssen Sie sich keine Sorgen um jede mögliche unerwünschte Änderung zu verhindern; Sie werden nur die Änderungen zusammenführen, den Sinn sowieso machen.

Mein Verständnis der zeitlichen Datenbanken, die auf der Speicherung bestimmte Arten von zeitlichen Informationen sind darauf ausgerichtet. Sie können die mit einem Standard-RDBMS simulieren, sondern durch eine Datenbank, die es unterstützt Sie verfügen über integrierte in Idiomen für viele Konzepte und die Abfragesprache könnten für diese Art von Abfragen optimiert werden.

Für mich ist das ein wenig wie mit einer GIS-spezifischer Datenbank arbeitet eher als ein RDBMS. Während Sie Koordinaten in einem run-of-the-mill RDBMS schieben könnten, die entsprechenden Darstellungen aufweisen, können schneller (z.B. über Gitterdateien) und mit SQL-Primitiven für Dinge wie Topologie nützlich ist.

Es gibt wissenschaftliche Datenbanken und einige kommerzielle. Timecenter hat einige Links.

Ein weiteres Beispiel, wo eine zeitliche Datenbank ist nützlich, in denen Datenänderungen im Laufe der Zeit. Ich verbrachte ein paar Jahren für einen Strom-Händler arbeiten, wo wir die Zählerstände für 30 Minuten Zeitblöcke gespeichert. Diese Zählerstände an jedem Punkt revidiert werden könnte, aber wir noch in der Lage sein brauchte auf die Geschichte der Veränderungen für die Messwerte zurück.

Wir hatten daher das letzte Lesung (unser ‚gegenwärtiges Verständnis‘ des Verbrauchs für die 30 Minuten), konnten aber in unserem historischen Verständnis des Verbrauchs zurückblicken. Wenn Sie haben Daten bekommen, die gut in einer solchen Art und Weise zeitliche Datenbanken eingestellt werden kann, arbeiten.

(Having said that, wir es in SQL handgeschnitzt, aber es war vor einem fairen Weile. Wäre nicht diese Entscheidung treffen in diesen Tagen.)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top