Scaling out with Azure SQL Database (Skalowanie w poziomie za pomocą usługi Azure SQL Database)Scaling out with Azure SQL Database

Możesz łatwo skalować w poziomie baz danych Azure SQL przy użyciu elastycznej bazy danych narzędzia.You can easily scale out Azure SQL databases using the Elastic Database tools. Te narzędzia i funkcje pozwala korzystać z zasobów bazy danych bazy danych SQL Azure do tworzenia rozwiązań dla obciążeń transakcyjnych, a szczególnie oprogramowania jako aplikacje usługi (SaaS).These tools and features let you use the database resources of Azure SQL Database to create solutions for transactional workloads, and especially Software as a Service (SaaS) applications. Elastyczne funkcje bazy danych składają się z:Elastic Database features are composed of the:

Na poniższym rysunku przedstawiono architekturę, która obejmuje elastycznej bazy danych funkcji w odniesieniu do kolekcji baz danych.The following graphic shows an architecture that includes the Elastic Database features in relation to a collection of databases.

Na rysunku kolory bazy danych reprezentują schematów.In this graphic, colors of the database represent schemas. Bazy danych o tej samej kolor współużytkować ten sam schemat.Databases with the same color share the same schema.

  1. Zestaw baz danych Azure SQL są hostowane na platformie Azure przy użyciu architektury dzielenia na fragmenty.A set of Azure SQL databases are hosted on Azure using sharding architecture.
  2. Biblioteki klienta elastycznej bazy danych służy do zarządzania zestawem niezależnego fragmentu.The Elastic Database client library is used to manage a shard set.
  3. Podzbiór baz danych są umieszczane w puli elastycznej.A subset of the databases are put into an elastic pool. (Zobacz co to jest pula?).(See What is a pool?).
  4. Zadania elastycznej bazy danych jest uruchamiana według harmonogramu lub ad hoc skryptów T-SQL dla wszystkich baz danych.An Elastic Database job runs scheduled or ad hoc T-SQL scripts against all databases.
  5. Narzędzia do scalania podziału służy do przenoszenia danych z jednego niezależnego fragmentu do innej.The split-merge tool is used to move data from one shard to another.
  6. Elastycznej bazy danych zapytania umożliwia Napisz zapytanie, które obejmuje wszystkie bazy danych w zestawie niezależnego fragmentu.The Elastic Database query allows you to write a query that spans all databases in the shard set.
  7. Transakcje elastycznej zezwalają na uruchamianie transakcje obejmujące wiele baz danych.Elastic transactions allow you to run transactions that span several databases.

Narzędzia elastycznych baz danych

Dlaczego warto używać narzędzi?Why use the tools?

Elastyczność i skalowalność dla aplikacji w chmurze została proste dla maszyn wirtualnych i magazynu obiektów blob — po prostu Dodaj odjąć jednostki lub zwiększyć zasilania.Achieving elasticity and scale for cloud applications has been straightforward for VMs and blob storage - simply add or subtract units, or increase power. Lecz pozostają wyzwanie dla stanowych przetwarzania danych w relacyjnych baz danych.But it has remained a challenge for stateful data processing in relational databases. Wyzwania pojawiło się w następujących scenariuszach:Challenges emerged in these scenarios:

  • Powiększania i zmniejszania pojemności relacyjnej bazy danych części obciążenie.Growing and shrinking capacity for the relational database part of your workload.
  • Zarządzanie punktami HotSpot, które mogą wystąpić podczas wpływających na konkretnego podzestawu dane — takie jak zajęty end klienta (dzierżawcy).Managing hotspots that may arise affecting a specific subset of data - such as a busy end-customer (tenant).

