Bei großen Webprojekten ist die Skalierung und Performance der Datenbank ein wichtiger Faktor. Wir haben die Chance genutzt und im Zuge der “CouchConf World Tour” den bisher ersten Termin in Europa / Berlin wahrgenommen um CouchDB kennen zu lernen.

CouchDB ist ein Vertreter der sog. NoSQL Datenbanken – anders als in relationalen Datenbanken wie z.B. mySQL werden Daten nicht in Tabellen sondern als JSON-Objekte abgespeichert. In der Praxis können somit z.B. Kundenbewertungen eines Produktes in einem Dokument abgespeichert werden.

Doch welchen Vorteil hat dies gegenüber z.B. mySQL?

Die Skalierung der Datenbank ist vor allem wesentlich einfacher als mit einer mySQL Datenbank. So können mit CouchBase (ein Produkt, welches CouchDB , Membase und Memcached miteinander kombiniert) mit wenigen Mausklicks neue DB Server ins Cluster hinzugezogen werden, die sich selbstständig und vollautomatisiert synchronisieren und durch die Spiegelung und Verteilung von Daten einen Datenverlust bei Serverausfall verhindern.

Bei großen Webanwendungen wie z.B. sozialen Netzwerken oder Browser Games, welche ein großes Server Cluster benötigen hat CouchDB durch die flexible Skalierung einen Vorteil. Nicht umsonst setzen wohl Unternehmen wie Zynga bei Spielen wie Farmville auf CouchDB bzw. CouchBase.

Was sind die Nachteile?

  • n:m Relationen lassen sich nicht so einfach in einer CouchDB abbilden.
  • Man muss umdenken und überlegen wie man Dokumente anlegt und welche Informationen diese beinhalten sollen.
  • Zudem soll die Performance gegenüber mySQL auf einem einzelnen Server nicht besser, wenn sogar schlechter sein.
  • Komplexe Queries wie man sie z.B. für ausführliche Statistiken benötigt können nicht direkt aus der Datenbank abgefragt werden.
  • Einige Funktionen wie z.B. eine Volltext Suche sind nicht möglich. Hierfür muss man auf alternative Lösungen wie Lucene ausweichen.

Wo macht es Sinn CouchDB einzusetzen?

Vor allem bei Daten, die schnell anwachsen wie z.B. Logs, Privaten Nachrichten, Kommentaren, Bewertungen, … – auch bei Datenmengen von über 10 TB müssen Sie dank der Datenverteilung von CouchBase in einem Cluster keine Angst haben, dass Ihnen der Speicherplatz ausgeht.

Wir werden CouchDB in ein paar größeren Projekten ausprobieren und über unsere Praxiserfahrung in Kürze berichten.