Azure Cosmos DB kapsayıcısı için benzersiz anahtarlar tanımlama

UYGULANANLAR: NOSQL

Bu makalede, Azure Cosmos DB kapsayıcısı oluştururken benzersiz anahtarları tanımlamanın farklı yolları açıklanmaktadır. Şu anda bu işlemi Azure portal kullanarak veya SDK'lardan biri aracılığıyla gerçekleştirmek mümkündür.

Azure portalını kullanma

  1. Azure Portal’ında oturum açın.

  2. Yeni bir Azure Cosmos DB hesabı oluşturun veya var olan bir hesabı seçin.

  3. Veri Gezgini bölmesini açın ve üzerinde çalışmak istediğiniz kapsayıcıyı seçin.

  4. Yeni Kapsayıcı'ya tıklayın.

  5. Kapsayıcı Ekle iletişim kutusunda + Benzersiz anahtar ekle'ye tıklayarak benzersiz bir anahtar girişi ekleyin.

  6. Benzersiz anahtar kısıtlamasının yollarını girin

  7. Gerekirse + Benzersiz anahtar ekle'ye tıklayarak daha fazla benzersiz anahtar girişi ekleyin

    Azure portal'de benzersiz anahtar kısıtlaması girişinin ekran görüntüsü

PowerShell kullanma

Benzersiz anahtarlara sahip bir kapsayıcı oluşturmak için bkz. Benzersiz anahtar ve TTL ile Azure Cosmos DB kapsayıcısı oluşturma

.NET SDK’yı kullanma

.NET SDK v2 kullanarak yeni bir kapsayıcı oluştururken, benzersiz anahtar kısıtlamalarını tanımlamak için bir UniqueKeyPolicy nesne kullanılabilir.

client.CreateDocumentCollectionAsync(UriFactory.CreateDatabaseUri("database"), new DocumentCollection
{
    Id = "container",
    PartitionKey = new PartitionKeyDefinition { Paths = new Collection<string>(new List<string> { "/myPartitionKey" }) },
    UniqueKeyPolicy = new UniqueKeyPolicy
    {
        UniqueKeys = new Collection<UniqueKey>(new List<UniqueKey>
        {
            new UniqueKey { Paths = new Collection<string>(new List<string> { "/firstName", "/lastName", "/emailAddress" }) },
            new UniqueKey { Paths = new Collection<string>(new List<string> { "/address/zipCode" }) }
        })
    }
});

Java SDK'sını kullanma

Java SDK'sını kullanarak yeni bir kapsayıcı oluştururken, benzersiz anahtar kısıtlamalarını tanımlamak için bir UniqueKeyPolicy nesne kullanılabilir.

// create a new DocumentCollection object
DocumentCollection container = new DocumentCollection();
container.setId("container");

// create array of strings and populate them with the unique key paths
Collection<String> uniqueKey1Paths = new ArrayList<String>();
uniqueKey1Paths.add("/firstName");
uniqueKey1Paths.add("/lastName");
uniqueKey1Paths.add("/emailAddress");
Collection<String> uniqueKey2Paths = new ArrayList<String>();
uniqueKey2Paths.add("/address/zipCode");

// create UniqueKey objects and set their paths
UniqueKey uniqueKey1 = new UniqueKey();
UniqueKey uniqueKey2 = new UniqueKey();
uniqueKey1.setPaths(uniqueKey1Paths);
uniqueKey2.setPaths(uniqueKey2Paths);

// create a new UniqueKeyPolicy object and set its unique keys
UniqueKeyPolicy uniqueKeyPolicy = new UniqueKeyPolicy();
Collection<UniqueKey> uniqueKeys = new ArrayList<UniqueKey>();
uniqueKeys.add(uniqueKey1);
uniqueKeys.add(uniqueKey2);
uniqueKeyPolicy.setUniqueKeys(uniqueKeys);

// set the unique key policy
container.setUniqueKeyPolicy(uniqueKeyPolicy);

// create the container
client.createCollection(String.format("/dbs/%s", "database"), container, null);

Node.js SDK'sını kullanma

Node.js SDK'sını kullanarak yeni bir kapsayıcı oluştururken, benzersiz anahtar kısıtlamalarını tanımlamak için bir UniqueKeyPolicy nesne kullanılabilir.

client.database('database').containers.create({
    id: 'container',
    uniqueKeyPolicy: {
        uniqueKeys: [
            { paths: ['/firstName', '/lastName', '/emailAddress'] },
            { paths: ['/address/zipCode'] }
        ]
    }
});

Python SDK'yı kullanma

Python SDK'sını kullanarak yeni bir kapsayıcı oluştururken, parametre olarak geçirilen sözlüğün bir parçası olarak benzersiz anahtar kısıtlamaları belirtilebilir.

client.CreateContainer('dbs/' + config['DATABASE'], {
    'id': 'container',
    'uniqueKeyPolicy': {
        'uniqueKeys': [
            {'paths': ['/firstName', '/lastName', '/emailAddress']},
            {'paths': ['/address/zipCode']}
        ]
    }
})

Sonraki adımlar