Dividir colecciones MongoDB en múltiples servidores a través del enrutador mongos

Tener una base de datos MongoDB llamada maindatabase que tiene 3 colecciones de documentos con nombres de usuarios, etiquetas y categorías, me gustaría saber si es posible dividirlos en tres servidores diferentes por separado (en diferentes proveedores de servicios en la nube).

Quiero decir, no como una réplica, sino solo una colección para el servidor (una base de datos con solo una colección de categorías en un servidor, una con usuarios en otro servidor y otra para etiquetas en el tercer servidor) puede ser enrutada selectivamente por un enrutador mongos.

Alguien sabe si es posible?

preguntado el 22 de mayo de 12 a las 15:05

Sería posible con mongoid 3.0. Echa un vistazo a github.com/mongoid/mongoid/blob/master/…, buscar store_in -

¿Quiso decir el siguiente mongoid/CHANGELOG.md? #1291 Mongoid ahora admite cualquier cantidad de conexiones de base de datos como se define en mongoid.yml. Por ejemplo, podría tener una base de datos de servidor único local, un conjunto de réplicas de zona de disponibilidad múltiple y un clúster de fragmentos, todo en el mismo entorno de aplicación. Mongoid puede conectarse a cualquier sesión en cualquier momento. -

@LucaGSoave sí, me refería solo a eso. -

Solo por curiosidad: ¿Por qué es necesario separar las colecciones en diferentes centros de datos de proveedores de la nube? Puedo entender el posicionamiento de los nodos de conjuntos de réplicas de esta manera y tener una estrategia de recuperación ante desastres, pero me encantaría escuchar la propuesta de valor para las tiendas de recolección separadas geográficamente. -

@DavidMakogon, con un proyecto de presupuesto cero y utilizando los servicios gratuitos en la nube de MongoID como MongoHQ + MongoLab + OtherMongos... (hoy en día, todo el mundo tiene un plan gratuito), puede ampliar la experimentación de Data Crunching por encima del límite de tamaño de un único proveedor. Si no tienes problemas de presupuesto, olvídalo :-) ... a menos que seas como yo y solo quieras JUGAR con los límites arquitectónicos de esta increíble tecnología: bit.ly/JmzZon -

2 Respuestas

Aparte de la respuesta de @matulef con respecto a la manipulación manual de bases de datos a través de movePrimary, tal vez esto requiera una solución más simple de simplemente mantener 3 conexiones de base de datos: una por servidor, cada una en un centro de datos de un proveedor de nube diferente como especificó originalmente. No tendrías la sencillez de un solo mongos punto de conexión, pero con sus tres conexiones, podría manipular directamente users, tagsy categories en cada una de sus respectivas conexiones.

contestado el 23 de mayo de 12 a las 04:05

gracias por contribuir David, todavía no cerraré esta pregunta hasta que surjan otras vistas... También tengo que intentar algo, gracias de nuevo hasta ahora. - Luca G. Soave

Esta es la forma en que yo iría también. - Hasta el arroyo

Desafortunadamente, actualmente no puede dividir las colecciones en una sola base de datos de esta manera. Sin embargo, es posible hacer esto si coloca cada colección en una base de datos diferente. En un sistema fragmentado, cada base de datos tiene un "fragmento primario" asociado, donde viven todas las colecciones no fragmentadas en esa base de datos. Si separa sus 3 colecciones en 3 bases de datos diferentes, puede moverlas individualmente a diferentes fragmentos usando el comando "movePrimary":

http://www.mongodb.org/display/DOCS/movePrimary+Command

Sin embargo, hay algunos gastos generales asociados con la creación de más bases de datos, por lo que no está claro si esta es la mejor solución para sus necesidades.

contestado el 22 de mayo de 12 a las 19:05

Y movePrimary es peligroso. Una vez hecho esto, encontrará que algunas mangostas ven la ubicación principal anterior, mientras que otras ven la nueva. Ver jira.mongodb.org por los problemas de larga data en este comando. - james blackburn

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.