AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Die richtige Datenbank- und Komponentenwahl

Ein Thema von ByTheTime · begonnen am 1. Nov 2014 · letzter Beitrag vom 2. Nov 2014
Antwort Antwort
ByTheTime

Registriert seit: 24. Sep 2011
Ort: Frankfurt
297 Beiträge
 
Delphi XE2 Architect
 
#1

Die richtige Datenbank- und Komponentenwahl

  Alt 1. Nov 2014, 14:41
Hallo,
ich habe vor ein älteres aber immer noch in Benutzung befindliches Programm mal auf den neusten Stand der Technik zu befördern Dazu hätte ich allerdings ein paar Fragen was die Datenbank- und Komponentenwahl angeht. Bevor ich darauf eingehe erstmal ein bisschen Text

Das Programm um was es sich handelt ist in Delphi 5 begonnen und dann immer von mir upgegraded und weiterentwickelt worden. Es ist eigentlich das erste "größere" Projekt was ich jemals in Angriff genommen habe und es, kurz nachdem ich Delphi gelernt habe, begonnen (Dementsprechend sieht auch die Source aus. Da ich immer mehr dazugelernt habe und sich mein Programmierstil entsprechend geändert hat, ist das wirklich kein schöner Anblick ). Aber es funktioniert halt!
Es handelt sich um eine Protokoll-Software die im Moment von ca. 5-7 Leuten aus meinem Bekanntenkreis regelmäßig benutzt wird. Ich kenne allerdings noch einige Leute die das Programm gerne verwenden würden, allerdings scheitert es an einigen Punkten:
  • Nicht jeder hat einen Windows Rechner
  • Nicht jeder hat Excel (wird für den Excel Export benötigt, der eines der begehrtesten Features ist)
  • Nicht jeder hat die Zeit sich immer an den PC zu setzen und mit der Software zu arbeiten
  • Als "DB" kommt eine MyBase Tabelle zum Einsatz. Daher ist man auf einen Rechner beschränkt, ein Datenaustausch mit anderen Rechnern (z.B. PC Zuhause und Rechner auf der Arbeit) ist nicht möglich

Das Programm wollte ich daher mal komplett neu aufsetzen und um einige Features, eine schönere UI und sogar um eine Android App erweitern.

Jetzt habe ich dazu, wie angekündigt ein paar Fragen:
  1. Meine Erfahrung mit "richtigen" Datenbanken beträgt gleich Null. Ich habe vor einiger Zeit nur mal mit der guten, alten BDE gearbeitet Da ich ja eine Systemübergreifende App entwickeln möchte, in welcher die Daten der Benutzer praktisch "in der Cloud" sind, bietet sich ja eine Lösung mit einer DB auf einem zentralen Server an. Ich hätte da jetzt an MySQL oder MariaDB gedacht, für jeden Benutzer gibt es eine Tabelle mit dessen Daten die ich dann abrufen kann. Gibt es da Einwände, Probleme oder Vorschläge von eurer Seite? Und noch eine ganz wichtige Sache: Wie sieht es denn da mit den Lizenzen aus? Da ich das Projekt finanziell alleine trage und auch kein Geld für die Software verlange, würde ich ungern noch Lizenzen erwerben oder gar in eine Lizenzfalle treten.
  2. Da ich eine Android App entwickeln möchte, müsste ich sowieso mein Delphi upgraden. Das wird dann wahrscheinlich auf XE7 (oder eventuell XE8 hinauslaufen da auf der Roadmap ja WindowsRT gelistet ist). Da ist ja auch FireDAC dabei. Hat jemand schon Erfahrung mit FireDAC gesammelt und ist das für mein Vorhaben zu empfehlen? So wie ich das verstanden habe ist FireDAC eine plattformunabhängige Datenzugriffsbibliothek, das heißt ich spare mir den Weg über den MySQL ODBC-Treiber und DLL's wie die libmysql.dll Oder habe ich da jetzt was durcheinander geworfen
  3. Noch einen letzten Punkt der mir schon die ganze Zeit nicht aus dem Kopf geht. Der ist zwar schon etwas weitreichend, aber vllt. kann ja jemand meinen Horizont erweitern Wenn ich jetzt alle Daten auf einem Server ablege und der Benutzer hat mal keine Internetverbidung... Was ist den dann? Klar, er kommt nicht mehr an seine Daten, kann Sie weder abrufen, noch editieren. Aber wie kann ich solche Probleme den umgehen? Am liebsten wäre mir ja eine lokale DB die ich mit der MySQL-Tabelle synchronisiere, aber ist das nicht für den Anfang schon wieder viel zu kompliziert? Was git es noch für Lösungsansätze für solch ein Problem?

