Datenbanken für mAirList 3.x.x

Ich hoffe doch, das ich jetzt das Thema richtig benannt habe, falls nicht bitte Torben passend ändern. Danke!

Ich möchte nach reiflicher Überlegung anfragen, ob es Dir lieber Torben möglich wäre, eine Datenbankschnittstelle in die neue Version zu integrieren. Da ich mich bestimmt unverständlich ausdrücke, erläutere ich wie ich es meine. Nicht jeder User ist ja so bedarft wie Torben, der eine nutzt eine MySQL Datenbank, der nächste schwört auf PostgreSQL, wieder ein anderer nimmt MSSQL, der nächste Access und und und. Damit sich da jeder seine eigene Datenbank zusammenfriemeln kann und diese entsprechend nutzen kann, wollte ich vorschlagen, das man die Musikdaten welche man in der mml Datei (man verzeihe mir, wenn ich das falsch ausdrücke) speichern könnte, … in eine universelle Struktur bringen könnte. Ziel des Ganzen sollte sein, das User, die sich Ihre eigene Datenbank bauen wollen, genau an diese Schnittstelle machen können um die Datenbank an Ihre Bedürfnisse zu programmieren und anpassen können.

Hintergrund ist der, das ich seit geraumer Zeit daran bastel, ein Webinterface auf Basis von MySQL mache, aber ehrlich gesagt andere Strukturen habe, als die gängigen derzeitigen Lösungen. Ich benutze dabei PHP und die PDO Datenbankschnittstelle, welche es zulassen würde auch andere Datenbanken mit ein und dem selben Befehl zu steuern und auszuwerten. Vielleicht gibt es sowas ähnliches auch in Delphi und mir ist das Ganze einfach nicht klar, wie ich die Daten transferiere. Torben hat mir schon mal ein Beispiel zukommen lassen, aber ehrlich gesagt blicke ich da null durch, vielleicht gibt es hier aber jemanden der das schon hinbekommen hat, dann bitte ich um Hilfe, falls es so eine Schnittstelle nicht gibt, bitte ich darum, wenn der Aufwand nicht zu groß ist, eine solche zu integrieren.

Torsten, ich hoffe Du weißt was ich meine, denn ich weiß nicht Recht wie ich es erklären soll und zudem möchte ich nicht unbedingt auf MYSql verzichten, da sehr viele Anwendungen im Internetbereich darauf basieren und ich von Postgre nicht den Schimmer einer Ahnung habe.

Ich warte mal ab, wie Du Dich äußerst … vielleicht kommen wir dann besser auf des Pudelskern!

Danke!!

Gruß Andreas

Hallo Andreas,

dass mAirList kein MySQL in den neueren Versionen unterstützt ist, wie hier mehrfach diskutiert, ein lizenzrechtliches: http://wiki.mairlist.de/index.php/Das_MySQL-Problem

Genau habe ich aber noch nicht verstanden. worum es dir hier geht - aber zwei Interpretationen erscheinen mir möglich.

  1. Die mAirListDB auf anderen Servern als auf PostgreSQL laufen lassen: Das ist prinzipiell möglich, weil die von mir verwendete Datenbankschnittstelle ZeosLib ebenfalls mehrere Serverarten unterstützt. Man muss also eigentlich nur an einer Stelle umschalten - eigentlich. Denn trotz Standardisierung der SQL-Sprache unterscheiden sich die Dialekete in bestimmten Details. Also muss man doch wieder irgendwelche if-then-else-Konstrukte in sein Programm einbauen. Im Augenblick umgehe ich das Problem, indem ich mich auf zwei SQL-Server konzentriere: SQLite und PostgreSQL. Ob man das dann später für andere Serverarten anpasst, kann man gucken. Aber erstmal steht die Entwicklung an sich im Vordergrund.

  2. Eine ganz eigene Datenbank mit eigenem Schema auf einem beliebigen Server aufsetzen: Das ist jetzt schon möglich, mittels der Script-Datenbanken.

Torben

Zu 2: Das mit der Scriptdatenbank ist äußerst interessant, aber ich peile es noch nicht! Vielleicht könnte man mir das mal etwas näher bringen, das ich das etwas nachvollziehen kann, dann würde ich das mit der Zeit schon hinbekommen.

Zu 1: Die Problematik mit der Postgre und dem MySQL ist mir bewußt und habe ich auch gelesen sowie auch verstanden. Das was ich versucht habe auszudrücken, ist folgendes:

mAirList <—> Datenbank

Und — hier besteht ja die Verbindung zwischen Datenbank und mAirList, wie auch umgekehrt. Das verlangt auf der mAirList Seite eine Struktur wie mAirList die Daten erwartet um diese weiterverarbeiten zu können, das heißt die Datenbank müsste ja die Daten strukturiert bereit halten. Genau hier wollte ich fragen, ob man diese Schnittstelle so ausstatten könnte, das diese auch MySQL Fähig wäre? Und dann wollte ich fragen wie diese Struktur aussieht, dann wäre es ja möglich, das jeder so sein Süppchen kochen könnte solange er sich nur an die Struktur hält, oder täusche ich mich da? Und weiter vermutet hatte ich, das ich wohl auf diese Scriptdatenbanksache hinausläuft, ich dies wahrscheinlich umschreibe und es aus Unwissenheit wohl garnicht bemerke.

