Product tutorials, how-tos, and fully-documented APIs.

Client Libraries

    Basho officially supports a number of open-source client libraries for various programming languages and environments.

    LanguageSourceDocumentationDownload
    Erlangriak-erlang-client (riakc) riak-erlang-http-client (rhc)edoc
    Javariak-java-clientjavadoc, wikiMaven Central
    PHPriak-php-clientdoxygen
    Pythonriak-python-clientsphinxPyPI
    Rubyriak-ruby-clientrdoc, wikiRubyGems

    All official clients use the integrated issue tracker on Github for bug reporting.

    In addition to the official clients, Basho provides some unofficial client libraries, listed below. There are also many client libraries and related projects provided by the community.

    LanguageSource
    C/C++riak-cxx-client
    Javascript (jQuery)riak-javascript-client

    Feature Matrix

    Below is a series of tables that compares the functionality of our official client libraries with the features exposed by Riak’s API, and also compares features that are desirable in well-developed clients. We have developed this matrix in an effort to ensure feature-parity across the different clients.

    Legend:

    HTTP

    Bucket OperationsErlang (rhc)JavaPHPPythonRuby
    List buckets
    List keys
    Get Bucket Propertiespartial
    Set Bucket Propertiespartial
    Object/Key OperationsErlang (rhc)JavaPHPPythonRuby
    Fetch Object (get)
    Fetch w/quorumsno PRno PR
    Store Object (put)
    Store w/quorumsno PWno PW
    Delete Object
    Query OperationsErlang (rhc)JavaPHPPythonRuby
    Link Walking
    MapReduce
    Secondary Indexes
    Searchemulated via MapReduceemulated via MapReduce
    Server OperationsErlang (rhc)JavaPHPPythonRuby
    Ping
    Statuspartialpartial
    List Resourcespartial
    Luwak Operations (pre 1.1)Erlang (rhc)JavaPHPPythonRuby
    Store file
    Fetch file
    Delete file

    Protocol Buffers

    Note: The PHP client does not support Protocol Buffers and so is excluded from this matrix.

    Bucket OperationsErlang (riakc)JavaPythonRuby
    List buckets
    List keys
    Get Bucket Properties
    Set Bucket Properties
    Object/Key OperationsErlang (riakc)JavaPythonRuby
    Fetch Object (get)
    Fetch w/quorums
    Store Object (put)
    Store w/quorums
    Delete Object
    Query OperationsErlang (riakc)JavaPythonRuby
    MapReduce
    Secondary Indexes (emulated, native)✓✗✓✗✓✓✓✓
    Search (emulated, native)✓✗✓✗✓✓✓✓
    Server OperationsErlang (riakc)JavaPythonRuby
    Ping
    Server Infopartial
    Get Client ID
    Set Client ID

    Additional features

    ProtocolsErlangJavaPHPPythonRuby
    Cluster connections/poolspartial
    Retry failures (on other nodes)✓ ✓
    Failure-sensitive node selection
    Automatic protocol selection
    Media-Type HandlingErlangJavaPHPPythonRuby
    Use arbitrary media types
    JSON (de-)serialization
    Other included (de-)serializersErlang Binary Term FormatYAML, Marshal
    Custom (de-)serializers
    Eventual ConsistencyErlangJavaPHPPythonRuby
    Exposes siblings
    Sibling resolution policies/strategies
    Mutators (encapsulating change ops)
    Domain Types/Object MappingErlangJavaPHPPython*Ruby*
    Abstract domain types w/reificationpartial
    Embedded/nested domain types
    Domain-level sibling resolution
    Secondary index integrationpartial
    Search integration

    Various community projects provide support for domain types and object mapping in Python and Ruby. The values in the table above represent the aggregate features of the projects listed below: