Wprowadzenie do usługi Azure SQL Database
Dotyczy: Azure SQL Database
Bazy danych w poziomie można łatwo skalować w poziomie w usłudze Azure SQL Database przy użyciu narzędzi Elastic Database . Te narzędzia i funkcje umożliwiają korzystanie z zasobów bazy danych usługi Azure SQL Database do tworzenia rozwiązań dla obciążeń transakcyjnych, a zwłaszcza aplikacji SaaS (Software as a Service). Funkcje elastycznej bazy danych składają się z następujących elementów:
- Biblioteka klienta elastycznej bazy danych: biblioteka klienta to funkcja umożliwiająca tworzenie i konserwowanie baz danych podzielonych na fragmenty. Zobacz Wprowadzenie do narzędzi elastycznej bazy danych.
- Przenoszenie danych między skalowalnymi w poziomie bazami danych w chmurze: przenosi dane między podzielonymi na fragmenty bazami danych. To narzędzie jest przydatne do przenoszenia danych z wielodostępnej bazy danych do pojedynczej dzierżawy (lub odwrotnie). Zobacz Deploy a split-merge service to move data between sharded databases (Wdrażanie usługi dzielenia scalania w celu przenoszenia danych między podzielonymi bazami danych).
- Zadania elastyczne w usłudze Azure SQL Database: zarządzanie dużą liczbą baz danych w usłudze Azure SQL Database przy użyciu zadań. Łatwe wykonywanie operacji administracyjnych, takich jak zmiany schematu, zarządzanie poświadczeniami, odwołania do aktualizacji danych, zbieranie danych wydajności lub zbieranie danych telemetrycznych dzierżawy (klienta) przy użyciu zadań.
- Omówienie zapytań elastycznych usługi Azure SQL Database (wersja zapoznawcza) (wersja zapoznawcza): umożliwia uruchamianie zapytania Transact-SQL obejmującego wiele baz danych. Umożliwia to połączenie z narzędziami raportowania, takimi jak Excel, Power BI, Tableau itp.
- Transakcje rozproszone w bazach danych w chmurze: ta funkcja umożliwia uruchamianie transakcji obejmujących kilka baz danych. Transakcje elastycznej bazy danych są dostępne dla aplikacji .NET korzystających z platformy .NET ADO i integrują się ze znanym środowiskiem programowania przy użyciu klas System.Transaction.
Na poniższej ilustracji przedstawiono architekturę obejmującą funkcje elastycznej bazy danych w odniesieniu do kolekcji baz danych.
Na tej ilustracji kolory bazy danych reprezentują schematy. Bazy danych o tym samym kolorze współużytkuje ten sam schemat.
- Zestaw baz danych SQL jest hostowany na platformie Azure przy użyciu architektury fragmentowania.
- Biblioteka klienta elastic database służy do zarządzania zestawem fragmentów.
- Podzbiór baz danych jest umieszczany w elastycznej puli.
- Zadanie elastycznej bazy danych uruchamia skrypty języka T-SQL dla wszystkich baz danych.
- Narzędzie split-merge służy do przenoszenia danych z jednego fragmentu do innego.
- Zapytanie Elastic Database umożliwia napisanie zapytania obejmującego wszystkie bazy danych w zestawie fragmentów.
- Elastyczne transakcje umożliwiają uruchamianie transakcji obejmujących kilka baz danych.
Dlaczego warto używać narzędzi?
Osiągnięcie elastyczności i skalowania aplikacji w chmurze jest proste w przypadku maszyn wirtualnych i magazynu obiektów blob — wystarczy dodać lub odjąć jednostki albo zwiększyć moc. Pozostaje jednak wyzwaniem dla stanowego przetwarzania danych w relacyjnych bazach danych. W tych scenariuszach pojawiły się wyzwania:
- Rosnąca i zmniejszająca się pojemność dla części relacyjnej bazy danych obciążenia.
- Zarządzanie hotspotami, które mogą mieć wpływ na określony podzestaw danych , na przykład zajęty klient końcowy (dzierżawa).
Tradycyjnie scenariusze takie jak te zostały rozwiązane przez inwestowanie w serwery o większej skali w celu obsługi aplikacji. Ta opcja jest jednak ograniczona w chmurze, w której wszystkie operacje przetwarzania odbywają się na wstępnie zdefiniowanym sprzęcie towarów. Zamiast tego dystrybucja danych i przetwarzania w wielu identycznych strukturalnych bazach danych (wzorzec skalowania w poziomie nazywany "fragmentowaniem") stanowi alternatywę dla tradycyjnych metod skalowania w górę zarówno pod względem kosztów, jak i elastyczności.
Skalowanie w poziomie i w pionie
Na poniższej ilustracji przedstawiono poziomy i pionowy wymiar skalowania, które są podstawowymi sposobami skalowania elastycznych baz danych.
Skalowanie w poziomie odnosi się do dodawania lub usuwania baz danych w celu dostosowania pojemności lub ogólnej wydajności, nazywanej również "skalowaniem w poziomie". Fragmentowanie, w którym dane są partycjonowane w kolekcji identycznych ustrukturyzowanych baz danych, jest typowym sposobem implementowania skalowania w poziomie.
Skalowanie w pionie odnosi się do zwiększania lub zmniejszania rozmiaru obliczeniowego pojedynczej bazy danych, nazywanej również "skalowaniem w górę".
Większość aplikacji baz danych w skali chmury używa kombinacji tych dwóch strategii. Na przykład aplikacja Oprogramowanie jako usługa może używać skalowania w poziomie do aprowizowania nowych klientów końcowych i skalowania w pionie, aby umożliwić każdej bazie danych klienta końcowego zwiększanie lub zmniejszanie zasobów zgodnie z potrzebami obciążenia.
- Skalowanie w poziomie jest zarządzane przy użyciu biblioteki klienta elastic Database.
- Skalowanie w pionie odbywa się przy użyciu poleceń cmdlet programu Azure PowerShell w celu zmiany warstwy usługi lub umieszczania baz danych w elastycznej puli.
Dzielenie na fragmenty
Fragmentowanie to technika dystrybucji dużych ilości identycznych danych ustrukturyzowanych w wielu niezależnych bazach danych. Jest to szczególnie popularne wśród deweloperów rozwiązań w chmurze tworzących oferty saas (Software as a Service) dla klientów końcowych lub firm. Ci klienci końcowi są często nazywani "dzierżawami". Fragmentowanie może być wymagane z dowolnej liczby powodów:
- Łączna ilość danych jest zbyt duża, aby zmieścić się w ograniczeniach pojedynczej bazy danych
- Przepływność transakcji ogólnego obciążenia przekracza możliwości pojedynczej bazy danych
- Dzierżawy mogą wymagać fizycznej izolacji od siebie, więc oddzielne bazy danych są potrzebne dla każdej dzierżawy
- Różne sekcje bazy danych mogą wymagać przechowywania w różnych lokalizacjach geograficznych ze względów zgodności, wydajności lub geopolitycznych.
W innych scenariuszach, takich jak pozyskiwanie danych z urządzeń rozproszonych, fragmentowanie może służyć do wypełniania zestawu baz danych, które są zorganizowane czasowo. Na przykład oddzielna baza danych może być dedykowana dla każdego dnia lub tygodnia. W takim przypadku klucz fragmentowania może być liczbą całkowitą reprezentującą datę (obecną we wszystkich wierszach tabel podzielonych na fragmenty), a zapytania dotyczące pobierania informacji dla zakresu dat muszą być kierowane przez aplikację do podzbioru baz danych obejmujących kwestionowany zakres.
Fragmentowanie działa najlepiej, gdy każda transakcja w aplikacji może być ograniczona do pojedynczej wartości klucza fragmentowania. Dzięki temu wszystkie transakcje są lokalne dla określonej bazy danych.
Wielodostępne i jednodostępne
Niektóre aplikacje używają najprostszego podejścia do tworzenia oddzielnej bazy danych dla każdej dzierżawy. Takie podejście jest wzorcem fragmentowania pojedynczej dzierżawy, który zapewnia izolację, możliwość tworzenia kopii zapasowych/przywracania i skalowanie zasobów na poziomie szczegółowości dzierżawy. W przypadku fragmentowania pojedynczej dzierżawy każda baza danych jest skojarzona z określoną wartością identyfikatora dzierżawy (lub wartością klucza klienta), ale ten klucz nie musi być obecny w samych danych. Obowiązkiem aplikacji jest kierowanie każdego żądania do odpowiedniej bazy danych — a biblioteka kliencka może uprościć to zadanie.
Inne scenariusze pakują wiele dzierżaw razem w bazy danych, a nie izolują je do oddzielnych baz danych. Ten wzorzec jest typowym wzorcem fragmentowania wielodostępnego — może to być spowodowane faktem, że aplikacja zarządza dużą liczbą małych dzierżaw. We fragmentowaniu wielodostępnym wiersze w tabelach bazy danych są przeznaczone do przenoszenia klucza identyfikującego identyfikator dzierżawy lub klucz fragmentowania. Ponownie warstwa aplikacji jest odpowiedzialna za kierowanie żądania dzierżawy do odpowiedniej bazy danych i może być obsługiwana przez elastyczną bibliotekę klienta bazy danych. Ponadto zabezpieczenia na poziomie wiersza mogą służyć do filtrowania wierszy, do których wierszy może uzyskać dostęp każda dzierżawa — aby uzyskać szczegółowe informacje, zobacz Multitenant applications with elastic database tools and row-level security (Wielodostępne aplikacje z elastycznymi narzędziami bazy danych i zabezpieczeniami na poziomie wiersza). Ponowne dystrybuowanie danych między bazami danych może być potrzebne ze wzorcem dzielenia na fragmenty wielodostępne i jest obsługiwane przez narzędzie elastycznej bazy danych do dzielenia i scalania. Aby dowiedzieć się więcej na temat wzorców projektowania aplikacji SaaS korzystających z elastycznych pul, zobacz Multitenant SaaS database tenancy patterns (Wzorce dzierżawy wielodostępnych baz danych SaaS).
Przenoszenie danych z wielu do baz danych z jedną dzierżawą
Podczas tworzenia aplikacji SaaS typowe jest oferowanie potencjalnym klientom wersji próbnej oprogramowania. W takim przypadku opłacalne jest użycie wielodostępnej bazy danych dla danych. Jednak gdy perspektywa staje się klientem, baza danych z jedną dzierżawą jest lepsza, ponieważ zapewnia lepszą wydajność. Jeśli klient tworzy dane w okresie próbnym, użyj narzędzia split-merge, aby przenieść dane z wielodostępu do nowej bazy danych z jedną dzierżawą.
Uwaga
Przywracanie z wielodostępnych baz danych do jednej dzierżawy nie jest możliwe.
Przykłady i samouczki
Aby zapoznać się z przykładową aplikacją, która demonstruje bibliotekę klienta, zobacz Wprowadzenie do narzędzi elastycznej bazy danych.
Aby przekonwertować istniejące bazy danych na użycie narzędzi, zobacz Migrowanie istniejących baz danych w celu skalowania w poziomie.
Aby wyświetlić szczegóły puli elastycznej, zobacz Zagadnienia dotyczące cen i wydajności dla elastycznej puli lub utwórz nową pulę z elastycznymi pulami.
Powiązana zawartość
Jeszcze nie korzystasz z narzędzi elastycznych baz danych? Zapoznaj się z naszym przewodnikiem Wprowadzenie. W przypadku pytań skontaktuj się z nami na stronie pytań i odpowiedzi dotyczących usługi SQL Database oraz w przypadku żądań funkcji, dodaj nowe pomysły lub zagłosuj na istniejące pomysły na forum opinii usługi SQL Database.