Čtete to špatně
Špatně čtete záměr citovaného bloku ohledně toho, co .ensureIndex()
(nyní zastaralé, ale stále nazývané kódem mongoose) zde v kontextu skutečně funguje.
V mongoose definujete index buď na úrovni schématu nebo modelu, jak je vhodné pro váš návrh. Co pro vás mongoose „automaticky“ udělá, je, že při připojení zkontroluje každý registrovaný model a poté zavolá příslušnou .ensureIndex()
metody pro poskytnuté definice indexu.
Co to vlastně dělá?
Ve většině případů poté, co jste již aplikaci spustili dříve a .ensureIndexes()
metoda byla spuštěna je Absolutně nic . To je trochu přehnané tvrzení, ale víceméně to platí.
Protože definice indexu již byla vytvořena v kolekci serveru, následné volání neprovede nic. To znamená, že nevypustí index a „znovu se nevytvoří“. Takže skutečná cena není v podstatě žádná, jakmile je index samotný vytvořen.
Vytváření indexů
Protože je mongoose pouze vrstvou nad standardním API, createIndex()
metoda obsahuje všechny podrobnosti o tom, co se děje.
Zde je třeba vzít v úvahu některé podrobnosti, například to, že sestavení indexu může probíhat na „pozadí“, a přestože to vaši aplikaci méně ruší, je to na vlastní náklady. Je pozoruhodné, že velikost indexu z generování "na pozadí" bude větší, než kdybyste jej vytvořili na popředí, což blokuje další operace.
Také všechny indexy jsou zpoplatněny, zejména pokud jde o využití disku a také dodatečné náklady na zápis dodatečných informací mimo samotná data kolekce.
Výhody indexu spočívají v tom, že je mnohem rychlejší „hledat“ hodnoty obsažené v indexu, než prohledávat celou kolekci a odpovídat možným podmínkám.
Toto jsou základní „obchody“ spojené s indexy.
Vzor nasazení
Zpět na uvedený blok Z dokumentace vyplývá, že za touto radou je skutečný záměr.
Ve vzorcích nasazení a zejména při migraci dat je typické dělat věci v tomto pořadí:
- Vyplňte data do příslušných kolekcí/tabulek
- Povolte indexování dat kolekce/tabulky relevantní pro vaše potřeby
Je to proto, že vytváření indexu je spojeno s náklady, a jak již bylo zmíněno dříve, je žádoucí získat co nejoptimálnější velikost z sestavení indexu a vyhnout se tomu, aby každé vložení dokumentu mělo také režii na zápis položky rejstříku, když jste dělat toto „načítání“ hromadně.
Takže k tomu jsou indexy, to jsou náklady a přínosy a zpráva v dokumentaci mongoose je vysvětlena.
Obecně však doporučuji přečíst si indexy databáze za to, jací jsou a co dělají. Myslete na to, že vejdete do knihovny a najdete knihu. U vchodu je kartotéka. Chodíte po knihovně, abyste našli knihu, kterou chcete? Nebo to hledáš v kartotéce, kde to je? Tento rejstřík někomu zabralo čas, než ho vytvořil a také jej aktualizoval, ale „vám“ to ušetří čas procházením po celé knihovně, abyste našli svou knihu.