Azure Cosmos DB bölümleniyorPartitioning in Azure Cosmos DB

Azure Cosmos DB, uygulamanızın performans ihtiyaçlarını karşılamak üzere bir veritabanındaki ayrı kapsayıcıları ölçeklendirmek için bölümleme kullanır.Azure Cosmos DB uses partitioning to scale individual containers in a database to meet the performance needs of your application. Bölümleme bölümünde, bir kapsayıcıdaki öğeler mantıksal bölümleradlı farklı alt kümelere bölünür.In partitioning, the items in a container are divided into distinct subsets called logical partitions. Mantıksal bölümler, bir kapsayıcıdaki her öğeyle ilişkili bir bölüm anahtarının değerine göre oluşturulur.Logical partitions are formed based on the value of a partition key that is associated with each item in a container. Mantıksal bir bölümdeki tüm öğeler aynı bölüm anahtarı değerine sahiptir.All items in a logical partition have the same partition key value.

Örneğin, bir kapsayıcı öğeleri barındırır.For example, a container holds items. Her öğenin UserID özellik için benzersiz bir değeri vardır.Each item has a unique value for the UserID property. Kapsayıcıda öğeler için bölüm anahtarı olarak UserID görevyaparve1.000benzersizdeğervarsa,kapsayıcıiçin1.000mantıksalbölümleroluşturulur.UserIDIf 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.

Öğenin mantıksal bölümünü belirleyen bir bölüm anahtarına ek olarak, bir kapsayıcıdaki her öğe bir öğe kimliğine (mantıksal bölüm içinde benzersiz) sahiptir.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). Bölüm anahtarını ve öğe KIMLIĞINI birleştirmek, öğenin benzersiz şekilde tanımlandığı öğenin dizininioluşturur.Combining the partition key and the item ID creates the item's index, which uniquely identifies the item.

Bölüm anahtarının seçilmesi , uygulamanızın performansını etkileyecek önemli bir karardır.Choosing a partition key is an important decision that will affect your application’s performance.

Mantıksal bölümleri yönetmeManaging logical partitions

, Kapsayıcının ölçeklenebilirlik ve performans ihtiyaçlarını etkili bir şekilde karşılamak üzere fiziksel bölümlerin mantıksal bölümlerinin yerleşimini saydam ve otomatik olarak yönetir. Azure Cosmos DBAzure 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. Bir uygulamanın aktarım hızı ve depolama gereksinimleri artdıkça, yükü daha fazla sayıda sunucuda otomatik olarak yaymak için mantıksal bölümleri Azure Cosmos DB.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, mantıksal bölümleri fiziksel bölümler arasında yaymak için karma tabanlı bölümleme kullanır.Azure Cosmos DB uses hash-based partitioning to spread logical partitions across physical partitions. Bir öğenin bölüm anahtarı değerini karma Azure Cosmos DB.Azure Cosmos DB hashes the partition key value of an item. Karma hale getirilmiş sonuç fiziksel bölümü belirler.The hashed result determines the physical partition. Ardından Azure Cosmos DB, bölüm anahtarı karmalarının anahtar alanını fiziksel bölümler arasında eşit olarak ayırır.Then, Azure Cosmos DB allocates the key space of partition key hashes evenly across the physical partitions.

Tek bir mantıksal bölüm içindeki verilere erişen sorgular, birden çok bölüme erişen sorgulardan daha uygun maliyetli bir hesaplardır.Queries that access data within a single logical partition are more cost-effective than queries that access multiple partitions. İşlemlere (saklı yordamlarda veya tetikleyicilere) yalnızca tek bir mantıksal bölümdeki öğelere karşı izin verilir.Transactions (in stored procedures or triggers) are allowed only against items in a single logical partition.

Azure Cosmos DB bölümleri nasıl yönettiği hakkında daha fazla bilgi edinmek için bkz. mantıksal bölümler.To learn more about how Azure Cosmos DB manages partitions, see Logical partitions. (Uygulamalarınızı derlemek veya çalıştırmak için dahili ayrıntıların anlaşılması gerekmez, ancak bunu merak eden bir okuyucu için buraya eklemiş olmanız gerekmez.)(It's not necessary to understand the internal details to build or run your applications, but added here for a curious reader.)

Bölüm anahtarı seçmeChoosing a partition key

Aşağıda, bölüm anahtarı seçmeye yönelik iyi bir kılavuz verilmiştir:The following is a good guidance for choosing a partition key:

  • Tek bir mantıksal bölümün 10 GB depolama üst sınırı vardır.A single logical partition has an upper limit of 10 GB of storage.

  • Azure Cosmos kapsayıcıları, saniyede en az 400 istek birimi (RU/sn) aktarım hızına sahiptir.Azure Cosmos containers have a minimum throughput of 400 request units per second (RU/s). Bir veritabanında aktarım hızı sağlandığında, kapsayıcı başına en az RU, saniyede 100 istek birimi (RU/s) olur.When throughput is provisioned on a database, minimum RUs per container is 100 request units per second (RU/s). Aynı bölüm anahtarına yapılan istekler bir bölüme ayrılan aktarım hızını aşamaz.Requests to the same partition key can't exceed the throughput that's allocated to a partition. İstekler ayrılan aktarım hızını aşarsa, istekler hız sınırlı olacaktır.If requests exceed the allocated throughput, requests are rate-limited. Bu nedenle, uygulamanızın içinde "etkin noktalar" ile sonuçlanmaması gereken bir bölüm anahtarı seçmek önemlidir.So, it's important to pick a partition key that doesn't result in "hot spots" within your application.

  • Geniş bir değer aralığına ve mantıksal bölümler arasında eşit olarak yayılan erişim düzenlerine sahip bir bölüm anahtarı seçin.Choose a partition key that has a wide range of values and access patterns that are evenly spread across logical partitions. Bu, veri depolama ve verimlilik için kaynakların mantıksal bölümler arasında dağıtılabilecek şekilde, kapsayıcıda verileri ve etkinliği mantıksal bölümler kümesi genelinde yaymaya yardımcı olur.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.

  • İş yükünü tüm bölümler arasında eşit ve zaman içinde eşit olarak yayılan bir bölüm anahtarı seçin.Choose a partition key that spreads the workload evenly across all partitions and evenly over time. Bölüm anahtarınız tercih etmeniz, etkili bölüm sorguları ve işlemler gereksinimini, ölçeklenebilirlik elde etmek için birden çok bölüme dağıtma hedefine karşı dengelemelidir.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.

  • Bölüm anahtarları adayları, sorgularda filtre olarak sık görüntülenen özellikleri içerebilir.Candidates for partition keys might include properties that appear frequently as a filter in your queries. Filtre koşuluna bölüm anahtarı eklenerek sorgular etkin bir şekilde yönlendirilebilir.Queries can be efficiently routed by including the partition key in the filter predicate.

Sonraki adımlarNext steps