sql >> Database >  >> NoSQL >> MongoDB

MongoDB BSON-limiet voor documentgrootte begrijpen

Ten eerste wordt dit in de volgende versie zelfs verhoogd naar 8MB of 16MB ... maar ik denk dat om dit in perspectief te plaatsen, Eliot van 10gen (die MongoDB ontwikkelde) het het beste verwoordt:

BEWERKEN: De grootte is officieel 'verhoogd' naar 16MB

Dus in je blogvoorbeeld is 4 MB eigenlijk heel veel.. Bijvoorbeeld, de volledige gedecomprimeerde tekst van "War of the Worlds" is slechts 364k (html):http://www.gutenberg.org/etext/36

Als je blogbericht zo lang is met zoveel reacties, ga ik het niet lezen :)

Voor trackbacks, als je er 1 MB aan toewijst, zou je gemakkelijk meer dan 10k kunnen hebben (waarschijnlijk dichter bij 20k)

Dus behalve in echt bizarre situaties, zal het geweldig werken. En in het uitzonderingsgeval of spam, denk ik echt niet dat je sowieso een object van 20 MB wilt. Ik denk dat het aftoppen van trackbacks als 15k of zo heel logisch is, ongeacht wat voor prestaties. Of in ieder geval een speciale behuizing als het ooit gebeurt.

-Eliot

Ik denk dat je het behoorlijk moeilijk zou hebben om de limiet te bereiken ... en na verloop van tijd, als je upgradet ... hoef je je steeds minder zorgen te maken.

Het belangrijkste punt van de limiet is dat u niet al het RAM-geheugen op uw server gebruikt (omdat u alle MB moet laden s van het document in RAM wanneer u het opvraagt.)

De limiet is dus een procent van het normale bruikbare RAM-geheugen op een gemeenschappelijk systeem ... dat jaar na jaar zal blijven groeien.

Opmerking over het opslaan van bestanden in MongoDB

Als u documenten (of bestanden) groter dan 16MB moet opslaan u kunt de GridFS API gebruiken die de gegevens automatisch in segmenten opdeelt en naar u terug streamt (waardoor het probleem met groottelimieten/RAM wordt vermeden.)

In plaats van een bestand op te slaan in een enkel document, verdeelt GridFS het bestand in delen, of stukken, en slaat elk stuk op als een apart document.

GridFS gebruikt twee collecties om bestanden op te slaan. De ene verzameling slaat de bestandsdelen op en de andere slaat de metagegevens van het bestand op.

U kunt deze methode gebruiken om afbeeldingen, bestanden, video's, enz. in de database op te slaan, net zoals u zou doen in een SQL-database. Ik heb dit gebruikt om zelfs videobestanden van meerdere gigabyte op te slaan.



  1. MongoDB $dateToParts

  2. Een sleutel dupliceren in redis

  3. Maak een Multikey Index in MongoDB

  4. MongoDB-replicasets met arbiters