Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Datenbank Auswahl (https://www.delphipraxis.net/152233-datenbank-auswahl.html)

delphiRenorm 16. Jun 2010 07:18

Datenbank: Access • Version: 2007 • Zugriff über: ADOConnection

Datenbank Auswahl
 
Hallo zusammen,

Ich arbeite derzeit an einem sehr umfangreichen Datenbank-Projekt, dass die Organisation unseres Schwimmvereins deutlich vereinfachen soll. Wir haben die Datenbank derzeit mit Access konstruiert und diese umfasst mehr als 50 Tabellen. Das ganze System soll später auf unserem Server liegen und mittels Desktop-Anwendung von bis zu 10 Trainern/ Benutzern gleichzeitig angesteuert werden.
Ziel ist es zum einen Mitglieder zu verwalten, die Ausbildung, Wettkämpfe und Kurse, bzw. Module zu steuern und einen E-Mail-Client für newsletter zu implementieren. Das ganze soll dann optisch auf vordermann gebracht werden, ein wenig windows 7 style, und mit ein paar extras (wie kalender) versehen werden- also nen haufen arbeit.
Für mich ist Datenbank-Programmierung in diesem großen Sinne Neuland (vorher mal eine recht kleine Kontakt-verwaltung geschrieben), doch wir sind zu Dritt und haben auch nicht großartigen Druck, mit dem Zeitpunkt der Fertigstellung.

Die Frage die ich mir stelle ist, wie ich ein solches System am besten realisiere. Sollte ich das ganze über ADO abwicklen, da hab ich mich gerade eingelesen? Ist der Aufbau über Access der richtige? was muss ich in Bezug auf Sicherheit und der Realisierung beachten,...
komponentenentwicklung ist natürlich dann der nächste punkt, aber es geht zunächst erstmal darum, dass ich nich direkt am anfang das falsche system ausgewählt habe und ich mein delphi-projekt nach 3 monaten in die Tonne kloppen kann.

Euch schon mal vielen dank

s.h.a.r.k 16. Jun 2010 07:21

AW: Datenbank Auswahl
 
Also Access würde ich imho nicht empfehlen, da die DB sehr langsam wird, wenn mehrere User darauf zugreifen (zumindest meiner Erfahrung nach). Ich denke, dass Access selbst für so etwas auch nicht vorgesehen ist. PostgreSQL oder MySQL eignen sich da beispielsweise schon besser. Interessant sind sicherlich auch NoSQL-Datenbank, wie CouchDB. Welche man wählt hängt dann wiederrum von vielen Faktoren ab, aber entscheident wäre es, wenn eh ein Server am laufen ist, dass es die DB ein Client/Server-System ist. Diese Datenbanken können auch mit einer größeren Anzahl an gleichzeitigen Zugriffen ohne Probleme fertig werden, es sei denn der Programmierer macht noch Fehler :mrgreen:

schlecki 16. Jun 2010 07:25

AW: Datenbank Auswahl
 
bei 10 erwarteten Benutzern würde ich auf keinen Fall Access verwenden, sondern einen richtigen Server. Google mal nach Firebird oder zur Not auch MS-SQL Express (ist kostenlos von MS).

s.h.a.r.k 16. Jun 2010 07:30

AW: Datenbank Auswahl
 
Hier mal noch eine kleine Liste der normalen Client/Server-Datenbanken, die nicht unbedingt vollständig sein muss:
  • MySQL
  • PostgreSQL
  • MS SQL Express
  • Oracle Database Express Edition
  • Firebird
  • und gibts nicht auch eine kostenlose DB2-Version?

MrSpock 16. Jun 2010 07:31

AW: Datenbank Auswahl
 
Firebird wäre eine gute Wahl. Mit D2010 Prof solltest du damit bereits Zugriffskomponeneten haben, ansonstenist FibPlus als Zugriffskomponente empfehlenswert, aber nicht kostenlos.

Bernhard Geyer 16. Jun 2010 07:39

AW: Datenbank Auswahl
 
Ich würde mir gleich überlegen ob es wirklich noch eine "normale" C/S-Desktopanwendung sein muss? Über kurz oder lang kommt die Anfoderung das von "Zu Hause" über den Browser abfragen zu können. Hier wäre gleich die überlegung ob man es mit der Webtechnik seiner Vorliebe realisiert.

s.h.a.r.k 16. Jun 2010 07:46

AW: Datenbank Auswahl
 
Wobei man hier auch wieder einen Webservice einrichten könnte ;) Klar, ist wieder etwas mehr Aufwand, aber eine Browseranwendung fühlt sich einfach nicht so wie eine normale Desktopanwendung an. Ebenso ist man im Browser immer noch etwas eingeschränkt (in so fern man es mit JavaScript/HTML/CSS/serverseitigen Skriptsprache löst).

