Welches DB System?



  • Hi,
    Ich suche eine Art Datenbank in der man ca. 1500 Datensätze speichern kann und vorallem viele Zugriffe aushält. Mit viele meine ich das mein C++ Programm die ganze Zeit Daten ausließt und hineinschreibt (in einer sek meherere Sachen). Die DB sollte unter Linux laufen.
    Ich wollte erst MySql verwenden jedoch hab ich Angst das der Server dadurch überlastet wird, ich hab noch an Exel Files gedacht kenne mich da aber nicht so aus deshalb wollte ich euch mal Fragen was ich an DB's verwenden kann.

    Schöne nacht noch!
    MFG ReduX



  • MySql müsste schnell genug sein. Excel-Files sind seeeeehr langsam. Wenn nur dein C++-Proggi drauf zugreift, kannst du dir ja auch ne eigene Datenbank basteln, bzw die Daten alle im Speicher lassen.
    1500 Datensätze sind echt nich viel, das dürfte MySql nicht in die Knie zwingen (ok, hängt mehr von der Anzahl der Zugriffe ab) 😉



  • Hi,
    Ja wegen den Zugriffen möchte ich mysql nicht verwenden, weil auf dem Server viele PHP Scripte von mir laufen und schon genug Zugriffe machen. 😉
    Eine DB selber machen, bin ich sehr Interresiert, leider hab ich keine ahnung wie man sowas realisiert gibt dazu ein gutes Tut?

    MFG ReduX 🙂



  • Kommt auch darauf an, was für ein Server das ist, also Leistung der CPU und Arbeitsspeicher.

    So langsam ist MySQL nämlich nicht, die richtige Hardware vorausgesetzt hat das ordentlich Dampf.

    gruß
    Martin



  • Brauchst du wirklich ne DB oder reichen nicht ein paar (Hash)maps und Strukturen? Wird sehr wahrscheinlich schneller sein, als immer Datenbankanfragen auszuwerten.



  • sqlite wäre sicher auch nen Blick wert.

    http://www.sqlite.org/

    Mfg Tom



  • ReduX schrieb:

    ...
    Eine DB selber machen, bin ich sehr Interresiert, leider hab ich keine ahnung wie man sowas realisiert ...

    Naja, dann dürfte allerdings entweder Performance/Stabilität für Dich nicht mehr das Kriterium oder MySQL doch die bessere Alternative sein....

    Es ist höchst fraglich (bis grenzenlos unwahrscheinlich), dass Du als Anfänger ein DB-System entwickelst, das schneller und stabiler als MySQL ist. In solchen Teilen steckt eine Menge Grips drin, den die Leute sich nicht nur über ein Online-Tutorial angelesen haben. 😃
    Ist nicht böse gemeint, sondern soll nur bei der Wahl Deines weiteren Vorgehens helfen. Ich würde an Deiner Stelle auf jeden Fall erst einmal ein bestehendes DB-System installieren - selbst wenn Du später (z.B. zu Lernzwecken) selbst eines schreiben willst, helfen Erfahrungen mit anderen Produkten immens.

    Gruß,

    Simon2.



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Datenbanken verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Was sollen denn nun für Sachen drin gespeichert werden, und greift nur die eine (deine) Anwendung drauf zu? 🙂



  • Also eine Datenbank selbst zu programmieren ist sicherlich interessant. Aber bestimmt nur performance freundlich :p



  • Hi,
    Also die Tabelle hab ich mir so vorgsetellt:
    nickname(bis zu 20 Zeichen),channel(nur eine id, wird nicht größer als 50 werden),socketid(die Socket id jedes Users).
    Und da halt max. 1500 Datensätze.
    Auf dem Server wo es später laufen wird ist ein Vserver ich habe 1/50 der CPU und shared RAM (ich weiß ist nicht das beste). Der Anbieder rückt leider nicht mit den Ram oder CPU daten raus aber bis jetzt scheint der Server schnell zu sein.
    Will jedoch auf Mysql verzichten, weil die homepages trotz meines Programmes noch schnell laufen sollen. Die Lösung mit den Hashmaps werde ich mal genauer anschauen, da das Gebiet neuland ist muss ich mich da jetzt alerdings erst mal einlesen.

    MFG ReduX 🙂



  • Ich würde im Programm an sich einfach einen Array aus der stdlib
    benutzen. Für max 150 kbyte eine eigene Datenbank aufsetzten fände ich etwas
    umständlich.



  • Hi,
    Danke für deine Antwort.
    Mache es nun mit arrays!

    MFG ReduX



  • Arrays? 😮

    Schau dir mal std::map an, das Ding ist extra für Datenbank-artige Datenhaltung gedacht!



  • @Artchi: Bitte erwähne keine Binärbäume im Zusammenhang mit Datenbank *schauder* 😉

    Map ist im besten Fall vielleicht noch als Index-Struktur zu gebrauchen.

    MfG SideWinder



  • Damit kanns wieder zurück nach C++. :p



  • SideWinder schrieb:

    @Artchi: Bitte erwähne keine Binärbäume im Zusammenhang mit Datenbank *schauder* 😉

    Map ist im besten Fall vielleicht noch als Index-Struktur zu gebrauchen.

    MfG SideWinder

    Kannst Du das auch begründen? Ich habe in einer std::map einen Schlüssel und einen zugehörigen Wert, der auch eine Klasse mit mehreren Werten sein kann. Das kann doch durchaus als in-memory-Datenbanktabelle benutzt werden.



  • (Doppelpost aufgrund von http-timeout gelöscht)



  • tntnet schrieb:

    Kannst Du das auch begründen? Ich habe in einer std::map einen Schlüssel und einen zugehörigen Wert, der auch eine Klasse mit mehreren Werten sein kann. Das kann doch durchaus als in-memory-Datenbanktabelle benutzt werden.

    Reicht dir ein "heutzutage gibt es kein brauchbares DBMS, dass seine Daten in einem Binärbaum ablegt"? Ansonsten die Standardseite: http://en.wikipedia.org/wiki/Database_storage_structures (warum wird dort wohl kein Binärbaum erwähnt ;)) sowie http://en.wikipedia.org/wiki/B-tree

    MfG SideWinder



  • SideWinder schrieb:

    tntnet schrieb:

    Kannst Du das auch begründen? Ich habe in einer std::map einen Schlüssel und einen zugehörigen Wert, der auch eine Klasse mit mehreren Werten sein kann. Das kann doch durchaus als in-memory-Datenbanktabelle benutzt werden.

    Reicht dir ein "heutzutage gibt es kein brauchbares DBMS, dass seine Daten in einem Binärbaum ablegt"? Ansonsten die Standardseite: http://en.wikipedia.org/wiki/Database_storage_structures (warum wird dort wohl kein Binärbaum erwähnt ;)) sowie http://en.wikipedia.org/wiki/B-tree

    MfG SideWinder

    Eigentlich nicht. Ein DBMS hält seine Daten auf der Festplatte, wo das Zeitverhälten ein anderes ist, als im Arbeitsspeicher. Dem Arbeisspeicher ist es weitestgehend egal, wenn ich immer kleine Stückchen mal hier und mal da lese. Für eine Festplatte ist es besser, wenn ich meine Schlüssel auf grössere Cluster verteile. Ein hin und her Springen zwischen den Sektoren ist weitaus teurer, als serielles Lesen.

    Eine andere Sache ist, daß der Standard für std::map keinen binären Baum vorschreibt. Man kann einen std::map auch anders implementieren. Hauptsache die algorithmische Komplexität zeigt logarithmisches Verhalten.


Anmelden zum Antworten