Es gibt viele NoSQL-Lösungen, von denen jede ihre eigenen Stärken und Schwächen hat. Daher muss Folgendes mit ein wenig Salz aufgenommen werden.
Aber im Grunde genommen verlassen sich viele NoSQL-Datenbanken auf Denormalisierung und versuchen, sie für den denormalisierten Fall zu optimieren. Angenommen, Sie lesen einen Blog-Beitrag zusammen mit seinen Kommentaren in einer dokumentenorientierten Datenbank. Oft werden die Kommentare zusammen mit dem Beitrag selbst gespeichert. Dies bedeutet, dass es schneller ist, alle zusammen abzurufen, da sie am selben Ort gespeichert sind und Sie keinen Join durchführen müssen.
Natürlich können Sie dies auch in SQL tun, und Denormalisierung ist eine gängige Praxis, wenn Leistung benötigt wird. Es ist nur so, dass viele NoSQL-Lösungen von Anfang an so entwickelt wurden, dass sie immer auf diese Weise verwendet werden. Sie erhalten dann die üblichen Kompromisse: Zum Beispiel ist das Hinzufügen eines Kommentars im obigen Beispiel langsamer, weil Sie das gesamte Dokument damit speichern müssen. Sobald Sie denormalisiert haben, müssen Sie dafür sorgen, dass die Datenintegrität in Ihrer Anwendung erhalten bleibt.
Darüber hinaus ist es in vielen NoSQL-Lösungen unmöglich, willkürliche Verknüpfungen und damit willkürliche Abfragen durchzuführen. Bei einigen Datenbanken, wie z. B. CouchDB, müssen Sie die erforderlichen Abfragen überdenken und sie in der Datenbank vorbereiten.
Alles in allem läuft es darauf hinaus, ein denormalisiertes Schema zu erwarten und Lesevorgänge für diese Situation zu optimieren, und dies funktioniert gut für Daten, die nicht sehr relational sind und die viel mehr Lesevorgänge als Schreibvorgänge erfordern.