Tradycyjnie scenariuszy, takich jak te dotyczą zainwestować w serwerach dużą skalę bazy danych do obsługi tej aplikacji.Traditionally, scenarios like these have been addressed by investing in larger-scale database servers to support the application. Jednak ta opcja jest ograniczona w chmurze, w którym przetwarzania się dzieje na sprzęcie masowym wstępnie zdefiniowane.However, this option is limited in the cloud where all processing happens on predefined commodity hardware. Zamiast tego przesyłanie danych i przetwarzania przez wiele baz danych strukturalnych tak samo (ze skalowalnego w poziomie wzorcem znanym jako "dzielenia na fragmenty") stanowi alternatywę do tradycyjnych metod skalowanie w pionie zarówno pod względem kosztów i elastyczność.Instead, distributing data and processing across many identically structured databases (a scale-out pattern known as "sharding") provides an alternative to traditional scale-up approaches both in terms of cost and elasticity.

Skalowanie w poziomie i w pionieHorizontal and vertical scaling

Na poniższej ilustracji przedstawiono wymiary poziome i pionowe skalowania, które są podstawowe sposoby, które mogą być skalowane elastycznych baz danych.The following figure shows the horizontal and vertical dimensions of scaling, which are the basic ways the elastic databases can be scaled.

Poziome i pionowe skalowania w poziomie

Skalowanie w poziomie odwołuje się do dodawania lub usuwania bazy danych, aby dopasować pojemności lub ogólnej wydajności.Horizontal scaling refers to adding or removing databases in order to adjust capacity or overall performance. To jest również nazywany "skalowanie" out.This is also called “scaling out”. Dzielenia na fragmenty, w którym danych jest podzielonym na partycje w kolekcji identycznie strukturalnych baz danych, jest to często stosowana metoda implementuje skalowanie w poziomie.Sharding, in which data is partitioned across a collection of identically structured databases, is a common way to implement horizontal scaling.

Skalowanie w pionie odwołuje się do zwiększenie lub zmniejszenie poziomu wydajności bazy danych poszczególnych — jest to również nazywane "skalowaniu."Vertical scaling refers to increasing or decreasing the performance level of an individual database—this is also known as “scaling up.”

Większość aplikacji baz danych w skali chmury użycie kombinacji tych dwóch strategii.Most cloud-scale database applications use a combination of these two strategies. Na przykład aplikacja oprogramowania jako usługi mogą używać skalowanie w poziomie do obsługi administracyjnej nowych klientów końcowych i skalowanie w pionie umożliwia każdego odbiorcy końcowego bazy danych, można zwiększać i zmniejszać zasoby odpowiednio do potrzeb obciążenia.For example, a Software as a Service application may use horizontal scaling to provision new end-customers and vertical scaling to allow each end-customer’s database to grow or shrink resources as needed by the workload.

  • Skalowanie w poziomie jest zarządzany przy użyciu biblioteki klienta elastycznej bazy danych.Horizontal scaling is managed using the Elastic Database client library.
  • Skalowanie w pionie odbywa się przy użyciu poleceń cmdlet programu Azure PowerShell, aby zmienić warstwę usługi lub poprzez umieszczenie bazy danych w puli elastycznej.Vertical scaling is accomplished using Azure PowerShell cmdlets to change the service tier, or by placing databases in an elastic pool.

Dzielenia na fragmentySharding

Dzielenia na fragmenty to technika do dystrybucji dużych ilości danych strukturalnych tak samo dla pewnej liczby niezależnych baz danych.Sharding is a technique to distribute large amounts of identically structured data across a number of independent databases. Jest to szczególnie popularnych z deweloperami chmury tworzenie oprogramowania jako ofert usługi (SAAS) dla klientów końcowych lub firmy.It is especially popular with cloud developers creating Software as a Service (SAAS) offerings for end customers or businesses. Tych klientów końcowych są często określane jako "dzierżawców".These end customers are often referred to as “tenants”. Dzielenia na fragmenty mogą być wymagane dla wielu sytuacjach:Sharding may be required for any number of reasons:

  • Całkowita ilość danych jest za duży dla ograniczenia pojedynczej bazy danychThe total amount of data is too large to fit within the constraints of a single database
  • Przepływność transakcji ogólną obciążenie przekracza możliwości pojedynczej bazy danychThe transaction throughput of the overall workload exceeds the capabilities of a single database
  • Dzierżawcy mogą wymagać fizycznego izolacji od siebie, więc oddzielne bazy danych są wymagane dla każdego dzierżawcyTenants may require physical isolation from each other, so separate databases are needed for each tenant
  • Różne sekcje bazy danych może być konieczne znajdują się w różnych lokalizacjach geograficznych dla zgodności, wydajność lub z przyczyn geograficznymi.Different sections of a database may need to reside in different geographies for compliance, performance, or geopolitical reasons.

