AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi [Suche] Geeignete Datenbank
Thema durchsuchen
Ansicht
Themen-Optionen

[Suche] Geeignete Datenbank

Ein Thema von CReber · begonnen am 31. Aug 2005 · letzter Beitrag vom 1. Sep 2005
Antwort Antwort
Benutzerbild von CReber
CReber

Registriert seit: 26. Nov 2003
Ort: Berlin
343 Beiträge
 
Delphi 2006 Professional
 
#1

[Suche] Geeignete Datenbank

  Alt 31. Aug 2005, 21:20
Datenbank: Keine • Zugriff über: k. A.
Ich möchte ein vorhandenes Projekt komfortabler gestalten, indem ich es von Ini-Basis auf Datenbank-Basis umprogrammiere. Leider fehlen mir dazu noch geeignete Kenntnisse. Um nicht zu verzweifeln, möchte ich mich deshalb professionell beraten lassen

Das Programm soll so ähnlich wie ein Anti-Virus-Programm aufgebaut sein. D. h. ich bearbeite die Datenbank und nach Abschluss wird diese in Dateiform vom Anwender automatisch runtergeladen und kann vom Programm ausgelesen werden.

Um die Wahl einer geeigneten Datenbank einzuschränken sollte sie demnach folgende Kriterien erfüllen.


1. Datenbank muss auf einem Server abgelegt sein

2. Datenbank soll über verschiedenste Benutzerkonten bearbeitet werden können. D. h. nicht nur ich, sondern ~ 10-100 andere sollen die Datenbank ebenfalls bearbeiten können. (über Win32 Anwendung)

3. Die Client-Anwendung soll einfach die Datenbank (Dateiform) runterladen und auslesen können...


Kostenlos brauch ich die Datenbank nicht zu sein, sondern nur einfach Über Tipps wäre ich sehr dankbar...
Christian Reber
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

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

Re: [Suche] Geeignete Datenbank

  Alt 31. Aug 2005, 21:25
Zitat von Christian Reber:
3. Die Client-Anwendung soll einfach die Datenbank (Dateiform) runterladen und auslesen können...
Wie kann ich da verstehen? Willst du nicht von deinen Clients auf die DB zugreifen sondern nur auf lokal abgelegte Kopien... Und wie flickst du diese vielen Kopien von all deinen Clients denn nachher wieder zusammen in die DB. Irgendwo muss du doch den eigentlichen Datenpool haben.
  Mit Zitat antworten Zitat
Benutzerbild von CReber
CReber

Registriert seit: 26. Nov 2003
Ort: Berlin
343 Beiträge
 
Delphi 2006 Professional
 
#3

Re: [Suche] Geeignete Datenbank

  Alt 31. Aug 2005, 21:29
Ich glaube du hast mich falsch verstanden, bzw. ich habe mich etwas unbeholfen ausgedrückt.

Admin - verwaltet die Datenbank mit Informationen | davon soll es bis zu 100 geben

Server - is klar?

Client - soll die Datenbank runterladen bzw. diese soll in Intervallen aktualisiert werden und lokal dann ausgelesen werden


An einem Beispiel:

Symantec = Admin | Verwaltet die Anti-Virus-DB

Server = LiveUpdate | Hat die Anti-Virus-DB

Kunden von Symantec = Client | Lädt die Updates der DB runter, um immer auf dem neuesten Stand zu sein




So meinte ich das
Christian Reber
  Mit Zitat antworten Zitat
jensw_2000
(Gast)

n/a Beiträge
 
#4

Re: [Suche] Geeignete Datenbank

  Alt 31. Aug 2005, 22:44
Dann ist der MSSQL dein Freund ...
Entweder in der kostenlosen Version (MSDE) oder aber die Standard- bzw. Enterprise Edition.

Wenn die Mitarbeiter primar mit ihren "Offline-Kopien" arbeiten, und der Server selbst nur zum Download der Daten gedacht ist, und wenn die DB (incl Transaktionsprotokoll nie grüßer als 2 GB wird, dann reicht die MSDE.

Wichtg ist das die MSDE auf 5 Workerthreads beschränkt ist.
Dadurch landen die Anforderungen, die über zeitgleich 5 Abfragen hinausgehen, in einer Warteschlange.
Somit geht die Performance stark in die Knie, wenn die Anzahl der parallelen Anforderungen relativ hoch ist.


Was geht ?

Ich habe für meinen Arbeitgeber ein kleines Störungsmanagement-System entwickelt in dem Kundenanfragen aufgenommen, Technikern zugewiesen und letztendlich abgearbeitet werden. Das ganze basiert auf der MSDE.

Abhängig von den Benutzernamen erstelle ich beim Beenden des Programms eine Offline-Kopie der DB
(AdoTable bzw. AdoQuery > SaveToFile ()). So verteile ich "Snapshots der Datenbank" auf die Notebooks von uns Technikern.
Wenn der Programm gestartet wird, überprüfe ich, ob eine Verbindung zum Datenbankserver hergestellt werden kann oder nicht. Wenn ja, connecte ich micht mir der DB, ansonsten lade ich die Daten aus der Offline-Kopie.

So weiss unterwegs jeder, welche Termine anstehen, hat Zugriff auf vorhergehende Einträge zu seinen Kunden, hat Infos über bestehende Wartungsverträge, ist informiert was die Kollegen auf dem Zettel haben etc.

Wenn jetzt ein Auftrag erledigt wurde, kann man ihn entweder in der Firma auf "erledigt" , oder man macht das in seiner Offline-Kopie.

Beim erneuten Connect mit dem DB-Server vergleiche ich dann die Datensätze des Mitarbeiters mit der DB und aktualisiere die SQL-Datenbank gegebenenfalls.

Das funktioniert gut. Die Offline-Kopien sind verhältnismäßig klein, das Speichern geht angenehm schnell und alle sind imformiert.


Was geht nicht ?

Die gespeicherten AdoDatasets sind "dumme Dateien". Die können keinen SQL-Server ersetzen.
Es gibt keine Beziehungen, keine Integritätsprüfungen, keine SQL-Abfragen, keine Sicherheit. Die ganzen netten Features die dir ein DB-Server bietet kannst du vergessen. Die Datenintegrität muss man durch eigene Programmierarbeit sicherstellen.

Anstatt einen Kunden via SQL (SELECT bla FROM Kunde WHERE ...) zu suchen, kannst du im Offline-Mode nur den kompletten Kundenbestand aus der Offline-Kundendatei laden und zur manuellen Auswahl anbieten.

Berechnete- oder virtuelle Felder sind in den Offline-Files (egal ob im XML oder im ADTG Format) generell ReadOnly.
Diese können Offline nicht editiert werden. Das selbe gilt für Offline-Koipen von Views und SP's.

Am Besten verwendet man so viele Offline-Daten wie möglich im ReadOnly-Mode und nur die Felder, die wirklich geändert werden sollen ( bei uns halt Status, Notitzen, Restarbeiten ) im Schreib-Lese-Modus.

Es ist eine je nach Komplexität der DB (bzw. der mobil benötigten Daten) eine Menge Entwickliungsaufwand nötig, und alles sauber zum Laufen zu bekommen.


Alternativen ?

Die MSDE unterstützt Merge Replikationen.

Warum also nicht einfach auf Identities verzichten, stattdessen GUIDS als Unique-Key verwenden und auf jeden mobilen Client eine Replikation der DB legen... ?

Die Idee ist generell gut.
Man hat absolute Freiheit und muss auf keinerlei Features verzichten.
Du kannst die DB dann sogar von extern replizieren (über eine VPN Verbindung, notfalls übers Internet).

Riskant daran ist nur, das der User dafür Sorge tragen muss, das seine DB nicht über 2 GB groß wird.
Zur Größe zählen auch die Transaktionsprotokolle.
Wenn z.B. jeden Sonntag eine Datensicherung geplant ist (bei der die Transaktionsprotokolle je nach Recovery Modell geleert werden), der User sein Notebook sonntags aber nie einschaltet, wird die Lösung nicht lange funktionieren.

Noch schlimmer wird es, wenn die DB irgendwann mehr als 2GB benötigte Nutzdaten enthält. Dann must du auf Schlag 10-100 SQL-Server Lizenzen kaufen... Dein Händler wird sich freuen ....


Falls deine DB nur ein paar Tabellen hat und die von den mobilen User optimaler Weise nur lesend verwendet werden sollen, dann löse es mit der Offline-Datasets.

Datenbanken mit vielen Tabellenbeziehungen, vielen "mobilen" Änderungen usw. würde ich lieber über eine Replikation lösen.

Auf eine gut programmierte SQL-Datenbank kann man in der Regel auch über eine Internetverbindung arbeiten.
Falls deine mobilen Clients von Homeoffices arbeiten, dann connecte diese doch einfach (über eine VPN-Lösung) mit deinem SQL-Server in der Firma. Dann brauchst du keine mobile Kopie der DB und hast immer aktuelle Daten ...



Ich hoffe es bringt dich etwas nach vorn,

Schöne Grüße,
Jens
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.380 Beiträge
 
Delphi 10.3 Rio
 
#5

Re: [Suche] Geeignete Datenbank

  Alt 1. Sep 2005, 12:49
Alternative: Firebird. KOstet nix und wenn Offlinedaten verwaltet werden sollen arbeitet jeder Client mit dem Embedded Server. Alle Funktionen des Servers kann aber halt nur lokal verwendet werden. Kleiner Nachteil: Die Offlinedaten haben keinerlei Schutz! Wenn es also sensible Daten sind müssen die entweder in der DB verschlüsselt werden oder Du brauchst was anderes!

Lemmy
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#6

Re: [Suche] Geeignete Datenbank

  Alt 1. Sep 2005, 12:56
Als Ergänzung zu dem Vorschlag von Lemmy: Firebird läuft auf Linux und Windows Servern.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.032 Beiträge
 
Delphi 12 Athens
 
#7

Re: [Suche] Geeignete Datenbank

  Alt 1. Sep 2005, 13:45
Moin, moin,

und um als Dritter in der Runde für Firebird zu werben:

Das System hat den Vorteil, dass hier die gleichen Datenstrukturen und Feldstrukturen lokal, wie auf dem Server gehalten werden können. Auch Du brauchst nur ein Verwaltungstool (z.B.: IB-Expert) und kannst die lokalen Datenbanken aus der Serverdatenbank heraus generieren. Ach ja und die Lizeznfreiheit von Firebird schlägt zu, wenn man viele Clients hat.

Ausserdem ist Sie über StoreProcedures bis UDF bestens erweiterbar und reicht von der Leistung bestens aus.

Grüße // Martin
Martin Schaefer
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#8

Re: [Suche] Geeignete Datenbank

  Alt 1. Sep 2005, 14:39
Hai,

für den Client könnte ich auch die Absolute Database empfehlen. Kosten für kommerzielle Nutzung zwar 100USD aber das ist okay finde ich. Für den Server dann irgendein richtiges DBMS
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Antwort Antwort


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 03:36 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