sql >> Databasteknik >  >> NoSQL >> MongoDB

Förstå MongoDB BSON Dokumentstorleksgräns

För det första, detta höjs faktiskt i nästa version till 8MB eller 16MB ... men jag tror att för att sätta detta i perspektiv, säger Eliot från 10gen (som utvecklade MongoDB) det bäst:

EDIT: Storleken har officiellt "höjts" till 16MB

Så i ditt bloggexempel är 4MB faktiskt en hel del.. Till exempel är den fullständiga okomprimerade texten i "War of the Worlds" bara 364k (html):http://www.gutenberg.org/etext/36

Om ditt blogginlägg är så långt med så många kommentarer så kommer jag inte att läsa det :)

För trackbacks, om du dedikerade 1MB till dem, skulle du lätt kunna ha mer än 10k (förmodligen närmare 20k)

Så förutom riktigt bisarra situationer kommer det att fungera utmärkt. Och i undantagsfall eller spam, tror jag verkligen inte att du skulle vilja ha ett 20mb objekt ändå. Jag tycker att det är vettigt att begränsa trackbacks till 15k eller så, oavsett vad för prestanda. Eller åtminstone ett speciellt hölje om det skulle hända.

-Eliot

Jag tror att du skulle vara ganska hårt pressad för att nå gränsen ... och med tiden, om du uppgraderar ... kommer du att behöva oroa dig mindre och mindre.

Huvudpunkten med begränsningen är att du inte använder upp allt RAM-minne på din server (eftersom du behöver ladda alla MB s av dokumentet till RAM när du frågar efter det.)

Så gränsen är någon procent av normalt användbart RAM-minne på ett vanligt system ... som kommer att fortsätta växa år för år.

Anmärkning om lagring av filer i MongoDB

Om du behöver lagra dokument (eller filer) som är större än 16MB du kan använda GridFS API som automatiskt delar upp data i segment och streamar dem tillbaka till dig (och undviker därmed problemet med storleksbegränsningar/RAM.)

Istället för att lagra en fil i ett enda dokument, delar GridFS upp filen i delar, eller bitar, och lagrar varje bit som ett separat dokument.

GridFS använder två samlingar för att lagra filer. En samling lagrar filbitarna och den andra lagrar filmetadata.

Du kan använda den här metoden för att lagra bilder, filer, videor etc i databasen på samma sätt som i en SQL-databas. Jag har använt detta för att till och med lagra videofiler med flera gigabyte.



  1. Trunkera en samling

  2. Ska jag skapa en ny Redis-klient för varje anslutning?

  3. Hantera långsamma frågor i MongoDB

  4. Så här gör du:Använd HBase Thrift Interface, del 2:Infoga/hämta rader