![]() |
Lokale Archivierung, chronologisch geordnet. Welches DBMS brauche ich?
Hinweis: Ich habe bewusst nicht das
![]() Da ich im Titel schon nach einer konkreten Technologie frage, die ich einsetzen soll ist der Glaubenskrieg möglicherweise schon vorprogrammiert. Ich möchte erst einmal vorstellen, was ich vorhabe, und in welchen drei Dingen ich Rat brauche: Ich möchte Sätze von Messwerten langzeit-archivieren. Wir sprechen hier über ein, zwei, vielleicht drei Jahre. Darüber hinaus macht es keinen Sinn mehr. Ein Satz von Messwerten ist wiederum mit einem Satz von ganz anderen Messwerten verknüpft. Beide beginnen und enden zur selben Zeit. Und in dieser Zeitspanne fallen einzelne, für sich genommene Ereignissee an. Die möchte ich auch mitloggen. Auf Dauer ist mit ein paar zehn- oder hunderttausend solcher Sätze an Messwerten zu rechnen. Fast schon ein Stack - Bereits geschriebene Datensätze werden nicht mehr verändert. Ich habe nun praktisch null Praxiserfahrung mit Datenbanken: Mehr als wahllos Daten in bereits bestehende Postgres, Advantage oder SQLite-DBs werfen und lesen habe ich nie gemacht. Nun geht es um den Aufbau eines neuen Systems. 1a) Allen Datensätzen haftet bei ihrem Eintrag in die DB der momentane Zeitstempel an. Soll heißen: Die "natural order" in der DB ist ihre wirkliche chronologische Reihenfolge. Nehmen wir an, ich möchte nun alle Datensätze, die zwischen November 2013 und Februar 2014 liegen. Was muss ich tun, damit das DBMS so schlau ist, sich nicht jeden der Datensätze anzuschauen, ob er in den gewünschten Zeitrahmen passt? Reicht die Verwendung eines nativen "TIMESTAMP"-Datentyps für eine Spalte? Muss ich mehr beachten? Oder habe ich sowieso keinen Einfluss, was sich hinter den Kulissen abspielt und muss mit wachsender DB hilflos zuschauen, wie die Performance immer weiter in den Keller geht? 1b) Die Daten sollen lokal auf einer einzigen Maschine gespeichert werden. Geht diese in Flammen auf, hat man eben Pech gehabt :o. Oder vorher eine "Kopie" der Datenbank auf einen Netzwerkpfad, USB-Stick oder gesichert. Es sollte sich so einfach lösen lassen, wie eine (oder mehrere wenige) Datei im Windows-Dateisystem zu kopieren. Die "Wiederherstellung" sollte sich auch vom Kunden selbst bewerkstelligen lassen. Wenn ich, wie bsp. bei SQLite, eine einzelne Datei kopiere und habe wieder den gesicherten Stand - Perfekt. 2) Das Projekt wird momentan nur mit dem RAD Studio XE4 Enterprise gebastelt, deshalb wäre es mir lieb, auch mit Delphi oder dem C++ Builder direkt ewtas basteln zu können. Ist zwar kein Muss; Wenn ich allerdings sehe, was für Mengen an DB-Funktionalität und klangvolle Namen (FireDAC, dbExpress, InterBase,...) einem von Embarcadero gleich um die Ohren gehauen werden, wäre es natürlich gut, gleich so etwas, das bereits "dabei" ist, zu nutzen. Bislang kommt als lokale DB der ![]() Ich frage nun nach einer konkreten Technologie, mit welcher ich Punkte 1a) und 1b) am besten erreiche. Ist die Advantage Local DB geeignet? Scheidet SQLite aufgrund der Datenmengen aus? Ich habe null Praxiserfahrung und langsam gehen mir auch die Ideen aus wie man ein "Ich habe keine Ahnung, sagt mir einfach, was ich nehmen soll" weiter hinter blumigen Worte verstecken kann. Daher bedanke ich mich fürs Lesen und harre weisen Ratschlägen. |
AW: Lokale Archivierung, chronologisch geordnet. Welches DBMS brauche ich?
Da Du schon speziell nach dem ALS fragst: Ein Index auf einem Timestamp-Feld genügt, um auch bei vielen tausend Datensätzen schnell filtern zu können (1a). Zur Datensicherung (1b) einfach das Programm beenden und den Daten-Ordner weg kopieren - geht auch hervorragend als batch mit gleichzeitigem packen danach:
Code:
@echo off
cls set ordnername=data set archivname=MyBackup%date:~6,4%%date:~3,2%%date:~0,2%.rar set password=-hpGEHEIM "%programfiles%\winrar\rar.exe" a -r %password% %archivname% %ordnername% copy %archivname% c:\mnt\myotherdevice rem del /F /S /Q %archivname% pause |
AW: Lokale Archivierung, chronologisch geordnet. Welches DBMS brauche ich?
Es gibt keine "natural order":
-Beim Löschen entstehen Lücken, welche später gefüllt werden. -Abfragen verwenden Indizes, so dass Ergebnisse eine andere Reihenfolge haben können. Jedes aktuelle DBMS sollte deinen Anforderungen genügen. zu 1a) TIMESTAMP sollte reichen; Index auf Spalte zu 1b) Entweder Sicherung auf Netzpfad oder Replikation zu 2) Mit FireDAC sollte jedes aktuelle DBMS unterstützt werden. Als Datenbanksystem würde auf Firebird verwenden ( wenn dich nicht stört das es OpenSource ist; für manche ist das ja ein absolutes NoGo, da kein garantierter Support und Weiterentwicklung) sonst halt MSSQL oder ein schon vorhandenes DBMS ( z.B. Oracle, dann gibt es vor Ort einen der sich damit auskennt - sonst lieber nicht). Aber das verwendete DBMS ist eine Geschmacksfrage, bei der es viele verschiedenen Meinungen gibt. |
AW: Lokale Archivierung, chronologisch geordnet. Welches DBMS brauche ich?
Als mögliche Techniken des Datenbanksystems schmeiße ich mal Tabelle Partitionierung z.B. nach Jahren vor oder einfach BigData/NOSQL Ansätze (Map and Reduce).
|
AW: Lokale Archivierung, chronologisch geordnet. Welches DBMS brauche ich?
Danke für die Antworten :thumb:
Zitat:
Das momentane Produkt nutzt auch genau das aus, indem es sich die RowIDs als Pseudo-Fremdschlüssel auf andere Tabellen nutzt. Und das funktioniert seit etlichen Jahren. Zitat:
Ihr beide sprecht vom einfachen Kopieren von Daten, da hake ich lieber gleich nach: Vor vielen Wintern hatte ich unter Java Kontakt mit Postgres-Datenbanken, Linux wie Windows. Ich habe irgendwie noch im Hinterkopf, dass sich gerade unter Windows in der Registry und Systemverzeichnissen alle möglichen Einstellungsfitzel verteilen und eine Datenbank sich nicht einfach in einen Koffer packen und transportieren ließ. War das eine hässliche Ausnahme? Zitat:
Deswegen das explizite Interesse für Dinge, die bei RAD Enterprise wohl schon "dabei" sind. Zitat:
|
AW: Lokale Archivierung, chronologisch geordnet. Welches DBMS brauche ich?
"jedes aktuelle RDBMS..."
Also Oracle kann ich nicht empfehlen. Ein Backup mal eben durch kopieren der Tablesspace Files anzufertigen kann gut in die Hose gehen.. |
AW: Lokale Archivierung, chronologisch geordnet. Welches DBMS brauche ich?
Zitat:
Zitat:
Zitat:
|
AW: Lokale Archivierung, chronologisch geordnet. Welches DBMS brauche ich?
Zitat:
Dabei muss man im Grunde sogar darauf achten, ob Speichergenauigkeit und Auflösung des generierten Zeitwerts ausreichen. Sicherheitshalber empfiehlt sich eine Sequenz / AutoID an der Stelle. |
AW: Lokale Archivierung, chronologisch geordnet. Welches DBMS brauche ich?
Zitat:
|
AW: Lokale Archivierung, chronologisch geordnet. Welches DBMS brauche ich?
Danke für die Antworten soweit.
In Sachen "Sicherung" war ich möglicherweise zu ungenau: Das Exportieren von ge-backupten Daten und Wiederherstellen sollte sich entweder über eine mit der heißen Nadel gestrickten Anwendung von mir oder direkt über den Windows Explorer bewerkstelligen lassen. Den Nutzer will ich nicht direkt an an DB-Verwaltungssoftware lassen, damit käme er auch nicht zurecht. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:27 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz