2012-04-02 16 views
1

Ich habe vor kurzem begonnen, Riak mit PHP zu verwenden.Speichern von Daten in Riak als JSON

Wie genau speichere ich JSON-Daten ?! Drücke ich einfach die JSON-Zeichenfolge in ein Riak-Objekt ?!

Die Riak PHP-Client hat folgende zur Speicherung von Daten:

require_once('riak-php-client/riak.php'); 

# Connect to Riak 
$client = new RiakClient('127.0.0.1', 8098); 

# Choose a bucket name 
$bucket = $client->bucket('test'); 

# Supply a key under which to store your data 
$person = $bucket->newObject('riak_developer_1', array(
    'name' => "John Smith", 
    'age' => 28, 
    'company' => "Facebook" 
)); 

# Save the object to Riak 
$person->store(); 

Dies geschieht in Form von Schlüsseldaten-Array. Also im Fall von JSON, wäre es wie unten?

# Supply a key under which to store your data 
$person = $bucket->newObject('riak_developer_1', '{"name": "John Smith", "age": "28", "company": "Facebook"}'; 

Ich versuche, den besten Weg zu finden, Daten zu speichern, falls ich die Suchfunktion von Riak verwenden muss. Ich bin mir auch nicht sicher, ob map-reduce auf diese Weise besser/schneller funktioniert ?!

Vielen Dank im Voraus.

Antwort

3

Das Array wird bereits standardmäßig in RiakObject->store() in JSON konvertiert. Du musst nichts tun.

Wenn Sie auf der PHP-Client Quelle betrachten, sehen Sie json_encode() in der store() Verfahren verwendet wird, wenn jsonizeTRUE ist (was der Fall ist, wenn Sie RiakBucket->newObject() verwenden): https://github.com/basho/riak-php-client/blob/master/riak.php#L1513

Wenn Sie waren zu tun, die folgenden in Ihrem Browser (nach dem Array zu speichern):

http://127.0.0.1:8098/riak/test/riak_developer_1

Sie würden zurück:

{ "name": "John Smith", "Alter": 28 "Unternehmen": "Facebook"}

Wenn Sie die Daten zurückholen aus Riak mit dem PHP-Client macht es das Gegenteil und Sie am Ende mit Ihrem ursprünglichen PHP-Array.

+0

Vielen Dank. Ich habe den PHP-Quellcode nicht wirklich angeschaut. Das macht die Dinge viel klarer. Prost. –

+0

Keine Sorge - das sollten wir in den Dokumenten wirklich explizit machen. Ich werde es notieren; Ich habe ein paar Dinge für die PHP-Client-Dokumente, die ich aktualisieren muss. –