• Datenbanken Kompatibilitaet

    From Kai Richter@2:240/77 to Alle on Wed Sep 13 18:38:52 2023
    Hallo Echo!

    Manche Software Lösungen bauen auf einer Datenbank auf.
    Für SQL gibt es verschiedene, MySQL, MariaDB, PostgreSQL, uvm.

    Ich finde Tutorials, wie man Software installiert, die auf Datenbanken aufbauen. Eine Software kommt als Binary und ist abhängig von mysql.
    Es gibt ein Tutorial, welches eine Anpassung an PostgreSQL vornimmt, aber dazu ist eine Neu-compilierung erforderlich und diese möchte ich eigentlich vermeiden.

    Ich habe bereits gelernt, dass verschiedene SQL Server verschiedene SQL Befehle unterstützen. Wie stark ist Software mit der Datenbank verzahnt, wenn da SQL gesprochen wird, ist die Datenbank dann kompatibel?

    Tschuess

    Kai

    --- GoldED+/LNX 1.1.4.7
    * Origin: Augen zu und rein ins Fettnaepfchen. (2:240/77)
  • From Sebastian Raase@2:240/8001 to Kai Richter on Fri Sep 15 23:19:57 2023
    Hallo,

    Ich habe bereits gelernt, dass verschiedene SQL Server verschiedene SQL Befehle unterstützen. Wie stark ist Software mit der Datenbank verzahnt, wenn da SQL gesprochen wird, ist die Datenbank dann kompatibel?

    meine Erfahrung ist, dass SQLite strenger mit der Syntax (z.B. den Anfhrungszeichen) ist als MySQL, zumindest haben meine MySQL-Beispiele immer direkt Fehlermeldungen geworfen.

    MySQL und MariaDB sollten kompatibel sein, weil gleicher Ursprung, Postgres kenne ich nicht.

    Neben der Syntax ist auch relevant, wie die Anwendung mit der Datenbank kommuniziert, da gibt es wahrscheinlich auch Unterschiede.

    Wenn die Anwendung auf verschiedene Datenbanken angepasst werden kann, dann gibt es dafuer sicherlich gute Gruende.

    Gruss,
    Sebastian

    --- Mystic BBS v1.12 A43 2019/03/03 (Windows/32)
    * Origin: BlackICE BBS (BlackICE.BBSindex.com:23) (2:240/8001)
  • From Gerhard Strangar@2:240/2188.575 to Kai Richter on Sat Sep 16 06:54:56 2023
    Am 13 Sep 23 18:38:52 schrob Kai Richter an Alle zum Thema
    <Datenbanken Kompatibilitaet>

    Ich habe bereits gelernt, dass verschiedene SQL Server verschiedene SQL Befehle unterstuetzen. Wie stark ist Software mit der Datenbank verzahnt, wenn da SQL gesprochen wird, ist die Datenbank dann kompatibel?

    In Postgres stehen die User z.B. nicht in einer Tabelle namens mysql.user. Aber wenn es ein Tutorial gibt, weisst Du doch, an welchen stellen es anders ist.



    Tschoe mit Oe
    Gerhard
    ---
    * Origin: (2:240/2188.575)
  • From Kai Richter@2:240/77 to Gerhard Strangar on Sat Sep 16 11:33:02 2023
    Tag auch Gerhard!

    Am 16 Sep 23, Gerhard Strangar schrieb an Kai Richter:

    wenn es ein Tutorial gibt, weisst Du doch, an welchen stellen es
    anders ist.

    Das Tutorial ist für die Datenbank benutzende Software, geht also nur auf die Installation ein. Ich zwischen habe ich etwas bessere Suchstichwörter gefunden, es gibt sehr umfangreiche Beschreibungen der Differenzen.

    Wenn ich das richtig überflogen habe, dann fehlen manche Schlüsselwörter bei sql Anweisungen. Auf den MariaDB Webseiten sieht man, dass die Entwicklung sich immer weiter vom Original mysql entfernt.

    Das würde leider bedeuten, dass Software wirklich speziell auf die im Hintergrund laufende Datenbank angepasst sein müsste, einen Mindeststandard der kompatibel mit allen DB-Servern ist, scheint es nicht mehr zu geben.

    Damit stehe ich vor der Qual der Wahl der strategischen Ausrichtung.

    Tschuess

    Kai

    --- GoldED+/LNX 1.1.4.7
    * Origin: Kuckuck! (2:240/77)
  • From Ulrich Schroeter@2:240/1120 to Kai Richter on Thu Sep 21 21:53:06 2023
    moin Kai,

    16 Sep 23 11:33, from Kai Richter -> Gerhard Strangar, in URL area://PGMRS.GER?msgid=2:240/77+65057840:
    Tag auch Gerhard!
    Am 16 Sep 23, Gerhard Strangar schrieb an Kai Richter:
    wenn es ein Tutorial gibt, weisst Du doch, an welchen stellen es
    anders ist.

    Das Tutorial ist für die Datenbank benutzende Software, geht also nur
    auf die Installation ein. Ich zwischen habe ich etwas bessere Suchstichwörter gefunden, es gibt sehr umfangreiche Beschreibungen der Differenzen.

    Wenn ich das richtig überflogen habe, dann fehlen manche
    Schlüsselwörter bei sql Anweisungen. Auf den MariaDB Webseiten sieht
    man, dass die Entwicklung sich immer weiter vom Original mysql
    entfernt.

    Das würde leider bedeuten, dass Software wirklich speziell auf die im Hintergrund laufende Datenbank angepasst sein müsste, einen Mindeststandard der kompatibel mit allen DB-Servern ist, scheint es
    nicht mehr zu geben.

    Damit stehe ich vor der Qual der Wahl der strategischen Ausrichtung.

    bei PHP Anwendungen gibt es die Moeglichkeit eines "Wrappers"
    Die PHP Anwendung selbst hat Pseudo SQL Aufrufe die dann ueber einen Switch zu den jeweils individuellen Datenbank Subroutinen fuehren.
    So gibt es beispielsweise eine Function OpenSQLdb()
    und bei der Einrichtung der Applikation hast du eine Datenbank Schnittstelle wie MSSQL, MySQL, Oracle, PostGre, MariaDB oder was auch immer angegeben und
    dann ruft OpenSQLdb() dann die jeweils spezifische Subroutine OpenSQL DB auf wie es mit dem PHP plugin fuer die jeweilige SQL Version ausschaut.

    Der Switch sieht dann etwa wie folgt aus:

    /* $dbtype = "MySQL"; */
    /* $dbtype = "mSQL"; */
    /* $dbtype = "postgres"; */
    /* $dbtype = "postgres_local";// When postmaster start without "-i" option. */ /* $dbtype = "ODBC"; */
    /* $dbtype = "ODBC_Adabas"; */
    /* $dbtype = "Interbase"; */
    /* $dbtype = "Sybase"; */

    /*
    * sql_connect($host, $user, $password, $db)
    * returns the connection ID

    wobei sql_connect() die Wrapper Funktion ist ..

    und in jedem SQL type spezifischen Subroutine als Wrapper Funktion zur Verfuegung steht

    switch($dbtype) {

    case 'MySQL':
    include("".$the_include."/mysql.php");
    break;

    case 'mysql4':
    include("".$the_include."/mysql4.php");
    break;

    case 'postgres':
    include("".$the_include."/postgres7.php");
    break;

    case 'mssql':
    include("".$the_include."/mssql.php");
    break;


    und in dem jeweiligen Subsegment gibt es dann
    jeweils Aufrufe fuer DB oeffnen

    function sql_db($sqlserver, $sqluser, $sqlpassword, $database, $persistency = true)
    #

    Datenbank schliessen
    function sql_close()


    // Base query method
    //
    function sql_query($query = "", $transaction = FALSE)

    und andere

    Bei MySQL muss im PHP das Modul fuer MySQL mit eingebunden sein,
    damit die PHP function dann funktioniert.

    $this->db_connect_id = @mysql_pconnect($this->server, $this->user, $this->password);


    Wenn es bei einer Applikation ein Subset an Datenbanken als Option zur Verfuegung stehen, muss innerhalb der Applikation dann so ein aehnlicher Wrapper existieren, so das bei Aufruf DB open die jeweilige spezifische Routine fuer DBopen() einmal fuer MySQL, das andere mal fuer MariaDB, usw funktionieren kann ...

    Fuer DBopen koennte das wie folgt aussehen:

    function sql_connect($host, $user, $password, $db)
    {
    global $dbtype;
    switch ($dbtype) {

    case "MySQL":
    $dbi=@mysql_connect($host, $user, $password);
    mysql_select_db($db);
    return $dbi;
    break;;

    case "mSQL":
    $dbi=msql_connect($host);
    msql_select_db($db);
    return $dbi;
    break;;


    case "postgres":
    $dbi=@pg_connect("host=$host user=$user password=$password port=5432 dbname=$db");
    return $dbi;
    break;;


    Fuer MySQL wird mysql_connect() aufgerufen,
    bei mSQL msql_connect()
    und bei PostGres pg_connect()

    Bei PHP hast du dann die unterschiedlichen Extensions

    php_mysql.dll
    php_pgsql.dll
    php_sqlite.dll
    php_sybase.dll
    usw

    die dann per php.ini eingebunden sein muessen


    Dieses Wrapper Verfahren wuerde an sich mit jeder Programmiersprache funktionieren. Nur muss es eben vorgesehen sein, damit es funktioniert ...


    Tschuess
    Kai
    * Origin: Kuckuck! (2:240/77)

    regards, uli ;-)
    --- GoldED-NSF/W32-MINGW 1.1.5-20090710
    * Origin: AMBROSIA - Bad Ueberkingen - Germany (2:240/1120)
  • From Gerrit Kuehn@2:240/12 to Kai Richter on Fri Sep 22 21:06:02 2023
    Hello Kai!

    16 Sep 23 11:33, Kai Richter wrote to Gerhard Strangar:

    Das würde leider bedeuten, dass Software wirklich speziell auf die im Hintergrund laufende Datenbank angepasst sein müsste, einen Mindeststandard der kompatibel mit allen DB-Servern ist, scheint es
    nicht mehr zu geben.

    Gab es den je? Selbst, wenn Du das auf SQL-Datenbanken einschränkst, war das denke ich noch nie so.

    Damit stehe ich vor der Qual der Wahl der strategischen Ausrichtung.

    Man sollte sich vor Beginn eines Projektes ohnehin halbwegs darüber klar sein, was man eigentlich machen will.


    Regards,
    Gerrit

    ... 9:06PM up 549 days, 2:12, 7 users, load averages: 0.42, 0.39, 0.34

    --- msged/fbsd 6.3 2021-12-02
    * Origin: A true lie to believe (2:240/12)
  • From Kai Richter@2:240/77 to Gerrit Kuehn on Sat Sep 23 13:14:50 2023
    Tach auch Gerrit!

    Am 22 Sep 23, Gerrit Kuehn schrieb an Kai Richter:

    einen Mindeststandard der kompatibel mit allen DB-Servern ist,
    scheint es nicht mehr zu geben.

    Gab es den je? Selbst, wenn Du das auf SQL-Datenbanken einschränkst,
    war das denke ich noch nie so.

    Was ich dazu bis jetzt gelesen habe, sagt zumindest zur Zeit des ersten MariaDB Forks eine Kompatiblität zu MySQL aus. Inzwischen entwickeln sich MySQL und MariaDB aber auch auseinander. In einem Tutorial für MariaDB habe ich gesehen, dass maria die selben Programm-Namen wie mysql benutzt, in der Theorie ist maria damit erstmal kompatibel, aber das Tutorial war von 2017 und irgendwo habe ich gelesen, dass sich die unterstützten sql Befehle geändert haben.

    Damit stehe ich vor der Qual der Wahl der strategischen
    Ausrichtung.

    Man sollte sich vor Beginn eines Projektes ohnehin halbwegs darüber
    klar sein, was man eigentlich machen will.

    Hinten soll dann ein eigener Nextcloud Server raus kommen. Die Frage der strategischen Ausrichtung stellt sich bei apache/nginx und mysql/mariadb/postgresql. Wenn dann eh schon ein webserver läuft, dann später vielleicht noch ein roundcube.

    Tschuess

    Kai

    --- GoldED+/LNX 1.1.4.7
    * Origin: Alas 'tis true, I have gone here and there (2:240/77)
  • From Gerrit Kuehn@2:240/12 to Kai Richter on Mon Sep 25 18:48:31 2023
    Hello Kai!

    23 Sep 23 13:14, Kai Richter wrote to Gerrit Kuehn:

    Gab es den je? Selbst, wenn Du das auf SQL-Datenbanken einschränkst,
    war das denke ich noch nie so.

    Was ich dazu bis jetzt gelesen habe, sagt zumindest zur Zeit des
    ersten MariaDB Forks eine Kompatiblität zu MySQL aus.

    Zwangsläufig, war ja auch ein Fork. Aber alle anderen waren sowieso schon immer anders.

    Hinten soll dann ein eigener Nextcloud Server raus kommen. Die Frage
    der strategischen Ausrichtung stellt sich bei apache/nginx und mysql/mariadb/postgresql. Wenn dann eh schon ein webserver läuft,
    dann später vielleicht noch ein roundcube.

    nginx und postgres. Just my 2¢.


    Regards,
    Gerrit

    ... 6:48PM up 551 days, 23:54, 7 users, load averages: 0.23, 0.32, 0.31

    --- msged/fbsd 6.3 2021-12-02
    * Origin: We are a nation of innovations (2:240/12)
  • From Kai Richter@2:240/77 to Gerrit Kuehn on Tue Sep 26 23:07:18 2023
    Tag Gerrit!

    Am 25 Sep 23, Gerrit Kuehn schrieb an Kai Richter:

    Hinten soll dann ein eigener Nextcloud Server raus kommen. Die
    Frage der strategischen Ausrichtung stellt sich bei apache/nginx
    und mysql/mariadb/postgresql. Wenn dann eh schon ein webserver
    läuft, dann später vielleicht noch ein roundcube.

    nginx und postgres. Just my 2¢.

    Das deckt sich mit meinen bisherigen Recherchen, wobei ich jetzt nicht sagen kann wie die Kompatiblität zu späteren Projekten aussieht. Zumindest ist php kein Problem, wenn man da wie von Uli beschrieben Wrapper einsetzen kann. Nextcloud gibt es als angepasstes package für php81,82,83.

    Tschuess

    Kai

    --- GoldED+/LNX 1.1.4.7
    * Origin: Ihr... Ihr... Boah, ihr Praktiker ey! (2:240/77)
  • From Dietmar Schmidt@2:240/2188.186 to Kai Richter on Mon Jan 29 17:00:42 2024
    Hallo Kai,

    vermutlich kommt meine Antwort zu spaet...

    Bei anspruchsvollen Anwendungen kommt es auf die Anwendung an, die meisten Anwendungen haben jedoch keinen hohen Anspruch an die Datenbank. Gerade als "Anfaenger" bzgl. Datenbanken wird es Dir vermutlich mit MariaDB oder MySQL am leichtesten fallen, die meisten Linuxdistributionen setzen derzeit eher auf MariaDB, daher wuerde ich diese vorschlagen, zumal MariaDB auch weiterhin free und quelloffen bleiben wird (bei MySQL kann man das nur hoffen).
    Die Syntax ist meines Wissens noch immer 100% identisch zu MySQL, Unterschiede gibt es im Backend. Die Dokumentation in den Communities ist hervorragend.

    lg
    Dietmar

    Ich habe bereits gelernt, dass verschiedene SQL Server verschiedene SQL Befehle unterstuetzen. Wie stark ist Software mit der Datenbank verzahnt, wenn da SQL gesprochen wird, ist die Datenbank dann kompatibel?

    --- WinPoint 411.0
    * Origin: Original *WinPoint* Origin (2:240/2188.186)
  • From Kai Richter@2:240/77 to Dietmar Schmidt on Mon Jan 29 23:22:32 2024
    Grüß Dich, Dietmar!

    Am 29 Jan 24, Dietmar Schmidt schrieb an Kai Richter:

    vermutlich kommt meine Antwort zu spaet...

    Ehrlich gesagt ja, aber trotzdem Danke!

    vermutlich mit MariaDB oder MySQL am leichtesten fallen, die meisten

    Ich habe jetzt alle drei laufen, warum mit einer zufrieden geben?

    Ok, laufen ist extremst übertrieben. Sie sind jeweils in eigenen jails installiert und ich kann sie sowohl über shell als auch über HeidiSQL/pgAdmin ansprechen. Ich finde die GUI für Anfänger sehr hilfreich, da mir die Struktur etwas übersichtlicher erscheint.

    Meine grösste Hürde war die Erreichbarkeit über das Netzwerk. Es hat etwas gedauert, bis ich gelernt habe, dass DB User host-abhängig definiert werden.

    Tschuess

    Kai

    --- GoldED+/LNX 1.1.4.7
    * Origin: Zuerst muss ich Fakten sehen. (2:240/77)