Wprowadzenie do usługi Azure Cosmos DB: Interfejs API języka GremlinIntroduction to Azure Cosmos DB: Gremlin API

AzureCosmosDB to globalnie dystrybuowana, wielomodelowa usługa bazy danych firmy Microsoft dla aplikacji o znaczeniu strategicznym.Azure Cosmos DB is the globally distributed, multi-model database service from Microsoft for mission-critical applications. Jest to wielomodelowa baza danych, która obsługuje modele danych w dokumentach, klucz-wartość, Graf i rodzina kolumn.It is a multi-model database and supports document, key-value, graph, and column-family data models. Azure Cosmos DB interfejs API Gremlin jest używany do przechowywania danych grafu i korzystania z nich w w pełni zarządzanej usłudze bazy danych zaprojektowanej dla dowolnej skali.The Azure Cosmos DB Gremlin API is used to store and operate with graph data on a fully managed database service designed for any scale.

Architektura grafów w usłudze Azure Cosmos DB

Ten artykuł zawiera omówienie interfejsu API języka Gremlin usługi Azure Cosmos DB i przedstawia jak można go użyć do przechowywania dużych grafów zawierających miliardy wierzchołków i krawędzi.This article provides an overview of the Azure Cosmos DB Gremlin API and explains how you can use it to store massive graphs with billions of vertices and edges. Można wysyłać zapytania o wykresy z opóźnieniem milisekund i łatwo rozwijać strukturę wykresu.You can query the graphs with millisecond latency and evolve the graph structure easily. Interfejs API Gremlin Azure Cosmos DB jest oparty na bazie danych programu Apache TinkerPop Graph Standard i używa języka zapytań Gremlin.Azure Cosmos DB's Gremlin API is based on the Apache TinkerPop graph database standard, and uses the Gremlin query language.

Interfejs API Gremlin Azure Cosmos DB łączy możliwości algorytmów bazy danych grafów z wysoce skalowalną, zarządzaną infrastrukturą, zapewniając unikatowe, elastyczne rozwiązanie do najbardziej typowych problemów z danymi, które są związane z brakiem elastyczności i relacyjnych metod.Azure Cosmos DB's Gremlin API combines the power of graph database algorithms with highly scalable, managed infrastructure to provide a unique, flexible solution to most common data problems associated with lack of flexibility and relational approaches.

Funkcje bazy danych grafów usługi Azure Cosmos DBFeatures of Azure Cosmos DB graph database

Usługa Azure Cosmos DB jest w pełni zarządzaną bazą danych grafów, która oferuje globalną dystrybucję, elastyczne skalowanie magazynu i przepływności, automatyczne indeksowanie i wykonywanie zapytań, dostosowywalne poziomy spójności oraz obsługę standardu TinkerPop.Azure Cosmos DB is a fully managed graph database that offers global distribution, elastic scaling of storage and throughput, automatic indexing and query, tunable consistency levels, and support for the TinkerPop standard.

Poniżej przedstawiono zróżnicowane funkcje, które Azure Cosmos DB Gremlin interfejs API:The following are the differentiated features that Azure Cosmos DB Gremlin API offers:

  • Elastycznie skalowalna przepływność i magazynElastically scalable throughput and storage

    Skalowanie grafów w świecie rzeczywistym wymaga skalowania przekraczającego pojemność pojedynczego serwera.Graphs in the real world need to scale beyond the capacity of a single server. Azure Cosmos DB obsługuje skalowalne w poziomie bazy danych grafów, które mogą mieć praktycznie nieograniczony rozmiar w zakresie magazynu i alokowanej przepływności.Azure Cosmos DB supports horizontally scalable graph databases that can have a virtually unlimited size in terms of storage and provisioned throughput. Gdy skala bazy danych grafu zostanie powiększona, dane będą automatycznie dystrybuowane przy użyciu partycjonowania grafu.As the graph database scale grows, the data will be automatically distributed using graph partitioning.

  • Replikacja wieloregionowaMulti-region replication

    Azure Cosmos DB mogą automatycznie replikować dane grafu do dowolnego regionu platformy Azure na całym świecie.Azure Cosmos DB can automatically replicate your graph data to any Azure region worldwide. Replikacja globalna upraszcza opracowywanie aplikacji, które wymagają globalnego dostępu do danych.Global replication simplifies the development of applications that require global access to data. Oprócz minimalizowania opóźnień odczytu i zapisu w dowolnym miejscu na świecie, Azure Cosmos DB zapewnia automatyczne regionalne mechanizmy trybu failover, które mogą zapewnić ciągłość aplikacji w rzadkich przypadkach przerwania działania usługi w regionie.In addition to minimizing read and write latency anywhere around the world, Azure Cosmos DB provides automatic regional failover mechanism that can ensure the continuity of your application in the rare case of a service interruption in a region.

  • Szybkie zapytania i przechodzenie przy użyciu najczęściej przyjętego standardowego zapytania grafowegoFast queries and traversals with the most widely adopted graph query standard

    Przechowywanie heterogenicznych wierzchołków i krawędzi oraz wykonywanie zapytań przy użyciu znanej składni Gremlin.Store heterogeneous vertices and edges and query them through a familiar Gremlin syntax. Gremlin to bezwzględny, funkcjonalny język zapytań, który oferuje bogaty interfejs do implementowania typowych algorytmów grafu.Gremlin is an imperative, functional query language that provides a rich interface to implement common graph algorithms.

    Azure Cosmos DB włącza zaawansowane zapytania w czasie rzeczywistym i przechodzenia bez konieczności określania wskazówek do schematu, indeksów pomocniczych lub widoków.Azure Cosmos DB enables rich real-time queries and traversals without the need to specify schema hints, secondary indexes, or views. Więcej informacji znajduje się w temacie Query graphs by using Gremlin (Wykonywanie zapytań dla grafów przy użyciu środowiska Gremlin).Learn more in Query graphs by using Gremlin.

  • W pełni zarządzana baza danych grafuFully managed graph database

    Usługa Azure Cosmos DB eliminuje konieczność zarządzania zasobami maszyn i baz danych.Azure Cosmos DB eliminates the need to manage database and machine resources. Większość istniejących platform baz danych grafów jest związanych z ograniczeniami ich infrastruktury i często wymagają wysokiego stopnia konserwacji w celu zapewnienia jego działania.Most existing graph database platforms are bound to the limitations of their infrastructure and often require a high degree of maintenance to ensure its operation.

    W pełni zarządzana usługa Cosmos DB eliminuje konieczność zarządzania maszynami wirtualnymi, aktualizacji oprogramowania środowiska uruchomieniowego, zarządzania fragmentowaniaą lub replikacją lub rozwiązywania złożonych uaktualnień w warstwie danych.As a fully managed service, Cosmos DB removes the need to manage virtual machines, update runtime software, manage sharding or replication, or deal with complex data-tier upgrades. Dla każdego grafu jest automatycznie tworzona kopia zapasowa w celu ochrony przed regionalnymi awariami.Every graph is automatically backed up and protected against regional failures. Te gwarancje umożliwiają deweloperom skoncentrowanie się na dostarczaniu wartości aplikacji zamiast działania i zarządzania bazami danych grafów.These guarantees allow developers to focus on delivering application value instead of operating and managing their graph databases.

  • Automatyczne indeksowanieAutomatic indexing

    Domyślnie usługa Azure Cosmos DB automatycznie indeksuje wszystkie właściwości w węzłach oraz krawędziach grafu i nie oczekuje ani nie wymaga żadnego schematu ani tworzenia indeksów pomocniczych.By default, Azure Cosmos DB automatically indexes all the properties within nodes and edges in the graph and doesn't expect or require any schema or creation of secondary indices. Dowiedz się więcej na temat indeksowania w Azure Cosmos DB.Learn more about indexing in Azure Cosmos DB.

  • Zgodność z usługą Apache TinkerPopCompatibility with Apache TinkerPop

    Azure Cosmos DB obsługuje Standard Apache TinkerPop dla technologii open source.Azure Cosmos DB supports the open-source Apache TinkerPop standard. Standard Tinkerpop ma szeroką integralność aplikacji i bibliotek, które można łatwo zintegrować z interfejsem API Gremlin Azure Cosmos DB.The Tinkerpop standard has an ample ecosystem of applications and libraries that can be easily integrated with Azure Cosmos DB's Gremlin API.

  • Możliwość dostosowania poziomy spójnościTunable consistency levels

    Azure Cosmos DB zapewnia pięć dobrze zdefiniowanych poziomów spójności w celu osiągnięcia odpowiedniej kompromisu między spójnością i wydajnością aplikacji.Azure Cosmos DB provides five well-defined consistency levels to achieve the right tradeoff between consistency and performance for your application. Dla zapytań i operacji odczytu usługa Azure Cosmos DB oferuje pięć różnych poziomów spójności: „silna”, „powiązana nieaktualność”, „sesja”, „spójny prefiks” i „ostateczna”.For queries and read operations, Azure Cosmos DB offers five distinct consistency levels: strong, bounded-staleness, session, consistent prefix, and eventual. Te szczegółowe, dokładnie zdefiniowane poziomy spójności umożliwiają ustalanie optymalnych kompromisów między spójnością, dostępnością i opóźnieniem.These granular, well-defined consistency levels allow you to make sound tradeoffs among consistency, availability, and latency. Więcej informacji znajduje się w temacie Tunable data consistency levels in Azure Cosmos DB (Dostosowywalne poziomy spójności danych w usłudze Azure Cosmos DB).Learn more in Tunable data consistency levels in Azure Cosmos DB.

