Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Datenbank-Wrapper? (https://www.delphipraxis.net/61551-datenbank-wrapper.html)

SubWorx 23. Jan 2006 07:57

Datenbank: MySQL/MSSQL/FireBird • Zugriff über: ???

Datenbank-Wrapper?
 
Hallo erstmal,

meine Frage bezieht sich auf Datenbank-Zugriff zu verschiedenen Datenbanken über einen Wrapper.

Ich kenne z.b. Zeos, mit dem ich auf mehrere DBMS zugreifen kann.
Allerdings habe ich folgendes "Problem":

Die Einzelplatzversion unserer Software soll ein embedded DBMS benutzen, zuerst dachten wir an Paradox, aber nach Stöbern im Forum bin ich auf Firebird Embedded gekommen.
Die Mehrplatzversion soll hingegen auf einen SQL Server (MSSQL, MySQL, PQSQL, ...?) im Netzwerk zugreifen.

Bei der Installation wird anhand der Seriennummer o.ä. ermittelt, was für eine Version vorliegt, und der entsprechende Code benutzt.

Paradox und DBMS "gleichzeitig" zu betreiben erscheint mir jedoch relativ unmöglich, da ich komplett andere Komponenten etc benötige, oder liege ich da falsch?

Der Grund ist, dass wir nicht 2 verschiedene Programmversionen (Filedatenbank (Firebird?) / DBMS) erstellen und vor allem pflegen wollen.

Vielen Dank schon mal für Eure antworten

gruß
Sub

mkinzler 23. Jan 2006 08:14

Re: Datenbank-Wrapper?
 
Ein Beispiel für einen Wrapper der geeignet wäre sind die Zeos-Komponenten.
Es werden hier verschiedene DBMS unterstützt (Interbase/Firebird, DB2, Oracle. Postgres, Mysql, mssql).
Am einfachsten wäre es auf beiden Seiten die selbe DB zu verwenden ( FFBembedded -> FB/mysql-embedded->Mysql, MSSql express bzw. MSDE -> MSSQl).
Auch ODBC, ADO bieten DB-Abstraktion.

Elvis 23. Jan 2006 08:21

Re: Datenbank-Wrapper?
 
Zitat:

Zitat von mkinzler
Ein Beispiel für einen Wrapper der geeignet wäre sind die Zeos-Komponenten.
Es werden hier verschiedene DBMS unterstützt (Interbase/Firebird, DB2, Oracle. Postgres, Mysql, mssql).

Die geben dir nur die Möglichkeit mehrere DBs über die gleichen Klassen anzusprechen.
Du musst damit trotzdem die einzelnen Dialekte getrennt behandlen...

Ein Lösung wäre DataAbstract, eine andere vllt InstantObjects...

SubWorx 23. Jan 2006 10:18

Re: Datenbank-Wrapper?
 
Heisst das, dass ich mit DataAbstract oder InstantObjects (blicke da noch nicht wirklich, was letzteres eigentlich genau macht) auf verschiedene DBMS (also ende ich bei FBembed lokal, FB/MySQL/MSSQL/PQSQL im netz) zugreifen kann, ohne mich gross um syntax-differenzen zu kümmern?

da die Anwendung zu 99% auf sql basiert, wäre es natürlich angenehm, wenn ich mich um diesen teil so wenig wie möglich kümmern müsste ;)

Danke nochmal
Sub

Elvis 23. Jan 2006 10:27

Re: Datenbank-Wrapper?
 
InstantObjects nimmt dir auch noch den SQL Teil (sowie einen Teil der Klassenmodelierung) ab.
DataAbstract gibt dir einen Middle Tier server, der einen Makro SQL Dialekt besitzt, welcher von DB-spezifischen DA Treiber zu DB-spezifischem SQL übersetzt werden.

Habe IO gerade mal angeschaut, sieht ganz nett aus. Vor allem da man damit eklige DataSets gegen richtige Klassen tauschen und trotzdem das ganze an DB Aware Controls binden kann.
Hätte ich früher kennen sollen.... :cry:

mkinzler 23. Jan 2006 10:40