Gruß Andreas

Was du “Struktur” nennst, heißt in der Fachsprache “Datenbankschema”. Dies beschreibt, welche Tabellen es gibt, wie sie aufgebaut sind, auf welche Art die Daten darin abgelegt werden usw. Bleiben wir also am besten bei dem Wort “Schema”, dann wissen wir, worüber wir reden.

Um überhaupt eine Datenbank - egal ob MySQL, PostgreSQL, Oracle usw. - zum Ablegen von Daten nutzen zu können, muss zunächst ein solches Schema definiert, also Tabellen eingerichtet werden. Außerdem muss jedes beteiligte Programm dieses Schema kennen, um die Daten richtig eintragen und auslesen zu können. Wenn mehrere Programme und Programmierer eine Datenbank gemeinsam nutzen wollen, muss man sich vorher auf ein Schema einigen. Das haben cevou und ich zum Beispiel für die RadioDB getan.

Das Datenbankschema der mAirListDB definiere ich, aber es wird natürlich offen gelegt. Das heißt, dass im Prinzip jeder seine eigene mAirListDB-Verwaltungssoftware schreiben könnte. Oder zum Beispiel per Script die aktuellen Rotationen auslesen, um sie auf der Homepage anzuzeigen. Hauptsache, er hält sich an die Konventionen, die das Schema vorgibt.

Auf was für einer Art Datenbankserver die Datenbank dann läuft, ist dank SQL-Standard relativ nebensächlich. Aber wie ich oben schrieb, sind serverspezifische Anpassungen selten zu vermeiden, daher konzentriere ich mich erstmal auf zwei Arten Server, nämlich PostgreSQL und SQLite.

Wenn du dir jetzt eine ganz eigene Musikdatenbank ausdenkst, wirst du auf das Problem stoßen, dass mAirList das Schema dieser Datenbank nicht kennt. Genau für diesen Zweck sind die Script-Datenbanken gedacht: Damit programmiert man sich die Schnittstelle zwischen mAirList und seiner selbstausgedachten Datenbank einfach selbst, indem man nach Aufforderung die Daten aus der Datenbank fischt und so aufbereitet, wie mAirList sie gerne hätte.

Ich glaube, du solltest dich gedanklich nochmal mit den Begriffen “Datenbank”, “Datenbankserver” und “Schema” auseinandersetzen und genau beschreiben, was du vorhast. Willst du dein eigenes Schema definieren, oder willst du ein vorhandenes Schema (dann vermutlich mAirListDB) verwenden, um es auf einer anderen Art Server (MySQL?) laufen zu lassen? Die Antwort auf diese Frage ist wichtig um zu entscheiden, ob du eine Script-Anbindung brauchst oder nicht.

Außerdem habe ich das Gefühl, du hast doch noch nicht verstanden, wo das Problem mit MySQL ist: Ich darf gar keine MySQL-Verbindungen unterstützen. Eigentlich müsste ich sogar die MySQL-Verbindungsmöglichkeit komplett aus mAirList rauswerfen, um rechtlich auf der sicheren Seite zu sein. Das mit der 3.23er-DLL ist lediglich ein Schlupfloch.

Ahh, alles klar, jetzt verstehe ich das. Ja, ich meinte mit Struktur das Datenbankschema! Die Begrifflichkeit ist nicht ganz so mein Ding. Auch hatte ich die Problematik mit MySQL ehrlich gesagt anders verstanden. Ich persönlich weiß zwar, das Du diese nicht mit anbieten darfst, weil eben da das Lizenzproblem besteht, aber ich dachte Du dürftest eine Schnittstelle dazu einbauen, die es erlaubt das man eben eine MySQL Datenbank einbinden kann, die eben nicht von Dir erstellt wird und kostenlos zu haben ist und unter der Richtlinie die es eben erlaubt.

Gut, demnach ist mein Gedankengang also auch völlig wirr und unsinnig, zumindest in diese Richtung! Danke das Du Dir trotzdem die Mühe gemacht hast mir das zu erläutern.

Was ich nun persönlich machen möchte ist mir mittels PHP und MySQL meine eigenen Playlist erstellen und auswerten, nachdem diese gespielt wurden, Die Datenbank nach Musiktiteln durchforsten etc. Das ist bisher noch kein Problem, aber wie gewährleiste ich, das die Playliste die ich erstellt habe, den Liedern die Ramps und Fadingpunkte etc. richtig zuweißt? und darstellt?

Beziehungsweise, wo kann ich das mit dieser Scriptdatenbank nachlesen, weil ich wie gesagt damit noch nicht klarkomme und ich mir die Schnittstelle gerne programmieren würde.

Danke für die Hilfe Torben und bitte nicht verzweifeln, wenn ich mich zumeist etwas blöde ausdrücke!

Gruß Andreas