AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Access - monatlich neue DB erstellen
Thema durchsuchen
Ansicht
Themen-Optionen

Access - monatlich neue DB erstellen

Ein Thema von stephan3309 · begonnen am 16. Aug 2006 · letzter Beitrag vom 9. Sep 2006
Antwort Antwort
Seite 1 von 3  1 23      
stephan3309

Registriert seit: 16. Aug 2006
15 Beiträge
 
#1

Access - monatlich neue DB erstellen

  Alt 16. Aug 2006, 21:13
Datenbank: Access • Version: 2000 • Zugriff über: ADO
Hallo,

zu Anfang,...
...ich kenne mich noch nicht sehr gut mit Delphi aus,...ist größtenteils Neuland für mich.

Ich habe ein Programm geschrieben, welches mir alle 60 Sekunden ca. 15 Messwerte von einer Steuerung (Beckhoff) holt,
und diese in eine Access Datenbank schreibt.
Daraus erstelle ich ein Chart ums anschaulicher zu machen.

Mein Problem:
Theoretisch läuft das Programm 24Stunden, 365Tage im Jahr,... also die Messwerte sollen ständig Aufgezeichnet
werden und zu verfügung stehen, halt eine Prozessüberwachung.
Für rund 10 Jahre müssen die Messwerte dann zu Verfügung stehen

Alle Messwerte werden jetzt nur in einer DB mit 2 Tabellen (die Messwerte stammen von 2 Unterschiedlichen Anlagen, deshalb 2 Tabellen)
gespeichert.

In ca. 1 Jahr wären also 2x 525600 Zeilen in der DB.


Die Lösung die ich Anstrebe zu finden:
1x monatlich die DB kopieren, mit dem Namen von Jahr/Monat abzuspeichern und dann die "Arbeits DB" löschen.

Leider komme ich da nicht so wirklich weiter, weiß nicht wie ich das angehen soll.
Kann mir vielleicht jemand ein oder zwei Tipps dazu geben?

Mit freundlichem Gruß
Stephan Köster
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.641 Beiträge
 
#2

Re: Access - monatlich neue DB erstellen

  Alt 16. Aug 2006, 21:35
Zitat:
In ca. 1 Jahr wären also 2x 525600 Zeilen in der DB.
Du hast Dich da irgendwo verrechnet:
15 Meßwerte einmal pro Minute * 60 Min (1 Stunde) * 24 (1 Tag) * 365 (1 Jahr) = 7.884.000 also fast schon 7,9 Mio. Datensätze für ein Gerät.

Aber davon mal abgesehen: Datenbanken sind dafür da, große Mengen an Daten zu verwalten. Du willst ja eine Datenbank mit Daten von 10 Jahren anlegen und diese Auswerten können. Da macht es absolut keinen Sinn, die Daten auf 120 unterschiedliche Datenbanken aufzuteilen, über die man nicht einheitlich abfragen kann. Was wäre, wenn jemand einen Durschnitt der Meßwerte pro Halbjahr haben möchste?

Jet ist hier im übrigen wahrscheinlich nicht die richtige Wahl.

Ich würde Dir raten, zu einer richtigen Datenbankengine zu greifen, die für sowas ausgelegt ist. Nimm am besten eine Oracle Express her, die können sehr gut mit so großen Datenbeständen umgehen (ich hab bei einem Kunden eine Datenbank mit Datensätzen im oberen zweistelligen Millionenbereich, und die läuft superstabil und schnell).
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.202 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Access - monatlich neue DB erstellen

  Alt 16. Aug 2006, 21:43
Access-Datenbank Erstellen oder du hast einfach eine leere DB "auf Lager" und nimmst diese als Vorlage.

Zitat von Phoenix:
Ich würde Dir raten, zu einer richtigen Datenbankengine zu greifen, die für sowas ausgelegt ist. Nimm am besten eine Oracle Express her, die können sehr gut mit so großen Datenbeständen umgehen (ich hab bei einem Kunden eine Datenbank mit Datensätzen im oberen zweistelligen Millionenbereich, und die läuft superstabil und schnell).
Wirklich? Aber auch nur wenn die Datenbank auf einem dedizierten Server läuft und jede Menge RAM besitzt. Gleichzeitig mit einer "normalen" Anwendung laufen zu lassen könnte ein Problem werden wenn man Oracle wieder versucht alles RAM zu reservieren und Windows dann anfangen muss permanent zu swappen.

Hatte erst heute wieder denn Fall das selbst bei einer dedizierten DB man Oracle Problemlos (trotz Optimierter SQL-Strategie) so weit mit Arbeit belegen kann das selbst mit den Oracle-Tools keine Anmeldung mehr an die DB möglich ist. Und das nur mit einer Anwendung von einem PC aus. Man sollte halt Oracle nicht mit zu vielen Inserts in einer Transaktion "quälen".
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.641 Beiträge
 
#4

Re: Access - monatlich neue DB erstellen

  Alt 16. Aug 2006, 21:55
Zitat von Bernhard Geyer:
Gleichzeitig mit einer "normalen" Anwendung laufen zu lassen könnte ein Problem werden wenn man Oracle wieder versucht alles RAM zu reservieren und Windows dann anfangen muss permanent zu swappen.
Ich geh bei sowas immer davon aus, dass die Datenbank dann auch richtig konfiguriert ist. Meine Lokale Dev-Ora darf z.B. maximal 180 MB Ram nehmen und that's it. Bei einem Gig Ram und mit noch ner laufenden VM mit 512 MB verbrauch ist das angemessen. Die vorhin erwähnte ist freilich ein dedicated, aber auch da darf die DB nicht mehr als 1,5 GB Speicher ziehen. Rest ist fürs OS da.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.202 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Access - monatlich neue DB erstellen

  Alt 16. Aug 2006, 23:47
