Schemaflexibilität bei gleichzeitiger Datenintegrität

Die hybride Datenmodellierung – bei der sowohl strukturierte als auch semistrukturierte Daten zum Einsatz kommen – kann die Flexibilitätsanforderungen moderner Web-, Mobil- und IoT-Anwendungen erfüllen, ohne dabei Abstriche bei ACID-Transaktionen oder Standard-SQL machen zu müssen.

JSON + Relational: Verwendung hybrider Datenmodelle

Erfahren Sie, wie Sie strukturierte und halbstrukturierte Daten modellieren, JSON-Dokumente mit SQL indizieren und abfragen sowie die Datenintegrität von JSON-Dokumenten sicherstellen.

Jetzt ansehen

Die 5 wichtigsten Gründe für den Einsatz von Relational + JSON

   Mithilfe von Transaktionen können Sie mehrere JSON-Dokumente einfügen bzw. ändern.

   Sie können Integritätsbeschränkungen auf bestimmte Felder innerhalb von JSON-Dokumenten anwenden.

   Sie können JSON-Dokumente mit Standard-SQL-Funktionen abfragen und JOIN -Daten mit bestehenden Tabellen JOIN .

   Sie können bestimmte Felder innerhalb von JSON-Dokumenten indizieren.

   Sie können JSON-Dokumente als relationale Daten zurückgeben und umgekehrt.

Abfragen in hybriden Datenmodellen

Was ist, wenn Sie Benutzerprofile in einer einzigen Zeile speichern möchten? Ja, ein Benutzer hat eine Benutzer-ID, einen Namen und ein Land (und mehr). Allerdings können Benutzer sowohl private als auch berufliche E-Mail-Adressen sowie Mobil- und Bürotelefonnummern haben. Während einige Benutzer Twitter- und LinkedIn-Konten haben, verfügen andere möglicherweise über Facebook- und Instagram-Konten. Wie sieht es mit Interessen aus?

Mit JSON -Funktionen können Sie Benutzerprofile in einer einzigen Zeile speichern.

user_idNameLandattr
sjohnsonShaneUSA{
"email": {
"work": "shane.johnson@mariadb.com"},
"phone": {
"mobile": "(555) 555-5555"},
"social": {
"twitter": "@shane_dev",
"linkedin": "/in/shanekjohnson"},
"interests": [
"Science Fiction",
"Distributed Systems"]
SELECT ,
   JSON_VALUE(attr, "$.email.personal") AS email,
   JSON_VALUE(attr, "$.social.twitter") AS twitter,
   JSON_VALUE(attr, "$.interests[0]") AS favorite_interest
FROM  
WHERE  = "sjohnson";


NameE-MailTwitterLieblingsinteresse
Shanekeine@shane_devScience-Fiction
blau