Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Important
Вы ищете решение для баз данных для крупномасштабных сценариев с соглашением об уровне обслуживания (SLA) с доступностью 99,999%, мгновенным автомасштабированием и автоматическим переключением на резервные ресурсы в нескольких регионах? Рассмотрим Azure Cosmos DB для NoSQL.
Вы хотите реализовать граф интерактивной аналитической обработки (OLAP) или перенести существующее приложение Apache Gremlin? Рассмотрим Graph в Microsoft Fabric.
Начало работы с клиентской библиотекой Apache Gremlin для Azure Cosmos DB для .NET для хранения, управления и запроса неструктурированных данных. Выполните действия, описанные в этом руководстве, чтобы создать новую учетную запись, установить клиентская библиотека .NET, подключиться к учетной записи, выполнить общие операции и запросить окончательные образцы данных.
Исходный код библиотеки | Пакет (NuGet)
Предпосылки
подписка Azure
- Если у вас нет подписки на Azure, создайте бесплатную учетную запись перед началом.
Последняя версия Azure CLI в Azure Cloud Shell.
- Если вы предпочитаете локально выполнять справочные команды CLI, войдите в Azure CLI с помощью команды
az login.
- Если вы предпочитаете локально выполнять справочные команды CLI, войдите в Azure CLI с помощью команды
- Пакет SDK для .NET 9.0 или более поздней версии
Настройка
Сначала настройте учетную запись и среду разработки для этого руководства. В этом разделе описан процесс создания учетной записи, получения учетных данных и подготовки среды разработки.
Создать аккаунт
Сначала создайте API для учетной записи Apache Gremlin. После создания учетной записи создайте ресурсы базы данных и графа.
Если у вас еще нет целевой группы ресурсов, используйте
az group createкоманду для создания новой группы ресурсов в подписке.az group create \ --name "<resource-group-name>" \ --location "<location>"Используйте команду
az cosmosdb create, чтобы создать новую Azure Cosmos DB для учетной записи Apache Gremlin с параметрами по умолчанию.az cosmosdb create \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --locations "regionName=<location>" \ --capabilities "EnableGremlin"Создайте новую базу данных с именем
az cosmosdb gremlin database createcosmicworks.az cosmosdb gremlin database create \ --resource-group "<resource-group-name>" \ --account-name "<account-name>" \ --name "cosmicworks"az cosmosdb gremlin graph createИспользуйте команду для создания нового графа с именемproducts.az cosmosdb gremlin graph create \ --resource-group "<resource-group-name>" \ --account-name "<account-name>" \ --database-name "cosmicworks" \ --name "products" \ --partition-key-path "/category"
Получение учетных данных
Теперь получите пароль для клиентской библиотеки для создания подключения к недавно созданной учетной записи.
Используйте
az cosmosdb showдля получения хоста для учетной записи.az cosmosdb show \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --query "{host:name}"Запишите значение
hostсвойства из выходных данных предыдущих команд. Значение этого свойства — это хост, который вы используете далее в этом руководстве для подключения к учетной записи и библиотеке.Используйте
az cosmosdb keys listдля получения ключей для учетной записи.az cosmosdb keys list \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --type "keys"Запишите значение
primaryMasterKeyсвойства из выходных данных предыдущих команд. Это значение свойства — это ключ , который вы используете далее в этом руководстве для подключения к учетной записи с библиотекой.
Подготовка среды разработки
Затем настройте среду разработки с новым проектом и клиентской библиотекой. Этот шаг является последним обязательным предварительным условием, прежде чем перейти к остальной части этого руководства.
Начните с пустой папки.
Создание консольного приложения .NET
dotnet new consoleGremlin.NetИмпортируйте пакет из NuGet.dotnet add package Gremlin.NetСоздайте проект.
dotnet build
Объектная модель
| Description | |
|---|---|
GremlinClient |
Представляет клиент, используемый для подключения и взаимодействия с сервером Gremlin |
GraphTraversalSource |
Используется для создания и выполнения обходов Gremlin |
Примеры кода
Проверка подлинности клиента
Начните с проверки подлинности клиента с помощью учетных данных, собранных ранее в этом руководстве.
Откройте файл Program.cs в интегрированной среде разработки (IDE).
Удалите любое существующее содержимое в файле.
Добавьте директивы using для следующих пространств имен:
Gremlin.Net.DriverGremlin.Net.Structure.IO.GraphSON
using Gremlin.Net.Driver; using Gremlin.Net.Structure.IO.GraphSON;Создайте строковые переменные для учетных данных, собранных ранее в этом руководстве. Назовите переменные
hostnameиprimaryKey.string hostname = "<host>"; string primaryKey = "<key>";Создайте
GremlinServerс использованием учетных данных и переменных конфигурации, созданных на предыдущих шагах. Присвойте переменнойserverимя.GremlinServer server = new( $"{hostname}.gremlin.cosmos.azure.com", 443, enableSsl: true, username: "/dbs/cosmicworks/colls/products", password: primaryKey );Теперь создайте
GremlinClient, используя переменнуюserverи конфигурациюGraphSON2MessageSerializer.GremlinClient client = new( server, new GraphSON2MessageSerializer() );
Вставка данных
Затем вставьте новые вершины и пограничные данные в граф. Перед созданием новых данных снимите график всех существующих данных.
g.V().drop()Выполните запрос, чтобы очистить все вершины и края из графа.await client.SubmitAsync("g.V().drop()");Создайте запрос Gremlin, который добавляет вершину.
string insertVertexQuery = """ g.addV('product') .property('id', prop_id) .property('name', prop_name) .property('category', prop_category) .property('quantity', prop_quantity) .property('price', prop_price) .property('clearance', prop_clearance) """;Добавьте вершину для одного продукта.
await client.SubmitAsync(insertVertexQuery, new Dictionary<string, object> { ["prop_id"] = "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb", ["prop_name"] = "Yamba Surfboard", ["prop_category"] = "gear-surf-surfboards", ["prop_quantity"] = 12, ["prop_price"] = 850.00, ["prop_clearance"] = false });Добавьте еще две вершины для дополнительных двух продуктов.
await client.SubmitAsync(insertVertexQuery, new Dictionary<string, object> { ["prop_id"] = "bbbbbbbb-1111-2222-3333-cccccccccccc", ["prop_name"] = "Montau Turtle Surfboard", ["prop_category"] = "gear-surf-surfboards", ["prop_quantity"] = 5, ["prop_price"] = 600.00, ["prop_clearance"] = true }); await client.SubmitAsync(insertVertexQuery, new Dictionary<string, object> { ["prop_id"] = "cccccccc-2222-3333-4444-dddddddddddd", ["prop_name"] = "Noosa Surfboard", ["prop_category"] = "gear-surf-surfboards", ["prop_quantity"] = 31, ["prop_price"] = 1100.00, ["prop_clearance"] = false });Создайте ещё один запрос Gremlin, который добавляет ребро.
string insertEdgeQuery = """ g.V([prop_partition_key, prop_source_id]) .addE('replaces') .to(g.V([prop_partition_key, prop_target_id])) """;Добавьте два края.
await client.SubmitAsync(insertEdgeQuery, new Dictionary<string, object> { ["prop_partition_key"] = "gear-surf-surfboards", ["prop_source_id"] = "bbbbbbbb-1111-2222-3333-cccccccccccc", ["prop_target_id"] = "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb" }); await client.SubmitAsync(insertEdgeQuery, new Dictionary<string, object> { ["prop_partition_key"] = "gear-surf-surfboards", ["prop_source_id"] = "bbbbbbbb-1111-2222-3333-cccccccccccc", ["prop_target_id"] = "cccccccc-2222-3333-4444-dddddddddddd" });
Чтение данных
Затем считывайте данные, которые ранее были вставлены в граф.
Создайте запрос, который считывает вершину с помощью уникального идентификатора и значения партиционного ключа.
string readVertexQuery = "g.V([prop_partition_key, prop_id])";Затем считывайте вершину, указав необходимые параметры.
ResultSet<Dictionary<string, object>> readResults = await client.SubmitAsync<Dictionary<string, object>>(readVertexQuery, new Dictionary<string, object> { ["prop_partition_key"] = "gear-surf-surfboards", ["prop_id"] = "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb" }); Dictionary<string, object> matchedItem = readResults.Single();
Запрос данных
Наконец, используйте запрос, чтобы найти все данные, соответствующие определенному обходу или фильтру в графе.
Создайте запрос, который находит все вершины, исходящие из определенной вершины.
string findVerticesQuery = """ g.V().hasLabel('product') .has('category', prop_partition_key) .has('name', prop_name) .outE('replaces').inV() """;Выполните запрос, указывающий
Montau Turtle Surfboardпродукт.ResultSet<Dictionary<string, object>> findResults = await client.SubmitAsync<Dictionary<string, object>>(findVerticesQuery, new Dictionary<string, object> { ["prop_partition_key"] = "gear-surf-surfboards", ["prop_name"] = "Montau Turtle Surfboard" });Итерируйте результаты запроса.
foreach (Dictionary<string, object> result in findResults) { // Do something here with each result }
Запустите код
Запустите созданное приложение с помощью терминала в каталоге приложения.
dotnet run
Очистите ресурсы
Если учетная запись больше не нужна, удалите учетную запись из подписки Azure, удалив ресурс.
az cosmosdb delete \
--resource-group "<resource-group-name>" \
--name "<account-name>"