Как получить доступный список контейнеров Graph в моей Cosmos Graph DB?

Я пытаюсь получить информацию о метаданных моей базы данных Cosmos Graph. В этой базе данных создано несколько графиков, и я хочу перечислить их имена.

В API Gremlin у нас есть поддержка подключения к любому контейнеру Graph DB, а затем мы можем отправить запрос, как я упоминал в приведенном ниже примере кода. Но здесь нам нужен {collection}, который также является нашим GraphName. Так что каким-то образом мы здесь привязаны к определенному графу.

                var gremlinServer = new GremlinServer(hostname, port, enableSsl: true,
                                    username: "/dbs/" + database + "/colls/" + collection,
                                    password: authKey);

                using (var gremlinClient = new GremlinClient(gremlinServer, new GraphSON2Reader(), new GraphSON2Writer(), GremlinClient.GraphSON2MimeType))
                {
                    gremlinClient.SubmitAsync(query);
                }

Есть ли способ, чтобы мы могли подключиться только к GraphDB и получить некоторую информацию о метаданных? Например, в моем случае список доступных графиков.


person chandler    schedule 02.10.2019    source источник


Ответы (1)


Похоже, что Gremlin Client реализован на уровне коллекции (то есть на графике), поэтому невозможно будет перечислить графики из одной учетной записи / базы данных, используя соединение gremlin.

Вы всегда можете использовать CosmosDB SDK для подключения к учетной записи и перечисления баз данных / коллекций, а затем использовать клиентов Gremlin для подключения к каждой из них по отдельности.

Install-Package Microsoft.Azure.Cosmos

using (var client = new CosmosClient(endpoint, authKey))
{
    var dbIterator = client.GetDatabaseQueryIterator<DatabaseProperties>();
    while(dbIterator.HasMoreResults)
    {
        foreach (var database in await dbIterator.ReadNextAsync())
        {
            var containerIterator = database.GetContainerQueryIterator<ContainerProperties>();
            while (containerIterator.HasMoreResults)
            {
                 foreach (var container in await containerIterator.ReadNextAsync())
                 {
                      Console.WriteLine($"{database.Id} - {container.Id}");
                 }
            }
        }
    }
}
person AlexDrenea    schedule 04.10.2019