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

Случаят за хеширани индекси на MongoDB

В допълнение към скаларните индекси (възходящи, низходящи), MongoDB поддържа и „хеширани“ индекси. Когато използвате хеширан индекс в поле, MongoDB изчислява хеш на стойността на полето и съхранява хеша в индекса. Хешираните индекси поддържат само сравнение на равенството и не поддържат заявки за диапазон и обикновено се използват в сценарии за разделяне.

Създаване на хеширан индекс на MongoDB

Можете да използвате следния синтаксис, за да създадете хеширан индекс:

db.collection.ensureIndex({'field':'hashed'});

Можете да създадете както скаларен индекс, така и хеширан индекс в едно и също поле.

Sharding MongoDB

Обикновено споделянето на MongoDB се реализира чрез разделяне, базирано на диапазон. При този подход на всеки шард се присвоява диапазон от стойности на ключа на сегмента. Ако ключът на сегмента монотонно се увеличава като времеви печати или objectID, това понякога може да доведе до „горещ“ фрагмент, тъй като най-новите стойности винаги се насочват към един и същ фрагмент.

Начинът да заобиколите това е да използвате „разпределяне, базирано на хеш“. Изчислява се хеш на ключа на сегмента и тази хеш стойност се използва за насочване към фрагмент вместо действителната стойност. Това помага да се разпредели равномерно натоварването между всички части, вместо да се изпращат всички най-нови данни към един и същи шард. Разделянето, базирано на хеш, се реализира с помощта на хеширани индекси на вашия шард ключ. За повече информация вижте документацията за разделяне.

За и против хеширания индекс

  • Плюсове

    Хешираните индекси обикновено са по-малки от скаларните индекси, защото се съхранява само хеш на ключа вместо пълния ключ. напр. В прост тест със 100 000 документа добавихме хеширани и скаларни индекси към поле на низ – ‘fieldName’. Както е показано по-долу, хешираният индекс има тенденция да бъде значително по-малък от скаларните индекси:

    "indexSizes" : {
            "_id_" : 811008,
            "firstName_1" : 4415488,
            "firstName_hashed" : 1490944
    }
    
  • Против

    Не поддържа заявки за диапазон. Ако изпълните заявка за диапазон върху хеширан индекс, това ще доведе до сканиране на индекс.

Хеширани индекси на MongoDB за Shards - Pro &Cons Щракнете за туит

Ограничения на хеширания индекс

    1. Хешираните индекси не поддържат масиви.
    2. Хешираните индекси не могат да бъдат съставни индекси.
    3. Не можете да добавяте уникални ограничения към хеширани индекси.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB $first Aggregation Pipeline Operator

  2. Запитване на Mongoose за филтриране на масив и попълване на свързано съдържание

  3. MongoDB $ седмица

  4. Mongodb findAndModify възел js

  5. Множество групови операции, използващи рамката за агрегиране на Mongo