• Hallo liebe Userinnen und User,

    nach bereits längeren Planungen und Vorbereitungen sind wir nun von vBulletin auf Xenforo umgestiegen. Die Umstellung musste leider aufgrund der Serverprobleme der letzten Tage notgedrungen vorverlegt werden. Das neue Forum ist soweit voll funktionsfähig, allerdings sind noch nicht alle der gewohnten Funktionen vorhanden. Nach Möglichkeit werden wir sie in den nächsten Wochen nachrüsten. Dafür sollte es nun einige der Probleme lösen, die wir in den letzten Tagen, Wochen und Monaten hatten. Auch der Server ist nun potenter als bei unserem alten Hoster, wodurch wir nun langfristig den Tank mit Bytes vollgetankt haben.

    Anfangs mag die neue Boardsoftware etwas ungewohnt sein, aber man findet sich recht schnell ein. Wir wissen, dass ihr alle Gewohnheitstiere seid, aber gebt dem neuen Board eine Chance.
    Sollte etwas der neuen oder auch gewohnten Funktionen unklar sein, könnt ihr den "Wo issn da der Button zu"-Thread im Feedback nutzen. Bugs meldet ihr bitte im Bugtracker, es wird sicher welche geben die uns noch nicht aufgefallen sind. Ich werde das dann versuchen, halbwegs im Startbeitrag übersichtlich zu halten, was an Arbeit noch aussteht.

    Neu ist, dass die Boardsoftware deutlich besser für Mobiltelefone und diverse Endgeräte geeignet ist und nun auch im mobilen Style alle Funktionen verfügbar sind. Am Desktop findet ihr oben rechts sowohl den Umschalter zwischen hellem und dunklem Style. Am Handy ist der Hell-/Dunkelschalter am Ende der Seite. Damit sollte zukünftig jeder sein Board so konfigurieren können, wie es ihm am liebsten ist.


    Die restlichen Funktionen sollten eigentlich soweit wie gewohnt funktionieren. Einfach mal ein wenig damit spielen oder bei Unklarheiten im Thread nachfragen. Viel Spaß im ngb 2.0.

MongoDB eure Erfahrungen

N8wolf

fühlt sich gemobbt

Registriert
14 Juli 2013
Beiträge
101
Guten Tag,

Ich arbeite mich gerade etwas in die MongoDB ein um festzustellen, ob ich dies meinen Studenten antun kann für ein Projekt (Bachelorarbeiten etc.).

Also ich muss sagen, um wie mehr ich mir einarbeite, desto intuitiver und besser gefällt mir das Konzept der noSQL gegnüber der Relationalen Datenbanksysteme.

Der einzige Nachteil, den ich nun bis jetzt wirklich gefunden habe ist der erhöhte Speicherbedarf der Datenbank und das Umstellen der Gedankenprozesse wenn man sich ein "Schema" überlegt.

Ich muss aber auch gestehen das ich noch am Anfang meiner Spielerein stehe und gerade am map reduce bastel.

Mich würden nun einfach einmal eure Erfahrungen zur MongoDB (oder vergleichbar interessieren)

Habt ihr damit schon ein Projekt verwirklicht?
Seid ihr gut damit klar gekommen oder hattet ihr starke Einstiegsprobleme?
Was haltet ihr von dem Konzept von Dokumentbassierten Datenbanken?
usw.

Mit freundlichen Grüßen
 

Kugelfisch

Nerd

Registriert
12 Juli 2013
Beiträge
2.342
Ort
Im Ozean
Ich würde keine generelle Aussage darüber treffen wollen, ob relationale oder (im Fall von MongoDB) dokumentbasierte Datenbanken vorzuziehen seien. Das hängt vom konkreten Anwendungsfall ab. Eine relationale Datenbank ist z.B. klar vorzuziehen, wenn viele unterschiedliche Relationen zwischen den Daten modelliert werden müssen, inklusive 1:1, 1:n- und n:m-Beziehungen. Bei dokumentbasierten Modellen führt dies sehr leicht dazu, dass Daten nicht-normalisiert und daher zumindest teilweise redundant gespeichert werden müssen, was bei grossen Datenbeständen zum Problem wird. Ein meines Erachtens guter Artikel dazu ist http://seanhess.github.io/2012/02/01/mongodb_relational.html.

Um ein Beispiel zu nennen: Um in einem Board zu jedem Beitrag den Benutzer anzuzeigen, der ihn erstellt hat, müssten in einem dokumentbasierten System entweder die Benutzerdaten (Benutzername, Benutzertitel, ...) für jeden Beitrag kopiert werden, oder sie müssten für jeden Beitrag in einem separaten Query abgefragt werden. Beides wird bei grossen Datenbeständen zum Problem.
 

Exterminans

Neu angemeldet

Registriert
14 Juli 2013
Beiträge
147
Jein, das mit der Redundanz stimmt nur beschränkt. Die meisten Wrapper für die noSQL-Datenbanken erlauben auch wieder Referenzen direkt mit aus zu lesen was auch relativ schnell geht. Problematisch ist dabei eher, das praktisch keine JOINs bei Abfragen möglich sind, sprich nur innerhalb eines einzelnen Objekts gefiltert werden kann und nicht über eine Relation hinweg.

Allgemein muss man sich allerdings die Frage stellen, wie die Datenbank hauptsächlich genutzt wird.

Würde man auch in der relationalen Datenbank Datensätze IMMER nur direkt mit dem Pkey suchen und davon ausgehend über Referenzen, so ist eine noSQL-DB eigentlich perfekt geeignet, um so mehr je komplexer die zu speichernden, jedoch nicht die zu durchsuchenden Daten sind.

Hat man hingegen einen Anwendungsfall wo Range-Scans notwendig sind, ist eine noSQL- bzw. allgemein nicht-relationale Datenbank völlig ungeeignet. Selbst wenn das Datenbanksystem bei gleichnamigen Attributen verschiedener Objekte automatisch Indizes generiert (bzw. generieren würde). ist das doch keinesfalls für komplexere Abfragen geeignet.

Ein weiteres Problem ist die Laufzeitcharakteristik von relationalen gegenüber objektorientierten Datenbanken in charakteristischen Szenarien.
Klar, bei einzelnen Datensätzen welche direkt referenziert werden können, punktet die ODB da Zugriff in konstanter (bzw. eigentlich logarithmischer Zeit in Abhängigkeit der DB-Größe), keine Locks, keine "komplizierten" Indizes für den PKey etc. Ähnliches gilt bei der Auflösung von Referenzen auf einzelne Objekte, verglichen mit einem JOIN ist der Rechenaufwand immer noch messbar niedriger.

Bei Filterkriterien nach anderen Attributen (oder sogar das übliche SORT + LIMIT nach einem JOIN) schaut es hingegen fatal aus. Im Optimalfall existiert das Attribut nach dem gefiltert wird NUR bei Objekten des gesuchten Typs, sprich der Index ist sauber. In diesem unwahrscheinlichen Fall schafft die ODB immerhin noch die gleiche Charakteristik wie die RDB. Andernfalls geht die Performance allerdings in den Keller, da durch die fehlende Normalisierung und zusammengesetzte Indizes (aktuell) kein effizienter Zugriff möglich ist.


Dazu kommt dann natürlich noch ein statischer Overhead, relationale Datenbanken haben sich vor allem deshalb so lange gehalten, weil sehr effizient was den Speicher- und Arbeitspeicher-Bedarf angeht. Der Overhead bei der Rechenleistung hingegen ist zu vernachlässigen. Prinzipiell lassen sich mit objektorientierten Datenbanken bei äquivalenten Datenbeständen auch Laufzeitcharakteristiken wie mit einer relationalen Datenbank erreichen, das erfordert allerdings wie auch schon bei relationalen Datenbanken eine gewisse Normalisierung sowie spezifische Hinweise für das Datenbanksystem wie komplexere Indizes auf zu bauen sind, was dann allerdings auch schon nicht mehr ohne eine entsprechende (zu mindestens teilweise) Normalisierung funktioniert.


Wenn es nur um den Komfort geht, ein objektorientiertes Datenmodell in einer Datenbank zu speichern, ohne sich mit den Fallstricken einer relationalen Datenbank auseinander setzen zu müssen (konkret die Unterscheidung zwischen Aggregation und Komposition sowie n:n-Relationen), so rate ich dennoch eher zu Systemen wie einer der vielen ORM-Implemenationen, diese sind einfach deutlich ausgereifter als vollständig objektorientierte Datenbanken was sich dementsprechend auch in der Performance der Anwendung nieder schlägt.

Persönlich würde ich die aktuelle Generation der ODBs nur für einen einzigen Zweck einsetzen, und zwar für den für den sie gebaut wurden: Zum Speichern von komplett inhomogenen Daten welche sich nicht mit vertretbarem Aufwand normalisieren lassen würden und bei denen nur über sehr wenige Attribute gefiltert werden muss, wenn überhaupt. Sprich als reiner Dokumentenspeicher und/oder Cache.
 

accC

gesperrt

Registriert
14 Juli 2013
Beiträge
5.250
Ich arbeite mich gerade etwas in die MongoDB ein um festzustellen, ob ich dies meinen Studenten antun kann für ein Projekt (Bachelorarbeiten etc.).
Klar, Informatikstudenten kannst du das ohne weiteres antun. Es gibt sicherlich auch einige wirklich interessante Themen, die man zu NoSQL und BigData stellen könnte.

Also ich muss sagen, um wie mehr ich mir einarbeite, desto intuitiver und besser gefällt mir das Konzept der noSQL gegnüber der Relationalen Datenbanksysteme.
Intuitiver kann ich jetzt nicht behaupten.

Habt ihr damit schon ein Projekt verwirklicht?
Seid ihr gut damit klar gekommen oder hattet ihr starke Einstiegsprobleme?
Was haltet ihr von dem Konzept von Dokumentbassierten Datenbanken?
Nein, Gott sei Dank nichts, was über Spielerei hinaus gegangen ist.
Es geht, man muss damit vertraut werden.
Je nach Anwendungszweck brauchbar.
 
Oben