54 votes

Pourquoi avons-nous besoin d'une base de données temporelle?

Je lisais à propos de la temporelle des bases de données et il semble qu'ils ont construit dans les aspects liés au temps. Je me demande pourquoi aurions-nous besoin d'un tel modèle?

Comment est-il différent normal d'un SGBDR? Ne pouvons-nous pas avoir une base de données normale c'est à dire SGBDR et dire avoir un déclencheur qui associe un timbre de temps avec chaque transaction qui se passe? Peut-être il y aurait un gain de performance. Mais je suis encore sceptique sur le temporel des bases de données ayant un dossier solide sur le marché.

Ne l'une des présentes bases de données à l'appui d'une telle fonctionnalité?

cheers

71voto

Jon Guiton Points 311

Considérez votre rendez-vous/journal journal - cela va du 1er janvier au 31 Dec. Maintenant, nous pouvons requête de l'agenda pour les rendez-vous/les entrées de journal tous les jours. Cette commande est appelée la période de validité. Toutefois, les nominations et les entrées ne sont pas habituellement inséré dans l'ordre.

Supposons que je voudrais savoir ce que les nominations et les entrées ont été dans mon journal, le 4 avril. C'est, de tous les enregistrements qui existait dans mon journal, le 4 avril. C'est le temps de transaction.

Étant donné que les nominations et les entrées peuvent être créés et supprimés etc. Une entrée typique a un début et de fin de la période de validité qui couvre la période de l'entrée et un début et à la fin de la transaction qui indique la période au cours de laquelle l'entrée est apparu dans le journal.

Cet arrangement est nécessaire lorsque le journal peut subir une révision historique. Supposons que le 5 avril, je me rends compte que le rendez-vous que j'avais 14 Février réellement eu lieu le 12 février dernier, c'est à dire, je découvre une erreur dans mon journal que je peux corriger l'erreur, de sorte que la période de validité de l'image est corrigée, mais maintenant, ma requête de ce qui était dans le journal, le 4 avril serait une erreur, à MOINS que, le temps de transaction pour les rendez-vous/les inscriptions sont également stockés. Dans ce cas, si j'ai une requête mon journal du 4 avril, il va montrer un rendez-vous existe le 14 février, mais si j'ai une requête à compter du 6 avril, il montrerait un rendez-vous le 12 février.

Ce voyage dans le temps caractéristique temporelle de base de données permet d'enregistrer des informations sur la façon dont les erreurs sont corrigées dans une base de données. Cela est nécessaire pour une véritable vérification de l'image de données qui enregistre lors des révisions ont été faites, et permet des requêtes relatives à la façon dont les données ont été révisées au cours temps.

La plupart des professionnels de l'information doivent être stockés dans ce bitemporale schéma afin de permettre un véritable enregistrement d'audit et de maximiser la business intelligence - d'où le besoin de soutien dans une base de données relationnelle. Notez que chaque élément de données occupe une (peut-être illimitée) dans le carré des deux dimensions de temps qui est pourquoi les gens utilisent souvent un index GIST à mettre en œuvre bitemporale d'indexation. Le problème ici est que l'ESSENTIEL de l'indice est vraiment conçu pour les données géographiques et les exigences pour les données temporelles sont un peu différentes.

PostgreSQL 9.0 contraintes d'exclusion devrait fournir de nouvelles méthodes d'organisation temporelle des données de transaction et valide les Périodes de temps ne doit pas se superposer pour le même tuple.

19voto

codekaizen Points 14819

Un temps de base de données stocke efficacement une série chronologique de données, généralement en ayant une certaine échelle de temps fixe (tels que quelques secondes, voire quelques millisecondes) et ensuite en ne stockant que les changements dans les données mesurées. Un timestamp dans un SGBDR est un discrètement à valeur stockée pour chaque mesure, ce qui est très inefficace. Un temps de base de données est souvent utilisé dans la surveillance en temps réel des applications comme SCADA. Un système bien établi est le PI de la base de données à partir d'OSISoft (http://www.osisoft.com/).

12voto

Jonathan Leffler Points 299946

Si je comprends bien (et en simplifiant énormément), un temps de base de données les enregistrements faits sur des données valides ainsi que les données lui-même, et permet de s'interroger sur les aspects temporels. En fin de compte vous traitant de "période de validité" et "transaction" tables, ou "bitemporale de tables", impliquant à la fois des "période de validité" et "le temps de transaction' aspects. Vous devriez envisager la lecture de ces deux livres:

6voto

bob Points 61

Les bases de données temporelles sont souvent utilisées dans le secteur des services financiers. Une des raisons est que vous êtes rarement (voire jamais) autorisé à supprimer des données. Par conséquent, les champs de type ValidFrom - ValidTo des enregistrements sont utilisés pour indiquer quand un enregistrement était correct.

2voto

Joel Points 715

En plus de lire l'article de Wikipedia ? Une base de données qui tient un "journal d'audit" ou un journal de transactions similaire aura certaines propriétés d'être "temporelle". Si vous avez besoin de réponses à des questions sur qui a fait quoi à qui et quand, vous avez un bon candidat pour une base de données temporelle.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X