Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Crossplattform Software Entwicklung MSSQL / MYSQL (https://www.delphipraxis.net/205109-crossplattform-software-entwicklung-mssql-mysql.html)

bernhard_LA 1. Aug 2020 15:20

Datenbank: MSSQL • Version: 12 • Zugriff über: FIREDAC

Crossplattform Software Entwicklung MSSQL / MYSQL
 
wir haben dieses einfache SQL statement unter MSSQL in Verwendung

Delphi-Quellcode:
CREATE TABLE TableName (
  RecordIndex int IDENTITY PRIMARY KEY,
  .....
  ...
  )

leider versteht MYSQL nicht was IDENTITY PRIMARY KEY bedeutet, gibt es hier eine Lösung welche beide Datenbank Systeme verstehen ?
Den Datentyp image haben wir bei MSSQL bisher immer verwendet, vermutlich gibt es hier eine Lösung für beide DB Server im DB Typ : BLOB,

Ich würde am liebsten MSSQL auf der Windows seite mit ADO verwenden, auf der UNIX Seite dann Firedac mit MYSQL oder SQlite ..... -
bin bereit nur die Schnittmenge von auf jedem DB Server unterstützen SQL CMD#s dafür zu verwenden

Delphi.Narium 1. Aug 2020 15:33

AW: Crossplattform Software Entwicklung MSSQL / MYSQL
 
Suchmaschine + Datentypen MSSQL MySQL liefert mir u. a. dashier: https://docs.microsoft.com/de-de/sql...l-server-ver15

Wie auf die Datenbanken zugegriffen wird, ob ADO oder FireDac oder ... sollte egal sein.

Dein "einiziges" Problem ist, die Unterschiede zwischen dem SQL-Standard zu kompensieren.

Ist so ähnlich wie der Unterschied zwischen einem Sprungbrett: Je höher desto platsch.

Was ist der Unterschied zwischen SQL: Je kompatibler desto unwahrscheinlich.
Ok: Ist vielleicht etwas übertrieben.

himitsu 1. Aug 2020 16:33

AW: Crossplattform Software Entwicklung MSSQL / MYSQL
 
Da wirdst wohl nur mit ORMs und Änhlichem einen gemeinsamen Konsens finden können.

Die Objekte sind überall gleich, aber wie dann die Verbindung zur DB passiert, das kann überall total unterschiedlich sein.

Uwe Raabe 1. Aug 2020 17:13

AW: Crossplattform Software Entwicklung MSSQL / MYSQL
 
Eigentlich sollte FireDAC das korrekt umsetzen, wenn du das CreateTable von TFDTable verwendest. Die Felder und Indizes müssen dann vorher in den FieldDefs und IndexDefs angelegt werden.

jobo 2. Aug 2020 02:27

AW: Crossplattform Software Entwicklung MSSQL / MYSQL
 
Das sind sicher nicht die einzigen Probleme, wenn Du MSSQL wie mySQL betreiben willst.

Die Anpassung der Datenmodellscripte wird vermutlich insgesamt auch nur ein Problembereich sein.

Warum willst Du mySQL einsetzen?

Redeemer 2. Aug 2020 15:44

AW: Crossplattform Software Entwicklung MSSQL / MYSQL
 
IDENTITY ist unter MySQL AUTO_INCREMENT.
Normalerweise finde ich die Syntax von MSSQL ziemlich gut, aber was sie sich bei dem Namen IDENTITY gedacht haben...

Zitat:

Zitat von bernhard_LA (Beitrag 1470988)
bin bereit nur die Schnittmenge von auf jedem DB Server unterstützen SQL CMD#s dafür zu verwenden

Wie jobo schon sagte: Es gibt zahlreiche Unterschiede zwischen MSSQL und MySQL. In einigen Fällen kann man sich auf einen kleinsten gemeinsamen Nenner einigen (einige wenige Dateitypen wie int und varchar, Funktionen wie CURRENT_TIMESTAMP), aber spätestens bei der Nutzung der allermeisten Funktionen und bei komplexeren Tabellendesigns ist es dann vorbei und du musst unterschiedliche SQL-Template für die Datenbanksysteme mitliefern. Es scheitert halt schon an so etwas einfachem wie der Erstellung einzigartiger Zeilennummern wie im Beispiel.

jobo 2. Aug 2020 17:47

AW: Crossplattform Software Entwicklung MSSQL / MYSQL
 
Die Art eine eindeutige ID für eine Spalte zu erzeugen, ist ja nicht das problematischste, hier kann man zur Initialisierung unterschiedliche Scripte nehmen und fertig.
Spannender ist dann bspw. der Zugriff auf die neueste ID, weil man sie in einem abhängigen Datensatz als FK nutzen muss.
Hier liegen glaub ich schon eher Welten zwischen mySQL und MS SQL. Außer in V8 hat mySQL diese Last Used Pfriemelei mal bereinigt.

Vielleicht können beide Sequenzen? Da ich keines der Systeme nutze, weiß ich es nicht. Sequencen wären jedenfalls ein Quasi Standard. (Keine Ahnung was ANSI SQL da gern hätte)

Aber noch mal meine Frage, warum mySQL oder welches Cross aus Cross Plattform soll es denn sein?
(Jeder nur ein Kreuz bitte!)

Bernhard Geyer 2. Aug 2020 18:09

AW: Crossplattform Software Entwicklung MSSQL / MYSQL
 
Wieso AutoInc-Felder.
Ich würde auf GUID setzen?
Keine Probleme mit Replikation und auch Füllen mit Testdaten für Regressionstest einfacher zu hanbhaben.

QuickAndDirty 3. Aug 2020 09:52

AW: Crossplattform Software Entwicklung MSSQL / MYSQL
 
Evtl. in beiden systemen auf AUTO INCREMENT verzichten und in beiden System auf einen Trigger setzte...
Allerdings weiß ich nicht wie incompatibel PL-SQL ist...

Insgesammt ist SQL so beschissen incompatibel gehalten, dass du vermutlich auf eine Factory setzen musst die deine SQLS Statements für verschiedene SQL-Server compatibel erstellt.
TFDTable müsste intern auch so eine Factory benutzen.

Oder du machst es so, dass der SQL-Servertyp teil der einstellungen ist und du erzeigst im Code je nach einstellung SQL-Statements für den passenden Server...So mache ich das weitestgehend...

Nur an einer stelle nicht...in der Mobilen App...da setze ich auch auf den kleinsten gemeinsamen nenner von Firebird, MSSQL und MariaDB

Uwe Raabe 3. Aug 2020 10:10

AW: Crossplattform Software Entwicklung MSSQL / MYSQL
 
Zitat:

Zitat von QuickAndDirty (Beitrag 1471033)
TFDTable müsste intern auch so eine Factory benutzen.

In der Tat. FireDAC bringt für die verschiedenen DB-Server jeweils eigenen Implementierungen mit, die sich um solche Unterschiede kümmern. Setzt man das konsequent ein, beschränkt sich ein Wechsel von einem System zu einem anderen auf die Änderung der Connection-Parameter.


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