Saltar al contenido

Subdocumentos de Mongoose vs esquema anidado

Buscamos en internet y así traerte la solución para tu duda, si tienes dudas puedes dejarnos tu inquietud y te responderemos con mucho gusto, porque estamos para servirte.

Solución:

Según los documentos, es exactamente lo mismo. Sin embargo, el uso de un esquema agregaría un _id campo también (siempre que no lo tenga deshabilitado), y presumiblemente usa algunos recursos más para rastrear subdocs.

Sintaxis de declaración alternativa

Nuevo en v3 Si no necesita acceder a la instancia del esquema del subdocumento, también puede declarar los subdocumentos simplemente pasando un objeto literal […]

Si tiene esquemas que se reutilizan en varias partes de su modelo, entonces podría ser útil definir esquemas individuales para los documentos secundarios para que no tenga que duplicarse.

Debe utilizar documentos incrustados si son static documentos o que no sean más de unos pocos cientos debido al impacto en el rendimiento. He hablado sobre ese tema hace un tiempo. Recientemente, Asya Kamsky, que trabaja como arquitecta de soluciones para MongoDB, había escrito un artículo sobre el “uso de subdocumentos”.

Espero que ayude a quien está buscando soluciones o la mejor práctica.

Publicación original en http://askasya.com/post/largeembeddedarrays. Puede comunicarse con su perfil de stackoverflow en https://stackoverflow.com/users/431012/asya-kamsky

En primer lugar, tenemos que considerar por qué querríamos hacer tal cosa. Normalmente, recomendaría a las personas que inserten cosas que siempre quieren recuperar cuando buscan este documento. La otra cara de esto es que no desea incrustar cosas en el documento que no desea recuperar.

Si incrustas la actividad que realizo en el documento, funcionará muy bien al principio porque toda mi actividad está allí y con una sola lectura puedes recuperar todo lo que quieras mostrarme: “has hecho clic recientemente en esto y aquí son tus dos últimos comentarios” pero ¿qué sucede después de que pasan seis meses y no me importan las cosas que hice hace mucho tiempo y no me las quieres mostrar a menos que específicamente vaya a buscar alguna actividad antigua?

Primero, terminará devolviendo un documento cada vez más grande y preocupándose por una porción cada vez más pequeña. Pero puede usar la proyección para devolver solo algunos de los arrayel verdadero problema es que el documento en el disco se hará más grande y aún se leerá por completo, incluso si solo va a devolver una parte al usuario final, pero dado que mi actividad no se detendrá mientras yo Estoy activo, el documento seguirá creciendo y creciendo.

El problema más obvio con esto es que eventualmente alcanzará el límite de documentos de 16 MB, pero eso no es lo que debería preocuparle en absoluto. Un documento que crece continuamente incurrirá en un costo cada vez mayor cada vez que tenga que reubicarse en el disco, e incluso si toma medidas para mitigar los efectos de la fragmentación, sus escrituras en general serán innecesariamente largas, lo que afectará el rendimiento general de toda su aplicación.

Hay una cosa más que puede hacer que matará por completo el rendimiento de su aplicación y es indexar este creciente
array. Lo que eso significa es que cada vez que el documento con este array se reubica, la cantidad de entradas de índice que deben actualizarse es directamente proporcional a la cantidad de valores indexados en ese documento, y cuanto mayor sea la arraymayor será ese número.

No quiero que esto lo asuste de usar arreglos cuando se ajustan bien al modelo de datos: son una característica poderosa del modelo de datos de la base de datos de documentos, pero como todas las herramientas poderosas, debe usarse en las circunstancias adecuadas. y debe usarse con cuidado.

valoraciones y comentarios

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *