MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

MongoDB sur serveur EC2 ou AWS SimpleDB ?

SimpleDB présente certaines limitations d'évolutivité. Vous ne pouvez évoluer que par partitionnement et il a une latence plus élevée que mongodb ou cassandra, il a une limite de débit et son prix est plus élevé que les autres options. L'évolutivité est manuelle (vous devez fragmenter).

Si vous avez besoin d'options de requête plus larges et que vous avez un taux de lecture élevé et que vous n'avez pas autant de données, mongodb est préférable. Mais pour la durabilité, vous devez utiliser au moins 2 instances de serveur mongodb en tant que maître/esclave. Sinon, vous pouvez perdre la dernière minute de vos données. L'évolutivité est manuelle. C'est beaucoup plus rapide que simpledb. Le partitionnement automatique est implémenté dans la version 1.6.

Cassandra a des options de requête faibles mais est aussi durable que postgresql. Il est aussi rapide que mongo et plus rapide sur une taille de données plus élevée. Les opérations d'écriture sont plus rapides que les opérations de lecture sur Cassandra. Il peut évoluer automatiquement en déclenchant des instances ec2, mais vous devez modifier un peu les fichiers de configuration (si je me souviens bien). Si vous avez des téraoctets de données, Cassandra est votre meilleur pari. Pas besoin de partitionner vos données, il a été conçu distribué dès le 1er jour. Vous pouvez avoir n'importe quel nombre de copies pour toutes vos données et si certains serveurs sont morts, il renverra automatiquement les résultats des serveurs actifs et distribuera les données du serveur mort à d'autres. Il est hautement tolérant aux pannes. Vous pouvez inclure n'importe quel nombre d'instances, c'est beaucoup plus facile à mettre à l'échelle que les autres options. Il a de fortes options de client .net et java. Ils ont la mutualisation des connexions, la répartition de charge, le marquage des serveurs morts,...

Une autre option est hadoop pour le big data mais ce n'est pas aussi en temps réel que les autres, vous pouvez utiliser hadoop pour l'entreposage de données. Ni cassandra ni mongo n'ont de transactions, donc si vous avez besoin de transactions, postgresql est mieux adapté. Une autre option est Amazon RDS, mais ses performances sont mauvaises et son prix élevé. Si vous souhaitez utiliser des bases de données ou simpledb, vous devrez peut-être également mettre en cache les données (par exemple :memcached).

Pour les applications Web, si vos données sont petites, je recommande mongo, si elles sont grandes, cassandra est préférable. Vous n'avez pas besoin d'une couche de mise en cache avec mongo ou cassandra, ils sont déjà rapides. Je ne recommande pas simpledb, il vous verrouille également sur Amazon comme vous l'avez dit.

Si vous utilisez c#, java ou scala, vous pouvez écrire une interface et l'implémenter pour mongo, mysql, cassandra ou toute autre chose pour la couche d'accès aux données. C'est plus simple dans les langages dynamiques (par exemple rub, python, php). Vous pouvez écrire un fournisseur pour deux d'entre eux si vous le souhaitez et pouvez modifier le stockage peut-être en cours d'exécution par un seul changement de configuration, ils sont tous possibles. Le développement avec mongo, cassandra et simpledb est plus facile qu'une base de données, et ils sont exempts de schéma, cela dépend également de la bibliothèque cliente/du connecteur que vous utilisez. Le plus simple est mongo. Il n'y a qu'un seul index par table dans Cassandra, vous devez donc gérer vous-même les autres index, mais avec la version 0.7 de Cassandra, les index secondaires seront possibles, comme je le sais. Vous pouvez également commencer par n'importe lequel d'entre eux et le remplacer ultérieurement si nécessaire.