Welches Datenbanksystem ist geeignet?
-
Prinzipiell kann es schon zu Problemen bei gleichzeitigem Zuriff kommen.
So könnte ein lesender Client inkonsistente Daten erhalten, wenn er bei einem Lesezugriff bereits Daten abrufen würde, welche nur der Momentaufnahme eines Änderungsvorgangs eines schreibenden Clients entsprechen (also nicht alle logisch zusammengehörigen Änderungen wurden schon abgeschlossen).
Das hängt aber direkt mit der Transaktionsunterstützung der Datenbank zusammen. In der Regel bietet ein DBMS hierfür verschiedene Isolationsstufen an, welche für jede Verbindung angegeben werden können (DirtyRead, ReadCommitted ...).
Benötigt man eine Gewährleistung für konsistente Daten über verschiedene Operationen hinweg (mehrere Updates und Inserts 'gleichzeitig' zum Beispiel), dann muss das DBMS auch eine externe Transaktionssteuerung zur Verfügung stellen. Damit ist es dann möglich explizit eine Transaktion zu öffnen und diese nach allen(!) zusammengehörigen Änderungen abzuschließen.Alle genannten Systeme unterstützen dies (mittlerweile) ausreichend.
Wenn du in C mit einer Datenbank kommunizieren willst, solltest du entsprechende Bibliotheken verwenden die dies unterstützen. Solche Bibliotheken bieten dann auch Möglichkeiten SQL Abfragen an die Datenbank zu senden und liefern gegebenenfalls Ergebnismengen zurück.
-
MySQL ist kostenlos, solange du kein Geld für die Anwendung verlangst. Sonst muss man auch Gebüren zahlen.
@Sadi und Rest
Kann mir jemand sagen, ob man auch für ein Programm Lizenzgebühren zahlen muss, wenn das Programm selbst ohne MySQL auskommt, es aber dazu da ist, u.a. auch MySQL Datenbanken auszulesen, aber auch für PostgreSQL oder andere konzipiert ist?
Es wäre quasi so, dass ich das Programm weiterverkaufe und der Kunde es dann installiert, wofür er keine Datenbank braucht, und mit dem Programm kann er dann seine Datenbanken (z.B. MySQL, Oracle, etc.) auslesen.
Müssen dafür Lizenzgebühren bezahlt werden von mir?
-
@deetee: Mir ist da nur ein Bsp. mit Access bekannt (auch wenn ihr da nicht so drauf steht). Solange Dein Programm die reinen Access-Dateien verwendet musst Du keine Lizenzgebühren bezahlen. Die Treiber werden ja vom Betriebssystem bereitgestellt und der Zugriff erfolgt ja aus dem C durch Nutzung der Treiber. Denke bei MySQL dürfte das auch so sein, solange Du Deine Anwendung nicht kommerzialisierst.
@mortimo: Deinen Darstellungen entnehme ich, dass eigentlich das gleiche zu beachten ist wie beim Umgang mit mehreren Threads in einem Programm (Stichwort Synchronisation). Nur bieten die DBMS heute diese Funktionalität. Wird dies dem DBMS über den Treiber mitgeteilt oder sind das globale Einstellungen? Hab mich gestern noch mal eingelesen und festgestellt, dass auch die Klassen CRecordSet Member besitzen, die Teile der SQL-Abfrage aufnehmen können (m_pstrFilter z.B. für den WHERE-Teil der SQL-Abfrage). Aber gibt es auch Klassen, die die gesamte Abfrage aufnehmen und an den Treiber weiterleiten?
-
@AndyDD
ja aber genau das möchte ich doch...es kommerzialisieren, es verkaufen. Deswegen auch meine Frage.Aber ich denke bei MySQL müsste ich für mein Tool dann keine Lizenzkosten bezahlen, da mein Programm selbst ja kein MySQL benötigt. Es kann zwar darauf zugreifen, aber es braucht keine eigene MySQL Datenbank, z.B. zur Installation.
-
deetee schrieb:
@AndyDD
ja aber genau das möchte ich doch...es kommerzialisieren, es verkaufen. Deswegen auch meine Frage.Aber ich denke bei MySQL müsste ich für mein Tool dann keine Lizenzkosten bezahlen, da mein Programm selbst ja kein MySQL benötigt. Es kann zwar darauf zugreifen, aber es braucht keine eigene MySQL Datenbank, z.B. zur Installation.
Mein letzter Stand hierzu ist folgender:
MySQL hat zwei Lizenzmodelle.
1. Man stellt sein Programm unter die Open-Source Lizenz von MySQL, dann ist es kostenlos.
2. Man nimmt die kommerzielle Lizenz, die ist aber sogar recht günstig.Der ODBC-Connector von MySQL steht unter der selben Lizenz. Dieser ist normalerweise für den Zugriff nötig (es soll aber auch anderst gehen).
-
Die Einstellungen bezüglich Isolationsstufe und ähnlichem lassen sich mittels Treiber pro Verbindung einstellen.
Ich kenne mich leider mit CRecordset nicht sonderlich aus, glaube aber in einem Beispiel mal etwas mit 'open' oder so gelesen zu haben. Darüber besteht die Möglichkeit auch eine komplette Abfrage mit dem CRecordset zu verbinden. Genaues müsste man der Doku dazu entnehmen.
-
es scheint keiner zu verstehen, was ich meine.
Mein Programm selbst braucht kein MySQL. Man kann es in Verbindung mit MySQL nutzen, aber man muss z.B. zur Installation des Programms kein MySQL haben, es ist keine Vorraussetzung.
-
Du müsstest dir nur Gedanken machen, wenn du zur optionalen Unterstützung von MySQL in deinem Programm externe Bibliotheken verwendest die einer entsprechenden Lizenz unterliegen. Verwendest du allerdings nichts dergleichen, dann passt das so.
-
deetee schrieb:
es scheint keiner zu verstehen, was ich meine.
Mein Programm selbst braucht kein MySQL. Man kann es in Verbindung mit MySQL nutzen, aber man muss z.B. zur Installation des Programms kein MySQL haben, es ist keine Vorraussetzung.
Doch, wir versuchen es gerade. Es muss ja nicht heißen wenn man ein Programm schreibt, dass man es auch verkaufen will oder muss. Ich schreibe bei uns in der Firma, damit einige Problemchen überhaupt gelöst werden. Meine Programme werden vermutlich das Haus nicht verlassen.
Was MySQL angeht: ich hab mal auf der HP ein wenig rumgelesen. Es ist schon so wie mortino sagt. Wenn Du Bibliotheken mitgibst unterliegen die u.U. Lizenzbedingungen. Zweitens war mein Gedanke schon beim MySQL-Server. Das ist auch etwas, was ich hier vorhabe. Solltest Du den mit Deinem Programm ausliefern unterliegt der auch den Lizenzbedingungen. Allerdings habe ich das mit dem Open Source nicht so richtig verstanden. Nur wenn man ein Programm an jemanden weitergibt, was so was vordert, so sollte man das auch mitliefern. Anders siehts sicher aus, wenn die Datenbank ins Programm gelinkt wird, also nocht über einen Betriebssystemtreiber oder einen Server drauf zugegriffen wird. Dann dürfte das so oder so kostenfrei sein.P.S.: die bieten jetzt schon die Version 5.x an. Was ist Ist das noch eine Beta und sollte man erst mal bei der 4.x bleiben?
-
@mortimo
das Programm ist in PHP geschrieben, da dürfte es keine Probleme geben. Man kann damit Datenbanken auslesen, u.a. auch MySQL DBs, aber auch andere, kommt eben darauf an, welche beim dem Käufer in Betrieb ist. Aber das ist ja nicht meine Sache, geht mich ja nichts an. Also ich nutze nur die PHP Funktionen, zum auslesen von MySQL DBs, mehr nicht.
-
@deetee: Wenn das so ist, dann musst du dir keine Gedanken um die Datenbanklizenzen bzgl deines Programmes machen, da ja erst der Benutzer die Datenbank und evtl. Treiber installiert.
@AndyDD: MySQL 5.0 ist schon released. Nur die 5.1 ist noch in der Beta Version. Somit kannst auch schon die 5er verwenden, wenn du möchtest. Allgemein würd ich immer eine ältere Release Version einer Beta Version vorziehen, zumindest wenn man diese Version auch anderen Nutzern zugänglich machen möchte. Aber das muss ja jeder selbst entscheiden
-
Die stabile Version wird von MySQL als Production Release betitelt.
Wenn MySQL zum Einsatz kommt empfehle ich als Tabellentyp 'InnoDB', damit Transaktionen genutzt werden können (commit/rollback). Der Tabellentyp 'MyIsam' ist ein wenig leichter zu handhaben, hat aber einige Nachteile.
-
Ich ziehe eine released Version auch einer Beta vor, keine Frage. Wenn man sich auf der Page umschaut, so stellen die drei Varianten zum Download vor: Windows Essentials (x86), Windows (x86), Without installer (unzip in C:\). Was ist der Unterschied zwischen den letzten beiden? Warum ist die Version ohne Installer größer wie die mit?
Eine weitere Frage bezieht sich auf den Treiber. Ist der da schon dabei oder muss ich den separat downloaden, damit von anderen Rechnern auf den Server zugegriffen werden kann?
Anscheinend fehlen mir doch noch wesentliche Grundlagen, deshalb entschuldigt meine für euch sicher sehr simplen Fragen.
-
AndyDD schrieb:
Ich ziehe eine released Version auch einer Beta vor, keine Frage. Wenn man sich auf der Page umschaut, so stellen die drei Varianten zum Download vor: Windows Essentials (x86), Windows (x86), Without installer (unzip in C:\). Was ist der Unterschied zwischen den letzten beiden? Warum ist die Version ohne Installer größer wie die mit?
Hier sind die Unterschiede beschrieben: http://dev.mysql.com/doc/refman/5.0/en/windows-choosing-package.html
AndyDD schrieb:
Eine weitere Frage bezieht sich auf den Treiber. Ist der da schon dabei oder muss ich den separat downloaden, damit von anderen Rechnern auf den Server zugegriffen werden kann?
Bei Version 4 musste man die noch seperat runterladen, ich weis nicht, ob die heute mitgeliefert werden. Hier kann man sie aber downloaden: http://dev.mysql.com/downloads/connector/
AndyDD schrieb:
Anscheinend fehlen mir doch noch wesentliche Grundlagen, deshalb entschuldigt meine für euch sicher sehr simplen Fragen.
Wenn du schon alles wüsstes, dann bräuchtest du nicht mehr zu fragen
btw, Entschuldigung, daß ich die englischen MySQL-Seiten verlinkt habe, das müsste es auch auf Deutsch geben, aber die deutsche Version ist nicht immer auf dem neusten Stand.
-
Danke Fincki, hat mir schon weitergeholfen. Ein wenig Englisch kann ich ja und dafür reicht es noch aus es zu verstehen. Ich habe jetzt den Server am laufen und auch auf einem Rechner den ODBC-Treiber installiert. Kann man den Server auch von anderen Rechnern aus konfigurieren? Bei der Installation hab ich zumindest diese Oprtion aktiviert, nur weiss ich jetzt nicht wie ich von anderen Rechnern drauf zugreiffen kann. Gibts außerdem noch andere Tools, die nicht über Kommandozeile arbeiten? Es sollen auch Leute administrtieren, die zu windowsverwöhnt sind. Mich störts ja nicht....
-
Grafische Tools gibts hier: http://www.mysql.com/products/tools/
Irgendwie bin ich nicht mehr auf dem neuestem Stand. Für Version 4 gab es noch das MySQL Control Center, das scheint jetzt vom MySQL Administrator abgelöst worden zu sein.
-
http://www.phpmyadmin.net/home_page/index.php
Kann ich ebenfalls empfehlen.
Damit lässt sich sehr einfach über Browser das ganze System konfigurieren. Allerdings benötigt man hierzu auch noch einen Webserver, wie Apache.
Und hier wiederum kann ich folgendes empfehlen ... für diejenigen, die es ganz einfach haben wollen. Alles in einem Paket
http://www.apachefriends.org/en/xampp.html
-
Fincki schrieb:
Grafische Tools gibts hier: http://www.mysql.com/products/tools/
Irgendwie bin ich nicht mehr auf dem neuestem Stand. Für Version 4 gab es noch das MySQL Control Center, das scheint jetzt vom MySQL Administrator abgelöst worden zu sein.Ja das scheint jetzt der Administrator zu machen. Aber ich habe noch eine andere Frage: ich habe die GUI-Tools auf dem Rechner installiert, wie auch der Server läuft. Wie kann ich von einem anderen Rechner im Netzwerk die Administrierung machen?