Dlaczego programiści powinni używać grafowych baz danych

Dwadzieścia lat temu mój zespół programistów zbudował silnik przetwarzania języka naturalnego, który skanował ogłoszenia o zatrudnieniu, samochodach i nieruchomościach pod kątem kategorii, które można przeszukiwać. Wiedziałem, że mamy trudne wyzwanie związane z zarządzaniem danymi. Dane w niektórych typach reklam były stosunkowo proste, np. Identyfikacja marek i modeli samochodów, ale inne wymagały więcej wnioskowania, na przykład określenia kategorii pracy na podstawie listy umiejętności.

Opracowaliśmy model metadanych, który przechwytuje wszystkie wyszukiwane terminy, ale silnik przetwarzania języka naturalnego wymagał, aby model ujawniał istotne relacje metadanych. Wiedzieliśmy, że projektowanie modelu metadanych z dowolnymi połączeniami między punktami danych w relacyjnej bazie danych jest skomplikowane, więc zbadaliśmy użycie obiektowych baz danych do zarządzania modelem.

To, co staraliśmy się osiągnąć wtedy za pomocą obiektowych baz danych, można dziś zrobić lepiej za pomocą grafowych baz danych. Grafowe bazy danych przechowują informacje jako węzły i dane określające ich relacje z innymi węzłami. Są to sprawdzone architektury do przechowywania danych o złożonych relacjach.

Wykorzystanie graficznej bazy danych z pewnością wzrosło w ciągu ostatniej dekady, ponieważ firmy rozważały inne technologie NoSQL i Big Data. Globalny rynek baz danych wykresów oszacowano na 651 milionów dolarów w 2018 roku i prognozowano, że wzrośnie do 3,73 miliarda dolarów do 2026 roku. Jednak wiele innych technologii zarządzania dużymi zbiorami danych, w tym Hadoop, Spark i inne, odnotowało znacznie bardziej znaczący wzrost popularności, przyjęcia umiejętności, i przypadków użycia w produkcji w porównaniu z graficznymi bazami danych. Dla porównania wielkość rynku technologii big data oszacowano na 36,8 mld USD w 2018 r. I prognozowano, że do 2026 r. Wzrośnie do 104,3 mld USD.

Chciałem zrozumieć, dlaczego więcej organizacji nie bierze pod uwagę grafowych baz danych. Deweloperzy myślą w obiektach i regularnie używają hierarchicznych reprezentacji danych w XML i JSON. Technologowie i interesariusze biznesowi wewnętrznie rozumieją wykresy, ponieważ Internet jest wykresem wzajemnie połączonym za pomocą hiperłączy i pojęć, takich jak przyjaciele i przyjaciele znajomych z sieci społecznościowych. Dlaczego więc więcej zespołów programistycznych nie używa grafowych baz danych w swoich aplikacjach?

Nauka języków zapytań grafowych baz danych

Chociaż zrozumienie modelowania węzłów i relacji używanych w grafowych bazach danych może być stosunkowo łatwe, odpytywanie ich wymaga poznania nowych praktyk i umiejętności.

Spójrzmy na ten przykład tworzenia listy znajomych i przyjaciół znajomych. Piętnaście lat temu współzałożyłem podróżniczą sieć społecznościową i postanowiłem zachować prostotę modelu danych, przechowując wszystko w MySQL. Tabela przechowująca listę użytkowników miała łączenie własne, które reprezentowało znajomych, a wyodrębnienie listy znajomych było stosunkowo prostym zapytaniem. Ale dotarcie do znajomego z listy znajomych wymagało potwornie złożonego zapytania, które działało, ale nie działało dobrze, gdy użytkownicy mieli rozszerzone sieci.

Rozmawiałem z Jimem Webberem, głównym naukowcem w Neo4j, jednej z uznanych graficznych baz danych dostępnych, o tym, jak skonstruować zapytanie znajomych lub znajomych. Programiści mogą wysyłać zapytania do grafowych baz danych Neo4j za pomocą RDF (Resource Description Framework) i Gremlin, ale Webber powiedział mi, że ponad 90 procent klientów używa Cyphera. Oto jak wygląda zapytanie w Cypherze o wyodrębnianie znajomych i przyjaciół znajomych:

MATCH (me:Person {name:'Rosa'})-[:FRIEND*1..2]->(f:Person)

WHERE me f

RETURN f

Oto jak zrozumieć to zapytanie:

  • Znajdź wzorzec, w którym znajduje się węzeł z etykietą Osoba i nazwą właściwości: „Rosa”, i powiąż go ze zmienną „ja”. Zapytanie określa, że ​​„ja” ma wychodzącą relację PRZYJACIEL na głębokości 1 lub 2 do dowolnego innego węzła z etykietą Person i wiąże te dopasowania ze zmienną „f”.
  • Upewnij się, że „ja” nie jest równe „f”, ponieważ jestem przyjacielem moich przyjaciół!
  • Zwróć wszystkich przyjaciół i przyjaciół znajomych

