Ein Hauch von NoSQL für MariaDB

Mit den jetzt eingeführten "dynamischen Spalten" weicht MariaDB das herkömmliche relationale Datenmodell etwas auf. Der freie MySQL-Abkömmling soll in seiner nächsten Version (5.3) solche Dynamic Columns enthalten, die einen Hauch von NoSQL bringen. Ein Ziel bei ihrer Entwicklung war, diese Spalten genauso wie herkömmliche in SQL-Befehlen verwenden zu können.

Hinter den neuen Spalten steckt eine BLOB-Spalte (Binary Large Object), die man beim Erzeugen der Tabelle vorsehen muss. Beim Eintragen von Datensätze lassen sich dort mit der Funktion COLUMN_CREATE Daten hinterlegen:

insert into t1 (name, type, price, dynstr) values
("Funny shirt", "shirt", 10.0, COLUMN_CREATE(1, "blue", 10, "XL")),
("nokia", "phone", 649, COLUMN_CREATE(1, "black", 2, "touchscreen")),
("htc Desire hd", "phone", 579, COLUMN_CREATE(1, "black", 3, "Android")),
("BM/Lenovo Thinkpad X60s", "computer", 419, COLUMN_CREATE(1, "black", 3, "Linux"));

In diesem Beispiel hat jeder Eintrag einen Namen, einen Preis und einen Typ ("shirt", "phone" oder "computer"). Je nach Bedarf werden in der Spalte dynstr dynamische Attribute angelegt, etwa für die Farbe oder das Betriebssystem. Anders als bei herkömmlichen haben dynamische Attribute keine Namen, sondern nur eine Spaltennummer. Das wollen die Entwickler jedoch noch ändern. Zum Aktualisieren und Löschen dient die Funktion COLUMN_ADD in einem herkömmlichen UPDATE-Statement:

UPDATE t1 SET dynstr=COLUMN_ADD(dynstr, 1, "red")
WHERE COLUMN_GET(dynstr, 1 as char(10)) = "black";

Dies illustriert auch die Verwendung von COLUMN_GET in WHERE-Klauseln. EIne Liste der vorhandenen dynamischen Spalten liefert COLUMN_LIST(dynstr). Neben diesen SQL-Funktionen gibt es eine C-API für die Arbeit mit dynamischen Spalten.

Quelle: http://www.heise.de/newsticker/meldung/Etwas-NoSQL-fuer-MariaDB-1248285.html