15.02.2013 Aufrufe

b2aat6n

b2aat6n

b2aat6n

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!