Partitioneren in Azure Cosmos DBPartitioning in Azure Cosmos DB

Azure Cosmos DB maakt gebruik van partitionering om afzonderlijke containers in een Data Base te schalen om te voldoen aan de prestatie behoeften van uw toepassing.Azure Cosmos DB uses partitioning to scale individual containers in a database to meet the performance needs of your application. In partitioneren worden de items in een container onderverdeeld in afzonderlijke subsets met de naam logische partities.In partitioning, the items in a container are divided into distinct subsets called logical partitions. Logische partities worden gevormd op basis van de waarde van een partitie sleutel die is gekoppeld aan elk item in een container.Logical partitions are formed based on the value of a partition key that is associated with each item in a container. Alle items in een logische partitie hebben dezelfde partitie sleutel waarde.All items in a logical partition have the same partition key value.

Een container bevat bijvoorbeeld items.For example, a container holds items. Elk item heeft een unieke waarde voor de eigenschap UserID.Each item has a unique value for the UserID property. Als UserID fungeert als de partitie sleutel voor de items in de container en er 1.000 unieke UserID waarden zijn, worden er voor de container 1.000 logische partities gemaakt.If UserID serves as the partition key for the items in the container and there are 1,000 unique UserID values, 1,000 logical partitions are created for the container.

Naast een partitie sleutel die de logische partitie van het item bepaalt, heeft elk item in een container een item-id (uniek binnen een logische partitie).In addition to a partition key that determines the item’s logical partition, each item in a container has an item ID (unique within a logical partition). Als de partitie sleutel en de item-ID worden gecombineerd, wordt de indexvan het item gemaakt, waarmee het item op unieke wijze wordt geïdentificeerd.Combining the partition key and the item ID creates the item's index, which uniquely identifies the item.

Het kiezen van een partitie sleutel is een belang rijke beslissing die invloed heeft op de prestaties van uw toepassing.Choosing a partition key is an important decision that will affect your application’s performance.

Logische partities beherenManaging logical partitions

Azure Cosmos DB transparant en beheert automatisch de plaatsing van logische partities op fysieke partities om efficiënt te voldoen aan de schaal baarheid en prestatie behoeften van de container.Azure Cosmos DB transparently and automatically manages the placement of logical partitions on physical partitions to efficiently satisfy the scalability and performance needs of the container. Naarmate de door Voer en opslag vereisten van een toepassing toenemen, Azure Cosmos DB logische partities verplaatsen om de belasting automatisch over een groter aantal servers te spreiden.As the throughput and storage requirements of an application increase, Azure Cosmos DB moves logical partitions to automatically spread the load across a greater number of servers.

Azure Cosmos DB gebruikt op hash gebaseerde partitionering om logische partities over fysieke partities te verdelen.Azure Cosmos DB uses hash-based partitioning to spread logical partitions across physical partitions. Azure Cosmos DB hashes de waarde van de partitie sleutel van een item.Azure Cosmos DB hashes the partition key value of an item. Het gehashte resultaat bepaalt de fysieke partitie.The hashed result determines the physical partition. Azure Cosmos DB wijst vervolgens de sleutel ruimte van partitie sleutel-hashes gelijkmatig over de fysieke partities toe.Then, Azure Cosmos DB allocates the key space of partition key hashes evenly across the physical partitions.

Query's die toegang hebben tot gegevens in één logische partitie, zijn rendabeler dan query's die toegang hebben tot meerdere partities.Queries that access data within a single logical partition are more cost-effective than queries that access multiple partitions. Trans acties (in opgeslagen procedures of triggers) zijn alleen toegestaan voor items in één logische partitie.Transactions (in stored procedures or triggers) are allowed only against items in a single logical partition.

Zie logische partitiesvoor meer informatie over de manier waarop Azure Cosmos DB partities beheert.To learn more about how Azure Cosmos DB manages partitions, see Logical partitions. (Het is niet nodig om de interne gegevens te begrijpen om uw toepassingen te bouwen of uit te voeren, maar hier toe te voegen voor een nieuws lezer.)(It's not necessary to understand the internal details to build or run your applications, but added here for a curious reader.)

Een partitie sleutel kiezenChoosing a partition key

Hieronder vindt u een goede richt lijn voor het kiezen van een partitie sleutel:The following is a good guidance for choosing a partition key:

  • Eén logische partitie heeft een maximale limiet van 10 GB aan opslag ruimte.A single logical partition has an upper limit of 10 GB of storage.

  • Azure Cosmos-containers hebben een minimale door Voer van 400 aanvraag eenheden per seconde (RU/s).Azure Cosmos containers have a minimum throughput of 400 request units per second (RU/s). Wanneer de door Voer is ingericht voor een Data Base, is het minimale RUs per container 100 aanvraag eenheden per seconde (RU/s).When throughput is provisioned on a database, minimum RUs per container is 100 request units per second (RU/s). Aanvragen naar dezelfde partitie sleutel kunnen niet groter zijn dan de door Voer die is toegewezen aan een partitie.Requests to the same partition key can't exceed the throughput that's allocated to a partition. Als aanvragen de toegewezen door Voer overschrijden, zijn aanvragen een beperkt aantal.If requests exceed the allocated throughput, requests are rate-limited. Het is dus belang rijk om een partitie sleutel te kiezen die niet resulteert in ' hot spots ' in uw toepassing.So, it's important to pick a partition key that doesn't result in "hot spots" within your application.

  • Kies een partitie sleutel met een breed scala aan waarden en toegangs patronen die gelijkmatig over logische partities worden verdeeld.Choose a partition key that has a wide range of values and access patterns that are evenly spread across logical partitions. Zo kunt u de gegevens en de activiteit in uw container verspreiden over de set logische partities, zodat resources voor gegevens opslag en-door Voer kunnen worden gedistribueerd over de logische partities.This helps spread the data and the activity in your container across the set of logical partitions, so that resources for data storage and throughput can be distributed across the logical partitions.

  • Kies een partitie sleutel waarmee de werk belasting gelijkmatig over alle partities en gelijkmatig over de tijd wordt verdeeld.Choose a partition key that spreads the workload evenly across all partitions and evenly over time. De keuze van de partitie sleutel moet de nood zaak van efficiënte partitie query's en trans acties afstemmen op het doel van het distribueren van items over meerdere partities voor schaal baarheid.Your choice of partition key should balance the need for efficient partition queries and transactions against the goal of distributing items across multiple partitions to achieve scalability.

  • Kandidaten voor partitie sleutels kunnen eigenschappen bevatten die regel matig worden weer gegeven als een filter in uw query's.Candidates for partition keys might include properties that appear frequently as a filter in your queries. Query's kunnen efficiënt worden gerouteerd door de partitie sleutel op te nemen in het filter predicaat.Queries can be efficiently routed by including the partition key in the filter predicate.

Volgende stappenNext steps