So... Ich hoffe ich konnte euch vermitteln was mir gerade so durch den Kopf geht und freue mich auf eure Antworten

Gruß,
Lukas
Lukas

Geändert von ByTheTime ( 1. Nov 2014 um 14:45 Uhr)
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#2

AW: Die richtige Datenbank- und Komponentenwahl

  Alt 1. Nov 2014, 15:31
Wenn es mit Synchronisierung sein soll, dann vielleicht local sqlite überall, wird es wohl bei Android sowieso werden.
Als DB mySQL, MariaDB, Firebird, Postgres, .. by mySQL gibt es u.U. ein Lizen (Kostenproblem), in Deinem akuten Fall aber wohl auch nicht.
Zu aktuellen Delphiversionen und Firedac kann ich leider nichts sagen.
Was mich etwas stutzig gemacht hat waren die Worte "..jeder Nutzer seine Tabelle, auf die ich dann zugreife.."
Idr haben Nutzer keine eigenen Tabellen, sondern alle eine, die dann ggF. nach User im Zugriff gefiltert wird. Bedeutet für die Gesamtschau (Dich), Du brauchst wirklich nur auf eine Tabelle zu schauen und siehst alles. Aber überhaupt, nur eine Tabelle, Server, Synchronisation? Kanonen, Spatzen? Ich kann mir leider unter Protokoll-Software auch wenig Konkretes vorstellen. (Von "Wer steht wo beim Staatsbesuch?" über "Protokoll Schreiben" bis "Protokollanalyse" )
Excel: In Zeiten von OpenDocument Format sollte jeder auch System unabhängig auf seine Kosten kommen.
Insgesamt solltest Du vielleicht etwas Datenbankgrundlagen lernen, damit Du Dich in 6 Monaten nicht wieder über den Mist ärgerst, den Du damals verzapft hast. Wenn es wirklich nur eine Tabelle ist, aber vielleicht auch nicht so dramatisch.
Gruß, Jo
  Mit Zitat antworten Zitat
ByTheTime

Registriert seit: 24. Sep 2011
Ort: Frankfurt
297 Beiträge
 
Delphi XE2 Architect
 
#3

AW: Die richtige Datenbank- und Komponentenwahl

  Alt 1. Nov 2014, 16:22
Hallo,
um deine Vortellung um was es da geht nochmal ein bisschen auszudehnen: Es handelt sich um ein Programm um Trainingsfortschritte im Leistungssport nachzuvollziehen. Man hat praktisch eine GUI mit Feldern, in die Werte eingetragen werden. Über eine Liste lassen sich die verschiedenen Trainingseinheiten anwählen/editiern/löschen und neu erstellen. Je nach Eintrag wird dann mit FindKey der entsprechende Datensatz in der myBase DB gesucht. Nachteil ist neben den bereits genannten auch, das man z.B. nicht immer direkt nach dem Training zuhause ist und direkt alle Daten eintragen kann. Ein Handy App würde das Problem umgehen, dass man nach einiger Zeit sich nicht mehr genau an das Training erinnern kann. Die präzision der Werte ist allerings sehr wichtig.

Mit dem Satz "..jeder Nutzer seine Tabelle, auf die ich dann zugreife.." wahr im Sinne von "Ich" meine Anwendung gemeint Aber ja, dein Vorschlag geht natürlich auch.

Aber du hast wohl Recht, mich erstmal mit SQL auseinanderzusetzen ist wohl der beste Ansatz für dieses Vorhaben.

