SlideShare a Scribd company logo
1 of 65
Download to read offline
.
    Distributed computation on dynamo-style
          distributed storage: Riak pipe
.             An introduction to Riak


                   Jaseem Abid


                September 19, 2012




                                          .    .    .      . . . . . . . . . . . .               .    .        .    .    .
                                     ..   ..   ..       .. .. .. .. .. .. .. .. .. .. .. .. ..   ..       ..   ..   ..
. Riak




              .    .    .      . . . . . . . . . . . .               .    .        .    .    .
         ..   ..   ..       .. .. .. .. .. .. .. .. .. .. .. .. ..   ..       ..   ..   ..
. What is Riak ?




    Riak is an open source, distributed NoSQL database implementing
    the principles from Amazon’s Dynamo paper.




                                                   .    .    .      . . . . . . . . . . . .               .    .        .    .    .
                                              ..   ..   ..       .. .. .. .. .. .. .. .. .. .. .. .. ..   ..       ..   ..   ..
. Dynamo Model

   Riak is a highly available, proprietary key-value structured storage
   system or a distributed data store. It has properties of both
   databases and distributed hash tables (DHTs). It is not directly
   exposed as a web service, but is used to power parts of other
   Amazon Web Services such as Amazon S3.




                                                      .    .    .      . . . . . . . . . . . .               .    .        .    .    .
                                                 ..   ..   ..       .. .. .. .. .. .. .. .. .. .. .. .. ..   ..       ..   ..   ..
. Dynamo Model

   Riak is a highly available, proprietary key-value structured storage
   system or a distributed data store. It has properties of both
   databases and distributed hash tables (DHTs). It is not directly
   exposed as a web service, but is used to power parts of other
   Amazon Web Services such as Amazon S3.




                                                      .    .    .      . . . . . . . . . . . .               .    .        .    .    .
                                                 ..   ..   ..       .. .. .. .. .. .. .. .. .. .. .. .. ..   ..       ..   ..   ..
. Dynamo Model

   Riak is a highly available, proprietary key-value structured storage
   system or a distributed data store. It has properties of both
   databases and distributed hash tables (DHTs). It is not directly
   exposed as a web service, but is used to power parts of other
   Amazon Web Services such as Amazon S3.




                                                      .    .    .      . . . . . . . . . . . .               .    .        .    .    .
                                                 ..   ..   ..       .. .. .. .. .. .. .. .. .. .. .. .. ..   ..       ..   ..   ..
. Dynamo Model

   Riak is a highly available, proprietary key-value structured storage
   system or a distributed data store. It has properties of both
   databases and distributed hash tables (DHTs). It is not directly
   exposed as a web service, but is used to power parts of other
   Amazon Web Services such as Amazon S3.




                                                      .    .    .      . . . . . . . . . . . .               .    .        .    .    .
                                                 ..   ..   ..       .. .. .. .. .. .. .. .. .. .. .. .. ..   ..       ..   ..   ..
. Dynamo Model

   Riak is a highly available, proprietary key-value structured storage
   system or a distributed data store. It has properties of both
   databases and distributed hash tables (DHTs). It is not directly
   exposed as a web service, but is used to power parts of other
   Amazon Web Services such as Amazon S3.


   Implementations
       Apache Cassandra
       Project Voldemort
       Riak
       Amazon DynamoDB

                                                      .    .    .      . . . . . . . . . . . .               .    .        .    .    .
                                                 ..   ..   ..       .. .. .. .. .. .. .. .. .. .. .. .. ..   ..       ..   ..   ..
. This talk



    Front Matter
        Dynamo (and NoSQL) are nothing new
        Much of Dynamo was invented > 10 years ago
        Dynamo chooses AP of CAP
        This talk will focus on properties of Dynamo-inspired systems
        (Riak, Cassandra, Voldemort)




                                                    .    .    .      . . . . . . . . . . . .               .    .        .    .    .
                                               ..   ..   ..       .. .. .. .. .. .. .. .. .. .. .. .. ..   ..       ..   ..   ..
. CAP theorem




                     .    .    .      . . . . . . . . . . . .               .    .        .    .    .
                ..   ..   ..       .. .. .. .. .. .. .. .. .. .. .. .. ..   ..       ..   ..   ..
. CAP theorem



       Consistent, writes are atomic and all subsequent requests
       retrieve the new value




                                                   .    .    .      . . . . . . . . . . . .               .    .        .    .    .
                                              ..   ..   ..       .. .. .. .. .. .. .. .. .. .. .. .. ..   ..       ..   ..   ..
. CAP theorem



       Consistent, writes are atomic and all subsequent requests
       retrieve the new value
       Available, the database will always return a value as long as a
       single server is running




                                                    .    .    .      . . . . . . . . . . . .               .    .        .    .    .
                                               ..   ..   ..       .. .. .. .. .. .. .. .. .. .. .. .. ..   ..       ..   ..   ..
. CAP theorem



       Consistent, writes are atomic and all subsequent requests
       retrieve the new value
       Available, the database will always return a value as long as a
       single server is running
       Partition Tolerant, the system will still function even if server
       communication is temporarily lost—that is, a network
       partition




                                                      .    .    .      . . . . . . . . . . . .               .    .        .    .    .
                                                 ..   ..   ..       .. .. .. .. .. .. .. .. .. .. .. .. ..   ..       ..   ..   ..
. CAP theorem



       Consistent, writes are atomic and all subsequent requests
       retrieve the new value
       Available, the database will always return a value as long as a
       single server is running
       Partition Tolerant, the system will still function even if server
       communication is temporarily lost—that is, a network
       partition
       You can have only two at once.




                                                      .    .    .      . . . . . . . . . . . .               .    .        .    .    .
                                                 ..   ..   ..       .. .. .. .. .. .. .. .. .. .. .. .. ..   ..       ..   ..   ..
. CAP theorem




   Riak picks AP of CAP




                               .    .    .      . . . . . . . . . . . .               .    .        .    .    .
                          ..   ..   ..       .. .. .. .. .. .. .. .. .. .. .. .. ..   ..       ..   ..   ..
. Eventual Consistency



        Distributed databases must be partition tolerant, so the
        choice between availability and consistency can be difficult.
        The real world is eventually consistent and works (mostly) fine
        *Eventual* doesn’t mean minutes, days, or even seconds in
        non-failure cases
        DNS, HTTP with Expires: header
        How you model the real world matters!




                                                     .    .    .      . . . . . . . . . . . .               .    .        .    .    .
                                                ..   ..   ..       .. .. .. .. .. .. .. .. .. .. .. .. ..   ..       ..   ..   ..
. Riak Architecture
    Amazon’s Dynamo architecture
    Distributed, Scalable, No single point of failure
    No transactions; trade strong consistency for eventual consistency




                                                     .    .    .      . . . . . . . . . . . .               .    .        .    .    .
                                                ..   ..   ..       .. .. .. .. .. .. .. .. .. .. .. .. ..   ..       ..   ..   ..
. Simple Key Value data store - Store anything




    Plain text, JSON, or XML to images or video clips—all accessible
    through a simple HTTP interface




                                                    .    .    .      . . . . . . . . . . . .               .    .        .    .    .
                                               ..   ..   ..       .. .. .. .. .. .. .. .. .. .. .. .. ..   ..       ..   ..   ..
. Simple Key Value data store - Store anything




    Plain text, JSON, or XML to images or video clips—all accessible
    through a simple HTTP interface
    Riak KV




                                                    .    .    .      . . . . . . . . . . . .               .    .        .    .    .
                                               ..   ..   ..       .. .. .. .. .. .. .. .. .. .. .. .. ..   ..       ..   ..   ..
. Fault-Tolerant




    Riak is also fault-tolerant. Servers can go up or down at any
    moment with no single point of failure.




                                                      .    .    .      . . . . . . . . . . . .               .    .        .    .    .
                                                 ..   ..   ..       .. .. .. .. .. .. .. .. .. .. .. .. ..   ..       ..   ..   ..
. Riak loves the web




    Query Riak via URLs, headers, and verbs, and Riak returns assets
    and standard HTTP response codes.




                                                    .    .    .      . . . . . . . . . . . .               .    .        .    .    .
                                               ..   ..   ..       .. .. .. .. .. .. .. .. .. .. .. .. ..   ..       ..   ..   ..
. Scalable


      # start 4 nodes

      $   dev/dev1/bin/riak   start
      $   dev/dev2/bin/riak   start
      $   dev/dev3/bin/riak   start
      $   dev/dev4/bin/riak   start

      # scale out
      $ dev/dev2/bin/riak-admin join dev1@127.0.0.1

      # scabe back in
      $ riak-admin leave


                                            .    .    .      . . . . . . . . . . . .               .    .        .    .    .
                                       ..   ..   ..       .. .. .. .. .. .. .. .. .. .. .. .. ..   ..       ..   ..   ..
. Queriablity


    REST API
    Easy quick and dirty
    Map Reduce
    Provide set of starting keys, filter via map
    Map reduce is meant for calulations/ aggregations and not queries.
    Riak Search
    Full text search in Riak
    Opinionated
    Roll out your own indices
    Difficult to get it right
    More code to maintain
    Often introduces SPOFs


                                                     .    .    .      . . . . . . . . . . . .               .    .        .    .    .
                                                ..   ..   ..       .. .. .. .. .. .. .. .. .. .. .. .. ..   ..       ..   ..   ..
. Riak REST API




    Representational state transfer




                                           .    .    .      . . . . . . . . . . . .               .    .        .    .    .
                                      ..   ..   ..       .. .. .. .. .. .. .. .. .. .. .. .. ..   ..       ..   ..   ..
. Riak REST API




    Representational state transfer
    Create Update Read Delete verbs




                                           .    .    .      . . . . . . . . . . . .               .    .        .    .    .
                                      ..   ..   ..       .. .. .. .. .. .. .. .. .. .. .. .. ..   ..       ..   ..   ..
. Riak REST API




    Representational state transfer
    Create Update Read Delete verbs
    Riak and cURL




                                           .    .    .      . . . . . . . . . . . .               .    .        .    .    .
                                      ..   ..   ..       .. .. .. .. .. .. .. .. .. .. .. .. ..   ..       ..   ..   ..
. REST API w/ curl

    $ curl http://localhost:8091/ping
    OK

    # Let’s issue a bad query.
    # -I tells cURL that we want only the header response.

    $ curl -I http://localhost:8091/riak/no_bucket/no_key
    HTTP/1.1 404 Object Not Found
    Server: MochiWeb/1.1 WebMachine/1.7.3 
     (participate in the frantic)
    Date: Thu, 04 Aug 2011 01:25:49 GMT
    Content-Type: text/plain
    Content-Length: 10


                                             .    .    .      . . . . . . . . . . . .               .    .        .    .    .
                                        ..   ..   ..       .. .. .. .. .. .. .. .. .. .. .. .. ..   ..       ..   ..   ..
. Lets PUT something in the DB



    $ curl -v -X PUT http://localhost:8091/riak/favs/db 
    -H "Content-Type: text/html" 
    -d "<html>
          <body>
            <h1>
               My new favorite DB is RIAK
            </h1>
          </body>
       </html>"




                                            .    .    .      . . . . . . . . . . . .               .    .        .    .    .
                                       ..   ..   ..       .. .. .. .. .. .. .. .. .. .. .. .. ..   ..       ..   ..   ..
. Now get it back




    curl -X GET http://localhost:8091/riak/favs/db


    Or just hit the browser




                                            .    .    .      . . . . . . . . . . . .               .    .        .    .    .
                                       ..   ..   ..       .. .. .. .. .. .. .. .. .. .. .. .. ..   ..       ..   ..   ..
. Or POST it

    $ curl -I -X POST http://localhost:8091/riak/animals 
    -H "Content-Type: application/json" 
    -d '{
          "nickname" : "Sergeant Stubby",
          "breed" : "Terrier"
        }'

    HTTP/1.1 201 Created
    Vary: Accept-Encoding
    Server: MochiWeb/1.1 WebMachine/1.7.3 
    (participate in the frantic)
    Location: /riak/animals/6VZc2o7zKxq2B34kJrm1S0ma3PO
    Date: Tue, 05 Apr 2011 07:45:33 GMT
    Content-Type: application/json
    Content-Length: 0
                                             .    .    .      . . . . . . . . . . . .               .    .        .    .    .
                                        ..   ..   ..       .. .. .. .. .. .. .. .. .. .. .. .. ..   ..       ..   ..   ..
. Dump anything
     curl -X PUT HTTP://127.0.0.1:8091/riak/images/1.jpg 
     -H "Content-type: image/jpeg" 
     --data-binary @image_name.jpg




                                            .    .    .      . . . . . . . . . . . .               .    .        .    .    .
                                       ..   ..   ..       .. .. .. .. .. .. .. .. .. .. .. .. ..   ..       ..   ..   ..
. Or DELETE it


    $ curl -I -X DELETE http://localhost:8091/riak/ 
          animals/6VZc2o7zKxq2B34kJrm1S0ma3PO

    HTTP/1.1 204 No Content
    Vary: Accept-Encoding
    Server: MochiWeb/1.1 WebMachine/1.7.3 
     (participate in the frantic)
    Date: Mon, 11 Apr 2011 05:08:39 GMT
    Content-Type: application/x-www-form-urlencoded
    Content-Length: 0

    DELETE won’t return any body, but the HTTP code will be 204 if
    successful. Otherwise, as you’d expect, it returns a 404.

                                                  .    .    .      . . . . . . . . . . . .               .    .        .    .    .
                                             ..   ..   ..       .. .. .. .. .. .. .. .. .. .. .. .. ..   ..       ..   ..   ..
. Map Reduce




   Google :)
   *large* data sets
   Functional Programming
   Apache Hadoop
   Why C suck here




                                 .    .    .      . . . . . . . . . . . .               .    .        .    .    .
                            ..   ..   ..       .. .. .. .. .. .. .. .. .. .. .. .. ..   ..       ..   ..   ..