Scenariusze, w których można używać interfejsu API języka GremlinScenarios that can use Gremlin API

Poniżej przedstawiono kilka scenariuszy, w których Azure Cosmos DB mogą być przydatne wykresy obsługiwane przez program Graph:Here are some scenarios where graph support of Azure Cosmos DB can be useful:

  • Sieci społecznościowe/klient 365Social networks/Customer 365

    Łącząc dane dotyczące klientów i ich interakcji z innymi osobami, można zaprojektować spersonalizowaną obsługę, przewidzieć zachowanie klientów lub umożliwić nawiązanie kontaktu z innymi osobami o podobnych zainteresowaniach.By combining data about your customers and their interactions with other people, you can develop personalized experiences, predict customer behavior, or connect people with others with similar interests. Usługa Azure Cosmos DB może służyć do zarządzania sieciami społecznościowymi oraz śledzenia preferencji i danych klientów.Azure Cosmos DB can be used to manage social networks and track customer preferences and data.

  • Aparaty rekomendacjiRecommendation engines

    Ten scenariusz jest powszechnie stosowany w branży sprzedaży detalicznej.This scenario is commonly used in the retail industry. Przez łączenie informacji na temat produktów, użytkowników oraz interakcji użytkownika, np. zakupów, przeglądania witryn internetowych lub oceny produktów, można tworzyć niestandardowe rekomendacje.By combining information about products, users, and user interactions, like purchasing, browsing, or rating an item, you can build customized recommendations. Obsługa małych opóźnień, elastycznej skali i natywnych grafów dla Azure Cosmos DB jest idealna dla tych scenariuszy.The low latency, elastic scale, and native graph support of Azure Cosmos DB is ideal for these scenarios.

  • LokalizacjiGeospatial

    Wiele aplikacji stosowanych w telekomunikacji, logistyce i planowaniu podróży musi znaleźć lokalizację będącą przedmiotem zainteresowania na danym obszarze lub zlokalizować najkrótszą/optymalną trasę między dwoma lokalizacjami.Many applications in telecommunications, logistics, and travel planning need to find a location of interest within an area or locate the shortest/optimal route between two locations. Usługa Azure Cosmos DB stanowi naturalne rozwiązanie tych problemów.Azure Cosmos DB is a natural fit for these problems.

  • Internet rzeczyInternet of Things

    Gdy sieć i połączenia między urządzeniami IoT zostają przedstawione w formie grafu, można lepiej rozumieć stan urządzeń i zasobów.With the network and connections between IoT devices modeled as a graph, you can build a better understanding of the state of your devices and assets. Można także dowiedzieć się, jak zmiany w jednej części sieci mogą teoretycznie wpłynąć na inną część.You also can learn how changes in one part of the network can potentially affect another part.