Zapytanie jest eleganckie i wydajne, ale ma krzywą uczenia się dla osób używanych do pisania zapytań SQL. Na tym polega pierwsze wyzwanie dla organizacji zmierzających w kierunku grafowych baz danych: SQL to wszechobecny zestaw umiejętności, a Cypher i inne języki zapytań grafowych to nowa umiejętność do nauczenia.

Projektowanie elastycznych hierarchii za pomocą grafowych baz danych

Katalogi produktów, systemy zarządzania treścią, aplikacje do zarządzania projektami, systemy ERP i CRM - wszystkie używają hierarchii do kategoryzowania i oznaczania informacji. Problem polega oczywiście na tym, że niektóre informacje nie są tak naprawdę hierarchiczne, a tematy muszą tworzyć spójne podejście do strukturyzacji architektury informacji. Może to być bolesny proces, zwłaszcza jeśli toczy się wewnętrzna debata na temat struktury informacji lub gdy użytkownicy końcowi aplikacji nie mogą znaleźć informacji, których szukają, ponieważ znajdują się one w innej części hierarchii.

Grafowe bazy danych nie tylko umożliwiają tworzenie dowolnych hierarchii, ale także umożliwiają programistom tworzenie różnych widoków hierarchii dla różnych potrzeb. Na przykład ten artykuł dotyczący grafowych baz danych może pojawić się w hierarchii w systemie zarządzania treścią do zarządzania danymi, nowych technologiach, branżach, które prawdopodobnie będą używać grafowych baz danych, typowych przypadkach użycia grafowych baz danych lub według ról technologicznych. Silnik rekomendacji ma wtedy znacznie bogatszy zestaw danych, aby dopasować treść do zainteresowań użytkowników.

Rozmawiałem z Markiem Kluszą, współzałożycielem Construxiv, firmy sprzedającej technologie dla branży budowlanej, w tym Grit, platformę do planowania budowy. Jeśli spojrzysz na harmonogram komercyjnego projektu budowlanego, zobaczysz odniesienia do wielu branż, wyposażenia, części i odniesień do modeli. Pojedynczy pakiet roboczy może łatwo zawierać setki zadań z zależnościami w planie projektu. Plany te muszą integrować dane z systemów ERP, modelowania informacji o budynku i innych planów projektów oraz przedstawiać widoki planistom, kierownikom projektów i podwykonawcom. Klusza wyjaśnia: „Korzystając z graficznej bazy danych w Grit, tworzymy znacznie bogatsze relacje na temat tego, kto co robi, kiedy, gdzie, z jakim sprzętem i jakimi materiałami. To pozwala nam spersonalizować widoki i lepiej prognozować konflikty w harmonogramie pracy ”.

Aby skorzystać z elastycznych hierarchii, pomocne jest projektowanie aplikacji od podstaw za pomocą graficznej bazy danych. Cała aplikacja jest następnie projektowana na podstawie odpytywania wykresu i wykorzystania węzłów, relacji, etykiet i właściwości wykresu.

Opcje wdrażania w chmurze zmniejszają złożoność operacyjną

Wdrażanie rozwiązań do zarządzania danymi w centrum danych nie jest trywialne. Infrastruktura i operacje muszą uwzględniać wymogi bezpieczeństwa; przegląd kwestii dotyczących wydajności w celu określenia rozmiaru serwerów, pamięci masowej i sieci; a także operacjonalizować replikowane systemy w celu odtwarzania po awarii.

Organizacje eksperymentujące z bazami danych grafów mają teraz kilka opcji chmury. Inżynierowie mogą wdrożyć Neo4j na GCP, AWS, Azure lub wykorzystać Neo4j's Aura, bazę danych jako usługę. TigerGraph ma ofertę w chmurze i zestawy startowe do przypadków użycia, takich jak 360 klienckie, wykrywanie oszustw, silniki rekomendacji, analizy sieci społecznościowych i analizy łańcucha dostaw. Ponadto dostawcy chmury publicznej mają możliwości graficznej bazy danych, w tym AWS Neptune, interfejs API Gremlin w usłudze CosmoDB platformy Azure, JanusGraph typu open source na platformie GCP lub funkcje wykresów w usługach Oracle Cloud Database Services.

Wracam do mojego pierwotnego pytania. Biorąc pod uwagę wszystkie interesujące przypadki użycia, dostępne dojrzałe platformy baz danych z wykresami, możliwości uczenia się tworzenia grafowych baz danych i opcje wdrażania w chmurze, dlaczego więcej organizacji technologicznych nie korzysta z grafowych baz danych?