Re: Datenbank-Wrapper?
 
DataAbstract und InstantObjects sind ORM's( Object/Relational Mapper).D.H sie bilden ein Objektmodell auf eine relationale Datenbankstruktur ab.
Im ORM sind verschiede Datenbankabstraktionen für verschiedene DBMS implementiert. Dafür muß aber dein Programm an das ORM angepasst werden.
Zitat:

Die geben dir nur die Möglichkeit mehrere DBs über die gleichen Klassen anzusprechen.
Du musst damit trotzdem die einzelnen Dialekte getrennt behandlen...
Deshalb habe ich vorgeschlagen auf beiden Seiten die selbe DB zu nehmen. Die SQL-Dialekte der verschiedenen DBMS unterscheisen sich z.T. erheblich. So das eine SQL-Anweisung, welche auf mehreren Datenbanken funktioniert sehr schwer zu realisieren ist.

SubWorx 23. Jan 2006 10:53

Re: Datenbank-Wrapper?
 
ok jetzt habe ichs verstanden, danke

dann müssen mein kollege und ich uns doch wohl dransetzen und die ultimative wrapper klasse ;) schreiben, da einige unserer kunden mssql installiert haben, einige evtl zu mysql greifen werden, und der rest firebird aufgedrückt kriegt ;)

die klasse wird dann wohl so aussehen, dass eine variable sagt welcher dialekt benutzt wird, und im programm selbst nur benutzt wird z.b.

insert('sql befehl'), select('sql befehl') und der wrapper bastelt das entsprechend hin


darf ja auch nicht alles mitliefern, da wir eine kommerzielle anwendung schreiben
da fällt mysql (+embedded) schonmal raus, es sei denn wir bieten den kunden an, dass wir mysql als eine möglichkeit von mehreren unterstützen und die sich das selber runterladen sollen

schauen wir mal, was da rauskommt ;)

danke nochmal
gruß
Sub

Elvis 23. Jan 2006 11:56

Re: Datenbank-Wrapper?
 
Zitat:

Zitat von mkinzler
DataAbstract und InstantObjects sind ORM's( Object/Relational Mapper).D.H sie bilden ein Objektmodell auf eine relationale Datenbankstruktur ab.

Nope, DA's Vorteil ist, das es kein ORPF ist. IO's Vorteil ist das es ein ORPF ist... :mrgreen:
Beide Lösungen haben ihre Vorteile und beide machen dich unabhängig vom SQL Dialekt (Solange ein Broker/Treiber vorhanden ist).

SubWorx 23. Jan 2006 14:58

Re: Datenbank-Wrapper?
 
hmm ... also irgendwie komm ich weder mit DataAbstract noch mit Instant Objects wirklich klar

die online hilfe bringt mir nicht wirklich was, weil ich noch nicht mal verstehe, warum ich das zeug überhaupt brauche :P

kann mir wer aus der misere helfen mit guten tutorials über die ganzen DB systeme?
blicke da vor dbexpress, ado, bde, ..... nicht wirklich durch

bislang hab ich da nix wirklich brauchbares finden können, dsdt, dp, delphi-forum, delphi-library und delphi.about.com konnten mir nicht wirklich helfen


danke euch nochmal

Sub

mkinzler 23. Jan 2006 15:07

Re: Datenbank-Wrapper?
 
Viellecht reicht es ja aus verschiedene Datenmodule für die verschiedenen DBMS zu verwenden oder nur verschiedene "Init"-Methoden eines DatenModuls der Form InitFB, InMSSql, welche für die Zugriffskomponeten (TZQuery) die Sql-Statements for die entsprecheden DB-Dialekte setzt. Eine Realisierung in SP wäre u.U auch sinnvoll ( Problem: z.T. nicht unterstützt; MySQL).
Zitat:

hmm ... also irgendwie komm ich weder mit DataAbstract noch mit Instant Objects wirklich klar
Ich kenne DataAbstract nicht aber mei IO muß das Programm umgekrempelt werden.
Eine weiter ORM-Variante wäre ObiWan von Jedi.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:31 Uhr.
Seite 1 von 2  1 2      

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