sql >> Database >  >> NoSQL >> MongoDB

MongoDB op EC2-server of AWS SimpleDB?

SimpleDB heeft enkele schaalbaarheidsbeperkingen. Je kunt alleen schalen door te sharden en het heeft een hogere latentie dan mongodb of cassandra, het heeft een doorvoerlimiet en het is hoger geprijsd dan andere opties. Schaalbaarheid is handmatig (je moet sharden).

Als je bredere zoekopties nodig hebt en je hebt een hoge leessnelheid en je hebt niet zoveel gegevens, is mongodb beter. Maar voor duurzaamheid moet u ten minste 2 mongodb-serverinstanties als master/slave gebruiken. Anders kunt u de laatste minuut van uw gegevens kwijtraken. Schaalbaarheid is handmatig. Het is veel sneller dan simpledb. Autosharding is geïmplementeerd in versie 1.6.

Cassandra heeft zwakke zoekopties, maar is net zo duurzaam als postgresql. Het is net zo snel als mongo en sneller bij een grotere gegevensomvang. Schrijfbewerkingen zijn sneller dan leesbewerkingen op cassandra. Het kan automatisch worden geschaald door ec2-instanties te activeren, maar je moet de configuratiebestanden een beetje aanpassen (als ik het me goed herinner). Als je terabytes aan gegevens hebt, is cassandra de beste keuze. Het is niet nodig om uw gegevens te sharden, het is ontworpen om vanaf de eerste dag gedistribueerd te worden. U kunt een willekeurig aantal kopieën hebben voor al uw gegevens en als sommige servers dood zijn, zal het automatisch de resultaten van levende terugsturen en de gegevens van de dode server naar anderen distribueren. Het is zeer fouttolerant. U kunt een willekeurig aantal instanties opnemen, het is veel gemakkelijker te schalen dan andere opties. Het heeft sterke .net- en java-clientopties. Ze hebben connectie pooling, load balancing, markeren van dode servers,...

Een andere optie is hadoop voor big data, maar het is niet zo realtime als andere, je kunt hadoop gebruiken voor datawarehousing. Cassandra of mongo hebben geen transacties, dus als je transacties nodig hebt, past postgresql beter. Een andere optie is Amazon RDS, maar de prestaties zijn slecht en de prijs is hoog. Als u databases of simpledb wilt gebruiken, heeft u mogelijk ook gegevenscaching nodig (bijv. memcached).

Voor web-apps, als uw gegevens klein zijn, raad ik mongo aan, als het groot is, is cassandra beter. Bij mongo of cassandra heb je geen caching laag nodig, ze zijn al snel. Ik raad simpledb niet aan, het vergrendelt je ook op Amazon zoals je zei.

Als u c#, java of scala gebruikt, kunt u een interface schrijven en deze implementeren voor mongo, mysql, cassandra of iets anders voor de gegevenstoegangslaag. Het is eenvoudiger in dynamische talen (bijv. rub,python,php). Je kunt een provider voor twee van hen schrijven als je wilt en je kunt de opslag misschien tijdens runtime wijzigen door alleen een configuratiewijziging, ze zijn allemaal mogelijk. Ontwikkeling met mongo, cassandra en simpledb is eenvoudiger dan een database, en ze zijn vrij van schema's, het hangt ook af van de clientbibliotheek / connector die u gebruikt. De eenvoudigste is mongo. Er is maar één index per tabel in cassandra, dus je moet andere indexen zelf beheren, maar met de 0.7 release van cassandra zullen secundaire indexen mogelijk zijn zoals ik weet. Je kunt ook met een van deze beginnen en deze in de toekomst vervangen als dat nodig is.



  1. Welke noSQL-database is het beste voor invoeg-/schrijfbewerkingen met een hoog volume?

  2. redis eval-opdracht uitvoeren om Lua-script uit te voeren in nodeJS

  3. Hoe Meteor Upsert te gebruiken

  4. Hoe een schemamethode in mangoest toe te voegen?