Con MongoDB, sólo puede tienda de objetos JSON y recuperarlos completamente formados, por lo que realmente no necesita una capa ORM y que pase menos tiempo de CPU traducir sus datos de ida y vuelta. Los desarrolladores detrás de MongoDB también han hecho que la escala horizontal de la base de datos sea una prioridad más alta y le permiten ejecutar código Javascript arbitrario para preprocesar datos en el lado de la base de datos (lo que permite el filtrado de datos de estilo map-reduce).
Pero pierde algunas de estas ganancias: No puede unir registros. En realidad, la estructura JSON que almacena solo puede realizarse a través de combinaciones en SQL, pero en MongoDB solo tiene esa estructura para sus datos, mientras que en SQL puede hacer consultas de forma diferente y obtener sus datos representados de maneras alternativas mucho más fácil, por lo que necesita hacer muchos análisis en su base de datos, MongoDB lo hará más difícil.
El lenguaje de consulta en MongoDB es "más áspero", en mi opinión, que SQL, en parte porque es menos familiar, y en parte porque las características de consulta se "sienten" al azar, en parte para hacerlo JSON válido y en parte porque hay literalmente un par de formas de hacer lo mismo, y algunas son formas antiguas que no son tan útiles o tienen un formato regular como las demás. Y existe la complejidad añadida de los tipos de matriz y subobjeto sobre el diseño simple basado en filas de SQL, por lo que la sintaxis debe poder consultar las matrices que contienen algunos de los valores que ha definido, contienen todos del los valores que ha definido, contienen solo los valores que ha definido y contienen ninguno de los valores que ha definido. Las mismas distinciones se aplican a las claves de objeto y sus valores, y esto hace que la sintaxis de la consulta sea más difícil de comprender. (Y aunque puedo ver la necesidad de edge-cases, el parámetro de consulta $where
, que toma una función javascript que se ejecuta en cada registro de los datos y devuelve un booleano, es una canción de Siren porque puedes definir fácilmente qué objetos quieres para volver o no, pero tiene que ejecutar en cada registro en la base de datos, no hay índices se pueden utilizar.)
por lo tanto, depende de lo que quiere hacer, pero ya que usted dice que es un Google Docs clon, que probablemente no se preocupan por cualquier representación pero la representación de documentos, en sí, y que está probablemente sólo va a consulta basada en ID de documento, nombre del documento o del propietario del nombre/ID, nada demasiado complejo en la consulta.
Entonces, yo diría que es capaz de tomar la representación JSON del documento que su usuario está editando, y simplemente ponerlo en la base de datos y hacer que indexe automáticamente estos campos importantes, vale la pena el precio de aprender una nueva base de datos .
gracias por tomarse el tiempo para responderme, leyendo eso. – user1305989