Estoy tratando de conceptualizar la mejor manera de escalar una base de datos MongoDB.
Por ejemplo, suponga que desea crear un sitio que venda casas en diferentes estados utilizando un MongoDB en el backend. Para la futura escalabilidad y el rendimiento del sitio, ¿sería una buena práctica tener varias colecciones para cada estado o enumerar todo en EE. UU. y luego buscar o encontrar el estado dentro de la colección?
**Collection - Texas** {"_id":{"$oid":"xxxxxxxxxxxxx"},"name":"Modern loft","state":"Texas"} {"_id":{"$oid":"xxxxxxxxxxxxx"},"name":"Vacant Plot","state":"Texas"} x 1000 entries **Collection - USA** {"_id":{"$oid":"xxxxxxxxxxxxx"},"name":"Family Home","state":"Texas"} {"_id":{"$oid":"xxxxxxxxxxxxx"},"name":"Beach House","state":"California"} x 1000 entriesTodo depende de cómo buscaría y presentaría los datos...
Desde la perspectiva del rendimiento, incluso será mejor dividir los datos en la base de datos por estado y colecciones para representar la ciudad, pero esto significa una lógica adicional en su aplicación para admitir el modelo y la lógica para obtener algunos detalles globales de todos los estados/ciudades se convertirá en un poco mas complejo.
Si tiene todo en una sola colección y elige buenos índices, no habrá problemas; en algún momento, cuando la base de datos crezca, solo tendrá que dividir la colección en más fragmentos, pero la lógica para manejar la base de datos seguirá siendo simple. ya que tendrás todo en un solo lugar. (aquí es donde su base de datos de elección-mongodb puede ser de ayuda ya que el mecanismo de fragmentación está integrado y es muy fácil de configurar)
Entonces, para mí, dividir los datos en estados es un buen compromiso, ya que no es necesario que la gente de Oregón consulte todos los datos de EE. UU. para encontrar algunas casas en algún pequeño pueblo de Oregón cuando solo pueden buscar la colección en Oregón, pero Al mismo tiempo, si fragmenta la colección y tiene un buen índice de fragmentación que incluye el estado, la consulta irá solo al fragmento donde se encuentran los datos de Oregón..., con la fragmentación hay otro truco, por ejemplo, si busca casas con natación pool, pero no incluye el estado en el filtro (si es una clave de fragmentación), la consulta se dispersará y reunirá en todos los fragmentos para encontrar esos hauses...
Espero haber respondido a tu pregunta...