Vorgeschmack auf den Magazin-Artikel zur neuen NoSQL-Datenbank

Couchbase 2.0: Mehr als nur Key-Value-Store
Kommentare

Couchbase schickt mit seinem 2.0-Release eine neue Version seines Zugpferdes ins Rennen (aktuell als Beta-Release erhältlich). Neue Features wie sekundäre Indizes („Views“) oder die Möglichkeit, Daten zwischen verschiedenen Rechenzentren zu replizieren, kommen zu alt bekannten Features wie Auto-Sharding, Zero-Downtime Maintenance und Auto-Failover hinzu.

Mit der neuen Version entwickelt sich Couchbase Server von einer Key-Value-Datenbank hin zu einer kompletten dokumentenorientierten Datenbank. Nähere Informationen dazu finden sich unter [1].

Keine Datenbank kommt ohne Schnittstellen zu den Applikationen aus, deswegen stellt Couchbase SDKs für viele Sprachen zur Verfügung (zum Beispiel Java, .NET oder Python), darunter auch eines für PHP [2]. Die Installation des Servers gestaltet sich denkbar einfach. Je nach Plattform wird entweder ein Paket über den Paketmanager installiert oder ein Installer ausgeführt. Die PHP Erweiterung kann vorkompiliert von der Website heruntergeladen werden. Die Version 1.0 des SDKs ist mit der Version 1.8 des Servers kompatibel, für das neue 2.0-Release sollten die Developer-Previews (1.1-dp) verwendet werden [3].

Nach dem erfolgreichen Einbinden der Erweiterung kann diese direkt im Code verwendet werden. Couchbase Server unterstützt das Memcached-Protokoll vollends, daher kann es als Drop-In-Replacement für vorhandene Memcached-Instanzen verwendet werden. Dies spiegelt sich auch in dem API wieder. Kenner des Memcached-APIs sollten sich also sehr schnell zu Hause fühlen.

Um sich mit dem Cluster zu verbinden reicht es, ein Couchbase-Objekt mit den entsprechenden Verbindungsdaten zu erzeugen.

Verbindung mit dem Cluster herstellen:
$hosts = "127.0.0.1";
$user = "default";
$password = "" ;
$bucket = "default";
$client = new Couchbase($hosts, $user, $password, $bucket);

Während der Initialisierung verwendet die Bibliothek den (beziehungsweise die) angegebenen Host(s) zum Verbindungsaufbau. Danach wird über einen separaten Streaming-Kanal automatisch die Cluster-Topologie geladen. Falls Veränderungen am Cluster vorgenommen werden, wird die gespeicherte Topologie automatisch aktualisiert. Somit muss bei einer Verkleinerung, Vergrößerung oder im Fehlerfall keine Anpassung am Applikationscode vorgenommen werden.

Couchbase 2.0 unterstützt zwei Arten um Daten zu lesen: über den Schlüssel („Key“) oder über eine View. Die Views sind in JavaScript geschrieben und können über das Webinterface eingespielt werden. Beim Zugriff über den Client werden sie anhand ihres Namens identifiziert. Des Weiteren können zusätzliche Konfigurationsparameter angegeben werden.

Bei allen anderen Operation (wie get, set, add oder replace) erfolgt der Zugriff über die eindeutigen Schlüssel der Dokumente. Es wird empfohlen, die Daten als JSON abzuspeichern, da dann in den Views auf die einzelnen JSON-Attribute zugegriffen werden kann [4].

Der folgende Code verwendet Beispieldaten, welche beim Installieren des Clusters importiert werden können (das sogenannte „beer-sample“ Bucket). Er verdeutlicht sowohl die Operationen anhand der Schlüssel, als auch die einfache View-Integration.

get("21st_amendment_brewery_cafe"));

// Gibt den Namen der Brauerei aus ("21st Amendment Brewery Cafe")
var_dump($brewery->name);

// Gibt die geographische Position aus ("Lat: 37.7825, Lng: -122.393")
var_dump("Lat: ".$brewery->geo->lat.", Lng: ".$brewery->geo->lng);

// Zugriff ueber eine View auf die ersten 5 Biere in absteigender Reihenfolge
$view = $cb->view("beer", "brewery_beers?limit=5&descending=true");

foreach($view['rows'] as $row) {
        // Gibt die IDs der gefundenen Eintraege aus.
        var_dump($row['id']);
}
?>

Dieser Artikel bietet eine grundlegende Einführung in Couchbase und die Interaktion durch PHP. Wer neugierig auf mehr geworden ist, sollte sich am 30. Oktober die CouchConf in Berlin [5] auf keinen Fall entgehen lassen. Dort bietet sich einen Tag lang die Möglichkeit, alles über Couchbase zu erfahren und sich mit Entwicklern auszutauschen.

Der vollständige Artikel zu Couchbase 2.0 wird in einem kommenden PHP Magazin erscheinen. Bis dahin freuen wir uns auf Feedback und Eure Anregungen.

Michael Nitschinger arbeitet als Developer Advocate bei Couchbase und studiert Wirtschaftsinformatik in Wien. Er ist Core-Contributor des Lithium Frameworks und bloggt regelmäßig auf nitschinger.at über PHP, Java, Couchbase und NoSQL. Sie erreichen ihn via Twitter unter @daschl oder per E-Mail unter michael.nitschinger [ätt] couchbase.com.

Autor

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -