sql >> Databasteknik >  >> NoSQL >> MongoDB

Fallet för MongoDB Hashed Index

Förutom skalära index (stigande, fallande), stöder MongoDB även "hashade" index. När du använder ett hashat index på ett fält, beräknar MongoDB en hash av fältvärdet och lagrar hashen i indexet. Hashade index stöder endast jämställdhetsjämförelse och stöder inte intervallfrågor, och används vanligtvis i fragmenteringsscenarier.

Skapa ett MongoDB Hashed Index

Du kan använda följande syntax för att skapa ett hashat index:

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

Du kan skapa både ett skalärt index och ett hashat index på samma fält.

MongoDB Sharding

Vanligtvis implementeras MongoDB-sharding med hjälp av "räckviddsbaserad" partitionering. I detta tillvägagångssätt tilldelas varje shard ett värdeintervall för shard-nyckeln. Om shard-nyckeln ökar monotont som tidsstämplar eller objectID, kan detta ibland resultera i en "het" shard eftersom de senaste värdena alltid hamnar i omdirigering till samma shard.

Sättet att komma runt detta är att använda "hash-baserad partitionering". En hash av shard-nyckeln beräknas och detta hashvärde används för att dirigera till en shard istället för det faktiska värdet. Detta hjälper till att fördela belastningen jämnt över alla skärvor istället för att skicka all den senaste data till samma skärva. Hash-baserad partitionering implementeras med hashade index på din shard-nyckel. För mer information, se sönderdelningsdokumentationen.

Hashat indexför- och nackdelar

  • Proffs

    Hashade index tenderar att vara mindre än de skalära indexen eftersom endast en hash av nyckeln lagras istället för hela nyckeln. T.ex. I ett enkelt test med 100 000 dokument lade vi till hashade och skalära index på ett strängfält – ‘fieldName’. Som visas nedan tenderar det hashade indexet att vara betydligt mindre än de skalära indexen:

    "indexSizes" : {
            "_id_" : 811008,
            "firstName_1" : 4415488,
            "firstName_hashed" : 1490944
    }
    
  • Nackdelar

    Stöder inte intervallfrågor. Om du kör en intervallfråga på ett hashat index kommer det att resultera i en indexskanning.

MongoDB Hashed Index for Shards - För &NackdelarKlicka för att tweeta

Hashade indexbegränsningar

    1. Hashade index stöder inte arrayer.
    2. Hashade index kan inte vara sammansatta index.
    3. Du kan inte lägga till unika begränsningar på hashade index.


  1. Redis-strängar vs Redis-haschar för att representera JSON:effektivitet?

  2. Hur använder man Redis massinsättning?

  3. Hur aktiverar man autentisering på MongoDB genom Docker?

  4. MongoDB $arrayToObject