2010-08-17 18 views
33

Estoy desarrollando un sitio web de citas y estoy pensando en utilizar una base de datos NoSQL para almacenar los perfiles, etc. Actualmente estoy buscando en el MongoDB y hasta ahora estoy muy contento. La única preocupación es que leo en diferentes sitios web que MongoDB no es confiable y no es bueno.¿Es MongoDB confiable?

Miré en las alternativas NoSQL y no encontró uno que cumpla plenamente mis criterios específicos:

  1. fácil de aprender y utilizar.

  2. Totalmente compatible con PHP fuera de la caja.

  3. Rápido y bien documentado.

¿Qué piensas, estoy haciendo lo correcto para ir con MongoDB o es una pérdida de tiempo?

Agradecidos por todos los comentarios al respecto!

+5

Cualquier software, particularmente uno sobre qué sentimiento "religioso" se aplica (por ejemplo, 'vi' vs.' emacs') tendrá su cuota de detractores. ¿Cómo sabes que los "diferentes sitios web" son confiables? (No uso (conscientemente) MongoDB o sus familiares, así que no tengo ninguna opinión al respecto). – msw

+1

para otros dbs NoSQL fáciles de aprender, me gusta Redis y memcachedb – Javier

Respuesta

7

Cualquier software puede ser confiable o no confiable. MongoDB tiene conjuntos de réplicas, que le brindan capacidades de failover de hardware. Puede realizar copias de seguridad de forma periódica, lo que le proporciona un intervalo de recuperación, y obtiene fragmentación, lo que puede proporcionarle un poco de redundancia, especialmente cuando se combina con conjuntos de réplicas.

El problema no es si la tecnología es confiable o no, la cuestión es si tiene o no un plan de copia de seguridad y recuperación bien definido que se adapte a su plataforma de elección.

Si MongoDB se adapta a sus necesidades, está tomando la decisión correcta. Solo asegúrate de investigar qué puedes hacer para aumentar tu confiabilidad.

2

10gen, la compañía detrás de MongoDB proporciona el controlador PHP oficial. Como dice Jeremiah, implementan conjuntos de réplicas en la última versión (1.6.0) y ya lo han depurado (1.6.1 y la próxima versión en algunas semanas: 1.6.2).

Mostover, el soporte gratuito por la empresa y las comunidades es muy rápido y eficiente (por 'libre' me refiero a la pregunta sobre los grupos de Google: http://groups.google.com/group/mongodb-user?pli=1)

25

Investigué MongoDB para mi inicio del servicio social, y es sin duda vale la pena considerarlo. MongoDB tiene un potente conjunto de características que lo convierte en una alternativa realista y sólida a las soluciones RDBMS.

Entre ellos:

  1. Documento Base de datos: mayoría de los datos se incrusta en un documento, por lo que con el fin de obtener los datos acerca de una persona, que no tiene que unir varias tablas. Por lo tanto, un mejor rendimiento para muchos casos de uso.
  2. Strong Query Language: A pesar de no ser un RDBMS, MongoDB tiene un lenguaje de consulta muy fuerte que le permite obtener algo muy específico o muy general de un documento o documentos. El DB se consulta utilizando javascript para que pueda hacer muchas más cosas además de consultar (p.funciones, cálculos).
  3. Sharding & Replicación: Sharding le permite escalar horizontalmente en lugar de verticalmente. En otras palabras, más servidores pequeños en lugar de un servidor enorme. Y la replicación le brinda seguridad contra fallas en varias configuraciones (por ejemplo, maestro/esclavo).
  4. de indexación de gran alcance: originalmente se interesó en MongoDB porque permite geo-espacial la indexación de la caja, pero tiene muchas otras configuraciones de indexación también.
  5. multiplataforma: MongoDB tiene muchos drivers.

En cuanto a la documentación, no hay diluvio, pero eso se debe a que este proyecto solo comenzó en 2009; pronto habrá mucho más. Sin embargo, hay suficiente para comenzar con su proyecto. Además de eso, puede consultar Kyle Banker's MongoDB in Action, gran recurso.

Por último, tenía experiencia solo con RDMBS antes de MongoDB, no sabía javascript o json y todavía me pareció muy simple y elegante.

5

Si es lo suficientemente bueno para Foursquare lo más probable es que sea lo suficientemente bueno para usted.

2

Bueno, otros puntos acerca de la fiabilidad:

  • La comunidad reacciona muy rápido si se encuentra con cualquier problema crítico.
  • Debe preocuparse por sus expectativas sobre la "fiabilidad": ¿necesita una garantía para almacenar sus datos de forma segura, sin corromperse nunca?
    • En este caso, tendrá que comparar el costo de comprar un hardware fiable y despliegue de MongoDB replica-conjuntos
  • Qué quiere decir tener un servicio de alta disponibilidad?
  • MongoDB tiene algunos problemas con los jóvenes, no puedo decir lo contrario. Pero esto definitivamente NO es una pérdida de tiempo, y tal vez una solución a largo plazo.
0

MongoDB sería una buena opción. Evaluamos y comenzamos a usar MongoDB para nuestras aplicaciones empresariales. MongoDB nos ofrece un mejor rendimiento que Oracle y también es fácil escalar horizontalmente.

3

Vengo de un fondo RDBMS (12 años) y he pasado los últimos 6 meses mirando las opciones NoSQL. Para su escenario, MongoDB, parece una buena opción.Lo que estoy escuchando de los que han trabajado con MongoDB en la producción durante algún tiempo, es que debes seguir estos procedimientos recomendados:

  1. mantener el tamaño pequeño clave
  2. Evaluar (y posiblemente añadir) índices para acelerar las consultas
  3. Tener en cuenta las esquema (sé que parece extraño para una base de datos 'sin esquema', pero he escuchado muchas veces
  4. uso réplica establece

he aquí una video de un mejor -prácticas hablar del Grupo de Usuarios de MongoDB LA que me parece útil

2

Eso depende de lo que necesite fiabilidad. Mongo es muy confiable para leer, tiene una gran disponibilidad y características de fragmentación.

OTOH, las escrituras de Mongo no son confiables. Mientras la mayoría realiza, nunca se garantiza que la actualización sea exitosa o no y usted tiene que consultar manualmente la base de datos para verificar si sucedió.

Por lo tanto, Mongo se usa mejor cuando tiene más lecturas que escrituras que absolutamente necesita para tener éxito.

Cuestiones relacionadas