W innych sytuacjach, takich jak wprowadzanie danych z urządzeń rozproszonych dzielenia na fragmenty można wypełnić zestaw baz danych, które są zorganizowane tymczasowe.In other scenarios, such as ingestion of data from distributed devices, sharding can be used to fill a set of databases that are organized temporally. Na przykład oddzielnej bazy danych może być dedykowany dla każdego dnia lub tygodnia.For example, a separate database can be dedicated to each day or week. W takim przypadku dzielenia na fragmenty klucz musi być liczbą całkowitą reprezentującą Data (istnieje we wszystkich wierszach podzielonej tabel) i zapytania podczas pobierania informacji dotyczących zakresu dat muszą być kierowane przez aplikację do podzbioru w danym zakresie obejmujących baz danych.In that case, the sharding key can be an integer representing the date (present in all rows of the sharded tables) and queries retrieving information for a date range must be routed by the application to the subset of databases covering the range in question.

Dzielenia na fragmenty działa najlepiej, gdy każda transakcja w aplikacji można ograniczyć do pojedynczej wartości klucza dzielenia na fragmenty.Sharding works best when every transaction in an application can be restricted to a single value of a sharding key. Która sprawia, że wszystkie transakcje są lokalne z określoną bazą danych.That ensures that all transactions are local to a specific database.

Wielodostępne i pojedynczej dzierżawyMulti-tenant and single-tenant

Niektóre aplikacje używają najprostsza metoda tworzenia oddzielnej bazy danych dla każdego dzierżawcy.Some applications use the simplest approach of creating a separate database for each tenant. Jest to wzorca dzielenia na fragmenty pojedynczej dzierżawy zapewnia izolację, możliwość wykonywania kopii zapasowej i przywracania i zasobów skalowanie na poziom szczegółowości dzierżawcy.This is the single tenant sharding pattern that provides isolation, backup/restore ability, and resource scaling at the granularity of the tenant. Z pojedynczej dzierżawy dzielenia na fragmenty każda baza danych jest skojarzona z wartość Identyfikatora dzierżawy określonego (lub wartość klucza klienta), ale ten klucz nie muszą zawsze być obecne w samych danych.With single tenant sharding, each database is associated with a specific tenant ID value (or customer key value), but that key need not always be present in the data itself. Odpowiada aplikacji kierować każdego żądania do odpowiedniej bazy danych — i biblioteki klienta może to uprościć.It is the application’s responsibility to route each request to the appropriate database - and the client library can simplify this.

Pojedynczej dzierżawy w porównaniu z wieloma dzierżawcami

