About Protocol Buffers

Alex De la rosa alex.rosa.box at gmail.com
Mon Jun 23 10:54:47 EDT 2014


Hi Sean,

Thanks for your quick reply, is what i suspected, moreover after checking
riak.proto file in the source. So mainly the contents to store (json or not
json) is not PB encoded semantically, but is encoded as a "body" field in
the Message. That's good though.

Another question... is there any estimated date for Riak 2.0 to be
released? I'm playing with 2.0 beta 1 and the "list" object is a must-have
for me (same as the "counter" object that can be found in Riak 1.4).

Is crucial for me to decide which technologies to use in my new project; so
far Riak 2.0 seems a great option, but I can not build under a beta.

Another question now that I talk about "counters"... how do you do it with
Python's PBC? I can see the functions: RiakClient.get_counter()
and RiakClient.update_counter()... but... how do you create a new counter?
how do you specify the special connotations to the bucket?

Thanks,
Alex


On Mon, Jun 23, 2014 at 4:38 PM, Sean Cribbs <sean at basho.com> wrote:

> Hi Alex,
>
> By default, the client assumes new objects use JSON as the encoding. The
> protocol buffers are only used on the wire to encode Riak's protocol. If
> you want to use your own protobuffs messages, I suggest two things:
>
> 1. Decide on a `content_type` property for each of your data types and be
> sure to assign that to each key as you create it. I've used
> 'application/pb-person' as an example below.
> 2. Register encoder and decoder functions [1] on the RiakClient object,
> like so:
>
> client.set_decoder('application/pb-person', Person.ParseFromString)
> client.set_encoder('application/pb-person', lambda x:
> x.SerializeToString())
>
> [1]
> http://riak-python-client.readthedocs.org/en/latest/client.html#serialization
>
> Cheers,
>
>
> On Mon, Jun 23, 2014 at 9:19 AM, Alex De la rosa <alex.rosa.box at gmail.com>
> wrote:
>
>> Hi there,
>>
>> I just installed RIAK 2.0 beta 1 and was playing with the Python library
>> using 'pbc' (Protocol Buffers).
>>
>> test.py
>>
>> --------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------
>> import riak
>> client = riak.RiakClient(host ='127.0.0.1', http_port = 8098, pb_port =
>> 8087, protocol = 'pbc')
>> bucket = client.bucket('people')
>>
>> key = bucket.new('alex', data={"username":"Alex","age":33})
>> key.store()
>>
>> print bucket.get('alex').encoded_data
>>
>> --------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------
>>
>> it works perfectly and it prints {"username": "Alex", "age": 33} as it
>> should print.
>>
>> However, I'm not using a proto file (person.proto) and compiling it into
>> binary for Python to use it... something like:
>>
>> person.proto
>>
>> --------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------
>> message Person {
>>   required string username = 1;
>>   required int32 age = 2;
>> }
>>
>> --------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------
>>
>> xxx.py
>>
>> --------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------
>> import person_pb2
>> person = person_pb2.Person()
>> person.username = "Alex"
>> person.age = 33
>> data = person.SerializeToString()
>>
>> --------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------
>>
>> Am I using the 'pbc' interface wrong? however, on Riak's examples page is
>> done also without the "proto" file... I'm a bit confused at the moment as
>> it changed the way I normally would use Protocol Buffers.
>>
>> Thanks,
>> Alex
>>
>> _______________________________________________
>> riak-users mailing list
>> riak-users at lists.basho.com
>> http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com
>>
>>
>
>
> --
> Sean Cribbs <sean at basho.com>
> Software Engineer
> Basho Technologies, Inc.
> http://basho.com/
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.basho.com/pipermail/riak-users_lists.basho.com/attachments/20140623/8f6af1a8/attachment.html>


More information about the riak-users mailing list