Udostępnij przez


Partycjonowanie wokół limitów

Używanie partycjonowania do obejścia limitów bazy danych, sieci i obliczeń

W chmurze wszystkie usługi mają limity możliwości skalowania w górę. Limity usług platformy Azure są udokumentowane w artykule Azure subscription and service limits, quotas, and constraints (Limity, limity przydziału i ograniczenia usługi platformy Azure). Limity obejmują liczbę rdzeni, rozmiar bazy danych, przepływność zapytań i przepływność sieci. Jeśli system będzie wystarczająco duży, może wystąpić co najmniej jeden z tych limitów. Użyj partycjonowania, aby obejść te limity.

Istnieje wiele sposobów partycjonowania systemu, takich jak:

  • Podziel bazę danych na partycje, aby uniknąć limitów rozmiaru bazy danych, operacji we/wy danych lub liczby współbieżnych sesji.

  • Podziel kolejkę lub magistralę komunikatów, aby uniknąć limitów liczby żądań lub liczby połączeń współbieżnych.

  • Podziel aplikację internetową App Service, aby uniknąć limitów liczby wystąpień na plan usługi App Service.

Bazę danych można partycjonować w poziomie, w pionie lub funkcjonalnie.

  • W partycjonowaniu poziomym, nazywanym również fragmentowaniem, każda partycja przechowuje dane dla podzestawu całkowitego zestawu danych. Partycje współużytkują ten sam schemat danych. Na przykład klienci, których nazwy zaczynają się od A–M, przechodzą do jednej partycji, N–Z do innej partycji.

  • W przypadku partycjonowania pionowego każda partycja zawiera podzestaw pól dla elementów w magazynie danych. Na przykład umieść często używane pola w jednej partycji i rzadziej używane pola w innym.

  • W partycjonowaniu funkcjonalnym dane są partycjonowane zgodnie ze sposobem ich użycia przez każdy ograniczony kontekst w systemie. Na przykład dane faktur są przechowywane w jednej partycji i danych spisu produktów w innej. Schematy są niezależne.

Aby uzyskać więcej informacji, zobacz Partycjonowanie danych.

Rekomendacje

Partycjonowanie różnych części aplikacji. Bazy danych są jednym z oczywistych kandydatów do partycjonowania, ale rozważ także zasoby, pamięć podręczną, kolejki i instancje obliczeniowe.

Zaprojektuj klucz partycji, aby uniknąć hotspotów. Jeśli partycjonujesz bazę danych, ale jeden fragment nadal otrzymuje większość żądań, nie rozwiązano problemu. W idealnym przypadku obciążenie jest dystrybuowane równomiernie we wszystkich partycjach. Na przykład skrót według identyfikatora klienta, a nie pierwszej litery nazwy klienta, ponieważ niektóre litery są częstsze. Ta sama zasada ma zastosowanie podczas partycjonowania kolejki komunikatów. Wybierz klucz partycji, który zapewnia równomierny rozkład komunikatów w zestawie kolejek. Aby uzyskać więcej informacji, zobacz Fragmentowanie.

Zarządzanie limitami subskrypcji i usług platformy Azure. Poszczególne składniki i usługi mają limity, ale istnieją również limity dla subskrypcji i grup zasobów. W przypadku bardzo dużych aplikacji może być konieczne partycjonowanie wokół tych limitów.

Partycjonowanie na różnych poziomach. Rozważ wdrożenie serwera bazy danych na maszynie wirtualnej. Maszyna wirtualna ma wirtualny dysk twardy obsługiwany przez usługę Azure Storage. Konto przechowywania należy do subskrypcji platformy Azure. Zwróć uwagę, że każdy krok w hierarchii ma limity. Serwer bazy danych może mieć limit puli połączeń. Maszyny wirtualne mają limity procesora CPU i sieci. Pamięć masowa ma limity liczby operacji we/wy na sekundę. Subskrypcja ma limity liczby rdzeni maszyn wirtualnych. Ogólnie rzecz biorąc, łatwiej jest dokonać podziału niżej w hierarchii. Tylko duże aplikacje powinny wymagać partycjonowania na poziomie subskrypcji.