Was mich auch noch interessiert sind die Tethering Komponenten. Somit könnte ich bei Fehlender Internetverbindung immer noch Daten zwischen mehreren Geräte in einem Netzwerk austauschen (mit die Geräte eines Users zumindestens alle synchron sind).
Lukas

Geändert von ByTheTime ( 1. Nov 2014 um 16:25 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Die richtige Datenbank- und Komponentenwahl

  Alt 1. Nov 2014, 19:01
Bei den Vorgaben würde ich zwangsweise immer auf einem Webserver speichern. REST-Schnittstelle anbieten und mit allen Anwendungen darauf zugreifen. Die Datenbank dahinter ist dann Nebensache und nach aussen hin völlig egal, weil es keine direkten Berührungspunkte gibt.

Lokal ein SQLite (läuft auf allen Plattformen, sonst wäre auch jedes andere lokale DB-System denkbar).
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
ByTheTime

Registriert seit: 24. Sep 2011
Ort: Frankfurt
297 Beiträge
 
Delphi XE2 Architect
 
#5

AW: Die richtige Datenbank- und Komponentenwahl

  Alt 2. Nov 2014, 01:34
Bei den Vorgaben würde ich zwangsweise immer auf einem Webserver speichern. REST-Schnittstelle anbieten und mit allen Anwendungen darauf zugreifen. Die Datenbank dahinter ist dann Nebensache und nach aussen hin völlig egal, weil es keine direkten Berührungspunkte gibt.
Kannst du mir das nochmal etwas ausführlicher beschreiben? Mein Prinzip wäre jetzt gewesen, einfach mit den FireDAC-Kompos 'ne Verbindung zu dem MySQL Server herzustellen. Warum zwangsweiße auf einem Webserver speichern? Und was genau ist den REST ? Aus dem Wikipedia-Artikel dazu bin ich jetzt nicht so schlau geworden. Wie kann mir REST in meinem speziellen Fall weierhelfen?
Lukas
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Die richtige Datenbank- und Komponentenwahl

  Alt 2. Nov 2014, 02:00
Jupp, schau mal da
http://www.delphipraxis.net/1277413-post4.html
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#7

AW: Die richtige Datenbank- und Komponentenwahl

  Alt 2. Nov 2014, 12:07
Mein Prinzip wäre jetzt gewesen, einfach mit den FireDAC-Kompos 'ne Verbindung zu dem MySQL Server herzustellen.
Daß man von Clients über Internet direkt auf den Datenbankserver zugreift ist in der Praxis sehr selten zu finden. Zum einen werden dazu Ports benötigt, die nicht in allen Firewalls offen sind. Auch ist es dann für böswillige Clients leicht möglich Dinge mit dem MySQL Server zu machen, die 'unerwartet' bis 'apokalyptisch' sind.

Für Client/Server Kommunikation gibt es eine einfache Regel: traue niemals einem Client.

Den Client indiekt, über eine HTTP Anbindung, mit dem Datenbankserver, sprechen zu lassen ist ein erster Schritt zur Absicherung, denn der Server wird jede HTTP Anfrage prüfen und erst wenn alles ok ist eine Datenbankanfrage an den MySQL Server erzeugen.

Der Aufwand ist natürlich anfangs größer, aber der mögliche spätere Nutzen steigt auch. Zum Beispiel könnte der Webserver Lastverteilung auf diverse HTTP Server und Datenbanken möglich machen. Auch gesicherte Verbindungen sind über TLS (HTTPS) problemlos möglich. Auch die Benutzerkonten des MySQL Servers werden nicht extern verwendet, Der HTTP Server kann seine ganz eigene anwendungsbezogene Benutzerverwaltung haben, und vieles mehr.
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat
ByTheTime

Registriert seit: 24. Sep 2011
Ort: Frankfurt
297 Beiträge
 
Delphi XE2 Architect
 
#8

AW: Die richtige Datenbank- und Komponentenwahl

  Alt 2. Nov 2014, 14:45
Okay, dann heißt das für mich jetzt erstmal viel viel lesen und basteln

Dankeschön!
Lukas
  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 21:15 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