Zitat von Phoenix:
Zitat von Bernhard Geyer:
Gleichzeitig mit einer "normalen" Anwendung laufen zu lassen könnte ein Problem werden wenn man Oracle wieder versucht alles RAM zu reservieren und Windows dann anfangen muss permanent zu swappen.
Ich geh bei sowas immer davon aus, dass die Datenbank dann auch richtig konfiguriert ist. Meine Lokale Dev-Ora darf z.B. maximal 180 MB Ram nehmen und that's it. Bei einem Gig Ram und mit noch ner laufenden VM mit 512 MB verbrauch ist das angemessen. Die vorhin erwähnte ist freilich ein dedicated, aber auch da darf die DB nicht mehr als 1,5 GB Speicher ziehen. Rest ist fürs OS da.
Aber ob bei der erwarteten Datenmenge noch ohne dedizierten Server gearbeitet werden kann wenn alles in eine DB soll (muss?). Der Ansatz ist schon nicht schlecht wenn keine Auswertungen über mehrere Jahre gefahren werden müssen.

U.u. gibt es aber andere Vorteile wenn man sich an eine DB binden will das man auch gleich die Vorteile dieser Nutzt (z.B. Reporting-Services bei neueren MS SQL-Server-Versionen).

Also fragen wir mal nach den Randbedingungen:
- Wird es mehrere Installationen geben?
- Wäre der Installationsmehraufwand für einen richtigen SQL-Server vertretbar?
- Wie soll die Programmverteilung ablaufen?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
stephan3309

Registriert seit: 16. Aug 2006
15 Beiträge
 
#6

Re: Access - monatlich neue DB erstellen

  Alt 17. Aug 2006, 06:35
Guten Morgen,

Hallo Phoenix
zu den Randbedingungen:

Zitat:
- Wird es mehrere Installationen geben?
Nein, das Programm soll nur auf einem Rechner laufen.
Evtl. wird es auf ein oder zwei anderen Rechnern nur zur Anzeige der
Messwerte (Temperaturen) genutzt.
Die tatsächliche Temperaturerfassung läuft nur auf einem Rechner.

Zitat:
- Wäre der Installationsmehraufwand für einen richtigen SQL-Server vertretbar?
Leider nein, würd sich nicht realisieren lassen,
deshalb hab ich mich vorerst für Access entschieden
(weil ich mich zum einen mit keiner andern DB auskenne ,
und Access auf allen Rechnern installiert ist)

Zitat:
- Wie soll die Programmverteilung ablaufen?
Was meinst du mit Programmverteilung?


Hallo Bernhard Geyer,
Zitat:
Access-Datenbank Erstellen oder du hast einfach eine leere DB "auf Lager" und nimmst diese als Vorlage.
ich habe mir unter Access die DB erstellt und hole mir
die DB einfach via ADO Table in mein Programm.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Access - monatlich neue DB erstellen

  Alt 17. Aug 2006, 06:51
Zitat:
Zitat:

Access-Datenbank Erstellen oder du hast einfach eine leere DB "auf Lager" und nimmst diese als Vorlage.


ich habe mir unter Access die DB erstellt und hole mir
die DB einfach via ADO Table in mein Programm.
Berhard meint eine leere DB mit Bs-Mitteln Umkopierem Umbenennen und dann mit ADO öffnen.
Markus Kinzler
  Mit Zitat antworten Zitat
stephan3309

Registriert seit: 16. Aug 2006
15 Beiträge
 
#8

Re: Access - monatlich neue DB erstellen

  Alt 17. Aug 2006, 12:27
Zitat:
Berhard meint eine leere DB mit Bs-Mitteln Umkopierem Umbenennen und dann mit ADO öffnen.
Also müsste ich
- Eine leere DB als Vorlage anlegen,
- Am Ende eines Monats
- Die aktuelle DB-Datei umbenennen (z.B. August_06)
- Die DB-Datei in ein Verzeichnis (z.B. History) kopieren
- eine Kopie der Vorlage in das Arbeitsverzeichnis kopieren

und das innerhalb der 60 Sekunden bis zur nächsten Aktualisierung der DB.

Würd das funktionieren wie ich mir das jetzt vorstelle, oder gibts ne alternative?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Access - monatlich neue DB erstellen

  Alt 17. Aug 2006, 12:32
Zitat:
Würd das funktionieren wie ich mir das jetzt vorstelle, oder gibts ne alternative?
Sollte eigentlich problemlos gehen, sonst lass den Programmteil doch auf einem vergleichbaren Rechner laufen, und stoppe, wie lang er benötigt.
Als Alternative wäre die Neuanlage der neuen Datenbank, was eher länger dauert als das Kopieren einer leeren DB oder das Auslagern der "alten" Daten in eine andere DB ( Neuanlage der alten DB).
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#10

Re: Access - monatlich neue DB erstellen

  Alt 17. Aug 2006, 12:38
Zitat von stephan3309:
und das innerhalb der 60 Sekunden bis zur nächsten Aktualisierung der DB.
Darauf wirst Du achten müssen, weil Du die Datenbankverbindung erst schliessen musst, bevor Du die mdb Datei verschieben kannst. Aber das sollte ja innerhalb von ein paar Sekunden erledigt sein.
  • Schliessen
  • Umbenennen
  • Neue erstellen
  • DB Verbindung wieder öffnen
  • Alte DB verschieben
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz