Welches DB System?



  • 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.



  • ein B+tree ist doch eigentlich ein B-tree, nur für festplatten angepasst.
    im hauptspeicher ist der B+tree doch langsamer als ein B-tree, deshalb ist es doch logisch das die map einen B-tree nutzt.

    und dann kann man schon eine map mit einer hauptspeicher db vergleichen.
    finde ich vollkommen akzeptabel.

    jenz



  • Ich geh mal davon aus, dass du mit B-tree einen binary tree meinst?! Ja, im Hauptspeicher ja, aber Datenbanken haben es so an sich, dass sie persistent sind.

    Sonst könnte ich auch sagen, hey, hab einen String als char-Array, also ist für diese Mini-Mini-Datenbank ein Array die beste Datenstruktur 😕

    MfG SideWinder



  • Mir geht es um diesen Beitrag:

    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

    Wenn du da rumschauderst, dann ja bitte mit vernünftigen Gründen.
    Binärbäume und Datenbanken gehören eben eng zusammen. Und da kann man die auch zusammen nennen.
    Nur weil Datenbanken spezialisierte Binärbäume einsetzen muss man da nicht so einen spitzfindig sein.

    jenz



  • Was heißt "spezialisierte Binärbäume"? Ein B-Baum ist kein Binärbaum, auch kein spezieller Binärbaum. Der Clou am Binärbaum, ist dass er immer genau 2 Nachfolger hat.

    MfG SideWinder



  • okay, da habe ich mich falsch bzw. verkehrt herum ausgedrückt.

    ein binärbaum ist ja im grunde ein spezialisierter/eingeschränkter b-baum.

    aber es hat wahrscheinlich alles mit einem binärbaum angefangen, den hat man dann um mehrere nachfolger erweitert und dann hat man die daten in die blätter ausgelagert.
    und das sind nur zugeständnisse an gegenbenheiten des speichermediums.

    jenz



  • und das sind nur zugeständnisse an gegenbenheiten des speichermediums.

    Richtig, aber da persistenter Speicher heutzutage in der Regel auf einem in Blöcke eingeteilten Speichermedium zu finden ist, muss man sagen, dass ein Binärbaum als Grundlage für ein DBMS weniger geeignet ist und nicht "extra für datenbankartige Datenhaltung gedacht" ist.

    Am Ende implementiert unser guter User hier tatsächlich zum Spaß sein eigenes kleines DBMS und verwendet dafür einen Binärbaum.

    MfG SideWinder



  • okay, man sollte ihm dringend abraten ein dbms implementieren zu wollen

    aber einen binärbaum dafür zu verwenden halte nicht für soo schlimm.
    das ist ja nur ein ganz kleines detail.

    wenn er aber nur ein paar funktionaltitäten implementieren möchte, die ein dbms hat, wie sql,constraints,transactions/rollback oder was weiß ich. dann wird der ja nie fertig. da sollte er sich einfach nicht mit der speicherung aufhalten.
    das kann man später noch anpassen, natürlich nur, wenn man das vorher entsprechend abstrahiert und ich glaube, dass man nicht mal das vernünftig durchplanen kann, alleine.

    so, jetzt haben wir ihm genug angst gemacht 😉
    und ich verwechsel binär und b nicht mehr.

    hau rein,
    jenz



  • *g*, ja lassen wir das. Trotzdem: Ich glaube du würdest ein DBMS von der falschen SEite her aufziehen. Constraints später und vorher lieber doch Gedanken machen zur Speicherung 😉

    Wer sagt überhaupt, dass es SQL geben muss - in Zeiten in denen man auch ohne schlechtes Gewissen eine OODB einsetzen kann wenn Perforamnce keine Rolle spielt 🙂

    MfG SideWinder



  • SideWinder schrieb:

    Am Ende implementiert unser guter User hier tatsächlich zum Spaß sein eigenes kleines DBMS und verwendet dafür einen Binärbaum.

    Solange er sich dabei auf die Indizes beschränkt ist das völlig in Ordnung. Das sind in der Regel balancierte Bäume. 😉



  • Joe_M. schrieb:

    SideWinder schrieb:

    Am Ende implementiert unser guter User hier tatsächlich zum Spaß sein eigenes kleines DBMS und verwendet dafür einen Binärbaum.

    Solange er sich dabei auf die Indizes beschränkt ist das völlig in Ordnung. Das sind in der Regel balancierte Bäume. 😉

    Schau halt mal was ich vor circa einer Seite im Originalposting geschrieben habe 😉

    Aber wir sollten hier jetzt wirklich zu einem Ende kommen 🙂

    MfG SideWinder



  • aber einmal muss ich jetzt auch noch antworten 😉

    ob sql oder was anderes ist mir eigentlich egal.
    ich wollte eigentlich nur sagen, dass mir die speicherung der daten herzlich egal ist, wenn ich ein dbms einsetze, dann möchte ich dadurch, ich sage mal, "semantische" vorteile.
    in erster linie.

    also komfortablen datenzugriff und auch bestimmte sicherheiten bezüglich der eingetragenen daten und natürlich, dass die daten auch wirklich gespeichert sind.

    geschwindigkeit ist natürlich auch wichtig und bei den falschen datenstrukturen kann der rechner noch so schnell sein...

    jenz


Anmelden zum Antworten