![]() |
Datenbank: ADS • Zugriff über: noch garnicht
Datenbank Abstraktionsschicht
Hi
Ich soll jetzt mal wieder was in Delphi schreiben, diesmal mit ner neuen Datenbank, dem AdvantageDatabaseServer... toll, der hat sogar Komponenten. Gibts nich auch Komponenten, bei denen ich ans andere Ende alle SQL Datenbanken hängen kann? So ne schöne zwischenschicht quasi, um unabhängig zu sein? |
Re: Datenbank Abstraktionsschicht
Also die BDE wäre sowas, aber die sollte man ja nicht mehr verwenden.
Wenn Du im .NET - Bereich arbeitest bietet Dir ADO.NET zumindest größtenteils diese Zwischenschicht, da Du da auf den Interfaces der ADO-Komponenten arbeiten kannst. Problematisch wird das nur, wenn Deine Datenbanken unterschiedliche SQL-Syntax haben (z.B. inner/outer Joins bei Oracle und SQL Server). Ich bin derzeit dran da ein entsprechendes Framework zu bauen das auch SQL-Dialekt-unabhängig ist, aber das ist derzeit noch weit davon entfernt produktiv einsetzbar zu sein. Und wenn wird das auch nicht gerade billig sein ;-) Ansonsten schau Dir mal ECO II an. Das soll sowas auch recht gut können. |
Re: Datenbank Abstraktionsschicht
Hallo,
DBExpress lässt sich wunderbar per DLL für beliebige Datenbanken erweitern. Ich hab mir selbst darauf aufbauend eine Komponente gebaut, die auf verschiedene Datenbanken zugreifen kann (momentan mySQL, DB2, Oracle und MSSQL). Da ich leider momentan keinen Zugang zu den verschiedenen Datenbanken habe, konnte ich nur mySQl und DB2 testen. Gruß xaromz |
Re: Datenbank Abstraktionsschicht
Es gäbe auch noch die Möglichkeit ODBC zu verwenden. Oder für vorhandene Abstraktionsframeworks ( z.B. ZeosDBO) weiter Zugriffsschicht für ADS implementieren.
|
Re: Datenbank Abstraktionsschicht
Hi,
wenn Ihr wirklich ne Abstraktionsschicht braucht, dann schreib Dir eine! Damit hast Du zum einen wirklich eine Datenbankunabhängigkeit, da für jede neue DB eine weitere Klasse fällig wird, zum anderen kannst Du aber in der jeweiligen Klasse die jeweiligen Eigenschaften der Datenbank voll ausnutzen. Du musst einzig und allein sehr fit in OOP sein.... Grüße Lemmy |
Re: Datenbank Abstraktionsschicht
Die Idee kam mir auch schon, klingt verlockend, aber mit der Zeit die ich hab schauts da sehr böse aus ;)
Was spräche gegen ODBC? |
Re: Datenbank Abstraktionsschicht
Zitat:
Zitat:
- Nicht alle Features aller DB's sind über ODBC verfügbar - ODBC ist eh Auslaufmodell (gibts nicht mehr unter Win64) |
Re: Datenbank Abstraktionsschicht
Ich bin ja hier nur der doofe Praktikant... das ich mehrere DB's unterstützen will ist meine eigene Motivation, mein Chef ließe mich am liebsten noch mit Paradox entwickel, zukunftsträchtigkeit interessiert hier keinen, (ich entwickle mit Delphi 5!!).
Hmmm...ok, ODBC fällt damit wohl erstmal Flach...damn...weitere Vorschläge außer selbst Implementieren? |
Re: Datenbank Abstraktionsschicht
Zitat:
Bei MS stehts so ( ![]() ![]() Zitat:
|
Re: Datenbank Abstraktionsschicht
Zitat:
Aber falls es nicht "ausläuft" ist mir das auch egal. Nativer gehts viel Problemloser. |
Re: Datenbank Abstraktionsschicht
Was bedeutet nativ?
Ich habe nicht soviel Ahnung von der hohen schule des Programmierens...damit wir uns nich zu Falsch verstehen: Wenn sich der Änderungsaufwand in grenzen hält würde ich das Prog für jede DB auch etwas anpassen und neu compilieren. Ganz dumm gesagt: Is SQL nich n Standard mit dem ich jede DB ansprechen können sollte? Ist das nicht auch ne gewisse Abstraktionsschicht? Stelle ich mir das zu einfach vor wenn ich sage: Verbinde dich mit dem DB Server bei <Adresse>, logge dich mit <Benutzername, PW> ein und beschieße den Server mit <SQL Statement>? |
Re: Datenbank Abstraktionsschicht
Zitat:
Zitat:
|
Re: Datenbank Abstraktionsschicht
kätzerisch gefragt: und wenn ich breit bin auf diese 5 - 10% zu verzichten?
|
Re: Datenbank Abstraktionsschicht
Zitat:
|
Re: Datenbank Abstraktionsschicht
Zitat:
Die Hersteller sind sehr darauf bedacht mittels spezielle SQL-Features das Anti-Pattern Ventor-Lockin zu betreiben. Denn einmal fest an eine DB gebunden bekommt man sie nicht so einfach wieder los. Also wenn möglich gleich DB-Neutral programmieren. |
Re: Datenbank Abstraktionsschicht
Oder du greifst zu einem Framework, mit dem Datenbankunabhängigkeit relativ schnell und einfach zu erreichen ist, wie z.B. RemObjects in Verbindung mit DataAbstract von RemObjects (
![]() Das ist zwar nicht ganz billig, soll aber sehr gut sein. |
Re: Datenbank Abstraktionsschicht
Hi,
SQL sprechen zwar alle SQL-Datenbanken, das bringt aber auch nichts, so lange die Datenbank die SQL-Statements nicht empfängt. Dazu braucht man nun mal Komponenten, oder du sprichts die API direkt an, was aber auch wieder bei den DBs unterschiedlich geht. Eine DB-Abstratktionsschicht zu machen ist nicht wesentlich aufwändiger als ohne zu programmieren, allerdings kommt es sehr auf deine Anwendung an: Wenn Du eine Objektorientierte Struktur hast (d.h. eine Klasse TAdresse), dann macht das schon Sinn. Wenn Du aber mit datensensitiven Komponenten arbeitest, dann bringt dir die Abstraktionsschicht erst mal nichts, bzw. es ist ein höherer Aufwand notwendig. Zu Paradox: Auch ich wurde hier in meiner neuen Arbeitsstelle "genötigt" mit Paradox und der BDE zu arbeiten (ein neues Produkt zu entwickeln). Nach 4 Monaten diskutierens hatte ich die Leute endlich so weit, dass wir die BDE über Bord geworfen haben und zu TurboDB gewechselt sind. Der Wechsel war an einem Tag erledigt! Vielleicht solltest Du dir deshalb nicht so viele Gedanken über die BDE machen und schon gar nicht über Delphi 5. Grüße Lemmy |
Re: Datenbank Abstraktionsschicht
Die Aussagen meines Vorredners kann ich nur unterstreichen. Ich habe bis zu meinem Update auch ausschließlich mit Delphi 5 gearbeitet. Meines Erachtens ist Delphi 5 für Win32-Anwendungen genauso gut geeignet, wie ein aktuelles Delphi. Die Umstellung eines Projektes von Delphi 5 auf D2006 ist bei mir völlig problemfrei gegangen.
|
Re: Datenbank Abstraktionsschicht
Zitat:
|
Re: Datenbank Abstraktionsschicht
Zitat:
Ganz einfach: Zum einen lief die bestehende Applikation seit 5 Jahren stabil mit der BDE, sie waren der Ansicht, dass für kleine Nachschlagetabellen die BDE vollkommen ausreichend wäre und dass sie genug Erfahrung mit der BDE haben um alle Probleme zu beseitigen. Die Applikation die ich entwickelt habe, speichert die Projektdaten in XML-Files, die BDE / Paradox wurde nur dazu verwendet Stammdaten zu verwalten. Es gab also keine großen Datenmengen, aber mit XML hatten wir zu wenig Erfahrung um auch diese Daten gleich von Anfang an in einer XML-DB zu speichern. Während der Entwicklung habe ich mehrere Anläufe genommen, um die BDE zu ersetzen, bin aber immer bei meinem Arbeitgeber nicht weitergekommen. Allerdings hat es in der ersten Betatestwoche bei 2 Kunden die Paradox-Netzwerkeinstellung zerblasen, so dass schließlich auch er eingesehen hat, dass die BDE nichts mehr bringt, außer vielleicht Probleme. Der Umstieg auf TurboDB war wie gesagt an einem Tag erledigt. Grüße Wolfgang |
Re: Datenbank Abstraktionsschicht
Naja, es ist schon frustrierend, wenn man an der Studieneinrichtung vom neuesten Zeug hört (zumindest bei einigen Dozenten) und dann mit Tools von gestern entwickeln muß.
:-/ Hab mir jetzt mal Visual Studio Enterprise gezogen...ma schauen was damit geht... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:06 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 by Thomas Breitkreuz