Определение уникальных ключей для контейнера Azure Cosmos DB

ОБЛАСТЬ ПРИМЕНЕНИЯ: NoSQL

В этой статье описаны различные способы определения уникальных ключей при создании контейнера Azure Cosmos DB. Сейчас выполнить эту операцию можно с помощью портала Azure или одного из пакетов SDK.

Использование портала Azure

  1. Войдите на портал Azure.

  2. Создайте новую учетную запись Azure Cosmos DB или выберите существующую.

  3. Откройте панель обозревателя данных и выберите контейнер, с которым собираетесь работать.

  4. Щелкните Создать контейнер.

  5. В диалоговом окне Добавить контейнер щелкните + Add unique key (+ Добавить уникальный ключ), чтобы добавить запись уникального ключа.

  6. Введите пути к ограничению уникального ключа.

  7. При необходимости добавьте больше записей уникального ключа. Для этого щелкните + Add unique key (+ Добавить уникальный ключ).

    Снимок экрана записи ограничения уникального ключа на портале Azure

Использование PowerShell

Сведения о создании контейнера с уникальными ключами см. в статье Создание контейнера Azure Cosmos DB с уникальным ключом и сроком жизни.

Использование пакета SDK для .NET

При создании контейнера с помощью пакета SDK для .NET версии 2 объект UniqueKeyPolicy можно использовать для определения ограничений уникального ключа.

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" }) }
        })
    }
});

Использование пакета SDK для Java

При создании контейнера с помощью пакета SDK для Java объект UniqueKeyPolicy можно использовать для определения ограничений уникального ключа.

// 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);

Использование пакета SDK для Node.js

При создании контейнера с помощью пакета SDK для Node.js объект UniqueKeyPolicy можно использовать для определения ограничений уникального ключа.

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

Использование пакета SDK для Python

При создании контейнера с помощью пакета SDK для Python ограничения уникального ключа могут быть указаны как часть словаря в виде параметра.

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

Дальнейшие действия