RDFS vs. SQL vs. NoSQL

Die letzten Posts haben sich mit den SemanticWeb-Technologien beschäftigt, wie man sie anwenden kann und welchen Nutzen sie bringen. Wie bereits im OWL-Post erwähnt, basiert OWL auf RDF(-S). Wenn man sich einen Moment das RDF Konzept auf der Zunge zergehen lässt, merkt man, dass RDF erstaunlich ähnlich zum Konzept einer Datenbank ist. Ich werde daher im Folgenden RDF mit zwei Datenbank-Ideologien vergleichen und Unterschiede aufzeigen.

RDF vs. SQL

Das RDF-Konzeptberuht im wesentlichen auf Klassen und Properties. Wobei Die Instanz einer Klasse durch beliebig viele Properties beschrieben wird. Relationale Datenbanken, wie z.B. eine SQL-Datenbank, bestehen im wesentlichen aus Tabellen, deren Entitäten durch Attribute (Spalten) beschrieben werden.

Nun kann man die RDF-Klassen mit den SQL-Tabellen und die RDF-Properties mit den SQL-Attribute gleichstellen. Dem aufmerksamen Leser wird auffallen, dass eine RDF-Instanz durch beliebige Properties mit beliebigen Werten beschrieben werden kann. Dies entspricht nicht dem SQL-Konzept, bei dem man die Tabellen-Attribute streng typisieren kann und per Constraint validieren kann.

Der Vergleich mit einer SQL-Datenbank hinkt an dieser Stelle also etwas. Dennoch sind die Konzepte sich sehr ähnlich.

RDF vs. NoSQL

Wie bereits aufgezeigt sind die Konzepte  RDF und SQL sich sehr ähnlich bis auf, dass eine SQL-Tabelle im Gegensatz zu RDF ein festes Daten-Schema hat. Möchte man eine schemalose Datenbank, dann findet man viel Auswahl bei den sog. NoSQL-Datenbanken. Als Beispiel werde ich hier die dokumentenorientierte NoSQL-Datenbank MongoDB verwenden.

Datenschema

Eine NoSQL-Datenbank zeichnet sich vor allem dadurch aus, dass sie schemalos ist. Es gibt einige NoSQL-Datenbanken – wie z.B. ElasticSearch – die ein dynamisches Schema haben. Das sind allerdings Sonderfälle, die hier nicht weiter betrachtet werden. Eine MongoDB beruht im wesentlichen auf sog. Collections, die eine Ansammlung von beliebigen JSON-Objekten darstellen. Diese JSON-Objekte können beliebige Key-Value-Pairs enthalten.

Man kann also die gleichen schemalosen Daten in RDF persistieren wie auch in einer MongoDB. In diesem Punkt sind sie gleich.

Schnittstelle

Um Daten in einer NoSQL-Datenbank zu persistieren oder abzufragen, braucht es häufig eine je nach Datenbank unterschiedliche Syntax. MongoDB hat eine eigene Anfragesprache, die spziell für die Datenbank entwickelt wurde. Inzwischen gibt es für nahezu jede Programmiersprache einen MongoDB-Adapter, sodass man programmatisch auf die Datenbank zugreifen kann. Nichts destotrotz verwendet MongoDB eine mächtige proprietäre Anfragesprache. In der Sprache können beispielsweise komplexe Map-Reduce-Anfragen gestellt werden.

RDF hingegen ist abfragbar durch SPARQL, was durch die W3C definiert und spezifiziert ist. SPARQL-Anfragen können über HTTP gestellt werden und unterstützen damit alles, was HTTP hergibt. Alle mit dem Internet verbundenen Computer verfügen heutzutage über einen Browser und können daher mit dem Interface agieren. HTTP ist ebenfalls durch die W3C definiert und hat sich als Protokoll zum Daten-Austausch in verteilten Systemen etabliert. REST-API’s bspw. kommunizieren ebenfalls über HTTP und haben bereits ihren Mehrwert gegenüber proprietären Protokollen und Frameworks zum Datenaustausch bewiesen.

Viele NoSQL-Datenbanken haben inzwischen ebenfalls eine HTTP-Schnittstelle, welche allerdings meist nur “der Vollständigkeit halber” nachgebessert wurde. MongoDB bspw. hat ab Werk keine HTTP-Stelle. Es gibt allerdings Tools in allerlei Sprachen, die von der Community geschrieben wurden, um dieses Manko auszubessern.

SemanticWeb vs. NoSQL

Es gibt Stimmen, die sagen, dass viel von der Aufmerksamkeit, die NoSQL inzwischen bekommt, auch der SemanticWeb-Community gehören könnte. Als NoSQL aufkam, war es DIE Technologie um Datenbanken flexibler und skalierbarer zu machen. Und es ist immernoch die Technologie für diese Zwecke.

SemanticWeb kann mit OWL das gleiche und noch viel mehr. Es kann durch die Definition von OWL-spezifischen Properties weitere Informationen und Zusammenhänge in den Daten aufdecken. Diese Zusammenhänge muss man in NoSQL-Datenbanken durch komplexe Anfragen oder durch entsprechende Code-Zeilen herstellen.

Bednar et al. (2014) haben RDF und NoSQL-Datenbanken miteinander verglichen. Sie kamen zu dem Ergebnis, dass sie was die Daten-Persistierung von schemalosen Daten gleich sind. RDF hat durch die Verwendung einer standardisierten einen Vorteil gegenüber der heterogenen Anfragesprache der einzelnen NoSQL-Datenbanken. Sie stellen allerdings auch fest, dass NoSQL-Datenbanken durch die Unterstützung von Transaktionen, Replikation und Lastverteilung einen Vorteil beim Betrieb der Datenbank bieten. Sie empfehlen daher die Entwicklung und Verwendung einer standardisierten Anfrage-Sprache für NoSQL-Datenbanken, dann wäre auch dieses Problem gelöst.

Es gibt also einige Texte die davon ausgehen, dass das SemanticWeb- und NoSQL-Technolgien miteinander konkurieren. Wenn man sich die beiden Technologien genauer ansieht, wird man feststellen, dass die versuchen völlig unterschiedliche Probleme zu lösen. NoSQL-Datenbanken versuchen die Datenhaltung flexibel, verteilt und einfach zu halten. NoSQL versucht nicht irgendeine Logik in seine Daten zu bringen. SemanticWeb-Technologien beinhalten zwar unter anderem das RDF, was mit einer NoSQL-Datenbank konkurieren könnte. Allerdings stellt das RDF nur eine Definition der Daten dar, die das SemanticWeb verwenden möchte. Eigentlich geht es dem SemanticWeb um den Teil, den OWL erweitert: Das hinzufügen von Meta-Daten um neue Informationen zu generieren und Schlüsse zuzulassen.

Decentralyze und ein Beitrag von InfoQ reden davon, dass man diese beiden Ideen miteinander verbinden sollte. Da die NoSQL-Produkte bereits sehr ausgereift sind, was die Datenhaltung angeht. Daher könnte man die SemanticWeb-Ideen auf NoSQL-Datenbanken übertragen. Damit würde das Konzept des SemanticWeb nicht verloren gehen, sondern es würde durch eine mächtige Datenhaltung erweitert werden. Und NoSQL-Datenbanken würden durch diese Fusion ihr Wissen erweitern. Was dann noch fehlt, ist die standardisierte Anfrage-Sprache für NoSQL-Datenbanken und die bislang konkurrienden Technologien wären beide Gewinner.

Fazit

Ja, es gibt Unterschiede zwischen dem SemanticWeb und NoSQL-Datenbanken, obwohl beide eine schemalose Datenhaltung anstreben. Sie können allerdings voneinander profitieren, wenn sie aufeinander zugehen anstatt sich als Rivalen zu sehen.

Referenzen

[1] Bednar, Peter, Martin Sarnovsky, and Viktor Demko. “RDF vs. NoSQL databases for the semantic web applications.” Applied Machine Intelligence and Informatics (SAMI), 2014 IEEE 12th International Symposium on. IEEE, 2014.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s