2011-11-03 39 views
61

Quiero utilizar una base de datos NoSQL en Windows Azure y el volumen de datos será muy grande. Si un almacenamiento Azure Table o una base de datos MongoDB ejecutándose con un rol Worker puede ofrecer un mejor rendimiento y escalabilidad? ¿Alguien ha usado MongoDB en Azure usando un rol de Trabajador? Comparta sus ideas sobre el uso de MongoDB en Azure en el almacenamiento de tablas de Azure.Azure Table Vs MongoDB en Azure

Respuesta

72

Tabla de almacenamiento es una función de almacenamiento de Windows Azure núcleo, diseñado para ser escalable ( 100 TB 200TB 500 TB por cuenta), durable (triple-replicado en el centro de datos, opcionalmente georeplicated a otro centro de datos), y sin esquema (cada fila puede contener cualquier propiedad que desee). Una fila se encuentra mediante la tecla de partición + clave de fila, proporcionando una búsqueda muy rápida. Todo el acceso a Table Storage se realiza a través de una API REST bien definida que se puede usar a través de cualquier idioma (con SDK, construido sobre las API REST, ya implementadas para .NET, PHP, Java, Python & Ruby).

MongoDB es una base de datos orientada a documentos. Para ejecutarlo en Azure, debe instalar MongoDB en roles web/worker o Virtual Machine, apuntarlo a una unidad en la nube (proporcionando así una letra de unidad) o un disco adjunto (para máquinas virtuales Windows/Linux), opcionalmente activar el diario (que recomiendo) y, opcionalmente, defina un punto final externo para su uso (o acceda a él a través de una red virtual). La unidad Cloud Drive/disco adjunto, por cierto, en realidad se almacena en una burbuja azul, que le da la misma durabilidad y georeplicación que Azure Tables.

Al comparar los dos, recuerde que Table Storage es Storage-as-a-Service: simplemente tiene acceso a un punto final REST bien conocido. Con MongoDB, usted es responsable de mantener la base de datos (por ejemplo, cuando MongoDB Inc (anteriormente 10gen) lanza una nueva versión de MongoDB, deberá actualizar su servidor según corresponda).

En cuanto a la versión alfa de MongoDB Inc apuntado por jtoberon: Si usted toma una mirada cercana a ella, verá algunas cosas claves:

  • La instalación es por ejemplo un mongodb independiente, sin replicativa conjuntos o fragmentos En cuanto a los conjuntos de réplicas, aún obtiene muchos beneficios al utilizar la versión Independiente, debido a la forma en que funciona el almacenamiento Blob.
  • Para proporcionar alta disponibilidad, puede ejecutar con varias instancias. En este caso, solo una instancia sirve a la base de datos, y una es una 'espera activa' que inicia el proceso mongod tan pronto como falla la otra instancia (para reinicio de mantenimiento, falla de hardware, etc.).

Mientras que el envoltorio Windows Azure de 10gen todavía se considera 'alfa', mongod.exe no lo es. Puede ejecutar el exe mongod tal como lo haría con cualquier otro exe de Windows. Es solo el código de administración alrededor del lanzamiento, y eso es lo que la implementación de alpa está demostrando.

EDITAR 2011-12-8: Esto ya no está en estado alfa. Puede descargar el último proyecto de MongoDB + Windows Azure here, que proporciona compatibilidad con conjuntos de réplicas.

Para el rendimiento, creo que tendrá que hacer algunas pruebas comparativas. Una vez dicho esto, tenga en cuenta lo siguiente:

  • Al acceder a cualquiera de las tablas de almacenamiento o MongoDB desde, por ejemplo, un papel Web, todavía estás llegando al sistema de almacenamiento de Windows Azure.
  • MongoDB usa mucha memoria para su propio caché. Por este motivo, muchos sistemas MongoDB de gran escala se implementan en tamaños de instancia más grandes. Para el acceso de Almacenamiento de tabla, no tendrá la misma consideración de tamaño de memoria.

EDITAR 7 de abril de, el año 2015 Si desea utilizar una base de datos basada en documentos como-un-servicio, Azure ofrece ahora DocumentDB.

+0

No he tris esto por mí mismo, pero MongoDB parece venir como un add-on Azure a través de la tienda. Presumiblemente, eso hace que la implementación sea tan simple como la del almacenamiento de tablas Azure. – John

35

He utilizado ambos.

Azure Tables: muy simple, rápido, muy difícil de escribir, incluso las consultas simples.

Mongo: se ejecuta muy bien, muchas funciones de consulta, requiere varias instancias para ser confiable.

En pocas palabras, si sus consultas son realmente simples (clave-> valor), debe ejecutar una comparación de costos (principalmente el número de transacciones en comparación con el costo de almacenamiento de Mongo en Azure). Prefiero ir a la mesa de almacenamiento para ese. Si necesita consultas más elaboradas y no quiere ir a SQL Azure, es probable que Mongo sea su mejor opción.

+0

¿Sigue siendo así después de haber publicado los puntos finales similares a WCF Data Services? Creo que puede hacer LINQ sobre esos puntos finales –

+0

¿Puede explicar (o señalar a una referencia) que su comentario "requiere varias instancias para ser confiable"? ¿Por qué 2 no sería confiable? – Mark

+1

Sí, todavía es cierto que la consulta en Azure Tables es difícil, incluso en versiones más recientes. Puede hacer LINQ, pero no todas las características son compatibles, por ejemplo, orderby, "contains" y count y dará como resultado un error. Cualquier consulta además de aquellas en contra de PK resulta en un escaneo de tabla. – Daniel

5

Mi primera opción es AzureTables porque el modelo SAAS y de bajo costo y SLA 99,99%
http://alexandrebrisebois.wordpress.com/2013/07/09/what-if-20000-windows-azure-storage-transactions-per-second-isnt-enough/


algunos límites .. http://msdn.microsoft.com/en-us/library/windowsazure/jj553018.aspx


http://www.windowsazure.com/en-us/pricing/calculator/?scenario=data-management

o AzureSQL para la pequeña empresa

Docum entDB http://azure.microsoft.com/en-us/documentation/services/documentdb/ http://azure.microsoft.com/en-us/documentation/articles/documentdb-limits/


segunda opción es muchos proveedores de nube como Amazon oferta S3

o Google tablas https://developers.google.com/bigquery/pricing


elección enésimo gestionar la DEMOSTRACIÓN todo por mí mismo no tienen el sueño MongoDB así miraré de nuevo los dos primeros SAAS


Mi elección si estoy ejecutando "CLOUD" I wi ll ir para el modelo SAAS tanto como sea posible "Alquílalo" ...

La cuestión es lo que mi aplicación necesita es que AzureTables o DocumentDB o AzureSQL
documentación DocumentDB http://azure.microsoft.com/en-us/documentation/services/documentdb/

Cómo funciona Precios Azure http://azure.microsoft.com/en-us/pricing/details/documentdb/

esto es divertido http://www.documentdb.com/sql/demo

8

Soy consciente de que esta pregunta es anticuado. Me gustaría agregar la siguiente información para quienes puedan encontrar esta pregunta en sus búsquedas.

Tenga en cuenta que ahora, MongoDB se ofrece como un servicio totalmente administrado en Azure.(Oficialmente en beta a partir de abril '15)

Ver: http://www.mongodb.com/partners/cloud/microsoft o https://azure.microsoft.com/en-us/blog/announcing-new-mongodb-instances-on-microsoft-azure/

Sede (incluido el precio): https://azure.microsoft.com/en-us/marketplace/partners/mongolab/mongolab/

2

encima respuestas son todos buenos - pero la verdadera respuesta depende de cuáles son tus requisitos Debe comprender qué tamaño de datos está procesando, qué tipos de operaciones desea realizar sobre los datos y luego seleccionar la solución que satisfaga sus necesidades.

2

En Build 2016 se anunció que DocumentDB admitiría todos los controladores de MongoDB. Esto soluciona parte de la falta de problemas de herramientas con DocDB y también facilita la migración de las aplicaciones de Mongo.

0

Una cosa a tener en cuenta es Azure Storage Table no soporta tipos de datos complejos .Es compatible con todas las propiedades en la entidad a ser una cadena o número o booleano o la fecha etc. no se puede almacenar un objeto contra una clave, que creo que es imprescindible para NoSql DB. https://docs.microsoft.com/en-us/rest/api/storageservices/fileservices/understanding-the-table-service-data-model desplazamiento a tipos de propiedades

+0

"Azure Table Storage no es compatible tipos de datos complejos ". Eso no es del todo correcto. Con Azure Storage SDK versión 8.0.0.0, las aplicaciones se agregan al SDK para escribir objetos complejos en el almacenamiento de la tabla. Consulte https://msdn.microsoft.com/en-us/library/azure/mt775434.aspx y https://msdn.microsoft.com/en-us/library/azure/mt775432.aspx. Escribí estas api s :) así que si tiene algún comentario no dude en preguntar .. –

+0

¿Podría compartir ejemplos con Node.js, también hay una restricción de tamaño de propiedad que obliga a 64 KB límite máximo correcto, con esto podemos almacenar un objeto muy grande ?, gracias de antemano ... –

+0

Sí, estoy de acuerdo, podemos hacer eso serializando y deserializando, pero una base de datos sin SQL debería soportarlos por defecto sin ningún esfuerzo adicional, pero sentí que Azure es un tipo de almacenamiento de tabla (En cuanto a las columnas, que es más adecuado para datos simples de valor-clave). –