Optimalizace nákladů na úložiště ve službě Azure Cosmos DB

PLATÍ PRO: NoSQL MongoDB Cassandra Gremlin Tabulka

Azure Cosmos DB nabízí neomezené úložiště a propustnost. Na rozdíl od propustnosti, kterou musíte zřídit nebo nakonfigurovat pro kontejnery nebo databáze Azure Cosmos DB, se úložiště účtuje na základě spotřeby. Účtují se vám pouze logická úložiště, která využíváte, a nemusíte si předem rezervovat žádné úložiště. Úložiště automaticky vertikálně navyšuje a snižuje kapacitu na základě dat, která přidáte nebo odeberete do kontejneru Azure Cosmos DB.

Náklady na úložiště

Úložiště se účtuje jednotkou GB. Místní úložiště založené na SSD se používá pro vaše data a indexování. Celkové využité úložiště se rovná úložišti vyžadovaného daty a indexy používanými ve všech oblastech, ve kterých používáte Službu Azure Cosmos DB. Pokud globálně replikujete účet služby Azure Cosmos DB napříč třemi oblastmi, zaplatíte za celkové náklady na úložiště v každé z těchto tří oblastí. Pokud chcete odhadnout požadavek na úložiště, podívejte se na nástroj Plánovač kapacity. Náklady na úložiště ve službě Azure Cosmos DB jsou 0,25 GB za měsíc. Nejnovější aktualizace najdete na stránce s cenami. Můžete nastavit výstrahy pro určení úložiště používaného kontejnerem Služby Azure Cosmos DB, monitorování úložiště, viz článek Monitorování služby Azure Cosmos DB).

Optimalizace nákladů s velikostí položky

Azure Cosmos DB očekává, že velikost položky bude 2 MB nebo nižší, aby byla optimální výkon a nákladová výhoda. Pokud potřebujete, aby byla nějaká položka uložená větší než 2 MB dat, zvažte změnu schématu položky. Ve výjimečných událostech, které nemůžete přepracovat schéma, můžete položku rozdělit na dílčí položky a logicky je propojit s běžným identifikátorem (ID). Všechny funkce Azure Cosmos DB fungují konzistentně ukotvením k ho logickému identifikátoru.

Optimalizace nákladů s využitím indexování

Ve výchozím nastavení se data automaticky indexují, což může zvýšit celkové využití úložiště. Vlastní zásady indexu ale můžete použít ke snížení této režie. Automatické indexování, které nebylo vyladěno prostřednictvím zásad, je přibližně 10–20 % velikosti položky. Odebráním nebo přizpůsobením zásad indexu neplatíte za zápisy další náklady a nevyžadujete další kapacitu propustnosti. Informace o indexování ve službě Azure Cosmos DB najdete v tématu Konfigurace vlastních zásad indexování. Pokud jste dříve pracovali s relačními databázemi, možná si myslíte, že "indexování všeho" znamená zdvojnásobení úložiště nebo vyšší úrovně. Ve službě Azure Cosmos DB je ale v mediánu mnohem nižší. Ve službě Azure Cosmos DB je režie úložiště indexu obvykle nízká (10–20 %) i při automatickém indexování, protože je navržená pro nízké nároky na úložiště. Díky správě zásad indexování můžete řídit kompromis mezi nároky indexu a výkonem dotazů jemněji odstupňovaným způsobem.

Optimalizace nákladů s využitím času na živé a změny informačního kanálu

Jakmile už data nepotřebujete, můžete je řádně odstranit ze svého účtu služby Azure Cosmos DB pomocí času naživo, kanálu změn nebo můžete migrovat stará data do jiného úložiště dat, jako je úložiště objektů blob v Azure nebo datový sklad Azure. Služba Azure Cosmos DB s časem naživo nebo TTL poskytuje možnost automaticky odstraňovat položky z kontejneru po určitém časovém období. Ve výchozím nastavení můžete nastavit, aby se doba života na úrovni kontejneru přepsala na základě jednotlivých položek. Jakmile nastavíte hodnotu TTL na úrovni kontejneru nebo položky, Azure Cosmos DB tyto položky automaticky odebere po uplynutí časového období od poslední změny. Pomocí kanálu změn můžete migrovat data do jiného kontejneru ve službě Azure Cosmos DB nebo do externího úložiště dat. Migrace trvá nulu dolů a po dokončení migrace můžete odstranit nebo nakonfigurovat dobu provozu pro odstranění zdrojového kontejneru Azure Cosmos DB.

Optimalizace nákladů s využitím datových typů bohatých médií

Pokud chcete ukládat typy médií s formátováním, například videa, obrázky atd., máte ve službě Azure Cosmos DB řadu možností. Jednou z možností je uložit tyto typy multimédií jako položky Azure Cosmos DB. Pro každou položku platí limit 2 MB a tento limit se můžete vyhnout zřetěžením datové položky do několika dílčích položek. Nebo je můžete uložit do služby Azure Blob Storage a pomocí metadat na ně odkazovat z položek služby Azure Cosmos DB. Tento přístup má řadu výhod a nevýhod. První přístup vám pomůže dosáhnout nejlepšího výkonu z hlediska latence, smluv SLA pro propustnost a možností globální distribuce na klíč pro datové typy bohatých médií kromě běžných položek azure Cosmos DB. Podpora je však k dispozici za vyšší cenu. Ukládáním médií do úložiště objektů blob v Azure můžete snížit celkové náklady. Pokud je latence kritická, můžete použít premium storage pro multimediální soubory, na které odkazují položky azure Cosmos DB. Tím se nativně integruje s CDN a obsluhuje image z hraničního serveru s nižšími náklady, aby bylo potřeba obejít geografické omezení. Nevýhodou tohoto scénáře je, že se musíte zabývat dvěma službami – Azure Cosmos DB a Úložištěm objektů blob v Azure, což může zvýšit provozní náklady.

Kontrola spotřebovaného úložiště

Pokud chcete zkontrolovat spotřebu úložiště kontejneru Azure Cosmos DB, můžete v kontejneru spustit požadavek HEAD nebo GET a zkontrolovat x-ms-request-quota hlavičky a x-ms-request-usage tyto hlavičky. Alternativně můžete při práci se sadou .NET SDK použít vlastnosti DocumentSizeQuota a DocumentSizeUsage k získání využitého úložiště.

S využitím sady SDK

// Measure the item size usage (which includes the index size)
ResourceResponse<DocumentCollection> collectionInfo = await client.ReadDocumentCollectionAsync(UriFactory.CreateDocumentCollectionUri("db", "coll"));   

Console.WriteLine("Item size quota: {0}, usage: {1}", collectionInfo.DocumentQuota, collectionInfo.DocumentUsage);

Další kroky

Další informace o optimalizaci nákladů ve službě Azure Cosmos DB najdete v následujících článcích: