Навколо існує багато рішень NoSQL, кожне з яких має свої сильні та слабкі сторони, тому наступне потрібно сприймати із зерном солі.
Але, по суті, багато баз даних NoSQL - це покладатися на денормалізацію та намагатися оптимізувати для денормалізованого випадку. Наприклад, скажіть, що ви читаєте допис у блозі разом із його коментарями у базі даних, орієнтованої на документи. Часто коментарі будуть збережені разом із самою публікацією. Це означає, що швидше відновити їх усі разом, оскільки вони зберігаються там же, і вам не доведеться виконувати з'єднання.
Звичайно, ви можете зробити те ж саме в SQL, і денормалізація - це звичайна практика, коли потрібна продуктивність. Просто багато рішень NoSQL розробляються з самого початку і завжди використовуються таким чином. Потім ви отримуєте звичайні компроміси: наприклад, додавання коментаря до наведеного вище прикладу буде повільніше, оскільки вам потрібно зберегти весь документ разом з ним. Після денормалізації ви повинні подбати про збереження цілісності даних у вашій програмі.
Більше того, у багатьох рішеннях NoSQL неможливо робити довільні приєднання, отже, довільні запити. Деякі бази даних, наприклад CouchDB, вимагають заздалегідь продумати запити, які вам знадобляться, та підготувати їх всередині БД.
Загалом, це зводиться до очікування денормалізованої схеми та оптимізації зчитування для цієї ситуації, і це добре працює для даних, які не є дуже реляційними і вимагають набагато більше читань, ніж записів.