sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB:Miljarder dokument i en samling

Det är svårt att säga vad den optimala bulkinsatsen är - detta beror delvis på storleken på föremålen du sätter in och andra omätbara faktorer. Du kan prova några intervall och se vad som ger dig bäst prestanda. Som ett alternativ gillar vissa människor att använda mongoimport, vilket är ganska snabbt, men din importdata måste vara json eller csv. Det finns uppenbarligen mongodrestore, om data är i BSON-format.

Mongo kan enkelt hantera miljarder dokument och kan ha miljarder dokument i en samling, men kom ihåg att maximal dokumentstorlek är 16 MB . Det finns många människor med miljarder dokument i MongoDB och det finns massor av diskussioner om det på MongoDB Google User Group . Här är ett dokument på att använda ett stort antal samlingar som du kanske gillar att läsa, om du ändrar dig och vill ha flera samlingar istället. Ju fler samlingar du har, desto fler index kommer du också att ha, vilket förmodligen inte är vad du vill ha.

Här är en presentation från Craigslist om att infoga miljarder dokument i MongoDB och killens blogginlägg .

Det ser ut som att sharding skulle vara en bra lösning för dig, men vanligtvis används sharding för att skala över flera servrar och många människor gör det för att de vill skala sina skrivningar eller för att de inte kan behålla sin arbetsuppsättning (data och index) i RAM. Det är helt rimligt att börja med en enda server och sedan flytta till en fragment eller replikuppsättning när din data växer eller du behöver extra redundans och motståndskraft.

Det finns dock andra användare som använder flera mongods för att komma runt låsgränserna för en enda mongod med massor av skrivningar. Det är uppenbart men ändå värt att säga, men en multi-mongod setup är mer komplex att hantera än en enda server. Om din IO eller cpu inte är maxad här, din arbetsuppsättning är mindre än RAM och dina data är lätta att hålla balanserade (ganska slumpmässigt fördelade), bör du se förbättringar (med sharding på en enda server). Som en FYI finns det potential för minne och IO-stridigheter. Med 2.2 har förbättrat samfällighet med db låsning , jag misstänker att det kommer att finnas mycket mindre anledning till en sådan distribution.

Du måste planera din övergång till skärning ordentligt, d.v.s. fundera noga på att välja din skärvnyckel. Om du går den här vägen är det bäst att fördela och stänga av balanseraren. Det kommer att vara kontraproduktivt att flytta runt data för att hålla saker i balans vilket innebär att du måste bestämma i förväg hur du ska dela upp den. Dessutom är det ibland viktigt att designa dina dokument med tanken att något fält kommer att vara användbart för sharding på, eller som en primärnyckel.

Här är några bra länkar -



  1. Kan inte ansluta fjärransluten mongodb-server med django/djongo

  2. MurmurHash - vad är det?

  3. Modellera undersamlingar i MongoDB Realm Sync

  4. Högpresterande MongoDB-kluster på Amazon EC2