Hay muchas soluciones NoSQL alrededor, cada una con sus propias fortalezas y debilidades, por lo que lo siguiente debe tomarse con un grano de sal.
Pero esencialmente, lo que hacen muchas bases de datos NoSQL es confiar en la desnormalización y tratar de 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. Esto significa que será más rápido recuperarlos todos juntos, ya que se almacenan en el mismo lugar y no es necesario realizar una unión.
Por supuesto, puede hacer lo mismo en SQL, y la desnormalización es una práctica común cuando uno necesita rendimiento. Es solo que muchas soluciones NoSQL están diseñadas desde el principio para ser utilizadas siempre de esta manera. Luego, obtienes las ventajas y desventajas habituales: por ejemplo, agregar un comentario en el ejemplo anterior será más lento porque debes guardar todo el documento con él. Y una vez que ha desnormalizado, debe cuidar de preservar la integridad de los datos en su aplicación.
Además, en muchas soluciones NoSQL, es imposible hacer combinaciones arbitrarias, por lo tanto consultas arbitrarias. Algunas bases de datos, como CouchDB, requieren que piense antes de las consultas que necesitará y las prepare dentro de la base de datos.
En general, se reduce a esperar un esquema desnormalizado y la optimización de las lecturas para esa situación, y esto funciona bien para los datos que no son altamente relacionales y que requieren muchas más lecturas que escrituras.