Wprowadzenie do baz danych programu GraphIntroduction to graph databases

W świecie rzeczywistym dane w sposób naturalny łączą się ze sobą.Data as it appears in the real world is naturally connected. Tradycyjne Modelowanie danych koncentruje się na definiowaniu jednostek osobno i obliczaniu ich relacji w czasie wykonywania.Traditional data modeling focuses on defining entities separately and computing their relationships at runtime. Chociaż ten model ma swoje zalety, wysoce połączone dane mogą być trudne do zarządzania w ramach ograniczeń.While this model has its advantages, highly connected data can be challenging to manage under its constraints.

Podejście do bazy danych programu Graph opiera się na utrwalaniu relacji w warstwie magazynu, co prowadzi do wysoce wydajnych operacji pobierania grafów.A graph database approach relies on persisting relationships in the storage layer instead, which leads to highly efficient graph retrieval operations. Interfejs API Gremlin Azure Cosmos DB obsługuje model grafu właściwości.Azure Cosmos DB's Gremlin API supports the property graph model.

Obiekty grafu właściwościProperty graph objects

Wykres właściwości to struktura, która składa się z wierzchołków i krawędzi.A property graph is a structure that's composed of vertices and edges. Oba obiekty mogą mieć dowolną liczbę par klucz-wartość jako właściwości.Both objects can have an arbitrary number of key-value pairs as properties.

  • Wierzchołki — wierzchołki oznaczają dyskretne jednostki, takie jak osoba, miejsce lub zdarzenie.Vertices - Vertices denote discrete entities, such as a person, a place, or an event.

  • Krawędzie — krawędzie określają relacje między wierzchołkami.Edges - Edges denote relationships between vertices. Na przykład dana osoba może znać inną osobę, brać udział w wydarzeniu lub była niedawno w danej lokalizacji.For example, a person might know another person, be involved in an event, and recently been at a location.

  • Właściwości — właściwości zawierają informacje na temat wierzchołków i krawędzi.Properties - Properties express information about the vertices and edges. W wierzchołkach lub krawędziach może być dowolna liczba właściwości, które mogą być używane do opisywania i filtrowania obiektów w zapytaniu.There can be any number of properties in either vertices or edges, and they can be used to describe and filter the objects in a query. Przykładowe właściwości zawierają wierzchołka o nazwie i wieku albo krawędzi, która może mieć sygnaturę czasową i/lub wagę.Example properties include a vertex that has name and age, or an edge, which can have a time stamp and/or a weight.

Bazy danych programu Graph są często uwzględniane w kategorii NoSQL lub nierelacyjnej bazy danych, ponieważ nie ma żadnej zależności od schematu lub ograniczonego modelu danych.Graph databases are often included within the NoSQL or non-relational database category, since there is no dependency on a schema or constrained data model. Brak schematu pozwala na modelowanie i przechowywanie połączonych struktur naturalnie i wydajnie.This lack of schema allows for modeling and storing connected structures naturally and efficiently.

Język Gremlin w przykładachGremlin by example

Przykładowy graf pomoże dowiedzieć się, jak można wyrazić zapytania w języku Gremlin.Let's use a sample graph to understand how queries can be expressed in Gremlin. Na poniższej ilustracji przedstawiono w formie grafu aplikację biznesową, która zarządza danymi o użytkownikach, zainteresowaniach i urządzeniach.The following figure shows a business application that manages data about users, interests, and devices in the form of a graph.

