AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi BDE Umstieg auf welche Datenbank?
Thema durchsuchen
Ansicht
Themen-Optionen

BDE Umstieg auf welche Datenbank?

Ein Thema von MasterDetail · begonnen am 13. Sep 2016 · letzter Beitrag vom 14. Sep 2016
Antwort Antwort
MasterDetail

Registriert seit: 6. Sep 2016
8 Beiträge
 
#1

BDE Umstieg auf welche Datenbank?

  Alt 13. Sep 2016, 11:36
Datenbank: dBase • Version: - • Zugriff über: BDE
Hallo,

wir sind dabei unser Projekt von der BDE zu trennen.
Nun sind wir uns noch nicht sicher, welches DBMS und welche Komponenten wir in Betracht ziehen.

Wir hatten uns vorerst dazu entschlossen, es mit MySQL/InnoDB und FireDAC zu probieren. Bisher lief das auch ganz gut.
Jedoch hatten wir Probleme mit den Indizes, die bisher auf der Datenbank global hinterlegt waren, doch nun bei den FDQuerys einzeln angelegt werden müssen.
Das erschwert die Übersicht. Wir hatten uns für FDQuerys entscheiden, damit wir Lookup- und CalcFields in die SELECT-Anweisung packen und somit an Performance gewinnen.

Des Weiteren ist uns ein weiteres Problem mit großen Datenmengen aufgefallen. Hierfür soll man ja RowSetSize und fmOnDemand benutzen.
Sobald man eine zweite FDQuery öffnet, wird jedoch bei der ersten FDQuery (RowSetSize:=50,Mode:=fmOnDemand) in jedem Fall ein FetchAll ausgeführt.
Das Problem ist hier näher beschrieben.

Sollten wir vielleicht doch andere Komponenten benutzen?

Welche Datenbank würdet ihr empfehlen? Und da einige von euch die BDE bereits verlassen haben, welche Datenbank wird von euch verwendet?

Außerdem habe ich von einem Lizenzproblem mit MySQL gelesen. Hat jemand von euch damit schon Erfahrung gesammelt?

Vielen Dank.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#2

AW: BDE Umstieg auf welche Datenbank?

  Alt 13. Sep 2016, 11:53
Moin...

Als (einzige ) Alternative ist imho Firebird. Ein Datenbank File welches sowohl Embedded als auch mit Server läuft. Zu FireDAC kann ich nicht viel sagen. (positiv / negativ)

Da ich nicht viel über eurer Projekt weiß...

Tipps:
1. Eine Umstellung 1:1 wird nicht funktionieren.
2. Die Datenbanken haben alle ihre Eigenheiten.
3. Lohnt sich der Einsatz eines Frameworks? (Aurelius z.b.) = Umsetzung der Datenmenge auf (generische) Listen.
4. Die SQL sollten wenigstens in einem Interface gekapselt werden. (Austauschbarkeit DBMS) = Umsetzung der Datenmenge auf (generische) Listen.
5. Evt. können die SQL als Ressource abgelegt werden. (Testbarkeit außerhalb vom Quelltext)
6. WICHTIG: Wenn möglich auf serverseitigen Cursor verzichten.
7. Trennung von datensensitiven Controls...

Geändert von haentschman (13. Sep 2016 um 12:13 Uhr)
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#3

AW: BDE Umstieg auf welche Datenbank?

  Alt 13. Sep 2016, 11:55
Über welche Datenmengen reden wir da?

Für kleine Datenmengen (ein paar hundert Sätze) nutze ich für dBase einfach TDBF.

Ansonsten je nach Bedarf.

Kleinere Datenmengen mit Access über ADO.

ADO nutze ich auch dann, wenn ich nicht weiß, welche Datenbank letztlich vom Programm genutzt werden soll.
Kann halt dann alles, an das man über ODBC ... "rankommt".

FireBird scheint mir eine gut nutzbare Datenbank zu sein, egal ob mit Datenbankserver und Client oder die Embeddedversion.

Bei großen Datenbanken (mit eigenem Datenbankserver) Oracle oder SQL-Server.

Ab und an nutze ich als Zugriffkomponenten auch mal die ZeosLib.

Allerdings kenne ich mich mit den neueren Delphiversionen und ihren Komponenten nicht aus. Bin (inzwischen nur noch Hobbyprogrammierer) bei Delphi 7 "stehen geblieben".
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

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

AW: BDE Umstieg auf welche Datenbank?

  Alt 13. Sep 2016, 12:06
Jedoch hatten wir Probleme mit den Indizes, die bisher auf der Datenbank global hinterlegt waren, doch nun bei den FDQuerys einzeln angelegt werden müssen.
Ist das wirklich notwendig oder nur ein "Hinweis" an die Controls das es hier Indexe gibt die verwendbar sind.

Des Weiteren ist uns ein weiteres Problem mit großen Datenmengen aufgefallen. Hierfür soll man ja RowSetSize und fmOnDemand benutzen.
Sobald man eine zweite FDQuery öffnet, wird jedoch bei der ersten FDQuery (RowSetSize:=50,Mode:=fmOnDemand) in jedem Fall ein FetchAll ausgeführt.
Das Problem ist hier näher beschrieben.
Das liegt wie geschrieben an MySQL. Es ist auch sinnvoll sich vom Serverseitgen Curser zu lösen und nur Clientseitige DBs zu verwenden und Datenmengen wenn nötig/sinnvoll auf Sinnvolle Datenmengen zu beschränken. Du kannst zwar "einfach" mit Serverseiten Cursern Mio.-Datensätze "bearbeiten" (im Grid halten), aber hier hat dann das DBMS einige zu werkeln diese Datenmengen auf dem Server vorzuhalten. Stell dir vor dein Programm nutzen 1000 User um jeweils 100 Mio. Datensätze im Grid darzustellen. Da dürftest du dann schon ein ziemliches Performance-Problem bekommen.

Welche Datenbank würdet ihr empfehlen? Und da einige von euch die BDE bereits verlassen haben, welche Datenbank wird von euch verwendet?
Am besten das was der Kunde schon im Einsatz hat. Damit seit ihr aus der Nummer DB-Administration und Backupkonzept mehr oder minder raus als wenn ihr einem Kunden der MS-SQL-Server im Einsatz hat sagen müsst das er jetzt auch noch ein Oracle/MySQL/... installieren und administrieren muss.

Außerdem habe ich von einem Lizenzproblem mit MySQL gelesen. Hat jemand von euch damit schon Erfahrung gesammelt?
Sollt ihr nur MySQL und/oder die libmysql.dll im Einsatz haben, so muss der Kunde die Installation lizensieren.
Nur wenn ihr mehrer DBMS unterstützt und auch keine DLL von MySQL im Einsatz habt seit ihr außen vor.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: BDE Umstieg auf welche Datenbank?

  Alt 13. Sep 2016, 12:40
Wir nutzen ebenfalls von der BDE kommend MS-SQL, MySQL und MariaDB ebenfalls in Kombination mit FireDAC. MariaDB hat den Vorteil, dass du das Lizenzproblem von MySQL nicht hast.

Damit MariaDB mit FireDAC funktioniert, musst du lediglich die Konstante mvMySQL060200 aus FireDAC.Stan.Consts auf einen höheren Wert als die von MariaDB verwendete Versionsnummer setzen (z.B. 2000000000) und MySQL als Treiber nutzen. Das Überschreiben der Konstante funktioniert z.B. schlicht mit VirtualProtect usw. im Speicher.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
bcvs

Registriert seit: 16. Jun 2011
703 Beiträge
 
Delphi 12 Athens
 
#6

AW: BDE Umstieg auf welche Datenbank?

  Alt 13. Sep 2016, 12:46
Und da einige von euch die BDE bereits verlassen haben, welche Datenbank wird von euch verwendet?
Das ist bei mir schon etwas länger her (ca. 10 Jahre). Ich bin bei den Produkten von www.elevatesoft.com gelandet. Zuerst DBISAM, dann ElevateDB.
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.381 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: BDE Umstieg auf welche Datenbank?

  Alt 13. Sep 2016, 13:05
Hallo,

ich würde FireDac nur dann in Betracht ziehen, wenn ihr eine SA habt, damit ihr bei ggf. auftretenden Fehlern nicht erst teuer investieren müssen. Als Alternative würden die Komponenten von DevArt in Betracht kommen, dort werden auch ältere Delphiversionen mit Updates versorgt.


Je nach Einsatzzweck und Kundentyp kann durchaus sein, dass der Kunde die Datenbank "vorschreibt" - da wäre dann ein ORM (was den Umstieg teurer macht) oder zumindest eine universelle DAC (wie Firedac oder UniDac) notwendig um unterschiedliche Systeme unterstützen zu können.


Zur Lizenzproblematik von MySQL wurde schon was gesagt, ich würde einen Bogen drum machen (auch aus anderen Gründen).

Aktuell würde ich Firebird und PostGreSQL empfehlen. Beide kostenfrei, beide aktiv entwickelt.
  Mit Zitat antworten Zitat
MasterDetail

Registriert seit: 6. Sep 2016
8 Beiträge
 
#8

AW: BDE Umstieg auf welche Datenbank?

  Alt 14. Sep 2016, 13:39
Wir nutzen ebenfalls von der BDE kommend MS-SQL, MySQL und MariaDB ebenfalls in Kombination mit FireDAC. MariaDB hat den Vorteil, dass du das Lizenzproblem von MySQL nicht hast.

Damit MariaDB mit FireDAC funktioniert, musst du lediglich die Konstante mvMySQL060200 aus FireDAC.Stan.Consts auf einen höheren Wert als die von MariaDB verwendete Versionsnummer setzen (z.B. 2000000000) und MySQL als Treiber nutzen. Das Überschreiben der Konstante funktioniert z.B. schlicht mit VirtualProtect usw. im Speicher.
Wie meinst du das? Wir haben nämlich das ganze mit XAMPP und InnoDB-Tabellen getestet und den MySQL Dienst gestartet. Wie habt ihr das gemacht? Kannst du das genauer erläutern?
  Mit Zitat antworten Zitat
Benutzerbild von FBrust
FBrust

Registriert seit: 4. Okt 2002
Ort: Saarbrücken
654 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: BDE Umstieg auf welche Datenbank?

  Alt 14. Sep 2016, 15:50
Hallo,

ich bin damals von der BDE zu Firebird, zuerst mit ZEOS, mittlerweile mit IBDAC (von Devart), habs nie bereut. PostgreSQL ist ebenfalls empfehlenswert.

Gruß
Frank
"Ich habe Dinge gesehen, die ihr Menschen niemals glauben würdet. Gigantische Schiffe, die brannten, draußen vor der Schulter des Orion" - Roy Batty
  Mit Zitat antworten Zitat
franktron

Registriert seit: 11. Nov 2003
Ort: Oldenburg
1.446 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#10

AW: BDE Umstieg auf welche Datenbank?

  Alt 14. Sep 2016, 16:13
Also wir haben auch von BDE nach MySQL migriert und das mit UNIDAC läuft alles schön und schnell
Frank
Tux sein Lieblingsquellcode
While anzfische<TuxSatt do begin
Fisch:=TFisch.Create; Tux.EssenFisch(Fisch); Fisch.Free;inc(anzfische); end;
  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 18:54 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