Как получить список контейнеров Graph в моей базе данных Cosmos Graph? - PullRequest
0 голосов
/ 02 октября 2019

Я пытаюсь получить информацию метаданных моей базы данных 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 и получать некоторую информацию метаданных? Например, в моем случае список доступных графиков.

1 Ответ

0 голосов
/ 04 октября 2019

Похоже, что клиент Gremlin реализован на уровне коллекции (т. Е. Графика), поэтому невозможно будет перечислять графики из одной учетной записи / базы данных с использованием соединения 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}");
                 }
            }
        }
    }
}
...