Przykładowa baza danych przedstawiająca osoby, urządzenia i zainteresowania

Ten wykres ma następujące typy wierzchołków (o nazwie "label" w Gremlin):This graph has the following vertex types (called "label" in Gremlin):

  • Osoby: graf przedstawia trzy osoby, Robina, Thomasa i BenaPeople: The graph has three people, Robin, Thomas, and Ben
  • Zainteresowania: ich zainteresowaniem w tym przykładzie jest piłka nożna (football)Interests: Their interests, in this example, the game of Football
  • Urządzenia: urządzenia używane przez osobyDevices: The devices that people use
  • Systemy operacyjne: systemy operacyjne uruchomione na urządzeniachOperating Systems: The operating systems that the devices run on

Reprezentujemy relacje między tymi jednostkami za pośrednictwem następujących typów krawędzi /etykiet:We represent the relationships between these entities via the following edge types/labels:

  • Wie: na przykład „Thomas zna Robina”Knows: For example, "Thomas knows Robin"
  • Zainteresowani: służy do przedstawienia zainteresowań osób znajdujących się na grafie, na przykład „Ben interesuje się piłką nożną (football)”Interested: To represent the interests of the people in our graph, for example, "Ben is interested in Football"
  • RunsOS: na laptopie jest uruchomiony system operacyjny WindowsRunsOS: Laptop runs the Windows OS
  • Używa: służy do przedstawienia, którego urządzenia używa dana osoba.Uses: To represent which device a person uses. Na przykład Robin używa telefonu firmy Motorola o numerze seryjnym 77For example, Robin uses a Motorola phone with serial number 77

Możemy uruchomić pewne operacje zgodnie z tym grafem przy użyciu Konsoli Gremlin.Let's run some operations against this graph using the Gremlin Console. Można również wykonywać te operacje przy użyciu sterowników Gremlin na wybranej platformie (Java, Node.js, Python lub .NET).You can also perform these operations using Gremlin drivers in the platform of your choice (Java, Node.js, Python, or .NET). Zanim zajmiemy się tym, co jest obsługiwane w usłudze Azure Cosmos DB, przyjrzymy się kilku przykładom, aby zapoznać się ze składnią.Before we look at what's supported in Azure Cosmos DB, let's look at a few examples to get familiar with the syntax.

Najpierw zajmijmy się CRUD.First let's look at CRUD. Następująca instrukcja języka Gremlin wstawia do grafu wierzchołek „Thomas”:The following Gremlin statement inserts the "Thomas" vertex into the graph:

:> g.addV('person').property('id', 'thomas.1').property('firstName', 'Thomas').property('lastName', 'Andersen').property('age', 44)

Następnie poniższa instrukcja języka Gremlin wstawia krawędź „knows” między wierzchołkami „Thomas” i „Robin”.Next, the following Gremlin statement inserts a "knows" edge between Thomas and Robin.

:> g.V('thomas.1').addE('knows').to(g.V('robin.1'))

Poniższe zapytanie zwraca wierzchołki „person” w porządku malejącym według ich imion:The following query returns the "person" vertices in descending order of their first names:

:> g.V().hasLabel('person').order().by('firstName', decr)

Wyjątkowość grafów docenia się, gdy trzeba odpowiedzieć na takie pytania jak: „Jakich systemów operacyjnych używają znajomi Thomasa?”Where graphs shine is when you need to answer questions like "What operating systems do friends of Thomas use?". Możesz uruchomić to przechodzenie Gremlin, aby uzyskać te informacje z grafu:You can run this Gremlin traversal to get that information from the graph:

:> g.V('thomas.1').out('knows').out('uses').out('runsos').group().by('name').by(count())

Następne krokiNext steps

Aby dowiedzieć się więcej na temat obsługi grafów w usłudze Azure Cosmos DB, zobacz:To learn more about graph support in Azure Cosmos DB, see: