Programování

Jak maximálně využít bezplatnou úroveň Azure Cosmos DB

Azure Cosmos DB je jednou z jeho nejlepších funkcí. Multimodelská distribuovaná databáze vám dává základ pro vytváření skutečně cloudových nativních aplikací s řadou modelů konzistence, které lze mapovat na to, jak vaše aplikace funguje. Začátek však není snadné a špatně nakonfigurovaná nebo navržená aplikace se může rychle stát drahou.

Je dobře vidět, že Cosmos DB má nyní bezplatnou úroveň, která vám pomůže začít nasazovat aplikace mimo omezené vývojové prostředí. Nová vrstva není velká: je založena na minimální konfiguraci pro Cosmos DB a nabízí 400 RU / s (jednotky požadavku za sekundu) a 5 GB úložiště s až 25 kontejnery ve sdílené databázi propustnosti. To je více než dost pro malou aplikaci, která například nabízí více čtení než zápisů a není závislá na silných konzistentních modelech.

Musíte si být vědomi toho, že i když je Cosmos DB multiregion, ve volné vrstvě můžete spustit pouze jednu databázi 400 RU / s. V praxi vás to omezuje na jeden region, protože další regiony budou každý potřebovat vlastní instanci 400 RU / s a ​​ty budou účtovány za standardní sazby pro tyto regiony za hodinu.

Začínáme s bezplatnou Cosmos DB

Abyste mohli využívat výhod bezplatné úrovně, budete si muset vytvořit nový účet; u stávajících aplikací není k dispozici jako možnost fakturace. 400 RU / s bezplatné úrovně je nejmenší částka, kterou lze zřídit v databázi Cosmos DB. To vám dává zhruba 1 miliardu přečtení za měsíc, což by mělo stačit na to, aby se vaše aplikace dostala na zem nebo vám umožnila nasadit a spustit interní distribuovanou databázi jako součást pilotního projektu. Jakmile se dostanete na hranici svého bezplatného příspěvku RU / s, můžete přidat další kapacitu v blocích po 100 RU / s účtovaných za hodinovou sazbu.

Stojí za to pochopit, co je RU databáze Cosmos. RU je jednotka požadavku a fakturovaný RU / s je měřítkem zřízené propustnosti vaší databáze, pokrývající všechny její operace. To zahrnuje čtení, zápisy, aktualizace, mazání a další. Společnost Microsoft navrhuje, že 1 RU / s je ekvivalentní jedné nakonec konzistentní (nejpomalejší a nejméně náročná úroveň konzistence na zpracování dostupná v Cosmos DB) za sekundu 1 kB položky. Psát stejnou položku 1 kB za sekundu je 5 RU / s. Čím je operace složitější, tím více RU / s spotřebuje.

Porozumění spotřebě jednotek požadavku

Je těžké přesně říci, kolik RU / s aplikace spotřebuje. Můžete však přemýšlet o omezeních Cosmos DB, která mohou ovlivnit RU / s používané vaší databází. Nejprve je třeba zvážit velikost vašich položek. Čím větší je položka, tím více RU / s používá pro čtení nebo zápis. Podobně indexování spotřebovává RU / s, a pokud použijete výchozí model indexování, prostředky potřebné k zápisu položek se zvýší, jakmile do své databáze přidáte další. Pak je tu vaše volba modelů konzistence, kdy silná i omezená stálost vyžadují zhruba dvakrát tolik RU / s pro čtení než jiné, méně přísné modely Cosmos DB.

S omezeným počtem RU / s k dispozici ve volné vrstvě, možná budete chtít tato omezení vyřešit, aby se spotřeba snížila na minimum. Jednou z možností je vypnout všechny indexování pro vaši databázi, i když v praxi můžete upřednostnit omezení indexování na konkrétní vlastnosti u každého uloženého dokumentu JSON. Současně musíte zvážit, jak vaše aplikace funguje a zda je lepší použít něco jako konzistence relace ke zlepšení vnímání výkonu uživatelem při současném snížení použitého RU / s.

Jelikož RU / s jsou založeny na aktivitě, můžete pomocí návrhu dotazu snížit spotřebu na minimum. To může znamenat omezení počtu výsledků na dotaz, řízení množství dat, která ukládáte, nebo použití co nejméně uživatelsky definovaných funkcí, uložených procedur a aktivačních událostí.

Nastavení databáze je dost snadné. Na webu Azure Portal vytvořte nový účet Cosmos DB a z Průzkumníka dat Azure vytvořte novou databázi. Začněte tím, že mu dáte ID a poté zřídíte jeho propustnost. Nastavte na 400 RU / s. Vyšší částky zobrazí odhady nákladů, ale protože nastavujete bezplatnou instanci, není třeba to zkoušet. Nejste omezeni na portál; můžete použít Azure CLI, PowerShell nebo dokonce programově zevnitř sady Cosmos DB SDK.

Vytváření aplikací na bezplatné úrovni Cosmos DB

V Cosmos DB je databáze sada kontejnerů, které se používají ke zpracování oddílů v oblasti Azure a distribuce v regionech, ve kterých používáte svou databázi. Každá databáze může být nakonfigurována tak, aby byla konkrétním modelem: NoSQL (MongoDB Cassandra), SQL, Gremlin a tabulky. Většina aplikací s ním bude pracovat jako databáze dokumentů NoSQL s uložením dat JSON.

Jakmile nastavíte databázi a vyberete model, můžete si představit kontejner Cosmos DB jako měřítko databáze. Mimo bezplatnou vrstvu můžete nastavit propustnost v RU / s na základě kontejneru; ve volné vrstvě sdílíte tuto propustnost ve všech kontejnerech ve své databázi, takže nemůžete předpovědět propustnost pro žádný konkrétní kontejner. Placené instance mají přidruženou SLA, což je důvod, proč vám umožňují nastavit propustnost na základě jednotlivých kontejnerů.

Práce napříč kontejnery tímto způsobem je ekvivalentní použití clusteru v databázi NoSQL a funguje dobře pro tento typ pracovního vytížení. Pomocí stejného klíče oddílu napříč všemi vašimi kontejnery bude Cosmos DB automaticky sdílet propustnost napříč nimi. Tento přístup můžete použít u 25 kontejnerů bezplatné úrovně ke snížení úzkých míst pro uživatele vaší aplikace. Pokud s ní zacházíte jako se shardovanou, seskupenou databází NoSQL, měli byste ji relativně snadno zahrnout do svých aplikací a použít ji k hostování ukazatelů na jiný obsah než na samotný obsah.

Práce s nabídkou bezplatných služeb může být složitá, ale pokud přijmete rozumná opatření, mělo by být možné použít novou úroveň Cosmos DB jako součást back-endu aplikace. Možná budete muset obětovat některé funkce škálovatelnosti služby, ale to by nemělo významně ovlivnit aplikace, pokud provedete pečlivá rozhodnutí v době návrhu.

Je důležité přemýšlet o tom, jak využít výhod distribuované databáze, jako je Cosmos DB, namísto toho, abyste do ní jednoduše přenesli své stávající úlohy - je nepravděpodobné, že by se dobře shodovaly. Místo toho o tom přemýšlejte jako o příležitosti k vytvoření skutečně cloudově nativní distribuované aplikace. V tomto případě je 400 RU / s více než dost na to, aby se nová aplikace spustila a fungovala s přiměřeným počtem uživatelů.