web-dev-qa-db-fra.com

Azure Table contre MongoDB sur Azure

Je souhaite utiliser une base de données NoSQL sur Windows Azure et le volume de données sera très important. Qu'un stockage Azure Table ou une base de données MongoDB s'exécutant à l'aide d'un rôle Worker puisse offrir de meilleures performances et évolutivité? Quelqu'un a-t-il utilisé MongoDB sur Azure en utilisant un rôle Worker? Veuillez partager vos réflexions sur l'utilisation de MongoDB sur Azure sur le stockage de table Azure.

64
Shiju

Le stockage de table est une fonctionnalité de stockage Windows Azure principale, conçue pour être évolutive (100 To200 To 500 To par compte), durable (triple réplication dans le centre de données, géorépliqué en option sur un autre centre de données) et sans schéma (chaque ligne peut contenir les propriétés de votre choix). Une ligne est localisée par clé de partition + clé de ligne, offrant une recherche très rapide. Tous les accès au stockage de table se font via une API REST bien définie utilisable dans n'importe quel langage (avec des SDK, construits au-dessus des API REST, déjà en place pour .NET, PHP, Java, Python & Ruby).

MongoDB est une base de données orientée document. Pour l'exécuter dans Azure, vous devez installer MongoDB sur un rôle web/travailleur ou une machine virtuelle, le pointer vers un lecteur cloud (fournissant ainsi une lettre de lecteur) ou un disque attaché (pour les machines virtuelles Windows/Linux), éventuellement activer la journalisation (que je recommanderais), et éventuellement définir un point de terminaison externe pour votre utilisation (ou y accéder via un réseau virtuel). Soit dit en passant, le disque Cloud Drive/attaché est en fait stocké dans un Azure Blob, vous offrant la même durabilité et géoréplication que les tables Azure.

Lorsque vous comparez les deux, n'oubliez pas que le stockage de table est un stockage en tant que service: vous accédez simplement à un point de terminaison bien connu REST. Avec MongoDB, vous êtes responsable de la maintenance de la base de données (par exemple chaque fois que MongoDB Inc (anciennement 10gen) sort une nouvelle version de MongoDB, vous devrez mettre à jour votre serveur en conséquence).

Concernant la version alpha de MongoDB Inc pointée par jtoberon: Si vous y regardez de près, vous verrez quelques éléments clés:

  • La configuration concerne une instance mongodb autonome, sans jeux de réplicas ni fragments. En ce qui concerne les jeux de réplicas, vous bénéficiez toujours de plusieurs avantages en utilisant la version autonome, en raison du fonctionnement du stockage Blob.
  • Pour fournir une haute disponibilité, vous pouvez exécuter plusieurs instances. Dans ce cas, une seule instance sert la base de données, et l'une est une `` mise en veille immédiate '' qui lance le processus mongod dès que l'autre instance échoue (pour le redémarrage de la maintenance, la panne matérielle, etc.).

Bien que le wrapper Windows Azure de 10gen soit toujours considéré comme "alpha", mongod.exe ne l'est pas. Vous pouvez lancer l'exe mongod comme vous le feriez pour n'importe quel autre exe Windows. C'est juste le code de gestion autour du lancement, et c'est ce que la mise en œuvre alpa démontre.

EDIT 2011-12-8: Ce n'est plus dans un état alpha. Vous pouvez télécharger le dernier projet MongoDB + Windows Azure ici , qui fournit une prise en charge de jeu de réplicas.

Pour les performances, je pense que vous aurez besoin de faire un benchmarking. Cela dit, considérez ce qui suit:

  • Lorsque vous accédez au stockage de table ou à MongoDB à partir, par exemple, d'un rôle Web, vous continuez à tendre la main au système de stockage Windows Azure.
  • MongoDB utilise beaucoup de mémoire pour son propre cache. Pour cette raison, de nombreux systèmes MongoDB à grande échelle sont déployés sur des tailles d'instance plus importantes. Pour l'accès au stockage de table, vous n'aurez pas la même considération de taille de mémoire.

