Existen muchas soluciones NoSQL, cada una con sus propias fortalezas y debilidades, por lo que las siguientes deben tomarse con un grano de sal.
Pero, esencialmente, lo que hacen muchas bases de datos NoSQL es confiar en la desnormalización e intentar optimizar para el caso desnormalizado. Por ejemplo, supongamos que está leyendo una publicación de blog junto con sus comentarios en una base de datos orientada a documentos. A menudo, los comentarios se guardarán junto con la publicación misma. Esto significa que será más rápido recuperarlos todos juntos, ya que están almacenados en el mismo lugar y no tiene que realizar una unión.
Por supuesto, puede hacer lo mismo en SQL, y la desnormalización es una práctica común cuando se necesita rendimiento. Es solo que muchas soluciones NoSQL están diseñadas desde el principio para usarse siempre de esta manera. Luego obtienes las compensaciones habituales: por ejemplo, agregar un comentario en el ejemplo anterior será más lento porque tienes que guardar todo el documento con él. Y una vez que se haya desnormalizado, debe cuidar la integridad de los datos en su aplicación.
Además, en muchas soluciones NoSQL, es imposible hacer uniones arbitrarias, por lo tanto, consultas arbitrarias. Algunas bases de datos, como CouchDB, requieren que piense antes de las consultas que necesitará y que las prepare dentro de la base de datos.
Con todo, todo se reduce a esperar un esquema desnormalizado y optimizar las lecturas para esa situación, y esto funciona bien para datos que no son altamente relacionales y que requieren muchas más lecturas que escrituras.