sql >> Database >  >> NoSQL >> MongoDB

Prestatie-impact van indexgegevenstype in MongoDB?

Een opslagvereiste voor gehele waarden is kleiner, maar natuurlijk niet erg significant. Het sorteer-/indexeringsalgoritme voor een getal is enigszins sneller dan een snaar normaal, maar het verschil zou extreem klein zijn omdat de snaar ook erg kort is.

Ik zou geen overtuigend prestatieverschil tussen de twee verwachten. Als u van plan bent om IPV6-adressen op te slaan, is het probleem dat BSON (http://bsonspec.org/ #/specificatie ) heeft geen eenvoudig gegevenstype voor het opslaan van een nummer van 16 bytes, dus het is niet per se logisch om alleen als een nummer op te slaan.

Uiteindelijk zou ik waarschijnlijk gewoon strings gebruiken als je vertaling van opslag naar scherm wilt vermijden, of als je zoekopdrachten voor de meesten van ons natuurlijker wilt maken om te schrijven :) :

db.ips.find({addr: "192.168.1.1"})

Als u tekenreeksen gebruikt, raad ik u ook aan om op te slaan als tekenreeks met een vast formaat, zoals 192.168.001.001 als u complexere zoekopdrachten wilt uitvoeren, zoals een bereikzoekopdracht. Aangezien een tekenreeks die is opgeslagen met een consistent vast formaat op natuurlijke wijze wordt gesorteerd, kunt u deze op meer manieren gebruiken dan u anders zou kunnen. Als bereiken niet belangrijk zijn, is het niet nodig om op deze manier op te slaan.

Met een vast formaat zou je een zoekopdracht kunnen doen als:

db.ips.find({ addr: {
                 $gte: "192.168.000.000",
                 $lte: "192.168.000.255" } })

Dat zou alle IP-adressen vinden tussen (inclusief) 192.168.0.0 en 192.168.0.255 .

Idealiter heb je hoe dan ook een index op het veld:

db.ips.ensureIndex({ addr: 1 })



  1. Django Celery kan postgres db in taak niet opvragen

  2. java.lang.NoClassDefFoundError bij gebruik van MongoDB-stuurprogramma

  3. Mongo DB-duplicatieprobleem tijdens het gebruik van sorteren met limiet en overslaan in aggregatie

  4. zoektijd met index> zonder index