Хранение данных в Riak как JSON - PullRequest
1 голос
/ 02 апреля 2012

Я недавно начал использовать Riak с PHP.

Как именно я храню данные JSON ?! Мне просто вставить строку JSON в объект Riak?!

Riak PHP Client имеет следующее для хранения данных:

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();

Это принимает форму данных массива ключей. Так что в случае JSON, это будет как ниже?

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

Я пытаюсь найти лучший способ хранения данных в случае, если мне нужно использовать функцию поиска Riak. Я также не уверен, что карта-уменьшение работает лучше / быстрее таким образом?!

Заранее спасибо.

1 Ответ

3 голосов
/ 03 апреля 2012

Массив уже конвертируется в JSON в RiakObject->store() по умолчанию; тебе не нужно ничего делать.

Если вы посмотрите на исходный код клиента PHP, вы увидите, что json_encode() используется в методе store(), когда jsonize равен TRUE (что имеет место при использовании RiakBucket->newObject()): https://github.com/basho/riak-php-client/blob/master/riak.php#L1513

Если вы должны были сделать следующее в вашем браузере (после сохранения массива):

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

Вы вернетесь:

{"name": "John Smith", "age": 28, "company": "Facebook"}

Когда вы извлекаете данные из Riak с помощью PHP-клиента, все происходит наоборот, и вы получаете исходный PHP-массив.

...