About Protocol Buffers

Alex De la rosa alex.rosa.box at gmail.com
Mon Jun 23 16:03:36 EDT 2014


Hi Bret,

Thanks for your reply, I had used Riak since version 0.14 via HTTP... for
2.0 I decided to do the switch to PBC and I'm glad to hear all HTTP calls
has been migrated to PBC too :)

Does anybody know an estimate date for version 2.0 to be out? I'm starting
a new project and I would love to be able to use 2.0 as "list" buckets is a
great feature for my needs.

Thanks,
Alex



On Mon, Jun 23, 2014 at 9:57 PM, Brett Hazen <brett at basho.com> wrote:

> Alex -
>
> I suspect you may be looking at some older documentation.  AFAIK all HTTP
> functionality is now (Riak 2.0) supported via PBC so you can pick either
> transport or the other for all of your communication.  In the past there
> was some functionality available only via HTTP.  There are now some direct
> queries to the Solr API which are available only via HTTP, but that’s
> outside of Riak’s core [1].
>
> I’m sure those more in the know will correct me if I’ve misspoken.
>
> Brett
>
> [1] http://docs.basho.com/riak/2.0.0beta1/dev/advanced/search/
>
> On June 23, 2014 at 10:47:45 AM, Alex De la rosa (alex.rosa.box at gmail.com)
> wrote:
>
> Hi Luc,
>
> Cool, thanks! I can see how to do it now:
>
> bucket = client.bucket_type('counter_bucket').bucket('counters')
>
> Will be checking it more to see what can I do that is not yet documented.
>
> The Python documentation says at one point: "Some requests are only valid
> over 'http', and will always be sent via those transports, regardless of
> which protocol is preferred.". Can I know which requests are HTTP only? is
> it for something in particular? or they will be made into PBC at some point?
>
> Thanks,
> Alex
>
>
> On Mon, Jun 23, 2014 at 5:29 PM, Luc Perkins <lperkins at basho.com> wrote:
>
>> Alex,
>>
>> It sounds like you're working mostly with the lower-level Python API at
>> the moment, but if you want to use the higher-level parts of the client for
>> interacting with Riak Data Types (sets, maps, and counters), there is a
>> tutorial here:
>>
>>
>> https://raw.githubusercontent.com/basho/basho_docs/2.0.0/source/languages/en/riak/dev/using/data-types.md
>>
>> You'll see the Python samples interspersed throughout. I know it's
>> annoying because it's just raw Markdown at the moment, but this will be
>> deployed to our normal docs site <http://docs.basho.com/riak/2.0.0beta1/>
>>  soon.
>>
>> Hope that helps!
>>
>> Luc
>>
>>
>> On Mon, Jun 23, 2014 at 4:54 PM, Alex De la rosa <alex.rosa.box at gmail.com
>> > wrote:
>>
>>> 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/
>>>>
>>>
>>>
>>> _______________________________________________
>>> riak-users mailing list
>>> riak-users at lists.basho.com
>>> http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com
>>>
>>>
>>
> _______________________________________________
> riak-users mailing list
> riak-users at lists.basho.com
> http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.basho.com/pipermail/riak-users_lists.basho.com/attachments/20140623/cd2a9393/attachment.html>


More information about the riak-users mailing list