This second part will finish the job by putting some useful code into the skeleton methods.
Suchergebnisse mit Tag „MongoDB“
Today I'ld like to show you how easy a has could be connected to a database. A module which connects a hash to SQL is already on CPAN, so let's go with MongoDB.
A lot of bugs have been fixed, some minor, some major and many new tests have been added.
The new version supports grouping of (top level) keys:
use YAWF::Object::MongoDB ( keys => [ { birch => 1, oak => 1, color => 1, }, { deer => 1, boar => 1, color => 1, },
]);This will push birch, oak and color in one group (group 0) and deer, boar and color in another group (group 1).
While fetching a document out of the database using ->new(), all the keys from group 0 will be fetched. Accessing one of the keys from another group (1 or higher) will add all the keys from their group(s). "color" is part of two groups, it will be fetched if either group is being requested.
Accessing any undefined key using get_column() will download the whole database document.
This is very new and even if a test script is there and it passes, there might be bugs and issues. Grouping isn't currently part of the POD documentation and using ->list will still ignore it. Please test it and comment and once I consider it to be some kind of "stable", I'll add it to POD.
Mein Wrapper-Modul YAWF::Object::MongoDB ist bereits auf CPAN und sollte in den nächsten Stunden auch im Index verfügbar sein.
Hunter hat eine kurze, aber sehr gute Zusammenfassung der CRUD-Funktionen mit MongoDB und Perl geschrieben, die ich Euch keinesfalls vorenthalten möchte.
Meiner Meinung nach sollte diese Seite entweder Teil des MongoDB::Tutorial werden oder zumindest von dort verlinkt sein.
Dabei zeigen sich nach und nach bisher noch unbekannte Vor- und Nachteile der Kombination Perl/Objekt-Wrapper/MongoDB und einige Klippen müssen noch umschifft werden.
Bei diesem Schritt habe ich mich für "Test driven development" - kurz TDD - entschieden, einem Verfahren bei dem erst das Endergebnis in mittels einer Reihe von Tests definiert wird und dann ein Modul (bzw. Programm) entwickelt wird, dass alle Tests erfolgreich besteht. Wurden die Tests entsprechend sauber und vollständig geschrieben, ist das Projekt dann abgeschlossen.
Vor ein paar Tagen habe ich die Frage aufgeworfen, ob mein nächstes Projekt eine SQL-basierte oder NoSQL/dokumentenbasierte Datenbanknutzen soll.
Auf der SQL-Seite tritt Postgres - mein aktuelle Favorit unter den Datenbanken - an und auch wenn regelmäßig neue Versionen herauskommen, kann Postgres als "fertig" betrachtet werden.
Recht neu sind CouchDB und MongoDB, zwei dokumentenorientierte Datenbanken, die für diese Seite in das Rennen gingen. Das Ergebnis ist knapper als erwartet ausgefallen.
Zwei Sachen sind mir zu MongoDB nach dem letzten Post noch aufgefallen, die nicht unerwähnt bleiben sollen:
Sid Burn hat mich gestern auf MongoDB aufmerksam gemacht.
Ich bin seinem Rat gefolgt, und habe den interaktiven Online-Kursausprobiert. Wider erwarten handelte es sich glücklicherweise nicht um ein langweiliges Video, sondern wirklich um einen interaktiven Lehrer.
CouchDB scheint das dokumentenbasierte Prinzip exakt umgesetzt zu haben, während MongoDB sich näher an der Realität bewegt - und dabei sehr sehr stark an SQL erinnert.