Datenbankempfehlung?
-
Hallo erstmal,
ich wollte mal fragen, welche SQL-DB empfohlen werden kann für folgendes Projekt in C++
Kleine HelpDesk-CMR-Lösung, in der Anrufer erfasst werden können, Historie abgespeichert wird und deren Daten auswertbar sind. Die einzelnen Anrufer müssen an mehreren Plätzen gleichzeitig aufrufbar und bearbeitbar sein, Größenmässig sind das ca. 1.000 bekannte Anrufer und ca. 8 Clients.
Das Programm läuft bereits in Kinderschuhen als Einzelplatz im Test, momentan schreibe ich in einen Textdatei und suche jetzt eine DB zum Einbinden. Habe aber keinerlei Erfahrungen auf diesem Gebiet und würde mich über ein paar Tipps freuen, schwanke so zwischen SQLite und Firebird.
Da das Programm nicht komerziell werden wird, wäre ein Free-DB natürlich ideal.
-
Du braucht ein RDBMS welches Netzwerkfähig ist.
Welches ist bei deiner Datenmenge egal.
Es kommt aber auch auf BS an.
Nimmt die welche für dich am einfachsten zum installieren ist.
Kannst auch MSSQL oder Postgre in Betracht ziehen.
-
Danke für die schnelle Antwort, das BS ist Windows, sowohl Server wie auch Clients. Dann fällt SQLite wohl raus. Mit MySQL habe ich ja bereits erste Erfahrungen im Einsatz auf einem Webserver, kann man das denn auf einem Windows2003-Server so installieren, daß es im LAN läuft ohne einen Webdienst zu simulieren, also z. B. über Laufwerkmapping ansprechen?
Da ich Neuland betrete ist mir klar, daß ich mich da erstmal reinarbeiten muß, wäre nur ärgerlich wenn ich nach einem Monat feststelle, daß ich mich besser für eine andere DB Lösung entschieden hätte. Daher würde ich mich freuen, wenn Ihr hier einfach mal Eure Favoriten posten könntet. Ich habe jetzt auf meiner Liste Firebird - MySQL - Postgre.
-
Hyper schrieb:
Ich habe jetzt auf meiner Liste Firebird - MySQL - Postgre.
Nimm MySQL wieder runter, das ist ziemlich mies, wenn Du viele schreibende Zugriffe hast. Ich bin großer Postgres-Fan, aber wie Unix-Tom bereits sagte: MSSQL solltest Du evtl. auch in die Liste mitaufnehmen: http://www.microsoft.com/downloads/details.aspx?FamilyID=220549b5-0b07-4448-8848-dcc397514b41&displaylang=de
-
Hyper schrieb:
kann man das denn auf einem Windows2003-Server so installieren, daß es im LAN läuft ohne einen Webdienst zu simulieren, also z. B. über Laufwerkmapping ansprechen?
Wie stellst Du Dir das vor?
-
nman schrieb:
Hyper schrieb:
kann man das denn auf einem Windows2003-Server so installieren, daß es im LAN läuft ohne einen Webdienst zu simulieren, also z. B. über Laufwerkmapping ansprechen?
Wie stellst Du Dir das vor?
Na ja, daß ich ich der Konfiguration des Clients sagen kann, die Daten liegen auf z. B. F:\meinprogramm\db. Vielleicht ein dumme Frage, aber ich kenne MySQL bisher nur vom Webserver und Ansprache dann über http. Hat sich dann aber auch erledigt, wenn MySQL nicht die erste Wahl für viele schreibende Zugriffe ist. Ich gucke mir dann mal Postgre und MSSQL an.
-
Hyper schrieb:
Na ja, daß ich ich der Konfiguration des Clients sagen kann, die Daten liegen auf z. B. F:\meinprogramm\db.
Und wie soll der Client dann darauf zugreifen können? Wenn der direkt auf die Datendateien zugreifen würde, dann wären ja alle Features beim Teufel, wegen denen man überhaupt erst eine DB verwendet.
-
So eine Lösung haben wir jetzt im Einsatz, auf dem Server liegen die einzelnen DBF und MDX Dateien, und alle Clients können da munter auslesen und reinschreiben. Das Programm ist allerdings auch schon etwas betagt, läuft jedoch stabil. Die Steuerung läuft vermutlich (ich kenne den Quellcode nicht) über das Programm selbst und eine DLL. Heißt ja nicht, daß ich das genauso machen will, ich fange ja gerade erst an, mich mit DBs zu beschäftigen. Ich lese mich gerade in Postgre ein und werde mal Learning-by-Doing damit anfangen. In ca. 3 Monaten bin ich schlauer (hoffentlich)
-
MySQL ist ein vollwertiges RDBMS mit Netzwerkschnitstelle. Dh du greifts auf die DB genauso wie bei MSSQL, ORACLE, Postgre, etc. auf eine Port zu. Dazu gibt es eine LIB von MySQL die man unter C,C++, NET, PHP etc. ansprechen kann.
Diese BIB. wird auch von PHP verwenden und ist in C geschrieben.
Für deine Zwecke reicht denke ich MySQL auch aus. Nur wenn du mal > 100 Zugriffe gleichzeitig hast und dann viel gelesen und geschrieben wird (gleichzeitig) dann gibt es Probleme. Zumindest unter Windows. Unter Linux ist das nicht so sehr das Problem.
Unter Windows würde ich dir aber trotzdem dann MSSQL empfehlen.
Das ist dann aber auch eine Lizenzfrage.
-
Danke erstmal für die bisherigen Antworten um dann vielleicht direkt noch einmal eine dumme Frage loszuwerden. Nachdem ja hier bereits mehrere auf MSSQL hingewiesen haben habe ich mir das mal genauer angeguckt. Die Express Edition ist ja Serverseitig auf eine CPU und 1 GB RAM begrenzt, heißt das jetzt daß nur eine CPU und ein GB RAM genutzt werden, oder dass sich diese Edition auf einem Server mit 2 CPU und 4 GB RAM nicht installieren, bzw. starten lässt?
Das Projekt soll ja (ausser meinen Nerven, meiner Nachtruhe sowie 4 - 500 Liter Kaffee) nichts kosten.
-
Ich bin mir nicht sicher, aber ich würde mal davon ausgehen, dass es nicht startet. Ist zumindest bei der kostenlosen DB2 Express Version so. Die unterstützt 2 CPUs. Auf 'nem Vierkern-Prozessor startet die nicht (Fehlermeldung wegen Lizenz).
-
Hyper schrieb:
Danke erstmal für die bisherigen Antworten um dann vielleicht direkt noch einmal eine dumme Frage loszuwerden. Nachdem ja hier bereits mehrere auf MSSQL hingewiesen haben habe ich mir das mal genauer angeguckt. Die Express Edition ist ja Serverseitig auf eine CPU und 1 GB RAM begrenzt, heißt das jetzt daß nur eine CPU und ein GB RAM genutzt werden, oder dass sich diese Edition auf einem Server mit 2 CPU und 4 GB RAM nicht installieren, bzw. starten lässt?
Das Projekt soll ja (ausser meinen Nerven, meiner Nachtruhe sowie 4 - 500 Liter Kaffee) nichts kosten.
Microsoft SQL Server 2005 Express Edition läßt sich problemlos auf einem Server mit 2 CPUs und 4 GB RAM installieren bzw. starten.
-
Unix-Tom schrieb:
Für deine Zwecke reicht denke ich MySQL auch aus. Nur wenn du mal > 100 Zugriffe gleichzeitig hast und dann viel gelesen und geschrieben wird (gleichzeitig) dann gibt es Probleme. Zumindest unter Windows. Unter Linux ist das nicht so sehr das Problem.
Doch, eigentlich schon. Die Performance von MySQL ist zwar unter GNU/Linux _generell_ wesentlich besser als unter Windows, aber es skaliert bei High-Concurrency-Anwendungen trotzdem ziemlich mies (verglichen mit anderen DBMS).
Gerade wenn der OP eine nennenswerte Anzahl von Schreibzugriffen erwartet, würde ich in jedem Fall von MySQL abraten, auch wenn es mit InnoDB eine Krücke gibt, mit der MySQL auch dafür beinahe schon erträglich wird.
-
Ich habe ihm eigentlich Grundsätzlich ja auch davon abgeraten. (Verwende ja selbst MSSQL, früher MySQL) Er weiß aber denke ich besser als ich ob er so viele konkurierende Schreibzugriffe hat. Ich denke er sollte ein DB nehmen welche einfach ist (da keine Erfahrung) und auch einfach Wartbar. Bei MSSQL braucht man schon etwas Wissen (Transactionlog welches die Platte vollschreibt u.s.w.)
Ich habe mit Postgres keine Erfahrung.