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 grafowej bazy danych, 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 wykresów z opóźnieniem milisekundowym i łatwo rozwijać strukturę grafu. Interfejs API dla języka Gremlin jest oparty na platformie Apache TinkerPop, czyli strukturze obliczeniowej grafu korzystającej z języka zapytań Gremlin.

Ważne

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

Interfejs API dla języka Gremlin łączy możliwości algorytmów grafowych baz danych 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.

Napiwek

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

Zalety interfejsu API dla języka Gremlin

Interfejs API dla języka Gremlin dodał 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 poziomo 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 tworzenie 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 mechanizm regionalnego trybu failover zarządzanego 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 z najbardziej powszechnie przyjętym standardem zapytania grafu: Przechowywanie heterogenicznych wierzchołków i krawędzi oraz wykonywanie zapytań o nie za pomocą znanej składni języka Gremlin. Gremlin to imperatywne, funkcjonalne język zapytań, który udostępnia 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 platform grafowych baz danych jest powiązana z ograniczeniami 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 Dostrajalne poziomy spójności danych w usłudze Azure Cosmos DB.

Typowe scenariusze dotyczące interfejsu API dla języka Gremlin

Oto kilka scenariuszy, w których obsługa grafu 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 z podobnymi zainteresowaniami. 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. Małe opóźnienia, elastyczna skala i natywna obsługa grafu usługi Azure Cosmos DB jest idealna w tych scenariuszach.

  • Geoprzestrzenne: wiele aplikacji w branży telekomunikacyjnej, logistycznej i planowania podróży musi znaleźć lokalizację zainteresowania w danym 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: w przypadku 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 definiowaniu jednostek oddzielnie i przetwarzaniu relacji w czasie wykonywania. Chociaż ten model ma swoje zalety, wysoce połączone dane mogą być trudne do zarządzania w ramach jego ograniczeń.

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 oznaczają relacje między wierzchołkami. Na przykład osoba może znać inną osobę, być zaangażowana w wydarzenie lub niedawno była w miejscu.

  • Właściwości: Właściwości wyrażają informacje (lub metadane) o wierzchołkach i krawędziach. Może istnieć dowolna liczba właściwości w wierzchołkach lub krawędziach. Można ich 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ą "person".

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ę Piłki Nożnej.

  • 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".

  • Zainteresowane: Reprezentują zainteresowania osób na naszym wykresie. Na przykład "Ben jest zainteresowany piłką nożną".

  • RunsOS: reprezentuje system operacyjny, który jest uruchomiony na urządzeniu. Na przykład "Laptop uruchamia system operacyjny Windows".

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

  • Lokalizacja: reprezentuje lokalizację, z której są dostępne urządzenia.

Konsola Gremlin to interaktywny terminal oferowany przez platformę Apache TinkerPop, a ten terminal służy do interakcji z danymi grafu. Aby uzyskać więcej informacji, zobacz przewodnik Szybki start 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, odczytywać, aktualizować i usuwać (CRUD). Następująca instrukcja Języka Gremlin wstawia wierzchołek Thomasado grafu z kilkoma właściwościami:

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

Napiwek

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ść id nie jest obsługiwana jako klucz partycji na grafie.

Następnie poniższa instrukcja Języka Gremlin wstawia krawędź zna między Thomasem i Robinem.

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

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

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