Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:Azure SQL Database
Łatwe zarządzanie istniejącymi skalowalnymi w poziomie bazami danych podzielonymi na fragmenty przy użyciu narzędzi (takich jak Tworzenie skalowalnych baz danych w chmurze). Najpierw przekonwertuj istniejący zestaw baz danych, aby użyć menedżera mapy fragmentów.
Omówienie
Aby przeprowadzić migrację istniejącej bazy danych podzielonej na fragmenty:
- Przygotuj bazę danych menedżera map fragmentów.
- Utwórz mapę fragmentów.
- Przygotuj poszczególne fragmenty.
- Dodaj mapowania do mapy fragmentów.
Te techniki można zaimplementować przy użyciu biblioteki klienta programu .NET Framework lub skryptów programu PowerShell znajdujących się w artykule Azure SQL Database — Elastic Database tools scripts (Skrypty narzędzi usługi Azure SQL Database — elastic database). W tym przykładzie użyto skryptów programu PowerShell.
Aby uzyskać więcej informacji na temat narzędzia ShardMapManager, zobacz Zarządzanie mapami fragmentów. Aby zapoznać się z omówieniem narzędzi elastycznej bazy danych, zobacz Omówienie funkcji elastic Database.
Przygotowywanie bazy danych menedżera map fragmentów
Menedżer map fragmentów to specjalna baza danych zawierająca dane do zarządzania skalowalnymi w poziomie bazami danych. Możesz użyć istniejącej bazy danych lub utworzyć nową bazę danych. Baza danych działająca jako menedżer mapy fragmentów nie powinna być tą samą bazą danych co fragment. Skrypt programu PowerShell nie tworzy bazy danych.
Krok 1. Tworzenie menedżera mapy fragmentów
# Create a shard map manager
New-ShardMapManager -UserName '<user_name>' -Password '<password>' -SqlServerName '<server_name>' -SqlDatabaseName '<smm_db_name>'
#<server_name> and <smm_db_name> are the server name and database name
# for the new or existing database that should be used for storing
# tenant-database mapping information.
Pobierz menedżera mapy fragmentów
Po utworzeniu możesz pobrać menedżera map fragmentów za pomocą tego polecenia cmdlet. Ten krok jest potrzebny za każdym razem, gdy trzeba użyć obiektu ShardMapManager.
# Try to get a reference to the Shard Map Manager
$ShardMapManager = Get-ShardMapManager -UserName '<user_name>' -Password '<password>' -SqlServerName '<server_name>' -SqlDatabaseName '<smm_db_name>'
Krok 2. Tworzenie mapy fragmentów
Wybierz typ mapy fragmentów do utworzenia. Wybór zależy od architektury bazy danych:
- Pojedyncza dzierżawa na bazę danych (aby uzyskać terminy, zobacz słownik).
- Wiele dzierżaw na bazę danych (dwa typy):
- Mapowanie listy
- Mapowanie zakresu
W przypadku modelu z jedną dzierżawą utwórz mapę fragmentów mapowania listy. Model z jedną dzierżawą przypisuje jedną bazę danych na dzierżawę. Jest to skuteczny model dla deweloperów SaaS, który upraszcza zarządzanie.
Model multitenant przypisuje wielu dzierżawców do pojedynczej bazy danych (i można rozproszyć grupy dzierżawców w wielu bazach danych). Użyj tego modelu, gdy oczekujesz, że każda dzierżawa będzie miała niewielkie potrzeby dotyczące danych. W tym modelu przypisz zakres dzierżaw do bazy danych przy użyciu mapowania zakresu.
Możesz też zaimplementować wielonajemcowy model bazy danych przy użyciu mapowania listy w celu przypisania wielu najemców do pojedynczej bazy danych. Na przykład baza danych DB1 służy do przechowywania informacji o identyfikatorze dzierżawy 1 i 5, a baza danych DB2 przechowuje dane dla dzierżawy 7 i dzierżawy 10.
W zależności od wybranej opcji wybierz jedną z następujących opcji:
Opcja 1. Tworzenie mapy fragmentów dla mapowania listy
Utwórz mapę fragmentów przy użyciu obiektu ShardMapManager.
# $ShardMapManager is the shard map manager object
$ShardMap = New-ListShardMap -KeyType $([int]) -ListShardMapName 'ListShardMap' -ShardMapManager $ShardMapManager
Opcja 2. Tworzenie mapy fragmentów dla mapowania zakresu
Aby użyć tego wzorca mapowania, wartości identyfikatorów dzierżawców muszą być zakresami ciągłymi i dopuszczalne jest występowanie luk w zakresach, pomijając określony zakres podczas tworzenia baz danych.
# $ShardMapManager is the shard map manager object
# 'RangeShardMap' is the unique identifier for the range shard map.
$ShardMap = New-RangeShardMap -KeyType $([int]) -RangeShardMapName 'RangeShardMap' -ShardMapManager $ShardMapManager
Opcja 3. Mapowania listy w pojedynczej bazie danych
Skonfigurowanie tego wzorca wymaga również utworzenia mapy listy, jak pokazano w kroku 2, opcja 1.
Krok 3. Przygotowanie poszczególnych fragmentów
Dodaj każdy fragment (bazę danych) do menedżera map fragmentów. Spowoduje to przygotowanie poszczególnych baz danych do przechowywania informacji o mapowaniu. Wykonaj tę metodę dla każdego fragmentu.
$ShardMap
to mapa fragmentów utworzony w kroku 2.
Add-Shard -ShardMap $ShardMap -SqlServerName '<shard_server_name>' -SqlDatabaseName '<shard_database_name>'
# The $ShardMap is the shard map created in step 2.
Krok 4. Dodawanie mapowań
Dodawanie mapowań zależy od rodzaju utworzonej mapy fragmentów. Jeśli utworzono mapę listy, dodasz mapowania listy. Jeśli utworzono mapę zakresu, dodasz mapowania zakresów.
Opcja 1. Mapowanie danych dla mapowania listy
Zamapuj dane, dodając mapowanie listy dla każdej dzierżawy. Użyj następującego przykładowego skryptu programu PowerShell, aby utworzyć mapowania i skojarzyć je z nowymi fragmentami.
# Create the mapping and associate it with the new shards
Add-ListMapping -KeyType $([int]) -ListPoint '<tenant_id>' -ListShardMap $ShardMap -SqlServerName '<shard_server_name>' -SqlDatabaseName '<shard_database_name>'
Opcja 2. Mapowanie danych na mapowanie zakresu
Dodaj mapowania zakresów dla wszystkich przedziałów ID dzierżawy i ich powiązań z bazą danych. Użyj następującego przykładowego skryptu programu PowerShell, aby utworzyć mapowania i skojarzyć je z nowymi fragmentami.
# Create the mapping and associate it with the new shards
Add-RangeMapping -KeyType $([int]) -RangeHigh '5' -RangeLow '1' -RangeShardMap $ShardMap -SqlServerName '<shard_server_name>' -SqlDatabaseName '<shard_database_name>'
Krok 4. Opcja 3. Mapuj dane dla wielu dzierżaw w pojedynczej bazie danych
Dla każdej dzierżawy uruchom polecenie cmdlet Add-ListMapping
(opcja 1).
Sprawdzanie mapowań
Informacje o istniejących fragmentach i skojarzonych z nimi mapowaniach można wysyłać zapytania za pomocą następującego przykładowego skryptu programu PowerShell.
# List the shards and mappings
Get-Shards -ShardMap $ShardMap
Get-Mappings -ShardMap $ShardMap
Podsumowanie
Po zakończeniu instalacji możesz rozpocząć korzystanie z biblioteki klienta elastic database. Możesz również użyć routingu zależnego od danych i zapytania wieloczęściowego.