Azure Cosmos DB bölümlendirme ve yatay ölçeklemePartitioning and horizontal scaling in Azure Cosmos DB

Bu makalede Azure Cosmos DB içindeki fiziksel ve mantıksal bölümler açıklanmaktadır.This article explains physical and logical partitions in Azure Cosmos DB. Ayrıca, ölçekleme ve bölümleme için en iyi yöntemleri açıklar.It also discusses best practices for scaling and partitioning.

Mantıksal bölümlerLogical partitions

Mantıksal bir bölüm, aynı bölüm anahtarına sahip bir öğe kümesinden oluşur.A logical partition consists of a set of items that have the same partition key. Örneğin, tüm öğelerin bir City özelliği içerdiği bir kapsayıcıda, kapsayıcı için bölüm anahtarı olarak kullanabilirsiniz. CityFor example, in a container where all items contain a City property, you can use City as the partition key for the container. London, City NYCVe gibi belirli değerlere sahip öğe grupları, ve gibi mantıksal bölümler oluşturur. ParisGroups of items that have specific values for City, such as London, Paris, and NYC, form distinct logical partitions. Temel alınan veriler silindiğinde bir bölümü silme konusunda endişelenmeniz gerekmez.You don't have to worry about deleting a partition when the underlying data is deleted.

Azure Cosmos DB, kapsayıcı temel ölçeklenebilirlik birimidir.In Azure Cosmos DB, a container is the fundamental unit of scalability. Kapsayıcıya eklenen veriler ve kapsayıcıda sağladığınız aktarım hızı, mantıksal bölümlerin bir kümesi genelinde otomatik olarak (yatay olarak) bölümlenir.Data that's added to the container and the throughput that you provision on the container are automatically (horizontally) partitioned across a set of logical partitions. Veri ve aktarım hızı, Azure Cosmos kapsayıcısı için belirttiğiniz bölüm anahtarına göre bölümlendirilir.Data and throughput are partitioned based on the partition key you specify for the Azure Cosmos container. Daha fazla bilgi için bkz. Azure Cosmos kapsayıcısı oluşturma.For more information, see Create an Azure Cosmos container.

Mantıksal bir bölüm ayrıca veritabanı işlemlerinin kapsamını tanımlar.A logical partition also defines the scope of database transactions. Bir mantıksal bölüm içindeki öğeleri, anlık görüntü yalıtımıyla bir işlemkullanarak güncelleştirebilirsiniz.You can update items within a logical partition by using a transaction with snapshot isolation. Bir kapsayıcıya yeni öğeler eklendiğinde, yeni mantıksal bölümler sistem tarafından saydam olarak oluşturulur.When new items are added to a container, new logical partitions are transparently created by the system.

Fiziksel bölümlerPhysical partitions

Azure Cosmos kapsayıcısı, çok sayıda mantıksal bölüm arasında veri ve aktarım hızı dağıtarak ölçeklendirilir.An Azure Cosmos container is scaled by distributing data and throughput across a large number of logical partitions. Dahili olarak, bir veya daha fazla mantıksal bölüm, çoğaltma kümesiolarak da adlandırılan bir çoğaltmalar kümesinden oluşan bir fiziksel bölüme eşlenir.Internally, one or more logical partitions are mapped to a physical partition that consists of a set of replicas, also referred to as a replica set. Her çoğaltma kümesi, Azure Cosmos veritabanı altyapısının bir örneğini barındırır.Each replica set hosts an instance of the Azure Cosmos database engine. Bir çoğaltma kümesi, fiziksel bölümde depolanan verilerin dayanıklı, yüksek oranda kullanılabilir ve tutarlı olmasını sağlar.A replica set makes the data stored within the physical partition durable, highly available, and consistent. Fiziksel bir bölüm, en fazla depolama ve istek birimi (ru) miktarını destekler.A physical partition supports the maximum amount of storage and request units (RUs). Fiziksel bölümü oluşturan her çoğaltma, bölümün depolama kotasını devralır.Each replica that makes up the physical partition inherits the partition's storage quota. Fiziksel bölümün tüm çoğaltmaları, fiziksel bölüme ayrılan üretilen işi topluca destekler.All replicas of a physical partition collectively support the throughput that's allocated to the physical partition.

Aşağıdaki görüntüde, mantıksal bölümlerin küresel olarak dağıtılan fiziksel bölümlerle nasıl eşlendiği gösterilmektedir:The following image shows how logical partitions are mapped to physical partitions that are distributed globally:

Azure Cosmos DB bölümleme gösteren bir görüntü

Bir kapsayıcı için sağlanan aktarım hızı fiziksel bölümler arasında eşit olarak bölünür.Throughput provisioned for a container is divided evenly among physical partitions. İşleme isteklerini eşit olarak dağıtmayan bölüm anahtarı tasarımı "sık erişimli" bölümler oluşturabilir.A partition key design that doesn't distribute the throughput requests evenly might create "hot" partitions. Sık kullanılan bölümler, sağlanan verimlilik ve daha yüksek maliyetler için hız sınırlaması ve verimsiz bir şekilde kullanılmasına neden olur.Hot partitions might result in rate-limiting and in inefficient use of the provisioned throughput, and higher costs.

Mantıksal bölümlerin aksine, fiziksel bölümler sistemin dahili bir uygulamasıdır.Unlike logical partitions, physical partitions are an internal implementation of the system. Fiziksel bölümlerin boyutunu, yerleşimini veya sayısını kontrol edebilirsiniz ve mantıksal bölümler ile fiziksel bölümler arasındaki eşlemeyi kontrol edebilirsiniz.You can't control the size, placement, or count of physical partitions, and you can't control the mapping between logical partitions and physical partitions. Ancak, doğru mantıksal bölüm anahtarını seçerekmantıksal bölümlerin sayısını ve verilerin, iş yükünün ve aktarım hızının dağıtımını denetleyebilirsiniz.However, you can control the number of logical partitions and the distribution of data, workload and throughput by choosing the right logical partition key.

Sonraki adımlarNext steps