. The tldr; version


    MapReduce is a framework for processing embarrassingly parallel
    problems across huge datasets using a large number of computers
    (nodes), collectively referred to as a cluster (if all nodes are on the
    same local network and use similar hardware) or a grid (if the
    nodes are shared across geographically and administratively
    distributed systems, and use more heterogenous hardware).
    Computational processing can occur on data stored either in a
    filesystem (unstructured) or in a database (structured).
    MapReduce can take advantage of locality of data, processing data
    on or near the storage assets to decrease transmission of data.




                                                        .    .    .      . . . . . . . . . . . .               .    .        .    .    .
                                                   ..   ..   ..       .. .. .. .. .. .. .. .. .. .. .. .. ..   ..       ..   ..   ..
. Map




   ”Map” step: The master node takes the input, divides it into
   smaller sub-problems, and distributes them to worker nodes. A
   worker node may do this again in turn, leading to a multi-level tree
   structure. The worker node processes the smaller problem, and
   passes the answer back to its master node.




                                                     .    .    .      . . . . . . . . . . . .               .    .        .    .    .
                                                ..   ..   ..       .. .. .. .. .. .. .. .. .. .. .. .. ..   ..       ..   ..   ..
. Reduce




    ”Reduce” step: The master node then collects the answers to all
    the sub-problems and combines them in some way to form the
    output – the answer to the problem it was originally trying to solve.




                                                       .    .    .      . . . . . . . . . . . .               .    .        .    .    .
                                                  ..   ..   ..       .. .. .. .. .. .. .. .. .. .. .. .. ..   ..       ..   ..   ..
. JSON
   {
         "name": "John Smith",
         "age": 25,
         "address": {
             "streetAddress": "21 2nd Street",
             "city": "New York"
             "postalCode": "10021"
         },
         "phoneNumber": [
             {
                 "type": "home",
                 "number": "212 555-1234"
             },
             {
                 "type": "fax",
                 "number": "646 555-4567"
             }
         ]
   }                                        ..
                                                 .
                                                 ..
                                                      .
                                                      ..
                                                           .      . . . . . . . . . . . .
                                                               .. .. .. .. .. .. .. .. .. .. .. .. ..
                                                                                                        .
                                                                                                        ..
                                                                                                             .
                                                                                                                 ..
                                                                                                                      .
                                                                                                                      ..
                                                                                                                           .
                                                                                                                           ..
                                                                                                                                .
. Map


   The Riak way

   function (v) {
       return [v.phoneNumber];
   }

   The couchDB way

   function (v) {
       emit("phone", v.phoneNumber);
   }



                                            .    .    .      . . . . . . . . . . . .               .    .        .    .    .
                                       ..   ..   ..       .. .. .. .. .. .. .. .. .. .. .. .. ..   ..       ..   ..   ..
. Riak Search




    ...




                     .    .    .      . . . . . . . . . . . .               .    .        .    .    .
                ..   ..   ..       .. .. .. .. .. .. .. .. .. .. .. .. ..   ..       ..   ..   ..
. Riak Secondary Indices




    ...




                                .    .    .      . . . . . . . . . . . .               .    .        .    .    .
                           ..   ..   ..       .. .. .. .. .. .. .. .. .. .. .. .. ..   ..       ..   ..   ..
. Riak …




    Written in : Erlang & C, some Javascript




                                                    .    .    .      . . . . . . . . . . . .               .    .        .    .    .
                                               ..   ..   ..       .. .. .. .. .. .. .. .. .. .. .. .. ..   ..       ..   ..   ..
. Riak …




    Protocol: HTTP/REST or custom binary




                                                .    .    .      . . . . . . . . . . . .               .    .        .    .    .
                                           ..   ..   ..       .. .. .. .. .. .. .. .. .. .. .. .. ..   ..       ..   ..   ..
. Riak …




    Tunable trade-offs for distribution and replication (N, R, W)




                                                     .    .    .      . . . . . . . . . . . .               .    .        .    .    .
                                                ..   ..   ..       .. .. .. .. .. .. .. .. .. .. .. .. ..   ..       ..   ..   ..
. Riak …




    Pre - and post-commit hooks in JavaScript or Erlang, for
    validation and security.




                                                    .    .    .      . . . . . . . . . . . .               .    .        .    .    .
                                               ..   ..   ..       .. .. .. .. .. .. .. .. .. .. .. .. ..   ..       ..   ..   ..
. Riak …




    Map/reduce in JavaScript or Erlang




                                              .    .    .      . . . . . . . . . . . .               .    .        .    .    .
                                         ..   ..   ..       .. .. .. .. .. .. .. .. .. .. .. .. ..   ..       ..   ..   ..
. Riak …




    Links & link walking: use it as a graph database




                                                     .    .    .      . . . . . . . . . . . .               .    .        .    .    .
                                                ..   ..   ..       .. .. .. .. .. .. .. .. .. .. .. .. ..   ..       ..   ..   ..
. Riak …




    Secondary indices: but only one at once Large object support
    (Luwak)




                                                    .    .    .      . . . . . . . . . . . .               .    .        .    .    .
                                               ..   ..   ..       .. .. .. .. .. .. .. .. .. .. .. .. ..   ..       ..   ..   ..
. Riak …




    Comes in ”open source” and ”enterprise” editions




                                                    .    .    .      . . . . . . . . . . . .               .    .        .    .    .
                                               ..   ..   ..       .. .. .. .. .. .. .. .. .. .. .. .. ..   ..       ..   ..   ..
. Riak …




    Full-text search, indexing, querying with Riak …Search server (beta)




                                                      .    .    .      . . . . . . . . . . . .               .    .        .    .    .
                                                 ..   ..   ..       .. .. .. .. .. .. .. .. .. .. .. .. ..   ..       ..   ..   ..
. Riak …




    In the process of migrating the storing backend from ”Bitcask” to
    Google ”LevelDB”




                                                     .    .    .      . . . . . . . . . . . .               .    .        .    .    .
                                                ..   ..   ..       .. .. .. .. .. .. .. .. .. .. .. .. ..   ..       ..   ..   ..
. Riak …




    Masterless multi-site replication replication and SNMP monitoring
    are commercially licensed




                                                     .    .    .      . . . . . . . . . . . .               .    .        .    .    .
                                                ..   ..   ..       .. .. .. .. .. .. .. .. .. .. .. .. ..   ..       ..   ..   ..
. Riak …




    Best used: If you want something Cassandra-like (Dynamo-like),
    but no way you’re gonna deal with the bloat and complexity. If you
    need very good single-site scalability, availability and
    fault-tolerance, but you’re ready to pay for multi-site replication.




                                                      .    .    .      . . . . . . . . . . . .               .    .        .    .    .
                                                 ..   ..   ..       .. .. .. .. .. .. .. .. .. .. .. .. ..   ..       ..   ..   ..
