Pokud má MongoDB Achillovu patu, je to skutečnost, že podporuje pouze jednovláknové zápisy a jednovláknové mapování.
Jako vždy i zde existují kompromisy. Jednovláknové zápisy jsou nejjednodušším způsobem, jak se vyhnout problémům se zámkem a minimalizovat režii. Stejným způsobem jsou multivláknové map-reduces skvělým způsobem, jak uzamknout vaše data. Takže jednovláknové map-reduces na produkčním systému jsou pravděpodobně jednodušší a bezpečnější.
Zde však nejste bez nástrojů. MongoDB poskytne každé instanci jedno vlákno pro zápis. Takže pokud shardujete MongoDB, pak získáte jedno vlákno pro zápis pro každý shard.
Pokud chcete více indexů na 2 miliardách řádků, stejně se budete chtít podívat na sharding. Nějaká rychlá matematika zde:MongoID má 12 bajtů. Index na MongoID bude 2B * 12 bajtů =22GB+. Pokud nyní chcete přidat další dva indexy (dokonce jen dvě 4bajtová celá čísla), mluvíme o 7,5 GB pro každý.
Takže u 2B řádků mluvíte o více než 37 GB v indexech (minimum ). Na většině 8jádrových serverů to znamená, že nebudete moci uchovávat ani indexy v paměti, natož nějaká data.
Takže pokud zde chcete seriózní výkon, budete se chtít začít dívat na sharding. Jen na základě obecných čísel. FWIW, MySQL už nebude zběhlejší ve zpracování 2B dokumentů. S takovým množstvím dat budete opravdu chtít, aby množství serverů udrželo krok se zátěží.