MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

MongoDB auf EC2-Server oder AWS SimpleDB?

SimpleDB hat einige Skalierbarkeitseinschränkungen. Sie können nur durch Sharding skalieren und es hat eine höhere Latenz als Mongodb oder Cassandra, es hat ein Durchsatzlimit und es ist teurer als andere Optionen. Die Skalierbarkeit ist manuell (Sie müssen fragmentieren).

Wenn Sie breitere Abfrageoptionen benötigen und eine hohe Leserate haben und nicht so viele Daten haben, ist Mongodb besser. Aus Gründen der Langlebigkeit müssen Sie jedoch mindestens 2 Mongodb-Serverinstanzen als Master/Slave verwenden. Andernfalls können Sie die letzte Minute Ihrer Daten verlieren. Die Skalierbarkeit ist manuell. Es ist viel schneller als simpledb. Autosharding ist in Version 1.6 implementiert.

Cassandra hat schwache Abfrageoptionen, ist aber so langlebig wie postgresql. Es ist so schnell wie Mongo und schneller bei höherer Datengröße. Schreibvorgänge sind auf cassandra schneller als Lesevorgänge. Es kann automatisch skalieren, indem es ec2-Instanzen abfeuert, aber Sie müssen die Konfigurationsdateien ein wenig ändern (wenn ich mich richtig erinnere). Wenn Sie über Terabytes an Daten verfügen, ist Cassandra die beste Wahl. Sie müssen Ihre Daten nicht fragmentieren, sie wurden vom ersten Tag an verteilt entwickelt. Sie können eine beliebige Anzahl von Kopien für alle Ihre Daten haben, und wenn einige Server tot sind, werden automatisch die Ergebnisse von Live-Servern zurückgegeben und die Daten des toten Servers an andere verteilt. Es ist sehr fehlertolerant. Sie können eine beliebige Anzahl von Instanzen einschließen, es ist viel einfacher zu skalieren als andere Optionen. Es hat starke .net- und Java-Client-Optionen. Sie haben Connection Pooling, Load Balancing, Marking of Dead Servers,...

Eine weitere Option ist Hadoop für Big Data, aber es ist nicht so echtzeitfähig wie andere, Sie können Hadoop für Datawarehousing verwenden. Weder Cassandra noch Mongo haben Transaktionen, wenn Sie also Transaktionen benötigen, ist postgresql besser geeignet. Eine weitere Option ist Amazon RDS, aber die Leistung ist schlecht und der Preis hoch. Wenn Sie Datenbanken oder simpledb verwenden möchten, benötigen Sie möglicherweise auch Daten-Caching (zB:memcached).

Für Web-Apps empfehle ich Mongo, wenn Ihre Daten klein sind, wenn es groß ist, ist Cassandra besser. Bei Mongo oder Cassandra brauchst du keine Caching-Schicht, sie sind schon schnell. Ich empfehle simpledb nicht, es sperrt Sie auch an Amazon, wie Sie sagten.

Wenn Sie C#, Java oder Scala verwenden, können Sie eine Schnittstelle schreiben und diese für Mongo, MySQL, Cassandra oder irgendetwas anderes für die Datenzugriffsschicht implementieren. Einfacher ist es in dynamischen Sprachen (zB rub,python,php). Sie können für zwei von ihnen einen Anbieter schreiben, wenn Sie möchten, und den Speicher möglicherweise zur Laufzeit ändern, indem Sie nur eine Konfigurationsänderung vornehmen, sie sind alle möglich. Die Entwicklung mit Mongo, Cassandra und Simpledb ist einfacher als eine Datenbank, und sie sind schemafrei, es hängt auch von der Client-Bibliothek/dem verwendeten Connector ab. Das einfachste ist Mongo. Es gibt nur einen Index pro Tabelle in cassandra, also müssen Sie andere Indizes selbst verwalten, aber mit der Version 0.7 von cassandra werden sekundäre Indizes möglich sein, wie ich weiß. Sie können auch mit jedem von ihnen beginnen und es in Zukunft ersetzen, wenn Sie müssen.