. Riak …




    For example: Point-of-sales data collection. Factory control
    systems. Places where even seconds of downtime hurt. Could be
    used as a well-update-able web server.




                                                   .    .    .      . . . . . . . . . . . .               .    .        .    .    .
                                              ..   ..   ..       .. .. .. .. .. .. .. .. .. .. .. .. ..   ..       ..   ..   ..
. Review



       Multi-node Clustering
       MapReduce Processing
       Integrated Full-Text Search
       Secondary Indexing
       Masterless Multi-Site Replication
       Large Object Support
       Implementation
       Architecture




                                                .    .    .      . . . . . . . . . . . .               .    .        .    .    .
                                           ..   ..   ..       .. .. .. .. .. .. .. .. .. .. .. .. ..   ..       ..   ..   ..
. Why use Riak




    Scalable
    Riak is built so you can add more capacity as your app or platform
    grows. When you add new machines, Riak distributes data
    automatically around the cluster with no downtime and a
    near-linear increase in performance and throughput




                                                     .    .    .      . . . . . . . . . . . .               .    .        .    .    .
                                                ..   ..   ..       .. .. .. .. .. .. .. .. .. .. .. .. ..   ..       ..   ..   ..
. Why use Riak




    Simple Ops
    Riak is the most boring database you’ll ever run in production. No
    sharding required, just horizontal scaling and straight-forward
    capacity planning. The same operational tasks apply to small
    clusters and large clusters. More machines does not mean more
    ops.




                                                     .    .    .      . . . . . . . . . . . .               .    .        .    .    .
                                                ..   ..   ..       .. .. .. .. .. .. .. .. .. .. .. .. ..   ..       ..   ..   ..
. Why use Riak




    Masterless
    A Riak cluster is masterless. No node is special and any node can
    handle requests for any other node in the cluster. All requests to
    Riak happen concurrently and developers don’t have to spend time
    worrying about read/write locks or single points of failure.




                                                     .    .    .      . . . . . . . . . . . .               .    .        .    .    .
                                                ..   ..   ..       .. .. .. .. .. .. .. .. .. .. .. .. ..   ..       ..   ..   ..
. Why use Riak




    Fault Tolerant
    Decide how many replicas of the data you want (start at 3). If
    nodes go down, requests are routed transparently to other nodes.
    Riak uses proven architectural principles like hinted handoff and
    read repair so you can always write and read data, even in failure
    conditions.




                                                      .    .    .      . . . . . . . . . . . .               .    .        .    .    .
                                                 ..   ..   ..       .. .. .. .. .. .. .. .. .. .. .. .. ..   ..       ..   ..   ..
. Why use Riak




    Complex Queries
    In addition to key/value access to your data, Riak has built-in
    support for MapReduce, Full Text Search, and Secondary Indexes,
    giving developers various ways to store and query their data.




                                                   .    .    .      . . . . . . . . . . . .               .    .        .    .    .
                                              ..   ..   ..       .. .. .. .. .. .. .. .. .. .. .. .. ..   ..       ..   ..   ..
. Why use Riak




    Flexible APIs
    Riak is equipped with fully-featured HTTP and Protocol Buffers
    APIs, with support for both of these transports in all of our
    supported client libraries. You can also write your own client layer
    to wrap our APIs if your use case or preference calls for it.




                                                       .    .    .      . . . . . . . . . . . .               .    .        .    .    .
                                                  ..   ..   ..       .. .. .. .. .. .. .. .. .. .. .. .. ..   ..       ..   ..   ..
. Why use Riak




    1000s of Users
    Comcast, Yammer, Voxer, Boeing, BestBuy, SEOMoz, Joyent,
    Kiip, DotCloud, Formspring, GitHub, and the Danish Government
    are just a few of the thousands of startups and enterprises that
    have deployed Riak.




                                                    .    .    .      . . . . . . . . . . . .               .    .        .    .    .
                                               ..   ..   ..       .. .. .. .. .. .. .. .. .. .. .. .. ..   ..       ..   ..   ..
. Who uses it and why?



       github   git.io
     comcast    Internal object storage
     yammer     Notifications
     DISQUS     analytics
         AOL    1.5 billion data objects per day
      Mozilla   User reviews


    joyent, best buy …




                                                        .    .    .      . . . . . . . . . . . .               .    .        .    .    .
                                                   ..   ..   ..       .. .. .. .. .. .. .. .. .. .. .. .. ..   ..       ..   ..   ..
. Why use Riak




    Language Support
    Basho and the Riak Community maintain libraries for most major
    languages including Java, Node.js, Python, Ruby, PHP, C/C++,
    and many more. All the client code, like the core Riak code, is
    available on GitHub.




                                                    .    .    .      . . . . . . . . . . . .               .    .        .    .    .
                                               ..   ..   ..       .. .. .. .. .. .. .. .. .. .. .. .. ..   ..       ..   ..   ..
. Why use Riak




    Powerful Community
    The Riak community is composed of smart, passionate hackers
    who are contributing code, support, and evangelism every day.
    There are hundreds of companies and individuals testing, breaking,
    running, and building Riak.




                                                     .    .    .      . . . . . . . . . . . .               .    .        .    .    .
                                                ..   ..   ..       .. .. .. .. .. .. .. .. .. .. .. .. ..   ..       ..   ..   ..
Questions?




                  .    .    .      . . . . . . . . . . . .               .    .        .    .    .
             ..   ..   ..       .. .. .. .. .. .. .. .. .. .. .. .. ..   ..       ..   ..   ..

More Related Content

What's hot

Pragmatic.bookshelf.pragmatic.ajax.a.web.2.0.primer.apr.2006
Pragmatic.bookshelf.pragmatic.ajax.a.web.2.0.primer.apr.2006Pragmatic.bookshelf.pragmatic.ajax.a.web.2.0.primer.apr.2006
Pragmatic.bookshelf.pragmatic.ajax.a.web.2.0.primer.apr.2006ngotuananh
 
Lesson in electric circuits v3
Lesson in electric circuits v3Lesson in electric circuits v3
Lesson in electric circuits v3ayalewtfr
 
Metatron Technology Consulting 's MySQL to PostgreSQL ...
Metatron Technology Consulting 's MySQL to PostgreSQL ...Metatron Technology Consulting 's MySQL to PostgreSQL ...
Metatron Technology Consulting 's MySQL to PostgreSQL ...webhostingguy
 
