Optymalizacja kosztów magazynu w usłudze Azure Cosmos DB

Usługa Azure Cosmos DB oferuje nieograniczony magazyn i przepływność. W przeciwieństwie do przepływności, którą trzeba aprowizować/konfigurować w kontenerach lub bazach danych usługi Azure Cosmos DB, magazyn jest rozliczany na podstawie użycia. Opłaty są naliczane tylko za używany magazyn logiczny i nie trzeba rezerwować żadnego magazynu z wyprzedzeniem. Pamięć automatycznie skaluje się w górę i w dół w zależności od danych dodawanych lub usuwanych w kontenerze usługi Azure Cosmos DB.

Koszty magazynu

Opłaty za przechowywanie są naliczane za jednostki gigabajtów. Lokalny magazyn oparty na pamięci SSD jest używany przez Twoje dane i procesy indeksowania. Łączna ilość używanego magazynu jest równa magazynowi wymaganemu przez dane i indeksy używane we wszystkich regionach, w których używasz usługi Azure Cosmos DB. Jeśli globalnie replikujesz konto usługi Azure Cosmos DB w trzech regionach, zapłacisz za łączny koszt magazynowania w każdym z tych trzech regionów. Aby oszacować wymagania dotyczące przestrzeni dyskowej, zobacz narzędzie do planowania pojemności. Koszt przechowywania w usłudze Azure Cosmos DB wynosi 0,25 USD za GB/miesiąc, zobacz stronę z cennikiem dla najbardziej najnowszych aktualizacji. Alerty można skonfigurować w celu określenia magazynu używanego przez kontener usługi Azure Cosmos DB w celu monitorowania magazynu, zobacz artykuł Monitorowanie usługi Azure Cosmos DB.

Optymalizowanie kosztów przy użyciu rozmiaru elementu

Usługa Azure Cosmos DB oczekuje, że rozmiar elementu wyniesie 2 MB lub mniej w celu uzyskania optymalnej wydajności i korzyści związanych z kosztami. Jeśli potrzebujesz dowolnego elementu do przechowywania danych większych niż 2 MB, rozważ przeprojektowanie schematu elementu. W rzadkim przypadku, gdy nie można przeprojektować schematu, można podzielić element na podwitry i połączyć je logicznie za pomocą wspólnego identyfikatora(ID). Wszystkie funkcje usługi Azure Cosmos DB działają spójnie, zakotwiczając się do tego identyfikatora logicznego.

Optymalizowanie kosztów za pomocą indeksowania

Domyślnie dane są automatycznie indeksowane, co może zwiększyć łączną ilość zużytego miejsca do magazynowania. Można jednak zastosować niestandardowe zasady indeksów, aby zmniejszyć to obciążenie. Automatyczne indeksowanie, które nie zostało dostrojone przez polityki, wynosi około 10–20% rozmiaru elementu. Usuwając lub dostosowując polityki indeksowania, nie płacisz dodatkowych kosztów za operacje zapisu i nie wymagasz dodatkowej pojemności przepustowości. Zobacz Indeksowanie w usłudze Azure Cosmos DB , aby skonfigurować niestandardowe zasady indeksowania. Jeśli wcześniej pracowałeś z relacyjnymi bazami danych, możesz pomyśleć, że "indeksowanie wszystkiego" oznacza podwojenie przechowywania lub więcej. Jednak w usłudze Azure Cosmos DB, w przypadku mediany, jest ona znacznie niższa. W usłudze Azure Cosmos DB obciążenie magazynu indeksu jest zwykle niskie (10–20%), nawet w przypadku automatycznego indeksowania, ponieważ jest przeznaczone do niskiego zużycia pamięci masowej. Zarządzając zasadami indeksowania, można w bardziej precyzyjny sposób kontrolować kompromis między śladem indeksu a wydajnością zapytań.

Optymalizowanie kosztów przy użyciu czasu wygaśnięcia i zmiany kanału informacyjnego

Gdy dane nie będą już potrzebne, możesz bezpiecznie usunąć je z konta usługi Azure Cosmos DB przy użyciu czasu życia, kanału zmian, lub możesz migrować stare dane do innego magazynu danych, takiego jak magazyn obiektów blob platformy Azure lub magazyn danych platformy Azure. Dzięki czasowi życia (TTL) Azure Cosmos DB umożliwia automatyczne usuwanie elementów z kontenera po upływie określonego czasu. Domyślnie można ustawić czas wygaśnięcia na poziomie kontenera i zastąpić wartość dla poszczególnych elementów. Po ustawieniu czasu wygaśnięcia w kontenerze lub na poziomie elementu usługa Azure Cosmos DB automatycznie usunie te elementy po upływie czasu od czasu ostatniej modyfikacji. Za pomocą zestawienia zmian można migrować dane do innego kontenera w usłudze Azure Cosmos DB lub do zewnętrznego magazynu danych. Migracja jest bez przestojów, a po zakończeniu migracji można usunąć lub skonfigurować czas życia w celu usunięcia źródłowego kontenera usługi Azure Cosmos DB.

Optymalizowanie kosztów za pomocą zaawansowanych typów danych multimedialnych

Jeśli chcesz przechowywać zaawansowane typy multimediów, na przykład filmy wideo, obrazy itp., masz wiele opcji w usłudze Azure Cosmos DB. Jedną z opcji jest przechowywanie tych zaawansowanych typów multimediów jako elementów usługi Azure Cosmos DB. Istnieje limit 2 MB na element, a można go obejść, dzieląc element danych na wiele mniejszych części. Możesz też przechowywać je w usłudze Azure Blob Storage i używać metadanych, aby odwoływać się do nich z elementów usługi Azure Cosmos DB. Istnieje wiele zalet i wad z tym podejściem. Pierwsze podejście zapewnia najlepszą wydajność w zakresie opóźnień, umów SLA dotyczących przepustowości oraz możliwości dystrybucji globalnej dla bogatych typów danych multimedialnych, oprócz regularnych elementów usługi Azure Cosmos DB. Pomoc techniczna jest jednak dostępna w wyższej cenie. Dzięki przechowywaniu multimediów w usłudze Azure Blob Storage możesz obniżyć ogólne koszty. Jeśli opóźnienie ma krytyczne znaczenie, możesz użyć magazynu w warstwie Premium dla plików multimedialnych, do których odwołuje się elementy usługi Azure Cosmos DB. Integruje się to natywnie z siecią CDN w celu udostępniania obrazów z serwera brzegowego przy niższych kosztach w celu obejścia ograniczeń geograficznych. Wadą tego scenariusza jest to, że musisz radzić sobie z dwoma usługami — Azure Cosmos DB i Azure Blob Storage, co może prowadzić do zwiększenia kosztów operacyjnych.

Sprawdź zużycie pamięci

pl-PL: Aby sprawdzić użycie magazynu kontenera usługi Azure Cosmos DB, możesz uruchomić żądanie HEAD lub GET w kontenerze i sprawdzić nagłówki x-ms-request-quota i x-ms-request-usage. Alternatywnie, podczas pracy z zestawem .NET SDK, można użyć właściwości DocumentSizeQuota i DocumentSizeUsage, aby uzyskać informacje o zużyciu pamięci.

Używanie zestawu 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);

Następne kroki

Następnie możesz dowiedzieć się więcej na temat optymalizacji kosztów w usłudze Azure Cosmos DB, zapoznając się z następującymi artykułami: