MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Влияние върху производителността на типа данни на индекса в MongoDB?

Изискването за съхранение на целочислена стойност е по-малко, но разбира се, не е много важно. Алгоритъмът за сортиране/индексиране на число би бил леко по-бързо от низ обикновено, но разликата би била изключително малка, тъй като низът също е много къс.

Не бих очаквал убедителна разлика в производителността между двете. Ако планирате да съхранявате IPV6 адреси, проблемът ще бъде, че BSON (http://bsonspec.org/ #/спецификация ) няма прост тип данни за съхраняване на 16-байтово число, така че не е непременно естествено да се съхранява само като число.

В крайна сметка вероятно просто ще използвам низове, ако искате да избегнете извършването на превод от хранилище към екран или ако искате да направите заявките по-естествени за писане за повечето от нас :) :

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

Ако използвате низове, бих ви препоръчал също така да помислите за съхраняване като низ с фиксиран формат, като например 192.168.001.001 ако искате да извършвате по-сложни търсения, като например търсене в диапазон. Тъй като низ, съхранен с последователен фиксиран формат, ще се сортира естествено, можете да го използвате по повече начини, отколкото иначе бихте могли. Ако диапазоните не са важни, не е необходимо да се съхранява по този начин.

С фиксиран формат можете да направите заявка като:

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

Това ще намери всички IP адреси между (включително) 192.168.0.0 и 192.168.0.255 .

В идеалния случай ще имате индекс в полето и в двата случая:

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



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. mongodb проверява дали точката е в многоъгълник

  2. Връщане на персонализирани полета в MongoDB

  3. Mongodb Агрегиране на редове към колони

  4. Подигравателна база данни в node.js?

  5. CouchDB/Couchbase/MongoDB емулация на транзакция?