Wprowadzenie do interfejsu API Gremlin w Azure Cosmos DBIntroduction to Gremlin API in Azure Cosmos DB

DOTYCZY: GREMLIN API

Azure Cosmos DB   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 udostępnia usługę bazy danych grafu za pośrednictwem interfejsu API Gremlin w w pełni zarządzanej usłudze bazy danych, która jest przeznaczona dla dowolnej skali."Azure Cosmos DB provides a graph database service via the Gremlin API 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 usługi Azure Cosmos DB Gremlin i wyjaśnia, w jaki sposób należy używać ich do przechowywania ogromnego wykresu z miliardami wierzchołków i krawędzi.This article provides an overview of the Azure Cosmos DB Gremlin API and explains how to use them 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 został zbudowany na podstawie platformy Apache TinkerPop, opartej na programie Graph.Azure Cosmos DB's Gremlin API is built based on the Apache TinkerPop, a graph computing framework. Interfejs API Gremlin w Azure Cosmos DB używa języka zapytań Gremlin.The Gremlin API in Azure Cosmos DB 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 interfejsu API Gremlin Azure Cosmos DBFeatures of Azure Cosmos DB's Gremlin API

Usługa Azure Cosmos DB jest w pełni zarządzaną grafową bazą danych, 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 w wielu regionachMulti-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. Pozwala to deweloperom skoncentrować się na dostarczaniu wartości aplikacji zamiast działania i zarządzania bazami danych grafów.This allows developers to focus on delivering application value instead of operating and managing their graph databases.

  • Automatyczne indeksowanieAutomatic indexing

    Domyślnie Azure Cosmos DB automatycznie indeksuje wszystkie właściwości w węzłach (nazywanych także wierzchołkami) i krawędziami wykresu 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 (also called as vertices) 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 witryną 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.

  • Poziomy z możliwością dostosowania 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 korzystające z interfejsu API GremlinScenarios that 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.

  • Dane geoprzestrzenneGeospatial

    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/węzły — wierzchołki oznaczają dyskretne jednostki, takie jak osoba, miejsce lub zdarzenie.Vertices/nodes - Vertices denote discrete entities, such as a person, a place, or an event.

  • Krawędzie/relacje — krawędzie odnotują relacje między wierzchołkami.Edges/relationships - 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.

  • Etykieta — etykieta to nazwa lub identyfikator wierzchołka lub krawędzi.Label - A label is a name or the identifier of a vertex or an edge. Etykiety mogą grupować wiele wierzchołków lub krawędzi w taki sposób, że wszystkie wierzchołki/krawędzie w grupie mają określoną etykietę.Labels can group multiple vertices or edges such that all the vertices/edges in a group have a certain label. Na przykład wykres może mieć wiele wierzchołków typu etykiety "Person".For example, a graph can have multiple vertices of label type "person".

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.

Baza danych grafu według przykładuGraph database 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 (są one również nazywane "etykietą" w Gremlin):This graph has the following vertex types (these are also called "label" in Gremlin):

  • Ludzie : wykres ma trzy osoby, Robin, Thomas i BenPeople : The graph has three people, Robin, Thomas, and Ben
  • Zainteresowania : ich zainteresowania, w tym przykładzie, gra piłkarskiaInterests : 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, na których działają urządzeniaOperating Systems : The operating systems that the devices run on
  • Miejsce : miejsca, z których uzyskuje się dostęp do urządzeńPlace : The places from which the devices are accessed

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

  • Wie : na przykład "" Thomas wie Robin "Knows : For example, "Thomas knows Robin"
  • Zainteresowani : aby reprezentować interesy osób w naszym grafie, na przykład "Ben zainteresuje Cię"Interested : To represent the interests of the people in our graph, for example, "Ben is interested in Football"
  • RunsOS : Laptop działa w systemie operacyjnym WindowsRunsOS : Laptop runs the Windows OS
  • Używa : do reprezentowania urządzenia, którego używa 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
  • Zlokalizowane : do reprezentowania lokalizacji, z której uzyskuje się dostęp do urządzeńLocated : To represent the location from which the devices are accessed

Konsola Gremlin to interaktywny Terminal oferowany przez Apache TinkerPop i ten terminal jest używany do interakcji z danymi grafu.The Gremlin Console is an interactive terminal offered by the Apache TinkerPop and this terminal is used to interact with the graph data. Aby dowiedzieć się więcej, zobacz dokument szybkiego startu dotyczący sposobu korzystania z konsoli Gremlin.To learn more, see the quickstart doc on how to use 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). W poniższych przykładach pokazano, jak uruchamiać zapytania dotyczące danych z tego wykresu przy użyciu konsoli programu Gremlin.The following examples show how to run queries against this graph data using the Gremlin Console.

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: