Estoy construyendo un sistema de contabilidad simple donde un usuario tiene muchas facturas. Ahora estoy tratando de decidir si las facturas deben ser su propia colección o anidadas dentro del usuario. Me estoy inclinando por lo primero, pero NUNCA he hecho nada de SQL, así que voy por ensayo y error y lo que creo tiene sentido para mí.Mongo DB Design, incrustación vs relaciones
Entiendo que Mongo tiene un límite de tamaño de documento de 4mb, que es lo que me hace pensar que debería tener una colección separada para las facturas, ya que se acumularán diariamente y podrían ocupar una gran cantidad de espacio.
Estoy buscando opiniones al respecto. Básicamente voy a consultar las facturas de un usuario entre diferentes períodos de fechas (como se puede imaginar un sistema de contabilidad haría).
No es que realmente importe pero estoy usando Mongoid en un proyecto de Rails3. Pensé que haría algo como:
class User
references_many :bills
end
class Bill
referenced_in :user
end
Cualquier comentario o sugerencia de diseño es muy apreciada.
ah solo está en la escritura ... ¿afecta esto a las opciones atómicas en los documentos integrados? Por ejemplo, si solo estoy haciendo un $ push en mis facturas en mi documento de usuario, ¿importa si mi usuario y todas sus facturas ascienden a 4mb, o solo si la factura en sí es 4mb en escritura? Tengo la sensación de que es lo último y, por lo tanto, estoy a salvo (ya que no hay forma posible de que una sola factura contenga 4mb de datos, o que estaría escribiendo suficientes facturas en 1 intento para alcanzar esa cantidad) ¿Suena bien? Asumiendo eso, creo que aceptaré su sugerencia y me iré desnormalizando. – brad
Hmm ... Creo que estaba equivocado, estoy bastante seguro de que el límite de 4mb afectaría al usuario si sus cuentas excedieran esa cantidad, sin embargo, la cantidad de datos en una factura es bastante pequeña, así que lo voy a dar un tiro con billetes incrustados y hacer algunas pruebas en el futuro para ver qué tipo de capacidad de facturación puedo manejar – brad