Co to jest usługa Azure Cosmos DB dla języka Apache Gremlin?

DOTYCZY: Gremlin

Usługa Azure Cosmos DB to w pełni zarządzana baza danych NoSQL i relacyjna baza danych do tworzenia nowoczesnych aplikacji.

Azure Cosmos DB for Apache Gremlin to usługa bazy danych grafów, która może służyć do przechowywania ogromnych grafów z miliardami wierzchołków i krawędzi. Możesz wykonywać zapytania względem grafów z opóźnieniem milisekundowym i łatwo rozwijać strukturę grafu. Interfejs API dla języka Gremlin jest oparty na platformie Apache TinkerPop, strukturze obliczeniowej grafu, która korzysta z języka zapytań Gremlin.

Ważne

Aparat grafów usługi Azure Cosmos DB jest ściśle zgodny ze specyfikacją apache TinkerPop. Istnieją jednak pewne różnice w szczegółach implementacji, które są specyficzne dla usługi Azure Cosmos DB. Niektóre funkcje obsługiwane przez rozwiązanie Apache TinkerPop nie są dostępne w usłudze Azure Cosmos DB, aby dowiedzieć się więcej o nieobsługiwanych funkcjach, zobacz artykuł zgodność z rozwiązaniem Apache TinkerPop .

Interfejs API dla języka Gremlin łączy możliwości algorytmów bazy danych grafów z wysoce skalowalną infrastrukturą zarządzaną. Takie podejście zapewnia unikatowe i elastyczne rozwiązanie typowych problemów z danymi związanych z nieelastycznymi lub relacyjnymi ograniczeniami.

Porada

Chcesz wypróbować interfejs API dla języka Gremlin bez zobowiązania? Utwórz konto usługi Azure Cosmos DB za pomocą bezpłatnej wersji wypróbuj usługę Azure Cosmos DB .

Korzyści z interfejsu API dla języka Gremlin

Interfejs API dla języka Gremlin ma dodatkowe korzyści wynikające z kompilowania w usłudze Azure Cosmos DB:

  • Elastycznie skalowalna przepływność i magazyn: wykresy w świecie rzeczywistym muszą być skalowane poza pojemność pojedynczego serwera. Usługa Azure Cosmos DB obsługuje skalowalne w poziomie grafowe bazy danych, które mogą mieć nieograniczony rozmiar pod względem magazynu i aprowizowanej przepływności. Wraz ze wzrostem skali grafowej bazy danych dane są automatycznie dystrybuowane przy użyciu partycjonowania grafu.

  • Replikacja w wielu regionach: usługa Azure Cosmos DB może automatycznie replikować dane grafu do dowolnego regionu świadczenia usługi Azure na całym świecie. Replikacja globalna upraszcza opracowywanie aplikacji, które wymagają globalnego dostępu do danych. Oprócz zminimalizowania opóźnienia odczytu i zapisu w dowolnym miejscu na całym świecie usługa Azure Cosmos DB zapewnia regionalny mechanizm trybu failover zarządzany przez usługę. Ten mechanizm może zapewnić ciągłość aplikacji w rzadkich przypadkach przerwy w działaniu usługi w regionie.

  • Szybkie zapytania i przechodzenie przy użyciu najczęściej przyjętego standardu zapytań grafów: przechowywanie heterogenicznych wierzchołków i krawędzi oraz wykonywanie zapytań względem nich za pomocą znanej składni języka Gremlin. Gremlin to imperatywne, funkcjonalne język zapytań, który zapewnia zaawansowany interfejs do implementowania typowych algorytmów grafów. Interfejs API dla języka Gremlin umożliwia zaawansowane zapytania i przechodzenie w czasie rzeczywistym bez konieczności określania wskazówek schematu, indeksów pomocniczych lub widoków. Aby uzyskać więcej informacji, zobacz tworzenie grafów zapytań przy użyciu języka Gremlin.

  • W pełni zarządzana grafowa baza danych: usługa Azure Cosmos DB eliminuje konieczność zarządzania zasobami bazy danych i maszyny. Większość istniejących grafowych platform baz danych jest powiązana z ograniczeniami ich infrastruktury i często wymaga wysokiego stopnia konserwacji w celu zapewnienia jej działania. Jako w pełni zarządzana usługa Cosmos DB eliminuje konieczność zarządzania maszynami wirtualnymi, oprogramowaniem środowiska uruchomieniowego aktualizacji, zarządzanie fragmentowaniem lub replikacją albo zarządzanie złożonymi uaktualnieniami warstwy danych. Dla każdego grafu jest automatycznie tworzona kopia zapasowa w celu ochrony przed regionalnymi awariami. Dzięki temu deweloperzy mogą skupić się na dostarczaniu wartości aplikacji zamiast obsługiwać grafowe bazy danych i zarządzać nimi.

  • Automatyczne indeksowanie: domyślnie interfejs API dla języka Gremlin automatycznie indeksuje wszystkie właściwości w węzłach (nazywanych również wierzchołkami) i krawędziami na grafie i nie oczekuje ani nie wymaga żadnego schematu ani tworzenia indeksów pomocniczych. Aby uzyskać więcej informacji, zobacz indeksowanie w usłudze Azure Cosmos DB.

  • Zgodność z platformą Apache TinkerPop: interfejs API dla języka Gremlin obsługuje standard Apache TinkerPop typu open source. Standard Apache TinkerPop ma bardzo popularny ekosystem aplikacji i bibliotek, które można łatwo zintegrować z interfejsem API.

  • Możliwe do dostosowania poziomy spójności: usługa Azure Cosmos DB zapewnia pięć dobrze zdefiniowanych poziomów spójności w celu osiągnięcia odpowiedniego kompromisu między spójnością a wydajnością aplikacji. 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”. 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. Aby uzyskać więcej informacji, zobacz tunable data consistency levels in Azure Cosmos DB (Dostrajalne poziomy spójności danych w usłudze Azure Cosmos DB).

Typowe scenariusze interfejsu API dla języka Gremlin

Oto kilka scenariuszy, w których obsługa grafów usługi Azure Cosmos DB może być przydatna:

  • Sieci społecznościowe/Klient 365: Łącząc dane dotyczące klientów i ich interakcji z innymi osobami, możesz tworzyć spersonalizowane środowiska, przewidywać zachowanie klientów lub łączyć osoby z innymi osobami o podobnych zainteresowaniach. Usługa Azure Cosmos DB może służyć do zarządzania sieciami społecznościowymi oraz śledzenia preferencji i danych klientów.

  • Aparaty rekomendacji: ten scenariusz jest często używany w branży handlu detalicznego. 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. Obsługa grafów usługi Azure Cosmos DB o małych opóźnieniach, elastycznej skali i natywnej jest idealna dla tych scenariuszy.

  • Geoprzestrzenne: wiele aplikacji w telekomunikacji, logistyki i planowania podróży musi znaleźć lokalizację zainteresowania w obszarze lub zlokalizować najkrótszą/optymalną trasę między dwiema lokalizacjami. Usługa Azure Cosmos DB stanowi naturalne rozwiązanie tych problemów.

  • Internet rzeczy: za pomocą sieci i połączeń między urządzeniami IoT modelowanych jako wykres można lepiej zrozumieć stan urządzeń i zasobów. Można także dowiedzieć się, jak zmiany w jednej części sieci mogą teoretycznie wpłynąć na inną część.

Wprowadzenie do grafowych baz danych

W świecie rzeczywistym dane w sposób naturalny łączą się ze sobą. Tradycyjne modelowanie danych koncentruje się na oddzielnym definiowaniu jednostek i przetwarzaniu ich relacji w czasie wykonywania. Chociaż ten model ma swoje zalety, wysoce połączone dane mogą być trudne do zarządzania pod jego ograniczeniami.

Podejście do grafowej bazy danych opiera się na utrwalaniu relacji w warstwie magazynu, co prowadzi do wysoce wydajnych operacji pobierania grafu. Interfejs API dla języka Gremlin obsługuje model grafu właściwości.

Obiekty grafu właściwości

Graf właściwości to struktura składająca się z wierzchołków i krawędzi. Oba obiekty mogą mieć dowolną liczbę par klucz-wartość jako właściwości.

  • Wierzchołki/węzły: Wierzchołki oznaczają odrębne jednostki, takie jak osoba, miejsce lub zdarzenie.

  • Krawędzie/relacje: krawędzie określają relacje między wierzchołkami. Na przykład osoba może znać inną osobę, być zaangażowana w wydarzenie lub być ostatnio w lokalizacji.

  • Właściwości: Właściwości wyrażają informacje (lub metadane) dotyczące wierzchołków i krawędzi. W wierzchołkach lub krawędziach może istnieć dowolna liczba właściwości, które mogą służyć do opisywania i filtrowania obiektów w zapytaniu. Przykładowe właściwości obejmują wierzchołek o nazwie i wieku lub krawędzi, który może mieć sygnaturę czasową i/lub wagę.

  • Etykieta — etykieta jest nazwą lub identyfikatorem wierzchołka lub krawędzi. Etykiety mogą grupować wiele wierzchołków lub krawędzi, tak aby wszystkie wierzchołki/krawędzie w grupie miały określoną etykietę. Na przykład graf może mieć wiele wierzchołków z etykietą "osoba".

Grafowe bazy danych są często uwzględniane w kategorii NoSQL lub nierelacyjnej bazy danych, ponieważ nie ma zależności od schematu ani ograniczonego modelu danych. Ten brak schematu umożliwia modelowanie i przechowywanie połączonych struktur naturalnie i wydajnie.

Przykład grafowej bazy danych

Przykładowy graf pomoże dowiedzieć się, jak można wyrazić zapytania w języku Gremlin. Na poniższej ilustracji przedstawiono w formie grafu aplikację biznesową, która zarządza danymi o użytkownikach, zainteresowaniach i urządzeniach.

Przykładowy wykres właściwości przedstawiający osoby, urządzenia i zainteresowania.

Ten graf ma następujące typy wierzchołków . Te typy są również nazywane etykietami w języku Gremlin:

  • Osoby: Wykres ma trzy osoby; Robin, Thomas i Ben.

  • Zainteresowania: Ich zainteresowania, w tym przykładzie, obejmują grę w piłkę nożną.

  • Urządzenia: urządzenia, z których korzystają osoby.

  • Systemy operacyjne: systemy operacyjne, na których działają urządzenia.

  • Miejsce: miejsce, w którym uzyskuje się dostęp do urządzeń.

Reprezentujemy relacje między tymi jednostkami za pośrednictwem następujących typów krawędzi :

  • Zna: reprezentuje znajomość. Na przykład "Thomas zna Robina".

  • Zainteresowani: reprezentują interesy osób na naszym wykresie. Na przykład "Ben jest zainteresowany piłką nożną".

  • RunsOS: reprezentacja systemu operacyjnego, z którego jest uruchomione urządzenie. Na przykład "Laptop uruchamia system operacyjny Windows".

  • Używane: reprezentuje urządzenie używane przez osobę. Na przykład "Robin używa telefonu Motorola z numerem seryjnym 77".

  • Lokalizacja: reprezentuje lokalizację, z której uzyskuje się dostęp do urządzeń.

Konsola Gremlin to interaktywny terminal oferowany przez narzędzie Apache TinkerPop, a ten terminal służy do interakcji z danymi grafu. Aby uzyskać więcej informacji, zobacz przewodnik Szybki start dotyczący konsoli Gremlin. Można również wykonywać te operacje przy użyciu sterowników Gremlin na wybranej platformie (Java, Node.js, Python lub .NET). W poniższych przykładach pokazano, jak uruchamiać zapytania względem tych danych grafu przy użyciu konsoli Gremlin.

Najpierw przyjrzyjmy się tworzeniu, odczytywania, aktualizowania i usuwania (CRUD). Następująca instrukcja Języka Gremlin wstawia wierzchołekThomasa do grafu z kilkoma właściwościami:

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

Porada

Jeśli używasz poniższych przykładów, możesz użyć dowolnej z tych właściwości (age, firstName, lastName) jako klucza partycji podczas tworzenia grafu. Właściwość nie jest obsługiwana id jako klucz partycji na grafie.

Następnie poniższa instrukcja Gremlin wstawia przewagę między Thomas i Robin.

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

Następujące zapytanie zwraca wierzchołki osoby w kolejności malejącej swoich nazwisk:

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?” Możesz uruchomić ten przechodzenie gremlin, aby uzyskać te informacje z grafu:

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

Następne kroki