Przed migracją kroki migracji danych z bazy danych MongoDB do interfejsu API usługi Azure Cosmos DB, bazy danych mongodbPre-migration steps for data migrations from MongoDB to Azure Cosmos DB's API for MongoDB

Przed przeprowadzeniem migracji danych z bazy danych MongoDB (lokalnie lub w chmurze (IaaS)) do interfejsu API usługi Azure Cosmos DB dla bazy danych MongoDB, należy:Before you migrate your data from MongoDB (either on-premises or in the cloud (IaaS)) to Azure Cosmos DB’s API for MongoDB, you should:

  1. Tworzenie konta usługi Azure Cosmos DBCreate an Azure Cosmos DB account
  2. Oszacować przepływność potrzebne dla swoich obciążeńEstimate the throughput needed for your workloads
  3. Wybierz klucz optymalne partycji dla danychPick an optimal partition key for your data
  4. Omówienie zasad indeksowania, którego można ustawić na podstawie danychUnderstand the indexing policy that you can set on your data

Jeśli zostały już wykonane powyższe wymagania wstępne dotyczące migracji, zobacz danych migracji bazy danych MongoDB do interfejsu API usługi Azure Cosmos DB, bazy danych mongodb instrukcje migracji rzeczywistych danych.If you have already completed the above pre-requisites for migration, see the Migrate MongoDB data to Azure Cosmos DB's API for MongoDB for the actual data migration instructions. W przeciwnym razie ten dokument zawiera instrukcje, aby obsługiwać te wymagania wstępne.If not, this document provides instructions to handle these pre-requisites.

Tworzenie konta usługi Azure Cosmos DBCreate an Azure Cosmos DB account

Przed rozpoczęciem procesu migracji, należy Tworzenie konta usługi Azure Cosmos przy użyciu interfejsu API usługi Azure Cosmos DB dla bazy danych MongoDB.Before starting the migration, you need to create an Azure Cosmos account using Azure Cosmos DB’s API for MongoDB.

Podczas tworzenia konta można wybrać ustawienia globalnie Dystrybuuj danych.At the account creation, you can choose settings to globally distribute your data. Istnieje również możliwość zapisu multiregionalne Włącz (lub Konfiguracja wielu wzorców) umożliwiający swoje regionach zarówno zapisu i odczytu z regionu.You also have the option to enable multi-region writes (or multi-master configuration), that allows each of your regions to be both a write and read region.

Account-Creation

Oszacować przepływność potrzebę obciążeńEstimate the throughput need for your workloads

Przed rozpoczęciem migracji za pomocą Database Migration Service (DMS), powinien oszacować ilość przepływności do aprowizowania dla usługi Azure Cosmos baz danych i kolekcji.Before starting the migration by using the Database Migration Service (DMS), you should estimate the amount of throughput to provision for your Azure Cosmos databases and collections.

Przepływność mogą być udostępniane w dowolnym:Throughput can be provisioned on either:

  • CollectionCollection

  • Database (Baza danych)Database

Uwaga

Może również mieć kombinację powyżej, gdzie niektórych kolekcjach w bazie danych może być wyposażone w dedykowane aprowizowana przepływność i inne osoby mogą udostępniać informacji o przepływności.You can also have a combination of the above, where some collections in a database may have dedicated provisioned throughput and others may share the throughput. Aby uzyskać więcej informacji, zobacz Ustawianie przepływności na bazę danych i kontener strony.For details, please see the set throughput on a database and a container page.

Należy najpierw zdecyduj, czy chcesz aprowizować bazy danych lub przepływność na poziomie kolekcji lub jako kombinację obu tych.You should first decide whether you want to provision database or collection level throughput, or a combination of both. Ogólnie rzecz biorąc zalecane jest skonfigurowanie dedykowanej przepływności na poziomie kolekcji.In general, it is recommended to configure a dedicated throughput at the collection level. Aprowizowania przepływności na poziomie bazy danych umożliwia kolekcji w bazie danych, aby udostępnić aprowizowanej przepływności.Provisioning throughput at the database-level enables collections in your database to share the provisioned throughput . Za pomocą udostępnionej przepływności jednak nie ma żadnej gwarancji dla określonych przepływności na każdej poszczególnych kolekcji i przewidywalnej wydajności nie uzyskasz na żadnej określonej kolekcji.With shared throughput, however, there is no guarantee for a specific throughput on each individual collection, and you don’t get predictable performance on any specific collection.

Jeśli nie masz pewności, o ile przepływności powinny być dedykowane do każdej poszczególnych kolekcji, można wybrać przepływność na poziomie bazy danych.If you are not sure about how much throughput should be dedicated to each individual collection, you can choose database-level throughput. Można potraktować aprowizowanej przepływności skonfigurowanym w bazie danych Azure Cosmos jako odpowiednik logiczny, moc obliczeniową bazy danych MongoDB maszyny Wirtualnej lub serwer fizyczny, ale bardziej ekonomiczne rozwiązanie o możliwość elastycznego skalowania.You can think of the provisioned throughput configured on your Azure Cosmos database as a logical equivalent to that of the compute capacity of a MongoDB VM or a physical server, but more cost-effective with the ability to elastically scale. Aby uzyskać więcej informacji, zobacz Aprowizowanie przepływności na kontenerach Azure Cosmos i bazy danych.For more information, see Provision throughput on Azure Cosmos containers and databases.

Jeśli możesz zaprowizować przepływność na poziomie bazy danych, wszystkie kolekcje utworzone w ramach tej bazy danych musi zostać utworzony przy użyciu klucza partycji/fragmentu.If you provision throughput at the database level, all collections created within that database must be created with a partition/shard key. Aby uzyskać więcej informacji na temat partycjonowania, zobacz partycjonowanie i skalowanie w poziomie w usłudze Azure Cosmos DB.For more information on partitioning, see Partitioning and horizontal scaling in Azure Cosmos DB. Jeśli nie określisz klucza partycji/fragmentu podczas migracji, Azure Database Migration Service automatycznie wypełni pola klucza fragmentu, za pomocą _identyfikator atrybut, który jest automatycznie generowany dla każdego dokumentu.If you do not specify a partition/shard key during the migration, the Azure Database Migration Service automatically populates the shard key field with an _id attribute that is automatically generated for each document.

Optymalną liczbę jednostek żądań (ru) do aprowizowaniaOptimal number of Request Units (RUs) to provision

W usłudze Azure Cosmos DB przepływność jest aprowizowany z wyprzedzeniem i jest mierzona w jednostkach żądań (RU) na sekundę.In Azure Cosmos DB, the throughput is provisioned in advance and is measured in Request Units (RU's) per second. W przypadku obciążeń korzystających z bazy danych MongoDB na maszynie Wirtualnej lub w środowisku lokalnym traktować RU firmy jako prosty abstrakcji fizycznych zasobów, takich jak dla rozmiaru maszyny Wirtualnej lub -na lokalny serwer i zasoby posiadają, np. pamięci, procesora CPU, operacje We/Wy.If you have workloads that run MongoDB on a VM or on-premises, think of RU's as a simple abstraction for physical resources, such as for the size of a VM or on-an premises server and the resources they possess, e.g., memory, CPU, IOPs.

Inaczej niż w przypadku maszyn wirtualnych lub na serwerach lokalnych (RUS) można łatwo skalować w górę i w dół w dowolnym momencie.Unlike VMs or on-premises servers, RUs are easy to scale up and down at any time. Liczba zainicjowanych jednostek zarezerwowanych można zmienić w ciągu kilku sekund, a opłaty są naliczane tylko za maksymalną liczbę jednostek żądań, które zarezerwować dla danego okresu jednej godziny.You can change the number of provisioned RUs within seconds, and you are billed only for the maximum number of RUs that you provision for a given one-hour period. Aby uzyskać więcej informacji, zobacz jednostki żądań w usłudze Azure Cosmos DB.For more information, see Request units in Azure Cosmos DB.

Poniżej przedstawiono kluczowe czynniki, które wpływają na liczbę wymaganych jednostek zarezerwowanych:The following are key factors that affect the number of required RUs:

  • Rozmiar elementu (tzn. dokument) : W miarę zwiększania rozmiaru elementu/dokumentu, liczbę jednostek zarezerwowanych używane do odczytu lub zapisu elementu/dokumentu również się zwiększa.Item (i.e., document) size: As the size of an item/document increases, the number of RUs consumed to read or write the item/document also increases.
  • Element właściwości liczba: Zakładając, że indeksowania domyślne wszystkich właściwości, liczbę jednostek zarezerwowanych używane do zapisania elementu zwiększa się wraz ze wzrostem liczby właściwości elementu.Item property count: Assuming the default indexing on all properties, the number of RUs consumed to write an item increases as the item property count increases. Użycie jednostek żądania dla operacji zapisu, można zmniejszyć ograniczenie liczby właściwości indeksowanych.You can reduce the request unit consumption for write operations by limiting the number of indexed properties.
  • Równoczesne wykonywanie operacji: Żądanie zużywanych jednostek zależy również od częstotliwość, z których różnych operacji CRUD (na przykład operacje zapisu, operacji odczytu, aktualizacji i usuwa) i bardziej złożone zapytania są wykonywane.Concurrent operations: Request units consumed also depends on the frequency with which different CRUD operations (like writes, reads, updates, deletes) and more complex queries are executed. Możesz użyć mongostat służący do wypełniania wyjściowego na potrzeby współbieżności bieżących danych bazy danych MongoDB.You can use mongostat to output the concurrency needs of your current MongoDB data.
  • Zapytanie wzorców: Złożoność zapytania ma wpływ na liczbę jednostek żądania są używane przez zapytanie.Query patterns: The complexity of a query affects how many request units are consumed by the query.

W przypadku eksportowania plików JSON za pomocą mongoexport i zrozumieć, ile zapisy, operacje odczytu, aktualizowanie i usuwanie tego miejsce na sekundę, można użyć planisty wydajności usługi Azure Cosmos DB do szacowania początkowa liczba jednostek żądań do aprowizowania.If you export JSON files using mongoexport and understand how many writes, reads, updates, and deletes that take place per second, you can use the Azure Cosmos DB capacity planner to estimate the initial number of RUs to provision. Capacity planner nie wziąć pod uwagę koszt bardziej złożone zapytania.The capacity planner does not factor in the cost of more complex queries. Dlatego jeśli masz złożone zapytania na danych, będzie możliwe dodatkowych jednostek RU.So, if you have complex queries on your data, additional RUs will be consumed. Kalkulator przyjęto założenie, że wszystkie pola są indeksowane i spójność sesji jest używana.The calculator also assumes that all fields are indexed, and session consistency is used. Najlepszym sposobem zrozumienia, koszt zapytania jest przeprowadzenie migracji danych (lub przykładowe dane) do usługi Azure Cosmos DB nawiązać połączenie z punktu końcowego usługi Cosmos DB i uruchomić przykładowe zapytanie z poziomu powłoki bazy danych MongoDB przy użyciu getLastRequestStastistics polecenie, aby pobrać Opłata za żądanie wyrażana, który zwróci liczbę ru:The best way to understand the cost of queries is to migrate your data (or sample data) to Azure Cosmos DB, connect to the Cosmos DB’s endpoint and run a sample query from the MongoDB Shell using the getLastRequestStastistics command to get the request charge, which will output the number of RUs consumed:

db.runCommand({getLastRequestStatistics: 1})

To polecenie zwróci dokument JSON podobne do następujących:This command will output a JSON document similar to the following:

{ "_t": "GetRequestStatisticsResponse", "ok": 1, "CommandName": "find", "RequestCharge": 10.1, "RequestDurationInMilliSeconds": 7.2}

Po poznać liczbę ru zużywanych przez zapytanie i współbieżność wymaganych dla tego zapytania, można dostosować Liczba zainicjowanych jednostek zarezerwowanych.After you understand the number of RUs consumed by a query and the concurrency needs for that query, you can adjust the number of provisioned RUs. Optymalizacja (RUS) nie jest to operacja jednorazowa — należy stale Optymalizuj lub skalować jednostki zarezerwowane aprowizowane w zależności od tego, czy nie ma oczekiwano duży ruch, w przeciwieństwie do duże obciążenie ani importowania danych.Optimizing RUs is not a one-time event - you should continually optimize or scale up the RUs provisioned, depending on whether you are not expecting a heavy traffic, as opposed to a heavy workload or importing data.

Wybierz klucz partycjiChoose your partition key

Partycjonowanie jest kluczowym elementem brany pod uwagę przed migracją na globalnie rozproszonej bazy danych, takich jak usługi Azure Cosmos DB.Partitioning is a key point of consideration before migrating to a globally distributed Database like Azure Cosmos DB. Usługa Azure Cosmos DB używa partycjonowanie skalowania poszczególnych kontenerów w bazie danych na potrzeby skalowalności i wydajności aplikacji.Azure Cosmos DB uses partitioning to scale individual containers in a database to meet the scalability and performance needs of your application. W przypadku użycia partycjonowania elementów w kontenerze są podzielone na różne podzbiory o nazwie partycjami logicznymi.In partitioning, the items in a container are divided into distinct subsets called logical partitions. Aby uzyskać szczegółowe informacje i zalecenia dotyczące wybierania klucza partycji odpowiednie dla Twoich danych, zobacz wybór klucza partycji sekcji.For details and recommendations on choosing the right partition key for your data, please see the Choosing a Partition Key section.

Indeksowanie danychIndex your data

Domyślnie usługa Azure Cosmos DB indeksuje wyświetlania pól danych podczas wprowadzania.By default, Azure Cosmos DB indexes all your data fields upon ingestion. Możesz zmodyfikować zasad indeksowania w usłudze Azure Cosmos DB w dowolnym momencie.You can modify the indexing policy in Azure Cosmos DB at any time. W rzeczywistości często zaleca się wyłączyć indeksowanie, podczas migracji danych, a następnie włączyć ją ponownie gdy dane są już w usłudze Cosmos DB.In fact, it is often recommended to turn off indexing when migrating data, and then turn it back on when the data is already in Cosmos DB. Aby uzyskać więcej informacji na temat indeksowania, możesz dowiedzieć się więcej o nim w indeksowanie w usłudze Azure Cosmos DB sekcji.For more details on indexing, you can read more about it in the Indexing in Azure Cosmos DB section.

Azure Database Migration Service automatycznie migruje kolekcji bazy danych MongoDB przy użyciu indeksy unikatowe.Azure Database Migration Service automatically migrates MongoDB collections with unique indexes. Jednak indeksy unikatowe należy utworzyć przed rozpoczęciem migracji.However, the unique indexes must be created before the migration. Usługa Azure Cosmos DB nie obsługuje tworzenia indeksów unikatowych, gdy istnieje już dane w kolekcji.Azure Cosmos DB does not support the creation of unique indexes, when there is already data in your collections. Aby uzyskać więcej informacji, zobacz unikatowe klucze w usłudze Azure Cosmos DB.For more information, see Unique keys in Azure Cosmos DB.

Kolejne krokiNext steps