Inne scenariusze pakietu wielu dzierżawców ze sobą do bazy danych zamiast izolowanie je do oddzielnego baz danych.Others scenarios pack multiple tenants together into databases, rather than isolating them into separate databases. To jest typowe wzorca dzielenia na fragmenty wielodostępne - i może być prowadzony przez fakt, że aplikacja zarządza dużą liczbę małych dzierżaw.This is a typical multi-tenant sharding pattern - and it may be driven by the fact that an application manages large numbers of small tenants. W wielodostępnym dzielenia na fragmenty wierszy w tabelach bazy danych wszystkich mają klucz, który identyfikuje identyfikator dzierżawcy lub klucz dzielenia na fragmenty.In multi-tenant sharding, the rows in the database tables are all designed to carry a key identifying the tenant ID or sharding key. Ponownie warstwy aplikacji jest odpowiedzialny za routing żądania dzierżawcy z odpowiednią bazą danych, a to może być obsługiwana przez biblioteki klienta elastycznej bazy danych.Again, the application tier is responsible for routing a tenant’s request to the appropriate database, and this can be supported by the elastic database client library. Ponadto zabezpieczenia na poziomie wierszy może służyć do filtru wierszy, które każdego dzierżawcy można uzyskać dostępu do — Aby uzyskać więcej informacji, zobacz wielodostępnych aplikacji za pomocą narzędzi elastycznej bazy danych i zabezpieczenia na poziomie wiersza.In addition, row-level security can be used to filter which rows each tenant can access - for details, see Multi-tenant applications with elastic database tools and row-level security. Redystrybuowanie danych między bazami danych mogą być wymagane ze wzorcem wielodostępne dzielenia na fragmenty, a umożliwiają to narzędzie do scalania podziału elastycznej bazy danych.Redistributing data among databases may be needed with the multi-tenant sharding pattern, and this is facilitated by the elastic database split-merge tool. Aby dowiedzieć się więcej na temat wzorców projektowych dla aplikacji SaaS wykorzystujących pule elastyczne, zobacz artykuł Design Patterns for Multi-tenant SaaS Applications with Azure SQL Database (Wzorce projektowe dla wielodostępnych aplikacji SaaS korzystających z usługi Azure SQL Database).To learn more about design patterns for SaaS applications using elastic pools, see Design Patterns for Multi-tenant SaaS Applications with Azure SQL Database.

Przenoszenie danych z wielu baz danych z pojedynczej dzierżawyMove data from multiple to single-tenancy databases

Podczas tworzenia aplikacji SaaS, jest typowy oferowanie potencjalnych odbiorców wersję próbną oprogramowania.When creating a SaaS application, it is typical to offer prospective customers a trial version of the software. W tym przypadku jest ekonomiczna korzystanie z bazy danych z wieloma dzierżawcami danych.In this case, it is cost-effective to use a multi-tenant database for the data. Jednak gdy dot, dzierżawy pojedynczej bazy danych jest lepszym rozwiązaniem, ponieważ zapewnia lepszą wydajność.However, when a prospect becomes a customer, a single-tenant database is better since it provides better performance. Jeśli klient ma utworzony danych podczas okresu próbnego, użyj narzędzia do scalania podziału przenoszenia danych z wieloma dzierżawcami do nowej bazy danych jednego dzierżawcy.If the customer had created data during the trial period, use the split-merge tool to move the data from the multi-tenant to the new single-tenant database.

Następne krokiNext steps

Aby przykładową aplikację prezentującą biblioteki klienta, zobacz wprowadzenie do narzędzi elastycznej bazy danych.For a sample app that demonstrates the client library, see Get started with Elastic Database tools.

Aby dokonać konwersji istniejących baz danych do korzystania z narzędzi, zobacz migracji istniejących baz danych do skalowania w poziomie.To convert existing databases to use the tools, see Migrate existing databases to scale out.

Aby wyświetlić szczegółowe informacje na temat puli elastycznej, zobacz zagadnienia dotyczące cen i wydajności dla elastycznej puli, lub Utwórz nową pulę z pule elastyczne.To see the specifics of the elastic pool, see Price and performance considerations for an elastic pool, or create a new pool with elastic pools.

Dodatkowe zasobyAdditional resources

Jeszcze nie używasz narzędzi elastycznej bazy danych?Not using elastic database tools yet? Zapoznaj się z naszym Getting Started Guide.Check out our Getting Started Guide. Odpowiedzi na pytania, proszę dotrzeć do nas na forum bazy danych SQL i funkcja żądań, dodaj je do forum opinii bazy danych SQL.For questions, please reach out to us on the SQL Database forum and for feature requests, please add them to the SQL Database feedback forum.