EDIT 7 avril 2015 Si vous souhaitez utiliser une base de données basée sur des documents en tant que service, Azure propose désormais DocumentDB.

72
David Makogon

J'ai utilisé les deux.

Tables Azure: simples, rapides, vraiment difficiles à écrire, même des requêtes simples.

Mongo: fonctionne bien, beaucoup de capacités d'interrogation, nécessite plusieurs instances pour être fiable.

En un mot, si vos requêtes sont vraiment simples (clé-> valeur), vous devez exécuter une comparaison des coûts (principalement le nombre de transactions par rapport au stockage par rapport au coût d'hébergement de Mongo sur Azure). Je préfère aller au stockage de table pour celui-là. Si vous avez besoin de requêtes plus élaborées et que vous ne souhaitez pas accéder à SQL Azure, Mongo est probablement votre meilleur choix.

35
pierrecouzy

Je me rends compte que cette question est datée. Je voudrais ajouter les informations suivantes pour ceux qui peuvent rencontrer cette question dans leurs recherches.

Notez que maintenant, MongoDB est proposé en tant que service entièrement géré sur Azure. (officiellement en version bêta en avril 15)

Voir: http://www.mongodb.com/partners/cloud/Microsoft ou https://Azure.Microsoft.com/en-us/blog/announcing-new-mongodb -instances-on-Microsoft-Azure /

Voir (y compris les prix): https://Azure.Microsoft.com/en-us/marketplace/partners/mongolab/mongolab/

9
kalyanmysore

Mon premier choix est AzureTables parce que le modèle SAAS et à faible coût et SLA 99,99%
http://alexandrebrisebois.wordpress.com/2013/07/09/what-if-20000-windows-Azure-storage-transactions-per-second-isnt-enough/


quelques limites .. http://msdn.Microsoft.com/en-us/library/windowsazure/jj553018.aspx


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

ou AzureSQL pour les petites entreprises

DocumentDB http://Azure.Microsoft.com/en-us/documentation/services/documentdb/http://Azure.Microsoft.com/en-us/documentation/articles/ documentdb-limits /


le deuxième choix est de nombreux fournisseurs de cloud, y compris Amazon offre S3

ou tableaux Google https://developers.google.com/bigquery/pricing


nième choix gérer le SHOW tout seul sans sommeil MongoDB bien je vais regarder à nouveau les deux premiers SAAS


Mon choix si je lance "CLOUD" je choisirai autant que possible le modèle SAAS "RENT-IT" ...

La question est de savoir ce dont mon application a besoin est-elle AzureTables ou DocumentDB ou AzureSQL
Documentation DocumentDB http://Azure.Microsoft.com/en-us/documentation/services/documentdb/

Fonctionnement de la tarification Azure http://Azure.Microsoft.com/en-us/pricing/details/documentdb/

c'est amusant http://www.documentdb.com/sql/demo

5
Valentin Petkov

Lors de la construction 2016, il a été annoncé que DocumentDB prendrait en charge tous les pilotes MongoDB. Cela résout une partie du manque de problèmes d'outillage avec DocDB et facilite également la migration des applications Mongo.

2
Phil

Les réponses ci-dessus sont toutes bonnes - mais la vraie réponse dépend de vos besoins. Vous devez comprendre la taille des données que vous traitez, les types d'opérations que vous souhaitez effectuer sur les données, puis sélectionner la solution qui répond à vos besoins.

1

Une chose à retenir est que Azure Table Storage ne prend pas en charge les types de données complexes . Il prend en charge chaque propriété dans l'entité pour être une chaîne ou un nombre ou un booléen ou une date etc. On ne peut pas stocker un objet contre une clé, ce qui, à mon avis, est indispensable pour NoSql DB. https://docs.Microsoft.com/en-us/rest/api/storageservices/fileservices/understanding-the-table-service-data-model faites défiler jusqu'à Types de propriétés

0
Saisurya Kattamuri