Etwas NoSQL für MariaDB

Der freie MySQL-Fork soll in der nächsten Version "dynamische Spalten" enthalten. Sie ermöglichen das Speichern unterschiedlicher Attribute für jeden Datensatz innerhalb einer Tabelle.

In Pocket speichern vorlesen Druckansicht 97 Kommentare lesen
Lesezeit: 2 Min.
Von
  • Christian Kirsch

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.

Bislang ist der Code nur im Quellcode-Repository von MariaDB verfügbar, den Interessenten übersetzen müssen. (ck)