Apache Cassandra Multi-Datacenter Essentials (Julien Anguenot, iLand Internet...
Apache Cassandra Multi-Datacenter Essentials (Julien Anguenot, iLand Internet...Apache Cassandra Multi-Datacenter Essentials (Julien Anguenot, iLand Internet...
Apache Cassandra Multi-Datacenter Essentials (Julien Anguenot, iLand Internet...DataStax
 
Understanding Data Consistency in Apache Cassandra
Understanding Data Consistency in Apache CassandraUnderstanding Data Consistency in Apache Cassandra
Understanding Data Consistency in Apache CassandraDataStax
 
Cassandra concepts, patterns and anti-patterns
Cassandra concepts, patterns and anti-patternsCassandra concepts, patterns and anti-patterns
Cassandra concepts, patterns and anti-patternsDave Gardner
 

What's hot (7)

Pragmatic.bookshelf.pragmatic.ajax.a.web.2.0.primer.apr.2006
Pragmatic.bookshelf.pragmatic.ajax.a.web.2.0.primer.apr.2006Pragmatic.bookshelf.pragmatic.ajax.a.web.2.0.primer.apr.2006
Pragmatic.bookshelf.pragmatic.ajax.a.web.2.0.primer.apr.2006
 
Lesson in electric circuits v3
Lesson in electric circuits v3Lesson in electric circuits v3
Lesson in electric circuits v3
 
Cold Hard Cache
Cold Hard CacheCold Hard Cache
Cold Hard Cache
 
Metatron Technology Consulting 's MySQL to PostgreSQL ...
Metatron Technology Consulting 's MySQL to PostgreSQL ...Metatron Technology Consulting 's MySQL to PostgreSQL ...
Metatron Technology Consulting 's MySQL to PostgreSQL ...
 
Apache Cassandra Multi-Datacenter Essentials (Julien Anguenot, iLand Internet...
Apache Cassandra Multi-Datacenter Essentials (Julien Anguenot, iLand Internet...Apache Cassandra Multi-Datacenter Essentials (Julien Anguenot, iLand Internet...
Apache Cassandra Multi-Datacenter Essentials (Julien Anguenot, iLand Internet...
 
Understanding Data Consistency in Apache Cassandra
Understanding Data Consistency in Apache CassandraUnderstanding Data Consistency in Apache Cassandra
Understanding Data Consistency in Apache Cassandra
 
Cassandra concepts, patterns and anti-patterns
Cassandra concepts, patterns and anti-patternsCassandra concepts, patterns and anti-patterns
Cassandra concepts, patterns and anti-patterns
 

Viewers also liked

Introducing Riak
Introducing RiakIntroducing Riak
Introducing RiakKevin Smith
 
Counters with Riak on Amazon EC2 at Hackover
Counters with Riak on Amazon EC2 at HackoverCounters with Riak on Amazon EC2 at Hackover
Counters with Riak on Amazon EC2 at HackoverAndrei Savu
 
Supervisord, The Process Manager
Supervisord, The Process ManagerSupervisord, The Process Manager
Supervisord, The Process Managersamof76
 
Riak a successful failure
Riak   a successful failureRiak   a successful failure
Riak a successful failureGiltTech
 
Riak - From Small to Large
Riak - From Small to LargeRiak - From Small to Large
Riak - From Small to LargeRusty Klophaus
 
Distributed Key-Value Stores- Featuring Riak
Distributed Key-Value Stores- Featuring RiakDistributed Key-Value Stores- Featuring Riak
Distributed Key-Value Stores- Featuring Riaksamof76
 
Riak in Ten Minutes
Riak in Ten MinutesRiak in Ten Minutes
Riak in Ten MinutesJon Meredith
 
Introduction to Riak - Red Dirt Ruby Conf Training
Introduction to Riak - Red Dirt Ruby Conf TrainingIntroduction to Riak - Red Dirt Ruby Conf Training
Introduction to Riak - Red Dirt Ruby Conf TrainingSean Cribbs
 
Tele3113 wk2tue
Tele3113 wk2tueTele3113 wk2tue
Tele3113 wk2tueVin Voro
 
Paczka ciasteczek
Paczka ciasteczekPaczka ciasteczek
Paczka ciasteczekderus19
 
Getting Started
Getting StartedGetting Started
Getting StartedDiveon
 
Future of cities meda city congress november 2012
Future of cities   meda city congress november 2012Future of cities   meda city congress november 2012
Future of cities meda city congress november 2012Alain Jordà
 
Ennio Ciriolo - Chi gioca con la nostra storia?
Ennio Ciriolo - Chi gioca con la nostra storia?Ennio Ciriolo - Chi gioca con la nostra storia?
Ennio Ciriolo - Chi gioca con la nostra storia?enniociriolo
 
dMT SPC Presentation Products-engl.
dMT SPC Presentation Products-engl.dMT SPC Presentation Products-engl.
dMT SPC Presentation Products-engl.dmtgms
 
Dia de-la-energia2013-Ramon Espinasa
Dia de-la-energia2013-Ramon EspinasaDia de-la-energia2013-Ramon Espinasa
Dia de-la-energia2013-Ramon EspinasaReporte Energía
 
Social Media for NFP
Social Media for NFPSocial Media for NFP
Social Media for NFPwebAssistca
 
Tele4653 l6
Tele4653 l6Tele4653 l6
Tele4653 l6Vin Voro
 
http://accountants.inboxhilllocalarea.com/
http://accountants.inboxhilllocalarea.com/http://accountants.inboxhilllocalarea.com/
http://accountants.inboxhilllocalarea.com/accountantsbh
 
আত্ম সচেতনতা অর্জনের সূত্র
আত্ম সচেতনতা অর্জনের সূত্র আত্ম সচেতনতা অর্জনের সূত্র
আত্ম সচেতনতা অর্জনের সূত্র Abul Bashar
 

Viewers also liked (20)

Introducing Riak
Introducing RiakIntroducing Riak
Introducing Riak
 
Counters with Riak on Amazon EC2 at Hackover
Counters with Riak on Amazon EC2 at HackoverCounters with Riak on Amazon EC2 at Hackover
Counters with Riak on Amazon EC2 at Hackover
 
Supervisord, The Process Manager
Supervisord, The Process ManagerSupervisord, The Process Manager
Supervisord, The Process Manager
 
Riak a successful failure
Riak   a successful failureRiak   a successful failure
Riak a successful failure
 
Riak - From Small to Large
Riak - From Small to LargeRiak - From Small to Large
Riak - From Small to Large
 
Distributed Key-Value Stores- Featuring Riak
Distributed Key-Value Stores- Featuring RiakDistributed Key-Value Stores- Featuring Riak
Distributed Key-Value Stores- Featuring Riak
 
Riak in Ten Minutes
Riak in Ten MinutesRiak in Ten Minutes
Riak in Ten Minutes
 
Relational Databases to Riak
Relational Databases to RiakRelational Databases to Riak
Relational Databases to Riak
 
Introduction to Riak - Red Dirt Ruby Conf Training
Introduction to Riak - Red Dirt Ruby Conf TrainingIntroduction to Riak - Red Dirt Ruby Conf Training
Introduction to Riak - Red Dirt Ruby Conf Training
 
Tele3113 wk2tue
Tele3113 wk2tueTele3113 wk2tue
Tele3113 wk2tue
 
Paczka ciasteczek
Paczka ciasteczekPaczka ciasteczek
Paczka ciasteczek
 
Getting Started
Getting StartedGetting Started
Getting Started
 
Future of cities meda city congress november 2012
Future of cities   meda city congress november 2012Future of cities   meda city congress november 2012
Future of cities meda city congress november 2012
 
Ennio Ciriolo - Chi gioca con la nostra storia?
Ennio Ciriolo - Chi gioca con la nostra storia?Ennio Ciriolo - Chi gioca con la nostra storia?
Ennio Ciriolo - Chi gioca con la nostra storia?
 
dMT SPC Presentation Products-engl.
dMT SPC Presentation Products-engl.dMT SPC Presentation Products-engl.
dMT SPC Presentation Products-engl.
 
Dia de-la-energia2013-Ramon Espinasa
Dia de-la-energia2013-Ramon EspinasaDia de-la-energia2013-Ramon Espinasa
Dia de-la-energia2013-Ramon Espinasa
 
Social Media for NFP
Social Media for NFPSocial Media for NFP
Social Media for NFP
 
Tele4653 l6
Tele4653 l6Tele4653 l6
Tele4653 l6
 
http://accountants.inboxhilllocalarea.com/
http://accountants.inboxhilllocalarea.com/http://accountants.inboxhilllocalarea.com/
http://accountants.inboxhilllocalarea.com/
 
আত্ম সচেতনতা অর্জনের সূত্র
আত্ম সচেতনতা অর্জনের সূত্র আত্ম সচেতনতা অর্জনের সূত্র
আত্ম সচেতনতা অর্জনের সূত্র
 

Similar to Intro to riak

Ibm system storage solutions handbook
Ibm system storage solutions handbook Ibm system storage solutions handbook
Ibm system storage solutions handbook Diego Alberto Tamayo
 
Performance tuning for ibm tivoli directory server redp4258
Performance tuning for ibm tivoli directory server   redp4258Performance tuning for ibm tivoli directory server   redp4258
Performance tuning for ibm tivoli directory server redp4258Banking at Ho Chi Minh city
 
Expert oracle database architecture
Expert oracle database architectureExpert oracle database architecture
Expert oracle database architectureairy6548
 
Db2 v9 admin guide z os
Db2 v9 admin guide z osDb2 v9 admin guide z os
Db2 v9 admin guide z osLeo Goicochea
 
Optimizing oracle-on-sun-cmt-platform
Optimizing oracle-on-sun-cmt-platformOptimizing oracle-on-sun-cmt-platform
Optimizing oracle-on-sun-cmt-platformSal Marcus
 
Tape automation with ibm e server xseries servers redp0415
Tape automation with ibm e server xseries servers redp0415Tape automation with ibm e server xseries servers redp0415
Tape automation with ibm e server xseries servers redp0415Banking at Ho Chi Minh city
 
Ref arch for ve sg248155
Ref arch for ve sg248155Ref arch for ve sg248155
Ref arch for ve sg248155Accenture
 
46061598 xml-data-exchange-using-abap
46061598 xml-data-exchange-using-abap46061598 xml-data-exchange-using-abap
46061598 xml-data-exchange-using-abapGerda_Meier
 
IBM Flex System Networking in an Enterprise Data Center
IBM Flex System Networking in an Enterprise Data CenterIBM Flex System Networking in an Enterprise Data Center
IBM Flex System Networking in an Enterprise Data CenterIBM India Smarter Computing
 
Integrating ibm db2 with the ibm system storage n series sg247329
Integrating ibm db2 with the ibm system storage n series sg247329Integrating ibm db2 with the ibm system storage n series sg247329
Integrating ibm db2 with the ibm system storage n series sg247329Banking at Ho Chi Minh city
 
Integrating ibm db2 with the ibm system storage n series sg247329
Integrating ibm db2 with the ibm system storage n series sg247329Integrating ibm db2 with the ibm system storage n series sg247329
Integrating ibm db2 with the ibm system storage n series sg247329Banking at Ho Chi Minh city
 
RDB Synchronization, Transcoding and LDAP Directory Services ...
RDB Synchronization, Transcoding and LDAP Directory Services ...RDB Synchronization, Transcoding and LDAP Directory Services ...
RDB Synchronization, Transcoding and LDAP Directory Services ...Videoguy
 
Experiences with oracle 10g database for linux on z series sg246482
Experiences with oracle 10g database for linux on z series sg246482Experiences with oracle 10g database for linux on z series sg246482
Experiences with oracle 10g database for linux on z series sg246482Banking at Ho Chi Minh city
 
Zimbra guide admin_anglais_uniquement
Zimbra guide admin_anglais_uniquementZimbra guide admin_anglais_uniquement
Zimbra guide admin_anglais_uniquementchiensy
 
irmpg_3.7_python_202301.pdf
irmpg_3.7_python_202301.pdfirmpg_3.7_python_202301.pdf
irmpg_3.7_python_202301.pdfFernandoBello39
 
DB2 10 for Linux on System z Using z/VM v6.2, Single System Image Clusters an...
DB2 10 for Linux on System z Using z/VM v6.2, Single System Image Clusters an...DB2 10 for Linux on System z Using z/VM v6.2, Single System Image Clusters an...
DB2 10 for Linux on System z Using z/VM v6.2, Single System Image Clusters an...IBM India Smarter Computing
 

Similar to Intro to riak (20)

Ibm system storage solutions handbook
Ibm system storage solutions handbook Ibm system storage solutions handbook
Ibm system storage solutions handbook
 
Performance tuning for ibm tivoli directory server redp4258
Performance tuning for ibm tivoli directory server   redp4258Performance tuning for ibm tivoli directory server   redp4258
Performance tuning for ibm tivoli directory server redp4258
 
Expert oracle database architecture
Expert oracle database architectureExpert oracle database architecture
Expert oracle database architecture
 
Sap In-Memory IBM
Sap In-Memory IBMSap In-Memory IBM
Sap In-Memory IBM
 
Db2 v9 admin guide z os
Db2 v9 admin guide z osDb2 v9 admin guide z os
Db2 v9 admin guide z os
 
R data
R dataR data
R data
 
Optimizing oracle-on-sun-cmt-platform
Optimizing oracle-on-sun-cmt-platformOptimizing oracle-on-sun-cmt-platform
Optimizing oracle-on-sun-cmt-platform
 
Tape automation with ibm e server xseries servers redp0415
Tape automation with ibm e server xseries servers redp0415Tape automation with ibm e server xseries servers redp0415
Tape automation with ibm e server xseries servers redp0415
 
Ref arch for ve sg248155
Ref arch for ve sg248155Ref arch for ve sg248155
Ref arch for ve sg248155
 
46061598 xml-data-exchange-using-abap
46061598 xml-data-exchange-using-abap46061598 xml-data-exchange-using-abap
46061598 xml-data-exchange-using-abap
 
IBM Flex System Networking in an Enterprise Data Center
IBM Flex System Networking in an Enterprise Data CenterIBM Flex System Networking in an Enterprise Data Center
IBM Flex System Networking in an Enterprise Data Center
 
SAP In-Memory Computing on IBM eX5 Systems
SAP In-Memory Computing on IBM eX5 SystemsSAP In-Memory Computing on IBM eX5 Systems
SAP In-Memory Computing on IBM eX5 Systems
 
Integrating ibm db2 with the ibm system storage n series sg247329
Integrating ibm db2 with the ibm system storage n series sg247329Integrating ibm db2 with the ibm system storage n series sg247329
Integrating ibm db2 with the ibm system storage n series sg247329
 
Integrating ibm db2 with the ibm system storage n series sg247329
Integrating ibm db2 with the ibm system storage n series sg247329Integrating ibm db2 with the ibm system storage n series sg247329
Integrating ibm db2 with the ibm system storage n series sg247329
 
RDB Synchronization, Transcoding and LDAP Directory Services ...
RDB Synchronization, Transcoding and LDAP Directory Services ...RDB Synchronization, Transcoding and LDAP Directory Services ...
RDB Synchronization, Transcoding and LDAP Directory Services ...
 
Experiences with oracle 10g database for linux on z series sg246482
Experiences with oracle 10g database for linux on z series sg246482Experiences with oracle 10g database for linux on z series sg246482
Experiences with oracle 10g database for linux on z series sg246482
 
Zimbra guide admin_anglais_uniquement
Zimbra guide admin_anglais_uniquementZimbra guide admin_anglais_uniquement
Zimbra guide admin_anglais_uniquement
 
irmpg_3.7_python_202301.pdf
irmpg_3.7_python_202301.pdfirmpg_3.7_python_202301.pdf
irmpg_3.7_python_202301.pdf
 
pyspark.pdf
pyspark.pdfpyspark.pdf
pyspark.pdf
 
DB2 10 for Linux on System z Using z/VM v6.2, Single System Image Clusters an...
DB2 10 for Linux on System z Using z/VM v6.2, Single System Image Clusters an...DB2 10 for Linux on System z Using z/VM v6.2, Single System Image Clusters an...
DB2 10 for Linux on System z Using z/VM v6.2, Single System Image Clusters an...
 

Recently uploaded

Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 

Recently uploaded (20)

Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 

Intro to riak

  • 1. . Distributed computation on dynamo-style distributed storage: Riak pipe . An introduction to Riak Jaseem Abid September 19, 2012 . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
  • 2. . Riak . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
  • 3. . What is Riak ? Riak is an open source, distributed NoSQL database implementing the principles from Amazon’s Dynamo paper. . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
  • 4. . Dynamo Model Riak is a highly available, proprietary key-value structured storage system or a distributed data store. It has properties of both databases and distributed hash tables (DHTs). It is not directly exposed as a web service, but is used to power parts of other Amazon Web Services such as Amazon S3. . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
  • 5. . Dynamo Model Riak is a highly available, proprietary key-value structured storage system or a distributed data store. It has properties of both databases and distributed hash tables (DHTs). It is not directly exposed as a web service, but is used to power parts of other Amazon Web Services such as Amazon S3. . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
  • 6. . Dynamo Model Riak is a highly available, proprietary key-value structured storage system or a distributed data store. It has properties of both databases and distributed hash tables (DHTs). It is not directly exposed as a web service, but is used to power parts of other Amazon Web Services such as Amazon S3. . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
  • 7. . Dynamo Model Riak is a highly available, proprietary key-value structured storage system or a distributed data store. It has properties of both databases and distributed hash tables (DHTs). It is not directly exposed as a web service, but is used to power parts of other Amazon Web Services such as Amazon S3. . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
  • 8. . Dynamo Model Riak is a highly available, proprietary key-value structured storage system or a distributed data store. It has properties of both databases and distributed hash tables (DHTs). It is not directly exposed as a web service, but is used to power parts of other Amazon Web Services such as Amazon S3. Implementations Apache Cassandra Project Voldemort Riak Amazon DynamoDB . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
  • 9. . This talk Front Matter Dynamo (and NoSQL) are nothing new Much of Dynamo was invented > 10 years ago Dynamo chooses AP of CAP This talk will focus on properties of Dynamo-inspired systems (Riak, Cassandra, Voldemort) . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
  • 10. . CAP theorem . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
  • 11. . CAP theorem Consistent, writes are atomic and all subsequent requests retrieve the new value . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
  • 12. . CAP theorem Consistent, writes are atomic and all subsequent requests retrieve the new value Available, the database will always return a value as long as a single server is running . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
  • 13. . CAP theorem Consistent, writes are atomic and all subsequent requests retrieve the new value Available, the database will always return a value as long as a single server is running Partition Tolerant, the system will still function even if server communication is temporarily lost—that is, a network partition . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
  • 14. . CAP theorem Consistent, writes are atomic and all subsequent requests retrieve the new value Available, the database will always return a value as long as a single server is running Partition Tolerant, the system will still function even if server communication is temporarily lost—that is, a network partition You can have only two at once. . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
  • 15. . CAP theorem Riak picks AP of CAP . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
  • 16. . Eventual Consistency Distributed databases must be partition tolerant, so the choice between availability and consistency can be difficult. The real world is eventually consistent and works (mostly) fine *Eventual* doesn’t mean minutes, days, or even seconds in non-failure cases DNS, HTTP with Expires: header How you model the real world matters! . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
  • 17. . Riak Architecture Amazon’s Dynamo architecture Distributed, Scalable, No single point of failure No transactions; trade strong consistency for eventual consistency . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
  • 18. . Simple Key Value data store - Store anything Plain text, JSON, or XML to images or video clips—all accessible through a simple HTTP interface . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
  • 19. . Simple Key Value data store - Store anything Plain text, JSON, or XML to images or video clips—all accessible through a simple HTTP interface Riak KV . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
  • 20. . Fault-Tolerant Riak is also fault-tolerant. Servers can go up or down at any moment with no single point of failure. . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
  • 21. . Riak loves the web Query Riak via URLs, headers, and verbs, and Riak returns assets and standard HTTP response codes. . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
  • 22. . Scalable # start 4 nodes $ dev/dev1/bin/riak start $ dev/dev2/bin/riak start $ dev/dev3/bin/riak start $ dev/dev4/bin/riak start # scale out $ dev/dev2/bin/riak-admin join dev1@127.0.0.1 # scabe back in $ riak-admin leave . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
  • 23. . Queriablity REST API Easy quick and dirty Map Reduce Provide set of starting keys, filter via map Map reduce is meant for calulations/ aggregations and not queries. Riak Search Full text search in Riak Opinionated Roll out your own indices Difficult to get it right More code to maintain Often introduces SPOFs . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
  • 24. . Riak REST API Representational state transfer . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
  • 25. . Riak REST API Representational state transfer Create Update Read Delete verbs . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
  • 26. . Riak REST API Representational state transfer Create Update Read Delete verbs Riak and cURL . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
  • 27. . REST API w/ curl $ curl http://localhost:8091/ping OK # Let’s issue a bad query. # -I tells cURL that we want only the header response. $ curl -I http://localhost:8091/riak/no_bucket/no_key HTTP/1.1 404 Object Not Found Server: MochiWeb/1.1 WebMachine/1.7.3 (participate in the frantic) Date: Thu, 04 Aug 2011 01:25:49 GMT Content-Type: text/plain Content-Length: 10 . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
  • 28. . Lets PUT something in the DB $ curl -v -X PUT http://localhost:8091/riak/favs/db -H "Content-Type: text/html" -d "<html> <body> <h1> My new favorite DB is RIAK </h1> </body> </html>" . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
  • 29. . Now get it back curl -X GET http://localhost:8091/riak/favs/db Or just hit the browser . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
  • 30. . Or POST it $ curl -I -X POST http://localhost:8091/riak/animals -H "Content-Type: application/json" -d '{ "nickname" : "Sergeant Stubby", "breed" : "Terrier" }' HTTP/1.1 201 Created Vary: Accept-Encoding Server: MochiWeb/1.1 WebMachine/1.7.3 (participate in the frantic) Location: /riak/animals/6VZc2o7zKxq2B34kJrm1S0ma3PO Date: Tue, 05 Apr 2011 07:45:33 GMT Content-Type: application/json Content-Length: 0 . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
  • 31. . Dump anything curl -X PUT HTTP://127.0.0.1:8091/riak/images/1.jpg -H "Content-type: image/jpeg" --data-binary @image_name.jpg . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
  • 32. . Or DELETE it $ curl -I -X DELETE http://localhost:8091/riak/ animals/6VZc2o7zKxq2B34kJrm1S0ma3PO HTTP/1.1 204 No Content Vary: Accept-Encoding Server: MochiWeb/1.1 WebMachine/1.7.3 (participate in the frantic) Date: Mon, 11 Apr 2011 05:08:39 GMT Content-Type: application/x-www-form-urlencoded Content-Length: 0 DELETE won’t return any body, but the HTTP code will be 204 if successful. Otherwise, as you’d expect, it returns a 404. . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
  • 33. . Map Reduce Google :) *large* data sets Functional Programming Apache Hadoop Why C suck here . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
  • 34. . The tldr; version MapReduce is a framework for processing embarrassingly parallel problems across huge datasets using a large number of computers (nodes), collectively referred to as a cluster (if all nodes are on the same local network and use similar hardware) or a grid (if the nodes are shared across geographically and administratively distributed systems, and use more heterogenous hardware). Computational processing can occur on data stored either in a filesystem (unstructured) or in a database (structured). MapReduce can take advantage of locality of data, processing data on or near the storage assets to decrease transmission of data. . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
  • 35. . Map ”Map” step: The master node takes the input, divides it into smaller sub-problems, and distributes them to worker nodes. A worker node may do this again in turn, leading to a multi-level tree structure. The worker node processes the smaller problem, and passes the answer back to its master node. . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
  • 36. . Reduce ”Reduce” step: The master node then collects the answers to all the sub-problems and combines them in some way to form the output – the answer to the problem it was originally trying to solve. . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
  • 37. . JSON { "name": "John Smith", "age": 25, "address": { "streetAddress": "21 2nd Street", "city": "New York" "postalCode": "10021" }, "phoneNumber": [ { "type": "home", "number": "212 555-1234" }, { "type": "fax", "number": "646 555-4567" } ] } .. . .. . .. . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. . .. . .. . .. . .. .
  • 38. . Map The Riak way function (v) { return [v.phoneNumber]; } The couchDB way function (v) { emit("phone", v.phoneNumber); } . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
  • 39. . Riak Search ... . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
  • 40. . Riak Secondary Indices ... . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
  • 41. . Riak … Written in : Erlang & C, some Javascript . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
  • 42. . Riak … Protocol: HTTP/REST or custom binary . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
  • 43. . Riak … Tunable trade-offs for distribution and replication (N, R, W) . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
  • 44. . Riak … Pre - and post-commit hooks in JavaScript or Erlang, for validation and security. . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
  • 45. . Riak … Map/reduce in JavaScript or Erlang . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
  • 46. . Riak … Links & link walking: use it as a graph database . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
  • 47. . Riak … Secondary indices: but only one at once Large object support (Luwak) . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
  • 48. . Riak … Comes in ”open source” and ”enterprise” editions . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
  • 49. . Riak … Full-text search, indexing, querying with Riak …Search server (beta) . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
  • 50. . Riak … In the process of migrating the storing backend from ”Bitcask” to Google ”LevelDB” . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
  • 51. . Riak … Masterless multi-site replication replication and SNMP monitoring are commercially licensed . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
  • 52. . Riak … Best used: If you want something Cassandra-like (Dynamo-like), but no way you’re gonna deal with the bloat and complexity. If you need very good single-site scalability, availability and fault-tolerance, but you’re ready to pay for multi-site replication. . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
  • 53. . Riak … For example: Point-of-sales data collection. Factory control systems. Places where even seconds of downtime hurt. Could be used as a well-update-able web server. . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
  • 54. . Review Multi-node Clustering MapReduce Processing Integrated Full-Text Search Secondary Indexing Masterless Multi-Site Replication Large Object Support Implementation Architecture . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
  • 55. . Why use Riak Scalable Riak is built so you can add more capacity as your app or platform grows. When you add new machines, Riak distributes data automatically around the cluster with no downtime and a near-linear increase in performance and throughput . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
  • 56. . Why use Riak Simple Ops Riak is the most boring database you’ll ever run in production. No sharding required, just horizontal scaling and straight-forward capacity planning. The same operational tasks apply to small clusters and large clusters. More machines does not mean more ops. . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
  • 57. . Why use Riak Masterless A Riak cluster is masterless. No node is special and any node can handle requests for any other node in the cluster. All requests to Riak happen concurrently and developers don’t have to spend time worrying about read/write locks or single points of failure. . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
  • 58. . Why use Riak Fault Tolerant Decide how many replicas of the data you want (start at 3). If nodes go down, requests are routed transparently to other nodes. Riak uses proven architectural principles like hinted handoff and read repair so you can always write and read data, even in failure conditions. . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
  • 59. . Why use Riak Complex Queries In addition to key/value access to your data, Riak has built-in support for MapReduce, Full Text Search, and Secondary Indexes, giving developers various ways to store and query their data. . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
  • 60. . Why use Riak Flexible APIs Riak is equipped with fully-featured HTTP and Protocol Buffers APIs, with support for both of these transports in all of our supported client libraries. You can also write your own client layer to wrap our APIs if your use case or preference calls for it. . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
  • 61. . Why use Riak 1000s of Users Comcast, Yammer, Voxer, Boeing, BestBuy, SEOMoz, Joyent, Kiip, DotCloud, Formspring, GitHub, and the Danish Government are just a few of the thousands of startups and enterprises that have deployed Riak. . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
  • 62. . Who uses it and why? github git.io comcast Internal object storage yammer Notifications DISQUS analytics AOL 1.5 billion data objects per day Mozilla User reviews joyent, best buy … . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
  • 63. . Why use Riak Language Support Basho and the Riak Community maintain libraries for most major languages including Java, Node.js, Python, Ruby, PHP, C/C++, and many more. All the client code, like the core Riak code, is available on GitHub. . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
  • 64. . Why use Riak Powerful Community The Riak community is composed of smart, passionate hackers who are contributing code, support, and evangelism every day. There are hundreds of companies and individuals testing, breaking, running, and building Riak. . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
  • 65. Questions? . . . . . . . . . . . . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..