Welches DB System?
-
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.
-
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