Suche mit SphinxSE
- MariaDB - das bessere MySQL?
- Suche mit SphinxSE
Eine relationale Datenbank wie MySQL verwaltet Ihre Daten in Datensätzen, eine Beziehung auf dieser hierarchischen Ebene konnte bis jetzt nur bedingt abgebildet werden. Diese Lücke schließt die Engine OQGRAPH und bildet hierarchische Baumstrukturen an und nutzt dabei Standard-SQL. Damit Sie die I...
Eine relationale Datenbank wie MySQL verwaltet Ihre Daten in Datensätzen, eine Beziehung auf dieser hierarchischen Ebene konnte bis jetzt nur bedingt abgebildet werden. Diese Lücke schließt die Engine OQGRAPH und bildet hierarchische Baumstrukturen an und nutzt dabei Standard-SQL. Damit Sie die Inhalte abbilden können, benötigt jede OQGRAPH-Tabelle eine vorgegebene Struktur:
CREATE TABLE db.tblname (
latch SMALLINT UNSIGNED NULL,
origid BIGINT UNSIGNED NULL,
destid BIGINT UNSIGNED NULL,
weight DOUBLE NULL,
seq BIGINT
UNSIGNED NULL,
linkid BIGINT
UNSIGNED NULL,
KEY (latch, origid,
destid) USING HASH,
KEY (latch, destid, origid) USING
HASH
) ENGINE=OQGRAPH;
In dieser Struktur können Sie lediglich drei Felder direkt beeinflussen: origid, destid und weight, wobei die Gewichtung eines Graphen automatisch durch OQGRAPH durchgeführt wird. Mit den beiden anderen Feldern beschreiben Sie die Beziehung oder Verbindung zwischen den beiden Knoten. Es handelt sich dabei immer um eine gerichtete Variante - die Paare (1,2) und (2,1) sind somit zwei unterschiedlich ausgerichtete Graphen. Zum Einfügen eines Datensatzes genügt somit der Befehl
INSERT INTO tblname (origid,destid)
VALUES (1,2);
Weitere Informationen zur Storage Engine und zur Speicherung von Informationen in Graphen finden Sie auf der Website von OQGRAPH (openquery.com/graph/doc ).
Suche mit SphinxSE
Eine weitere neue Engine, die in MariaDB Einzug gefunden hat, ist SphinxSE. Die integrierte Storage Engine ist jedoch nicht der eigentliche Suchserver, sondern lediglich der Client, mit dem MariaDB auf die Suchfunktionalitäten des Sphinx-Servers zugreift.

Bei diesem handelt es sich um einen Open Source Volltext Suchserver. Die wesentlichen Eigenschaften sind Geschwindigkeit, einfache Integration sowie bestmögliche Relevanz der Suchergebnisse. Im Hinblick auf die einfache Integration bietet Ihnen Sphinx eine nahezu freie Wahl des darunter liegenden Datenbank-Servers, unter anderem stehen auch MySQL, MariaDB aber auch eine NoSQL-Datenbank zur Verfügung. Der große Vorteil der Suche mit Sphinx ist die Einfachheit der Suchabfrage: Mit nur drei Zeilen Code lässt sich auch eine komplexe Suchanfrage realisieren.Einen guten Einstieg in den Umgang mit der Sphinx-Suchmaschine bekommen Sie über die Website von Sphinx (sphinxsearch.com/docs/ ).
Virtuelle Spalten
Eine neue Funktion, die Nutzern von aktuellen Oracle und Microsoft MS SQL Datenbanken bereits zur Verfügung steht, sind virtuelle Spalten oder "Virtual Columns". Dabei handelt es sich um Spalten einer Tabelle, deren Inhalte nicht auf Platte abgelegt werden. Diese Funktionalität ist besonders sinnvoll für Felder, die auf Funktionen oder Ausdrücken basieren oder zur Laufzeit berechnet werden.
Umstieg von MySQL auf MariaDB
Ein Umstieg von MySQL auf MariaDB innerhalb der gleichen Versionsnummer funktioniert ohne Probleme. mysql_upgrade kb.askmonty.org/v/mysql_upgradeBei MariaDB gibt es zwei verschiedene Arten von virtuellen Spalten: gespeicherte (persistent) und generierte (virtual). Wenn Sie virtuellen Spalten verwenden, gibt es eine Reihe von Einschränkungen gegenüber den normalen Vertretern: Indizes werden nur für gespeicherte Spalten unterstützt, virtuelle Spalten können keine Primärschlüssel beinhalten.Weitere Besonderheiten können Sie in der Beschreibung von MariaDB nachlesen (kb.askmonty.org/v/virtual-columns ). Im Großen und Ganzen verhalten sich virtuelle Spalten jedoch wie klassische Tabellenspalten. Sie können darauf mit SQL Abfragen zugreifen und auch entsprechend neue Inhalte über INSERT und UPDATE einfügen. Der Aufbau einer Tabelle mit virtueller Spalte sieht nur unwesentlich anders aus als eine klassische Tabelle:
CREATE TABLE `table1` (
`a` int(11) NOT NULL,
`b` varchar(32) DEFAULT NULL,
`c` int(11) AS (a mod 10) VIRTUAL,
`d` varchar(5) AS (left(b,5))
PERSISTENT
) ENGINE=MyISAM DEFAULT CHARSET=
latin1
Im Beispiel sind die Felder c und d als virtuelle Spalten gekennzeichnet, wobei die Spalte c als virtuelle Spalte gekennzeichnet ist. Die Inhalte werden nicht in der MariaDB Datenbank gespeichert und nur zur Laufzeit generiert. Die Spalte d ist eine dauerhafte virtuelle Spalte und wird auf der Datenbank abgelegt, wie die ersten beiden a und b.
Authentifizierung
Planen Sie eine Anwendung zu entwickeln, bei der sich die Anwender gegen die Datenbank authentifizieren müssen, stellt Ihnen MariaDB seit Version 5.2 zwei unterschiedliche Plugins mysql_native_password sowie mysql_old_password zur Verfügung. Dies rührt durch die unterschiedliche Passwort Authentifizierung von MySQL her: in MySQL 3.23 waren es noch 9 Byte, diese wurde ab MySQL 4.0 zur höheren Sicherheit auf 20 Byte je Schlüssel erweitert.Der Prozess von Benutzeranlage und Rechtezuweisung ist immer zweistufig. Im ersten Schritt erzeugen Sie mit CREATE USER einen Benutzer und weisen diesem ein Passwort zu, etwa
CREATE USER mariadb_user_1 IDENTIFIED
VIA mysql_native_password USING "
*E8D4U&RFT265E545D982TZDBO1BAF642FE
BEE5CB";
In diesem Fall handelt es sich um eine Datenbank, die auf MySQL ab Version 4.0 aufsetzt. Im zweiten Schritt weisen Sie dem erzeugten Benutzer entsprechende Rechte über den Befehl GRANT zu. Die Syntax ist wie folgt:
GRANT <privileges> ON <level> TO<user> IDENTIFIED VIA <plugin
Weitere Neuerungen
Es gibt noch eine Reihe von weiteren interessanten Neuerungen, die in Version 5.2 implementiert wurden. Eine komplette Übersicht erhalten Sie unter kb.askmonty.org/v/what-is-mariadb-52 . Aktuell gibt es bereits MariaDB 5.3, allerdings noch nicht im Status stable - weitere Informationen zur kommenden Version finden Sie unter kb.askmonty.org/v/what-is-mariadb-53 .