delphiRenorm 16. Jun 2010 07:51

AW: Datenbank Auswahl
 
Hi super,
Danke für die vielen und schnellen Antworten.
Bei MySQL hab ich an verschiedenen Stellen gelesen, dass Verknüpfungen der Datenbanken schwierig erscheint, oder überhaupt nicht durchgeführt wird, aber da lasse ich mich gern eines bessern belehren.
wie sieht das bei firebird aus?
Ich denke eine Desktop-Anwendung wäre schneller und stabiler, da vom visuellen her das programm schon einiges abverlangen wird und viele methoden aufgerufen werden sollen (unabhängig von datenbank-abfragen).
der server läuft über ein linux-system (ich glaube debian) wäre das dabei nicht auch ein problem, wenn ich das ganze strickt Delphi-basiert aufbauen will?

s.h.a.r.k 16. Jun 2010 07:55

AW: Datenbank Auswahl
 
MySQL kann in der Zwischenzeit mit Trigger und Foreign Keys (-> InnoDB) umgehen, ergo solltest da weniger Probleme haben. Seit genau welcher Version weiß ich gerade auswendig nicht, aber da nimmst halt einfach die neueste und gut is :mrgreen: Über Firebird kann ich leider keine Aussage machen, da ich damit noch nie gearbeitet habe. PostgreSQL soll insgesamt auch sehr mächtig sein, wobei ich darüber auch nur was gehört hab :)

Stabiler? Wenn eine Webanwendung gut programmiert ist, dann ist die auch stabil ;) In der Zwischenzeit sind auch alle JavaScript-Engines ausreichend schnell für schöne Applikationen -- vorausgesetzt man nutzt einen modernen Browser.

Wenn du unter Linux was programmieren willst, dann kannst du das mit Lazarus machen (IDE für FreePascal, was unter sehr vielen System compilieren kannst).

delphiRenorm 16. Jun 2010 08:08

AW: Datenbank Auswahl
 
Hab mich glaube falsch ausgedrückt, ich will die Anwendung halt nicht auf dem Server laufen lassen, weil ich das ganze mit Delphi verwirklichen will, da kenn ich mich, sagen wir einigermaßen, aus.
Für die Webanwendung müsste ich das ganze doch auch über den Server laufen lassen und habe meine Client-Anwendungen die bestimmte Routinen abgreifen und dem User zur Verfügung stellen. Ich hatte im Kopf, dass die berechtigten Nutzer das Programm auf Ihrem Heimpc haben und dann die Datenbank abrufen. Das ganze Programm läuft dann über den eigenen Rechner und die Verbindung zum Server kann allein von dem Datenbank-Transfer genutzt werden.
Ich hab so das Gefühl, das ich beim Programmieren einer Webanwendung noch mehr gewohnten Boden unter den Füßen verliere

Bernhard Geyer 16. Jun 2010 08:12

AW: Datenbank Auswahl
 
Zitat:

Zitat von delphiRenorm (Beitrag 1029204)
HIch hatte im Kopf, dass die berechtigten Nutzer das Programm auf Ihrem Heimpc haben und dann die Datenbank abrufen. Das ganze Programm läuft dann über den eigenen Rechner und die Verbindung zum Server kann allein von dem Datenbank-Transfer genutzt werden.

Und wie sicherst du deine Verbindung zur Datenbank ab? VPN? SSL? Datenbanken die "offen" im Internet hängen haben so die Angewohnheit per Zero-Day-Exploid oder über einfache Passwörter gehackt zu werden. Und bei einer Vereins-DB kann schon einiges relevante in der DB drin sein (Bankverbindungsdaten, ...)

s.h.a.r.k 16. Jun 2010 08:12

AW: Datenbank Auswahl
 
Die Idee der Webanwendung ist natürlich nicht ganz schlecht, da es eben so ist, dass der Cheffe unterwegs in Italien halt noch schnell via Smartphone etwas ändern könnte :mrgreen: Aber wenn das nicht die Anforderung ist, dann reicht mit Sicherheit vorerst mal eine Dephianwendung mit einer passenden Datenbank. Das einzige was vielleicht ein Problem machen könnte ist die Bandbreite, wobei ich eben nicht weiß, wo der Server platziert ist. Aber für 10 Personen dürfte das an sich auch noch okay sein.

delphiRenorm 16. Jun 2010 08:33

AW: Datenbank Auswahl
 
Die Sicherheit ist halt die nächste Frage. Die ist bei einer solchen Realisierung halt etwas schwieriger zu gewährleisten. Bankverbindungen werden wir nicht aufnehmen, aber die daten die bei uns drin stehen werden, reichen auch aus, um genügend interessant für andere zu sein, E-mails, Adressen, Alter, Verwandtschaften,...

Eine sichere Verbindung ist eine Sache, nur muss das ganze auch auf dem Server genügend abgeschottet sein.

@ S.H.A.R.K.: Schön wäre das sicherlich, wenn man so flexibel würde, nur das Einarbeiten in den Rest ist mir wahrscheinlich schon genug. Ich würde das wahrscheinlich auf Version 2.0 verschieben, auch wenn dann das ganze Projekt grundlegend überarbeitet werden müsste.

idefix2 16. Jun 2010 08:57

AW: Datenbank Auswahl
 
Für so einen Zweck würde ich keine Webanwendung machen. Am Server einen Terminalserver installieren, und schon kann man die Application übers Internet von überall ausführen. Browseranwendungen bieten nicht den Bedienungskomfort von guten "lokalen" Oberflächen, zumindest ist mir noch keine untergekommen. Webanwendungen sind m.E. nur sinnvoll, wenn auch völlig Aussenstehende zugreifen sollen, wie z.B. bei einem Webshop.

Firebird als Datenbank kann ich sehr empfehlen. Hat Erweiterungen zum SQL Standard, die das Programmieren wesentlich erleichtern, und ist sehr schnell. Nachteil: Für Gross-Kleinschreibungsinsensitive Sortierung muss man tricksen. Dass man da nicht daran gedacht hat, benutzspezifische Sortierfolgen direkt zu unterstützen, verstehe ich nicht. Eine solche SQL-Erweiterung "Create Collation" wäre mit mimimalem Programmieraufwand realisierbar.

delphiRenorm 16. Jun 2010 09:53

AW: Datenbank Auswahl
 
Die Frage bleibt, wie das mit der Sicherheit aussieht?
Wie regel ich den Datenzugriff für mehrere Benutzer (gleichzeitig)
und einer Desktop-Anwendung, ohne dabei nahezu freien Zugang von Fremden
auf die sensible Daten zu ermöglichen?

Bummi 16. Jun 2010 10:16

AW: Datenbank Auswahl
 
z.B.
MS-Sqlserver
Port 1433 offenlassen
Rechte in der Datenbank vergeben
Per ADO-zugreifen
Nur allzu umfangreiche Listenansichten solltest Du bei einer dünnen Anbindung vermeiden.

mkinzler 16. Jun 2010 10:23

AW: Datenbank Auswahl
 
Oder über anderen Port Verschlüsseln/Tunneln (Zedebee, stunnel, ...)

idefix2 16. Jun 2010 12:43

AW: Datenbank Auswahl
 
Mit einem Terminal Server kannst Du den Zugriff auf das Verzeichnisse der Platte, wo die Anwendung liegt, beschränken, und die Programmverzeichnisse mit read only Berechtigung ausstatten. Zugang über Benutzername und Password so wie auf einem lokalen Rechner geschützt.

DelphiBandit 16. Jun 2010 14:21

AW: Datenbank Auswahl
 
Zitat:

Zitat von idefix2 (Beitrag 1029226)
Dass man da nicht daran gedacht hat, benutzspezifische Sortierfolgen direkt zu unterstützen, verstehe ich nicht. Eine solche SQL-Erweiterung "Create Collation" wäre mit mimimalem Programmieraufwand realisierbar.

Bißchen OT, aber das gibt es doch seit Version 2.1 -> siehe CREATE COLLATION.
Hier noch eine Referenz. Ohne es ausprobiert zu haben, aber sieht so aus als kann man mit diesem Kommando auch eigene Sortierungen einbinden.

Zum Thema Datensicherheit und der Anbindung von "Außenstellen" an die Datenbank wäre OpenVPN noch eine gute Lösung (Win/Linux). Unterstützt intern eine Art DHCP-Server für verbundene Benutzer und darüber lässt sich dann alles tunneln (RDP / Firebird / MySQL). Man hat allerdings einmalig den Aufwand der Zertifikatserstellung. Wenn es aber erstmal läuft erfordert es aber keinerlei Wartung mehr. Außer vielleicht ab und zu die Schlüssel/Zertifikate zu erneuern.

idefix2 16. Jun 2010 14:39

AW: Datenbank Auswahl
 
Bißchen OT, aber sehr hilfreich :)

Ich habe das beim Studium der Firebird Doku offenbar übersehen, obwohl ich gezielt nach so einer Möglichkeit gesucht habe.:shock:
Aber auch in einem anderen Thread, den ich zum Thema Zeichensätze und Sortierung hier im Forum eröffnet habe, ist kein Hinweis auf diese relativ neue Möglichkeit gepostet worden. Danke.

Ein Grund mehr, Firebird einzusetzen :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:55 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