Über den sehr interessanten Artikel "Aufstand der NoSQL-DBs" in der Zeitschrift "database pro 1/2010" wurde ich auf die sogenannten "no-SQL-Datenbanken" aufmerksam. Den Begriff kannte ich bisher noch nicht. Das ist ein Oberbegriff für alle möglichen "neuen" Datenbanksysteme, die Bedürfnisse erfüllen, die man mit den bisherigen relationalen Systemen nicht oder nicht gut abdecken kann. Die relationalen Systeme sind sehr klar definiert und man kann relativ schnell das Grundkonzept erfassen und erläutern.
Die NoSQL-Systeme definieren sich hingegen dadurch, dass die anders funktionieren als relationale Systeme. Dementsprechend groß ist die Vielfalt der dahinter steckenden Technologien. Einen ganz guten Überblick bietet die Seite www.nosql-databases.org. Hier werden die Datenbanksysteme so kategorisiert:
- Wide Column Stores
- Document Stores
- Key Value / Tuple Stores
- Eventually Consistent Key Value Stores
- Graph Databases
- Object Databases
- und sonstigen 😉
So unterschiedlich wie die eingesetzten Technologien, so unterschiedlich sind die Anforderungen, die die Systeme erfüllen wollen. Daher wird "NoSQL" mittlerweile auch mit "not only SQL" übersetzt. Im oben genannten Artikel wird NoSQL so definiert:
Neue Datenbanken und Datenbanktechnologien, die in der Mehrzahl viele der folgenden Punkte adressieren: nicht relational, verteilt, Open Source und horizontal skalierbar. Des Weiteren gelten häufig noch folgende Eigenschaften: relativ schemafrei, Replikationsunterstützung, Partitionierung- beziehungsweise Sharding-Unterstützung, einfaches API, "evantually consistent" […] und einiges mehr.
Das klingt nun nicht wirklich nach einer Definition, was aber daran liegt, dass die verschiedenen Systeme sich sehr stark voneinander unterscheiden. Ich bin mal gespannt, ob einzelne dieser Systeme sich im Markt etablieren können.