b2aat6n
b2aat6n
b2aat6n
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Experimentieren mit Raven DB<br />
Was kann der Rabe?<br />
Kaum eine Software kommt ohne Persistenz aus.Auf diesem Gebiet stehen die relationalen<br />
Datenbanken in fest gefügter Phalanx.Aber geht Persistenz nicht auch anders? Da gibt es doch diese<br />
NoSQL-Dokumentendatenbanken. Stefan, fällt dir dazu eine Übung ein?<br />
Persistenz ist ein wichtiger Aspekt in<br />
vielen Anwendungen. Seit Jahrzehnten<br />
bewährt sich die Technologie der relationalen<br />
Datenbanken. Sie ist allerdings<br />
nicht in allen Fällen gut geeignet, die Anforderungen<br />
umzusetzen. Wenn das Schema der Daten<br />
flexibel sein muss, bieten sich Alternativen an.<br />
Mit dieser Problematik befasst sich unter dem<br />
Stichwort „NoSQL“ inzwischen eine ganze Reihe<br />
von Projekten. Sie setzen ganz bewusst nicht auf<br />
SQL. Zugleich wollen diese Projekte die relationalen<br />
Datenbanken nicht ersetzen, sondern verstehen<br />
sich als Alternative, die in bestimmten<br />
Kontexten sinnvoll ist. Daher wird NoSQL oft<br />
auch mit „not only SQL“ übersetzt.<br />
Da liegt es doch nahe, sich im Rahmen des<br />
dotnetpro.dojo einmal mit einem NoSQL-Projekt<br />
zu befassen. Schließlich bedeutet regelmäßiges<br />
Üben für Softwareentwickler auch, sich ab und<br />
zu mal mit völlig neuen Dingen zu beschäftigen.<br />
Da Ayende Rahien gerade sein neuestes Projekt<br />
Raven DB [1] veröffentlicht hat, bietet sich die<br />
Chance, zu den Early Adoptern zu gehören. Daher<br />
lautet die Aufgabe des Monats: Schreibe eine<br />
kleine Raven-DB-Anwendung.<br />
Beim Einsatz einer neuen Technologie, mit der<br />
man noch nicht vertraut ist, bietet es sich an,<br />
dies in Form eines sogenannten Spikes zu bewerkstelligen.<br />
Ziel eines Spikes ist nicht, Code zu<br />
schreiben, der Produktionsqualität erreicht, sondern<br />
Ziel ist Erkenntnisgewinn. Doch wenn sich<br />
automatisierte Tests für ein flüssiges Entwickeln<br />
von Produktionscode eignen, mögen sie auch in<br />
einem Spike nützlich sein, um schnell voranzukommen.<br />
Denn nach dem Speichern und Laden<br />
eines Objektes mit Raven DB wird schnell der<br />
Wunsch entstehen, auch die anderen Fähigkeiten<br />
des APIs auszuloten. Da kommt man mit einer<br />
Reihe von Tests, die im Unit Test Runner einzeln<br />
gestartet werden können, zügig voran.<br />
Nach den ersten Schritten, die vor allem dazu<br />
dienen, sich mit dem API vertraut zu machen,<br />
soll eine kleine Aufgabenstellung bearbeitet werden.<br />
Implementieren Sie daher eine kleine Anwendung<br />
zur Bewertung von Produkten. Die Anwender<br />
sollen damit in die Lage versetzt werden,<br />
Produktbewertungen abzugeben und sie einzu-<br />
[Abb. 1] Ungefähr so könnte die Seite für Produktbewer-<br />
tungen aussehen.<br />
sehen. Überlegen Sie sich also ein kleines Datenmodell,<br />
bestehend aus Produkten, Kategorien, in<br />
die ein Produkt fällt, sowie Bewertungen und<br />
Kommentaren zu einem Produkt. Da Raven DB<br />
eben gerade nicht relational ist, besteht die Herausforderung<br />
möglicherweise darin, sich von der<br />
in uns schlummernden relationalen Denkweise<br />
ganz bewusst zu lösen.<br />
Um die Fähigkeiten von Raven DB zu erkunden,<br />
sollten Sie in der Anwendung ein Feature<br />
vorsehen, das Daten aggregiert. Sie können beispielsweise<br />
aus allen abgegebenen Bewertungen<br />
zu einem Produkt den Mittelwert bilden. Oder<br />
die Bewertungen aller Produkte einer Kategorie<br />
aggregieren. Oder das Produkt mit der besten Bewertung<br />
innerhalb einer Kategorie ermitteln.<br />
Lassen Sie Ihrer Fantasie freien Lauf. Einige Ideen<br />
liefert das in Abbildung 1 gezeigte Mockup.<br />
Somit sind Sie diesen Monat eigentlich in<br />
zweifacher Weise herausgefordert: Die erste Herausforderung<br />
ist einfach die Beschäftigung mit<br />
Raven DB. Die zweite besteht darin, beispielhafte<br />
Anforderungen mit Raven DB umzusetzen.<br />
Viel Spaß bei der Arbeit als Forscher auf unbekanntem<br />
Terrain. [ml]<br />
[1] Raven DB, http://ravendb.net/<br />
AUFGABE<br />
dnpCode: A1008DojoAufgabe<br />
In jeder dotnetpro finden Sie<br />
eine Übungsaufgabe von<br />
Stefan Lieser, die in maximal<br />
drei Stunden zu lösen sein<br />
sollte. Wer die Zeit investiert,<br />
gewinnt in jedem Fall – wenn<br />
auch keine materiellen Dinge,<br />
so doch Erfahrung und Wissen.<br />
Es gilt:<br />
❚ Falsche Lösungen gibt es<br />
nicht. Es gibt möglicherweise<br />
elegantere, kürzere<br />
oder schnellere Lösungen,<br />
aber keine falschen.<br />
❚ Wichtig ist, dass Sie reflektieren,<br />
was Sie gemacht<br />
haben. Das können Sie,<br />
indem Sie Ihre Lösung mit<br />
der vergleichen, die Sie<br />
eine Ausgabe später in<br />
dotnetpro finden.<br />
Übung macht den Meister.<br />
Also − los geht’s. Aber Sie<br />
wollten doch nicht etwa<br />
sofort Visual Studio starten…<br />
www.dotnetpro.de dotnetpro.dojos.2011 31<br />
Wer übt, gewinnt