Da es verschiedene NoSQL-Datenbanken gibt, ist es schwierig spezifische Anwendungsfälle hervorzuheben. Ganz allgemein, werden NoSQL-Datenbanken jedoch oft da eingesetzt, wo die relationalen Datenbanken an ihre Grenzen stoßen, weil sie schlicht nicht für diese Anwendungsfälle entwickelt wurden.
NoSQL Datenbanken sind allerdings (meist) für einen speziellen Use-Case entwickelt und haben dort ihre großen Stärken, woanders aber auch Schwächen. In größeren Systemen sind deshalb oft mehrere verschiedene Datenbanken im Einsatz.
Um dir ein paar Beispiele zu nennen:
- Cassandra wird zum Beispiel sehr gerne als Persistierungslayer für Logs hergenommen (Stichwort: Internet of Things). In diesem Szenario wird sehr, sehr viel geschrieben und im Verhältnis dazu wenig gelesen. Deswegen ist Cassandra auf Schreiboperationen optimiert und kann sehr einfach in einer verteilten Umgebung betrieben werden.
- Neo4J ist eine Graph Datenbank und kann selbstverständlich sehr gut Graphen abbilden und macht es leicht und performant Abfragen darauf auszuführen (Stichwort: Soziale Netzwerke). Dafür ist es nicht so nicht so einfach die Datenbank auf mehrere Rechner zu skalieren.
- MongoDB ist ein Documentstore, der, wie der Name schon sagt, ganze Dokumente (z.B. JSON-Dokumente) abspeichert und diese dann schnell wieder ausliefern kann. Dies ist besonders wichtig, wenn man eh immer nur das ganze Dokument ausliefern will und nicht nur einzelne Spalten des Dokuments. Dafür ist es schwierig auf einzelnen Spalten nach bestimmten Werten zu suchen.
- Elasticsearch ist ein Suchserver. Es ist wahnsinnig performant, wenn man Volltextsuche betreiben will und kann dir auf den Resultaten auch noch Aggregationen liefern (Stichwort: Suchleiste auf fast jeder Webseite). Allerdings sind die Updateoperationen relativ teuer und es ist keine echte Datenbank, deswegen würde ich Elasticsearch nicht als primäre Datenbank verwenden, da es durchaus zu Datenverlust kommen kann. In solchen Fällen ist es sehr entspannend einen konsistenten primären Speicher zu haben.
Wie du siehst sind die Anwendungsfälle sehr breit und kommen eher auf die konkrete Datenbank an!