Wieso ich NoSQL nicht mag
Naja dieser Titel soll eigendlich nur provozierend sein. Ich mag sowohl SQL als auch NoSQL. Jedoch finde ich den Begriff zu allgemein und zu exklusiv.
Also was ist SQL? Es steht für Structured Query Language und bezeichnet eine formale Sprache zur abfrage von strukturierte Daten. In der Regel werden Relationale Datenbanken als SQL Datenbank bezeichnet.
Also sind mit NoSQL alle nicht Relationale Datenbanken gemeint.
Am bekanntesten sind wohl die dokumentenorientierte Datenbanken wie z.B. MongoDB, Elasticsearch und Firebase. Aber auch Key Value Stores wie Redis, Amazon Dynamo und memcached.
Jedoch gibt es des weiteren auch Graphdatenbanken (Titan, ArangoDB, Neo4j), Spaltenorientierte Datenbanken und …
(Persönlich finde ich vor allem Graphdatenbanken sehr spannend.)
Somit macht man es sich sehr einfach wenn man diese viele Datenbanktypen lediglich als nicht-SQL bezeichnet anstatt auf deren Charakteristika und Einsatzgebiete einzugehen.
Letztendlich denke ich, dass man sich nicht die Frage stellen sollte: “SQL vs NoSQL”. Sondern vielmehr zu schauen welche Eigenschaften das zu lösende Problem hat.
- Brauche ich ACID Transaktionen
- Brauche ich eine Verteilte Datenbank
- Ist das model konsistent oder muss es flexibel sein
- Wie hoch sind die Last und die Anforderungen an die Skalierung
- Kannst du mit eventual consistency leben? (Die meisten NoSQL-Datenbanken sind schließlich konsistent.)
- Wie komplex werden deine queries sein? (Wenn du mehr relationale Abfragen hat, verwenden eine relationale Datenbank)