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

DOTYCZY: Nosql Mongodb Cassandra Gremlin Tabeli

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. Magazyn automatycznie skaluje w górę i w dół na podstawie danych dodanych lub usuniętych do kontenera usługi Azure Cosmos DB.

Koszty magazynu

Opłaty za magazyn są naliczane za jednostkę GB. Lokalny magazyn oparty na dyskach SSD jest używany przez dane i indeksowanie. Łą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 magazynu, zobacz narzędzie planisty pojemności. Koszt magazynu w usłudze Azure Cosmos DB wynosi 0,25 GB/miesiąc, zobacz Stronę cennika 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 przez zakotwiczenie 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 zasady, wynosi około 10–20% rozmiaru elementu. Usuwając lub dostosowując zasady indeksu, nie płacisz dodatkowych kosztów za zapisy i nie wymagasz dodatkowej pojemności przepływnoś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 magazynu lub wyższego. Jednak w usłudze Azure Cosmos DB w medianie jest 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 kontrolować kompromis śladu indeksu i wydajność zapytań w bardziej precyzyjny sposób.

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 wygaśnięcia, zestawienia zmian lub migrować stare dane do innego magazynu danych, takiego jak magazyn obiektów blob platformy Azure lub magazyn danych platformy Azure. Dzięki czasowi wygaśnięcia lub czasu wygaśnięcia usługa 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 trwa zero czasu, a po zakończeniu migracji można usunąć lub skonfigurować czas wygaśnięcia 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 i można go uniknąć, łącząc element danych z wieloma podciągami. 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 przepływności i zaawansowanych możliwości dystrybucji globalnej dla zaawansowanych typów danych multimediów oprócz zwykłych 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. W dół z tym scenariuszem jest to, że musisz radzić sobie z dwoma usługami — Azure Cosmos DB i Azure Blob Storage, co może zwiększyć koszty operacyjne.

Sprawdzanie używanego magazynu

Aby sprawdzić użycie magazynu kontenera usługi Azure Cosmos DB, możesz uruchomić żądanie HEAD lub GET w kontenerze i sprawdzić x-ms-request-quota nagłówki 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ć wykorzystany magazyn.

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, wykonując następujące artykuły: