sql >> Databasteknik >  >> NoSQL >> MongoDB

Pymongo / MongoDB:skapa index eller säkerställa index?

@andreas-jung har rätt i det ensure_index() är ett omslag över create_index() , jag tror att förvirringen uppstår med frasen:

När ett index skapas (eller säkerställs) av PyMongo "kommers det ihåg" i ttlsesekunder.

Det är inte så att indexet är tillfälligt eller "övergående", vad som händer är att under det angivna antalet sekunder, ett anrop till ensure_index() försöker skapa samma index igen inte har någon effekt och kommer inte anrop create_index() under, men efter att "cachen" löper ut, ett anrop till ensure_index() kommer anrop create_index() igen under.

Jag förstår verkligen din förvirring eftersom PyMongos dokument ärligt talat inte gör ett särskilt bra jobb med att förklara hur det här fungerar, men om du går över till Ruby-dokumenten är förklaringen lite tydligare:

  • (Sträng) sure_index(spec, opts ={})

Anropar create_index och ställer in en flagga för att inte göra det igen under ytterligare X minuter. Den här gången kan anges som ett alternativ vid initialisering av ett Mongo::DBobject som alternativ[:cache_time] Alla ändringar av ett index kommer att propageras igenom oavsett cachetid (t.ex. en förändring av indexriktning)

Parametrarna och alternativen för denna metod är desamma som för Collection#create_index.

Exempel:

Call sequence:

Time t: @posts.ensure_index([['subject', Mongo::ASCENDING]) -- calls create_index and sets the 5 minute cache

Time t+2min : @posts.ensure_index([['subject', Mongo::ASCENDING]) -- doesn't do anything

Time t+3min : @posts.ensure_index([['something_else', Mongo::ASCENDING]) -- calls create_index and sets 5 minute cache

Time t+10min : @posts.ensure_index([['subject', Mongo::ASCENDING]) -- calls create_index and resets the 5 minute counter

Jag påstår inte att drivrutiner fungerar exakt likadant, det är bara så att för illustrationsändamål är deras förklaring lite bättre IMHO.



  1. Anslutning vägrade för Redis på Heroku

  2. Hur du övervakar dina databasservrar med ClusterControl CLI

  3. Implementera referensuppsättningar i Redis

  4. Introduktion till Redis Cluster Sharding – Fördelar, begränsningar, distribution och klientanslutningar