Warum Entwickler Grafikdatenbanken verwenden sollten

Vor zwanzig Jahren hat mein Entwicklungsteam eine Engine zur Verarbeitung natürlicher Sprache entwickelt, die Stellenanzeigen, Auto- und Immobilienanzeigen nach durchsuchbaren Kategorien durchsucht. Ich wusste, dass wir eine schwierige Herausforderung beim Datenmanagement hatten. Die Daten in einigen Anzeigentypen waren relativ einfach, z. B. die Identifizierung von Automarken und -modellen, andere erforderten jedoch mehr Rückschlüsse, z. B. die Identifizierung einer Jobkategorie anhand einer Liste von Fähigkeiten.

Wir haben ein Metadatenmodell entwickelt, das alle durchsuchbaren Begriffe erfasst. Für die Verarbeitungsengine für natürliche Sprachen musste das Modell jedoch signifikante Metadatenbeziehungen offenlegen. Wir wussten, dass das Entwerfen eines Metadatenmodells mit beliebigen Verbindungen zwischen Datenpunkten in einer relationalen Datenbank komplex ist. Daher haben wir die Verwendung von Objektdatenbanken zur Verwaltung des Modells untersucht.

Was wir damals mit Objektdatenbanken erreichen wollten, kann heute mit Graphendatenbanken besser gemacht werden. Diagrammdatenbanken speichern Informationen als Knoten und Daten, die ihre Beziehungen zu anderen Knoten angeben. Sie sind bewährte Architekturen zum Speichern von Daten mit komplexen Beziehungen.

Die Nutzung von Graphendatenbanken hat in den letzten zehn Jahren sicherlich zugenommen, da Unternehmen andere NoSQL- und Big-Data-Technologien in Betracht gezogen haben. Der weltweite Markt für Graphendatenbanken wurde 2018 auf 651 Millionen US-Dollar geschätzt und soll bis 2026 auf 3,73 Milliarden US-Dollar wachsen. Viele andere Big-Data-Management-Technologien, darunter Hadoop, Spark und andere, verzeichneten jedoch einen deutlich stärkeren Anstieg der Popularität und der Akzeptanz von Fähigkeiten. und Produktionsanwendungsfälle im Vergleich zu Graphendatenbanken. Im Vergleich dazu wurde die Marktgröße für Big-Data-Technologie im Jahr 2018 auf 36,8 Milliarden US-Dollar geschätzt und bis 2026 auf 104,3 Milliarden US-Dollar prognostiziert.

Ich wollte verstehen, warum mehr Organisationen Graphendatenbanken nicht in Betracht ziehen. Entwickler denken in Objekten und verwenden regelmäßig hierarchische Datendarstellungen in XML und JSON. Technologen und Geschäftsinteressenten verstehen Diagramme grundsätzlich, da das Internet durch Hyperlinks und Konzepte wie Freunde und Freunde von Freunden aus sozialen Netzwerken ein miteinander verbundenes Diagramm ist. Warum haben dann nicht mehr Entwicklungsteams Graphendatenbanken in ihren Anwendungen verwendet?

Erlernen der Abfragesprachen von Diagrammdatenbanken

Obwohl es relativ einfach sein mag, die Modellierung von Knoten und Beziehungen zu verstehen, die in Graphendatenbanken verwendet werden, erfordert das Abfragen dieser Knoten das Erlernen neuer Praktiken und Fähigkeiten.

Schauen wir uns das Beispiel an, wie eine Liste von Freunden und Freunden von Freunden berechnet wird. Vor fünfzehn Jahren war ich Mitbegründer eines sozialen Reise-Netzwerks und beschloss, das Datenmodell einfach zu halten, indem ich alles in MySQL speicherte. Die Tabelle, in der eine Liste von Benutzern gespeichert war, hatte einen Self-Join, um Freunde darzustellen, und es war eine relativ einfache Abfrage, die Liste eines Freundes zu extrahieren. Um zu einem Freund auf der Liste eines Freundes zu gelangen, war jedoch eine ungeheuer komplexe Abfrage erforderlich, die funktionierte, aber nicht gut funktionierte, wenn Benutzer erweiterte Netzwerke hatten.

Ich sprach mit Jim Webber, Chefwissenschaftler bei Neo4j, einer der etablierten verfügbaren Grafikdatenbanken, darüber, wie eine Abfrage von Freunden von Freunden erstellt werden kann. Entwickler können Neo4j-Diagrammdatenbanken mit RDF (Resource Description Framework) und Gremlin abfragen, aber Webber sagte mir, dass mehr als 90 Prozent der Kunden Cypher verwenden. So sieht die Abfrage in Cypher zum Extrahieren von Freunden und Freunden von Freunden aus:

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

WHERE me f

RETURN f

So verstehen Sie diese Abfrage:

  • Suchen Sie mir das Muster, in dem sich ein Knoten mit der Bezeichnung Person und dem Eigenschaftsnamen 'Rosa' befindet, und binden Sie ihn an die Variable "me". Die Abfrage gibt an, dass "ich" eine ausgehende FRIEND-Beziehung in Tiefe 1 oder 2 zu einem anderen Knoten mit einer Personenbezeichnung hat, und bindet diese Übereinstimmungen an die Variable "f".
  • Stellen Sie sicher, dass "ich" nicht gleich "f" ist, weil ich ein Freund meiner Freunde bin!
  • Gib alle Freunde und Freunde von Freunden zurück

Die Abfrage ist elegant und effizient, hat jedoch eine Lernkurve für diejenigen, die mit dem Schreiben von SQL-Abfragen vertraut sind. Darin liegt die erste Herausforderung für Unternehmen, die auf Graphendatenbanken umsteigen: SQL ist eine allgegenwärtige Fähigkeit, und Cypher und andere Graphabfragesprachen sind eine neue Fähigkeit, die es zu lernen gilt.

Entwerfen flexibler Hierarchien mit Diagrammdatenbanken

Produktkataloge, Content-Management-Systeme, Projektmanagement-Anwendungen, ERPs und CRMs verwenden Hierarchien zum Kategorisieren und Kennzeichnen von Informationen. Das Problem ist natürlich, dass einige Informationen nicht wirklich hierarchisch sind und die Themen einen konsistenten Ansatz für die Strukturierung der Informationsarchitektur schaffen müssen. Dies kann ein schmerzhafter Prozess sein, insbesondere wenn es eine interne Debatte über die Strukturierung der Informationen gibt oder wenn Anwendungsendbenutzer die gesuchten Informationen nicht finden können, weil sie sich in einem anderen Teil der Hierarchie befinden.

Diagrammdatenbanken ermöglichen nicht nur beliebige Hierarchien, sondern ermöglichen Entwicklern auch, unterschiedliche Ansichten der Hierarchie für unterschiedliche Anforderungen zu erstellen. Beispielsweise wird dieser Artikel zu Diagrammdatenbanken möglicherweise unter Hierarchien in einem Content-Management-System für das Datenmanagement, neue Technologien, Branchen, in denen wahrscheinlich Diagrammdatenbanken verwendet werden, allgemeine Anwendungsfälle für Diagrammdatenbanken oder nach Technologierollen angezeigt. Eine Empfehlungs-Engine verfügt dann über einen viel umfangreicheren Datensatz, um den Inhalt mit dem Benutzerinteresse abzugleichen.

Ich sprach mit Mark Klusza, Mitbegründer von Construxiv, einem Unternehmen, das Technologien an die Bauindustrie verkauft, einschließlich Grit, einer Bauplanungsplattform. Wenn Sie sich den Zeitplan eines kommerziellen Bauprojekts ansehen, sehen Sie Verweise auf mehrere Gewerke, Geräte, Teile und Modellreferenzen. Ein einzelnes Arbeitspaket kann problemlos Hunderte von Aufgaben mit Abhängigkeiten im Projektplan enthalten. Diese Pläne müssen Daten aus ERPs, Building Information Modeling und anderen Projektplänen integrieren und Planern, Projektmanagern und Subunternehmern Ansichten präsentieren. Klusza erklärte: „Durch die Verwendung einer Grafikdatenbank in Grit schaffen wir viel bessere Beziehungen darüber, wer was wann, wo, mit welcher Ausrüstung und mit welchen Materialien tut. Auf diese Weise können wir Ansichten personalisieren und Konflikte bei der Auftragsplanung besser vorhersagen. “

Um flexible Hierarchien nutzen zu können, ist es hilfreich, Anwendungen von Grund auf mit einer Diagrammdatenbank zu entwerfen. Die gesamte Anwendung basiert dann auf der Abfrage des Diagramms und der Nutzung der Knoten, Beziehungen, Beschriftungen und Eigenschaften des Diagramms.

Cloud-Bereitstellungsoptionen reduzieren die Komplexität des Betriebs

Die Bereitstellung von Datenverwaltungslösungen in einem Rechenzentrum ist nicht trivial. Infrastruktur und Betrieb müssen Sicherheitsanforderungen berücksichtigen. Überprüfen Sie die Leistungsaspekte, um die Größe von Servern, Speicher und Netzwerken zu bestimmen. und auch replizierte Systeme für die Notfallwiederherstellung operationalisieren.

Organisationen, die mit Diagrammdatenbanken experimentieren, haben jetzt mehrere Cloud-Optionen. Ingenieure können Neo4j für GCP, AWS, Azure bereitstellen oder Neo4js Aura, eine Datenbank als Service, nutzen. TigerGraph verfügt über ein Cloud-Angebot und Starter-Kits für Anwendungsfälle wie Customer 360, Betrugserkennung, Empfehlungs-Engines, Analyse sozialer Netzwerke und Supply-Chain-Analyse. Darüber hinaus verfügen die Anbieter öffentlicher Clouds über Grafikdatenbankfunktionen, darunter AWS Neptune, die Gremlin-API in Azures CosmoDB, Open Source JanusGraph in GCP oder die Grafikfunktionen in den Cloud-Datenbankdiensten von Oracle.

Ich kehre zu meiner ursprünglichen Frage zurück. Warum verwenden nicht mehr Technologieunternehmen Grafikdatenbanken, wenn alle interessanten Anwendungsfälle, ausgereiften verfügbaren Grafikdatenbankplattformen, Möglichkeiten zum Erlernen der Entwicklung von Grafikdatenbanken und Cloud-Bereitstellungsoptionen zur Verfügung stehen?