SlideShare uma empresa Scribd logo
1 de 77
Baixar para ler offline
Link Walking with Riak (KV)


    Susan Potter / Finsignia




        June 25, 2011
Riak Ecosystem

       Riak
      Search


       Riak
       KV


       Riak
       Core
Riak Ecosystem

       Riak
      Search


       Riak
       KV


       Riak
       Core
Riak Ecosystem

       Riak
      Search


       Riak
       KV


       Riak
       Core
Riak Ecosystem

       Riak
      Search


       Riak
       KV


       Riak
       Core
Riak Ecosystem

       Riak
      Search


       Riak
       KV


       Riak
       Core
% whoami


# curl http://susanpotter.net/whoami/windycitydb2011.json

       •   15 years RDBMS
       •   3-4 years KV databases (CouchDB and now Riak)
       •   1 year Redis
       •   Using graph database in next part of platform
% whoami


# curl http://susanpotter.net/whoami/windycitydb2011.json

       •   15 years RDBMS
       •   3-4 years KV databases (CouchDB and now Riak)
       •   1 year Redis
       •   Using graph database in next part of platform
% whoami


# curl http://susanpotter.net/whoami/windycitydb2011.json

       •   15 years RDBMS
       •   3-4 years KV databases (CouchDB and now Riak)
       •   1 year Redis
       •   Using graph database in next part of platform
% whoami


# curl http://susanpotter.net/whoami/windycitydb2011.json

       •   15 years RDBMS
       •   3-4 years KV databases (CouchDB and now Riak)
       •   1 year Redis
       •   Using graph database in next part of platform
Scope of Talk


    •   Problem Domain      •   not Consistent Hashing or DHTs
    •   Linking Objects     •   not Vector Clocks
    •   Traversing Links    •   not Gossip Protocol
    •   Link Maintainence   •   not Hinted Handoff
                            •   not Read Repair
                            •   not Eventual Consistency
Scope of Talk


    •   Problem Domain      •   not Consistent Hashing or DHTs
    •   Linking Objects     •   not Vector Clocks
    •   Traversing Links    •   not Gossip Protocol
    •   Link Maintainence   •   not Hinted Handoff
                            •   not Read Repair
                            •   not Eventual Consistency
Scope of Talk


    •   Problem Domain      •   not Consistent Hashing or DHTs
    •   Linking Objects     •   not Vector Clocks
    •   Traversing Links    •   not Gossip Protocol
    •   Link Maintainence   •   not Hinted Handoff
                            •   not Read Repair
                            •   not Eventual Consistency
Scope of Talk


    •   Problem Domain      •   not Consistent Hashing or DHTs
    •   Linking Objects     •   not Vector Clocks
    •   Traversing Links    •   not Gossip Protocol
    •   Link Maintainence   •   not Hinted Handoff
                            •   not Read Repair
                            •   not Eventual Consistency
Scope of Talk


    •   Problem Domain      •   not Consistent Hashing or DHTs
    •   Linking Objects     •   not Vector Clocks
    •   Traversing Links    •   not Gossip Protocol
    •   Link Maintainence   •   not Hinted Handoff
                            •   not Read Repair
                            •   not Eventual Consistency
Scope of Talk


    •   Problem Domain      •   not Consistent Hashing or DHTs
    •   Linking Objects     •   not Vector Clocks
    •   Traversing Links    •   not Gossip Protocol
    •   Link Maintainence   •   not Hinted Handoff
                            •   not Read Repair
                            •   not Eventual Consistency
Scope of Talk


    •   Problem Domain      •   not Consistent Hashing or DHTs
    •   Linking Objects     •   not Vector Clocks
    •   Traversing Links    •   not Gossip Protocol
    •   Link Maintainence   •   not Hinted Handoff
                            •   not Read Repair
                            •   not Eventual Consistency
Scope of Talk


    •   Problem Domain      •   not Consistent Hashing or DHTs
    •   Linking Objects     •   not Vector Clocks
    •   Traversing Links    •   not Gossip Protocol
    •   Link Maintainence   •   not Hinted Handoff
                            •   not Read Repair
                            •   not Eventual Consistency
Scope of Talk


    •   Problem Domain      •   not Consistent Hashing or DHTs
    •   Linking Objects     •   not Vector Clocks
    •   Traversing Links    •   not Gossip Protocol
    •   Link Maintainence   •   not Hinted Handoff
                            •   not Read Repair
                            •   not Eventual Consistency
Scope of Talk


    •   Problem Domain      •   not Consistent Hashing or DHTs
    •   Linking Objects     •   not Vector Clocks
    •   Traversing Links    •   not Gossip Protocol
    •   Link Maintainence   •   not Hinted Handoff
                            •   not Read Repair
                            •   not Eventual Consistency
Problem Domain
Problem Domain
Linking[1/2]


curl -X PUT -H ’Content-type: text/json’
-H ’Link: </riak/artist/Lady-Gaga>; riaktag=“performer”’
-H ’Link: </riak/artist/DJ-Snake>; riaktag=“producer”’
-H ’Link: </riak/artist/DJ-White-Shadow>; riaktag=“producer”’
...
-H ’Link: </riak/artist/Fernando-Garibay>; riaktag=“producer”’
 http://host:8098/riak/album/Born-This-Way
 data ...
Linking[1/2]


curl -X PUT -H ’Content-type: text/json’
-H ’Link: </riak/artist/Lady-Gaga>; riaktag=“performer”’
-H ’Link: </riak/artist/DJ-Snake>; riaktag=“producer”’
-H ’Link: </riak/artist/DJ-White-Shadow>; riaktag=“producer”’
...
-H ’Link: </riak/artist/Fernando-Garibay>; riaktag=“producer”’
 http://host:8098/riak/album/Born-This-Way
 data ...
Linking[1/2]


curl -X PUT -H ’Content-type: text/json’
-H ’Link: </riak/artist/Lady-Gaga>; riaktag=“performer”’
-H ’Link: </riak/artist/DJ-Snake>; riaktag=“producer”’
-H ’Link: </riak/artist/DJ-White-Shadow>; riaktag=“producer”’
...
-H ’Link: </riak/artist/Fernando-Garibay>; riaktag=“producer”’
 http://host:8098/riak/album/Born-This-Way
 data ...
Linking[1/2]


curl -X PUT -H ’Content-type: text/json’
-H ’Link: </riak/artist/Lady-Gaga>; riaktag=“performer”’
-H ’Link: </riak/artist/DJ-Snake>; riaktag=“producer”’
-H ’Link: </riak/artist/DJ-White-Shadow>; riaktag=“producer”’
...
-H ’Link: </riak/artist/Fernando-Garibay>; riaktag=“producer”’
 http://host:8098/riak/album/Born-This-Way
 data ...
Linking[1/2]


curl -X PUT -H ’Content-type: text/json’
-H ’Link: </riak/artist/Lady-Gaga>; riaktag=“performer”’
-H ’Link: </riak/artist/DJ-Snake>; riaktag=“producer”’
-H ’Link: </riak/artist/DJ-White-Shadow>; riaktag=“producer”’
...
-H ’Link: </riak/artist/Fernando-Garibay>; riaktag=“producer”’
 http://host:8098/riak/album/Born-This-Way
 data ...
Linking[2/2]
               •   Two Dimensional
                   both direction and type/tag




               •   0..* links per object
                   of any type/tag




               •   Metadata traversing
                   not load, parse, then lookup cycle




               •   Model sufficiency
                   otherwise graph database might be more useful




               •   Link to other buckets
                   (in same Riak cluster)
Linking[2/2]
               •   Two Dimensional
                   both direction and type/tag




               •   0..* links per object
                   of any type/tag




               •   Metadata traversing
                   not load, parse, then lookup cycle




               •   Model sufficiency
                   otherwise graph database might be more useful




               •   Link to other buckets
                   (in same Riak cluster)
Linking[2/2]
               •   Two Dimensional
                   both direction and type/tag




               •   0..* links per object
                   of any type/tag




               •   Metadata traversing
                   not load, parse, then lookup cycle




               •   Model sufficiency
                   otherwise graph database might be more useful




               •   Link to other buckets
                   (in same Riak cluster)
Linking[2/2]
               •   Two Dimensional
                   both direction and type/tag




               •   0..* links per object
                   of any type/tag




               •   Metadata traversing
                   not load, parse, then lookup cycle




               •   Model sufficiency
                   otherwise graph database might be more useful




               •   Link to other buckets
                   (in same Riak cluster)
Linking[2/2]
               •   Two Dimensional
                   both direction and type/tag




               •   0..* links per object
                   of any type/tag




               •   Metadata traversing
                   not load, parse, then lookup cycle




               •   Model sufficiency
                   otherwise graph database might be more useful




               •   Link to other buckets
                   (in same Riak cluster)
Traversing Links[1/4]

• GET /riak/album/Born-This-Way/artist,_,1

• GET /riak/album/Born-This-Way/artist,performer,1

• GET /riak/album/Born-This-Way/artist,producer,1

• GET /riak/album/Born-This-Way/_,performer,1

• GET /riak/album/Born-This-Way/_,producer,1
Traversing Links[1/4]

• GET /riak/album/Born-This-Way/artist,_,1
 => all artists linked to album regardless of link tag/type


• GET /riak/album/Born-This-Way/artist,performer,1

• GET /riak/album/Born-This-Way/artist,producer,1

• GET /riak/album/Born-This-Way/_,performer,1

• GET /riak/album/Born-This-Way/_,producer,1
Traversing Links[1/4]

• GET /riak/album/Born-This-Way/artist,_,1
 => all artists linked to album regardless of link tag/type


• GET /riak/album/Born-This-Way/artist,performer,1

• GET /riak/album/Born-This-Way/artist,producer,1

• GET /riak/album/Born-This-Way/_,performer,1

• GET /riak/album/Born-This-Way/_,producer,1
Traversing Links[1/4]

• GET /riak/album/Born-This-Way/artist,_,1
 => all artists linked to album regardless of link tag/type


• GET /riak/album/Born-This-Way/artist,performer,1
 => artists linked to album with tag/type “performer”


• GET /riak/album/Born-This-Way/artist,producer,1

• GET /riak/album/Born-This-Way/_,performer,1

• GET /riak/album/Born-This-Way/_,producer,1
Traversing Links[1/4]

• GET /riak/album/Born-This-Way/artist,_,1
 => all artists linked to album regardless of link tag/type


• GET /riak/album/Born-This-Way/artist,performer,1
 => artists linked to album with tag/type “performer”


• GET /riak/album/Born-This-Way/artist,producer,1

• GET /riak/album/Born-This-Way/_,performer,1

• GET /riak/album/Born-This-Way/_,producer,1
Traversing Links[1/4]

• GET /riak/album/Born-This-Way/artist,_,1
 => all artists linked to album regardless of link tag/type


• GET /riak/album/Born-This-Way/artist,performer,1
 => artists linked to album with tag/type “performer”


• GET /riak/album/Born-This-Way/artist,producer,1
 => artists linked to album with tag/type “producer”


• GET /riak/album/Born-This-Way/_,performer,1

• GET /riak/album/Born-This-Way/_,producer,1
Traversing Links[1/4]

• GET /riak/album/Born-This-Way/artist,_,1
 => all artists linked to album regardless of link tag/type


• GET /riak/album/Born-This-Way/artist,performer,1
 => artists linked to album with tag/type “performer”


• GET /riak/album/Born-This-Way/artist,producer,1
 => artists linked to album with tag/type “producer”


• GET /riak/album/Born-This-Way/_,performer,1

• GET /riak/album/Born-This-Way/_,producer,1
Traversing Links[1/4]

• GET /riak/album/Born-This-Way/artist,_,1
 => all artists linked to album regardless of link tag/type


• GET /riak/album/Born-This-Way/artist,performer,1
 => artists linked to album with tag/type “performer”


• GET /riak/album/Born-This-Way/artist,producer,1
 => artists linked to album with tag/type “producer”


• GET /riak/album/Born-This-Way/_,performer,1
 => object linked to album with tag/type “performer”


• GET /riak/album/Born-This-Way/_,producer,1
Traversing Links[1/4]

• GET /riak/album/Born-This-Way/artist,_,1
 => all artists linked to album regardless of link tag/type


• GET /riak/album/Born-This-Way/artist,performer,1
 => artists linked to album with tag/type “performer”


• GET /riak/album/Born-This-Way/artist,producer,1
 => artists linked to album with tag/type “producer”


• GET /riak/album/Born-This-Way/_,performer,1
 => object linked to album with tag/type “performer”


• GET /riak/album/Born-This-Way/_,producer,1
Traversing Links[1/4]

• GET /riak/album/Born-This-Way/artist,_,1
 => all artists linked to album regardless of link tag/type


• GET /riak/album/Born-This-Way/artist,performer,1
 => artists linked to album with tag/type “performer”


• GET /riak/album/Born-This-Way/artist,producer,1
 => artists linked to album with tag/type “producer”


• GET /riak/album/Born-This-Way/_,performer,1
 => object linked to album with tag/type “performer”


• GET /riak/album/Born-This-Way/_,producer,1
 => object linked to album with tag/type “producer”
Traversing Links[2/4]



• GET /riak/album/A/artist,_,1/artist,collaborator,1

• GET /riak/album/A/artist,performer,0/artist,collaborator,1

• GET /riak/album/A/artist,producer,0/album,release,1
Traversing Links[2/4]



• GET /riak/album/A/artist,_,1/artist,collaborator,1

• GET /riak/album/A/artist,performer,0/artist,collaborator,1

• GET /riak/album/A/artist,producer,0/album,release,1
Traversing Links[2/4]



• GET /riak/album/A/artist,_,1/artist,collaborator,1
 => all artists associated with album A and all artists that have collaborated with these artists


• GET /riak/album/A/artist,performer,0/artist,collaborator,1

• GET /riak/album/A/artist,producer,0/album,release,1
Traversing Links[2/4]



• GET /riak/album/A/artist,_,1/artist,collaborator,1
 => all artists associated with album A and all artists that have collaborated with these artists


• GET /riak/album/A/artist,performer,0/artist,collaborator,1

• GET /riak/album/A/artist,producer,0/album,release,1
Traversing Links[2/4]



• GET /riak/album/A/artist,_,1/artist,collaborator,1
 => all artists associated with album A and all artists that have collaborated with these artists


• GET /riak/album/A/artist,performer,0/artist,collaborator,1

• GET /riak/album/A/artist,producer,0/album,release,1
Traversing Links[2/4]



• GET /riak/album/A/artist,_,1/artist,collaborator,1
 => all artists associated with album A and all artists that have collaborated with these artists


• GET /riak/album/A/artist,performer,0/artist,collaborator,1
 => all “collaborators” of “performers” on album A excluding “performers”


• GET /riak/album/A/artist,producer,0/album,release,1
Traversing Links[2/4]



• GET /riak/album/A/artist,_,1/artist,collaborator,1
 => all artists associated with album A and all artists that have collaborated with these artists


• GET /riak/album/A/artist,performer,0/artist,collaborator,1
 => all “collaborators” of “performers” on album A excluding “performers”


• GET /riak/album/A/artist,producer,0/album,release,1
Traversing Links[2/4]



• GET /riak/album/A/artist,_,1/artist,collaborator,1
 => all artists associated with album A and all artists that have collaborated with these artists


• GET /riak/album/A/artist,performer,0/artist,collaborator,1
 => all “collaborators” of “performers” on album A excluding “performers”


• GET /riak/album/A/artist,producer,0/album,release,1
Traversing Links[2/4]



• GET /riak/album/A/artist,_,1/artist,collaborator,1
 => all artists associated with album A and all artists that have collaborated with these artists


• GET /riak/album/A/artist,performer,0/artist,collaborator,1
 => all “collaborators” of “performers” on album A excluding “performers”


• GET /riak/album/A/artist,producer,0/album,release,1
 => all albums that “producers” on album A have released
Traversing Links[3/4]
      artist,performer,1
     • Bucket name
       e.g. artist, album

     • Tag (or type) name
       e.g. performer, producer

     • Return (or “keep”)
       useful in nested traversals

     • Wildcarding
       ’_’ for bucket and tag means “any”

     • Nesting
       traverse on multiple levels

     • Multiple Sources?
       how to walk links from multiple objects?
Traversing Links[3/4]
      artist,performer,1
     • Bucket name
       e.g. artist, album

     • Tag (or type) name
       e.g. performer, producer

     • Return (or “keep”)
       useful in nested traversals

     • Wildcarding
       ’_’ for bucket and tag means “any”

     • Nesting
       traverse on multiple levels

     • Multiple Sources?
       how to walk links from multiple objects?
Traversing Links[3/4]
      artist,performer,1
     • Bucket name
       e.g. artist, album

     • Tag (or type) name
       e.g. performer, producer

     • Return (or “keep”)
       useful in nested traversals

     • Wildcarding
       ’_’ for bucket and tag means “any”

     • Nesting
       traverse on multiple levels

     • Multiple Sources?
       how to walk links from multiple objects?
Traversing Links[3/4]
      artist,performer,1
     • Bucket name
       e.g. artist, album

     • Tag (or type) name
       e.g. performer, producer

     • Return (or “keep”)
       useful in nested traversals

     • Wildcarding
       ’_’ for bucket and tag means “any”

     • Nesting
       traverse on multiple levels

     • Multiple Sources?
       how to walk links from multiple objects?
Traversing Links[3/4]


      _,_,0
     • Bucket name
       e.g. artist, album

     • Tag (or type) name
       e.g. performer, producer

     • Return (or “keep”)
       useful in nested traversals

     • Wildcarding
       ’_’ for bucket and tag means “any”

     • Nesting
       traverse on multiple levels

     • Multiple Sources?
       how to walk links from multiple objects?
Traversing Links[3/4]


      _,_,0/album,release,1
     • Bucket name
       e.g. artist, album

     • Tag (or type) name
       e.g. performer, producer

     • Return (or “keep”)
       useful in nested traversals

     • Wildcarding
       ’_’ for bucket and tag means “any”

     • Nesting
       traverse on multiple levels

     • Multiple Sources?
       how to walk links from multiple objects?
Traversing Links[3/4]


     • Bucket name
       e.g. artist, album

     • Tag (or type) name
       e.g. performer, producer

     • Return (or “keep”)
       useful in nested traversals

     • Wildcarding
       ’_’ for bucket and tag means “any”

     • Nesting
       traverse on multiple levels

     • Multiple Sources?
       how to walk links from multiple objects?
curl -X POST -H “Content-type: application/json” 
http://host:8098/mapred data @- 
{"inputs":[
     ["artist","Ke$ha"],
     ["artist", "Lady+Gaga"]
   ],
   "query":[
     {"link": { "tag": "release", "bucket": "album" }},
     {"map":{ "language":"javascript",
       "source":"function(v) return [v]; "}
     }
   ]
}
^D
curl -X POST -H “Content-type: application/json” 
http://host:8098/mapred data @- 
{"inputs":[
     ["artist","Ke$ha"],
     ["artist", "Lady+Gaga"]
   ],
   "query":[
     {"link": { "tag": "release", "bucket": "album" }},
     {"map":{ "language":"javascript",
       "source":"function(v) return [v]; "}
     }
   ]
}
^D
curl -X POST -H “Content-type: application/json” 
http://host:8098/mapred data @- 
{"inputs":[
     ["artist","Ke$ha"],
     ["artist", "Lady+Gaga"]
   ],
   "query":[
     {"link": { "tag": "release", "bucket": "album" }},
     {"map":{ "language":"javascript",
       "source":"function(v) return [v]; "}
     }
   ]
}
^D
Link Maintenance
            •   Commit Hooks
                can use either pre- or post-commit hooks




            •   Automatic Backlinks
                can use commit hooks to generate backlinks automatically




            •   Trigger Messages
                links could only be used as triggers




            •   Delete Cleanup
                post-commit hook with backlinks can clean up links to new orphans automatically
Link Maintenance
            •   Commit Hooks
                can use either pre- or post-commit hooks




            •   Automatic Backlinks
                can use commit hooks to generate backlinks automatically




            •   Trigger Messages
                links could only be used as triggers




            •   Delete Cleanup
                post-commit hook with backlinks can clean up links to new orphans automatically
Link Maintenance
            •   Commit Hooks
                can use either pre- or post-commit hooks




            •   Automatic Backlinks
                can use commit hooks to generate backlinks automatically




            •   Trigger Messages
                links could only be used as triggers




            •   Delete Cleanup
                post-commit hook with backlinks can clean up links to new orphans automatically
Link Maintenance
            •   Commit Hooks
                can use either pre- or post-commit hooks




            •   Automatic Backlinks
                can use commit hooks to generate backlinks automatically




            •   Trigger Messages
                links could only be used as triggers




            •   Delete Cleanup
                post-commit hook with backlinks can clean up links to new orphans automatically
Possibilities



         Object metadata
           extensions?
Limitations




    Not a graph database!
References[1/2]


    •   Riak Wiki
        http://wiki.basho.com/



    •   Riak Mailing List
        riak-users@lists.basho.com



    •   Riak Contrib
        http://contrib.basho.com/



    •   Riak Code Repos
        http://github.com/basho
References[1/2]


    •   Riak Wiki
        http://wiki.basho.com/



    •   Riak Mailing List
        riak-users@lists.basho.com



    •   Riak Contrib
        http://contrib.basho.com/



    •   Riak Code Repos
        http://github.com/basho
References[1/2]


    •   Riak Wiki
        http://wiki.basho.com/



    •   Riak Mailing List
        riak-users@lists.basho.com



    •   Riak Contrib
        http://contrib.basho.com/



    •   Riak Code Repos
        http://github.com/basho
References[1/2]


    •   Riak Wiki
        http://wiki.basho.com/



    •   Riak Mailing List
        riak-users@lists.basho.com



    •   Riak Contrib
        http://contrib.basho.com/



    •   Riak Code Repos
        http://github.com/basho
References[2/2]


      •   Secondary index support in Riak?
          Introducing Secondary Indices: http://www.oscon.com/oscon2011/public/schedule/detail/19806

      •   riak_core applications
          e.g. Riak Search, riak_zab, riak_pipe



      •   Comet
          KV database supports Active Storage Objects (ASO), handlers

          http://vanish.cs.washington.edu/pubs/osdi2010comet.pdf
References[2/2]


      •   Secondary index support in Riak?
          Introducing Secondary Indices: http://www.oscon.com/oscon2011/public/schedule/detail/19806

      •   riak_core applications
          e.g. Riak Search, riak_zab, riak_pipe



      •   Comet
          KV database supports Active Storage Objects (ASO), handlers

          http://vanish.cs.washington.edu/pubs/osdi2010comet.pdf
References[2/2]


      •   Secondary index support in Riak?
          Introducing Secondary Indices: http://www.oscon.com/oscon2011/public/schedule/detail/19806

      •   riak_core applications
          e.g. Riak Search, riak_zab, riak_pipe



      •   Comet
          KV database supports Active Storage Objects (ASO), handlers

          http://vanish.cs.washington.edu/pubs/osdi2010comet.pdf
Credits

    • Basho & Riak logos
      Courtesy of Basho

    • Icy chained fence photo
      http://www.flickr.com/photos/existentist/342177746/

    • Frozen chain photo
      http://www.flickr.com/photos/skedonk/4197921511/

    • Hook and chain photo
      http://www.flickr.com/photos/37491467@N07/3871760093/
Questions?




         Figure:   http://www.flickr.com/photos/42682395@N04/




         @SusanPotter
Questions?




         Figure:   http://www.flickr.com/photos/42682395@N04/




         @SusanPotter

Mais conteĂşdo relacionado

Destaque

From Zero To Production (NixOS, Erlang) @ Erlang Factory SF 2016
From Zero To Production (NixOS, Erlang) @ Erlang Factory SF 2016From Zero To Production (NixOS, Erlang) @ Erlang Factory SF 2016
From Zero To Production (NixOS, Erlang) @ Erlang Factory SF 2016Susan Potter
 
Ricon/West 2013: Adventures with Riak Pipe
Ricon/West 2013: Adventures with Riak PipeRicon/West 2013: Adventures with Riak Pipe
Ricon/West 2013: Adventures with Riak PipeSusan Potter
 
Writing Bullet-Proof Javascript: By Using CoffeeScript
Writing Bullet-Proof Javascript: By Using CoffeeScriptWriting Bullet-Proof Javascript: By Using CoffeeScript
Writing Bullet-Proof Javascript: By Using CoffeeScriptSusan Potter
 
Dynamo: Not Just For Datastores
Dynamo: Not Just For DatastoresDynamo: Not Just For Datastores
Dynamo: Not Just For DatastoresSusan Potter
 
From Zero to Application Delivery with NixOS
From Zero to Application Delivery with NixOSFrom Zero to Application Delivery with NixOS
From Zero to Application Delivery with NixOSSusan Potter
 
Designing for Concurrency
Designing for ConcurrencyDesigning for Concurrency
Designing for ConcurrencySusan Potter
 
Functional Algebra: Monoids Applied
Functional Algebra: Monoids AppliedFunctional Algebra: Monoids Applied
Functional Algebra: Monoids AppliedSusan Potter
 
Running Free with the Monads
Running Free with the MonadsRunning Free with the Monads
Running Free with the Monadskenbot
 
Modern Algorithms and Data Structures - 1. Bloom Filters, Merkle Trees
Modern Algorithms and Data Structures - 1. Bloom Filters, Merkle TreesModern Algorithms and Data Structures - 1. Bloom Filters, Merkle Trees
Modern Algorithms and Data Structures - 1. Bloom Filters, Merkle TreesLorenzo Alberton
 
Scaling Teams, Processes and Architectures
Scaling Teams, Processes and ArchitecturesScaling Teams, Processes and Architectures
Scaling Teams, Processes and ArchitecturesLorenzo Alberton
 
Your data structures are made of maths!
Your data structures are made of maths!Your data structures are made of maths!
Your data structures are made of maths!kenbot
 
Scalable Architectures - Taming the Twitter Firehose
Scalable Architectures - Taming the Twitter FirehoseScalable Architectures - Taming the Twitter Firehose
Scalable Architectures - Taming the Twitter FirehoseLorenzo Alberton
 
Scalaz By Example (An IO Taster) -- PDXScala Meetup Jan 2014
Scalaz By Example (An IO Taster) -- PDXScala Meetup Jan 2014Scalaz By Example (An IO Taster) -- PDXScala Meetup Jan 2014
Scalaz By Example (An IO Taster) -- PDXScala Meetup Jan 2014Susan Potter
 
Graphs in the Database: Rdbms In The Social Networks Age
Graphs in the Database: Rdbms In The Social Networks AgeGraphs in the Database: Rdbms In The Social Networks Age
Graphs in the Database: Rdbms In The Social Networks AgeLorenzo Alberton
 
The Art of Scalability - Managing growth
The Art of Scalability - Managing growthThe Art of Scalability - Managing growth
The Art of Scalability - Managing growthLorenzo Alberton
 
NoSQL Databases: Why, what and when
NoSQL Databases: Why, what and whenNoSQL Databases: Why, what and when
NoSQL Databases: Why, what and whenLorenzo Alberton
 
Monitoring at scale - Intuitive dashboard design
Monitoring at scale - Intuitive dashboard designMonitoring at scale - Intuitive dashboard design
Monitoring at scale - Intuitive dashboard designLorenzo Alberton
 
Trees In The Database - Advanced data structures
Trees In The Database - Advanced data structuresTrees In The Database - Advanced data structures
Trees In The Database - Advanced data structuresLorenzo Alberton
 
Category theory for beginners
Category theory for beginnersCategory theory for beginners
Category theory for beginnerskenbot
 

Destaque (20)

From Zero To Production (NixOS, Erlang) @ Erlang Factory SF 2016
From Zero To Production (NixOS, Erlang) @ Erlang Factory SF 2016From Zero To Production (NixOS, Erlang) @ Erlang Factory SF 2016
From Zero To Production (NixOS, Erlang) @ Erlang Factory SF 2016
 
Ricon/West 2013: Adventures with Riak Pipe
Ricon/West 2013: Adventures with Riak PipeRicon/West 2013: Adventures with Riak Pipe
Ricon/West 2013: Adventures with Riak Pipe
 
Writing Bullet-Proof Javascript: By Using CoffeeScript
Writing Bullet-Proof Javascript: By Using CoffeeScriptWriting Bullet-Proof Javascript: By Using CoffeeScript
Writing Bullet-Proof Javascript: By Using CoffeeScript
 
Dynamo: Not Just For Datastores
Dynamo: Not Just For DatastoresDynamo: Not Just For Datastores
Dynamo: Not Just For Datastores
 
From Zero to Application Delivery with NixOS
From Zero to Application Delivery with NixOSFrom Zero to Application Delivery with NixOS
From Zero to Application Delivery with NixOS
 
Designing for Concurrency
Designing for ConcurrencyDesigning for Concurrency
Designing for Concurrency
 
Functional Algebra: Monoids Applied
Functional Algebra: Monoids AppliedFunctional Algebra: Monoids Applied
Functional Algebra: Monoids Applied
 
Running Free with the Monads
Running Free with the MonadsRunning Free with the Monads
Running Free with the Monads
 
Why Haskell
Why HaskellWhy Haskell
Why Haskell
 
Modern Algorithms and Data Structures - 1. Bloom Filters, Merkle Trees
Modern Algorithms and Data Structures - 1. Bloom Filters, Merkle TreesModern Algorithms and Data Structures - 1. Bloom Filters, Merkle Trees
Modern Algorithms and Data Structures - 1. Bloom Filters, Merkle Trees
 
Scaling Teams, Processes and Architectures
Scaling Teams, Processes and ArchitecturesScaling Teams, Processes and Architectures
Scaling Teams, Processes and Architectures
 
Your data structures are made of maths!
Your data structures are made of maths!Your data structures are made of maths!
Your data structures are made of maths!
 
Scalable Architectures - Taming the Twitter Firehose
Scalable Architectures - Taming the Twitter FirehoseScalable Architectures - Taming the Twitter Firehose
Scalable Architectures - Taming the Twitter Firehose
 
Scalaz By Example (An IO Taster) -- PDXScala Meetup Jan 2014
Scalaz By Example (An IO Taster) -- PDXScala Meetup Jan 2014Scalaz By Example (An IO Taster) -- PDXScala Meetup Jan 2014
Scalaz By Example (An IO Taster) -- PDXScala Meetup Jan 2014
 
Graphs in the Database: Rdbms In The Social Networks Age
Graphs in the Database: Rdbms In The Social Networks AgeGraphs in the Database: Rdbms In The Social Networks Age
Graphs in the Database: Rdbms In The Social Networks Age
 
The Art of Scalability - Managing growth
The Art of Scalability - Managing growthThe Art of Scalability - Managing growth
The Art of Scalability - Managing growth
 
NoSQL Databases: Why, what and when
NoSQL Databases: Why, what and whenNoSQL Databases: Why, what and when
NoSQL Databases: Why, what and when
 
Monitoring at scale - Intuitive dashboard design
Monitoring at scale - Intuitive dashboard designMonitoring at scale - Intuitive dashboard design
Monitoring at scale - Intuitive dashboard design
 
Trees In The Database - Advanced data structures
Trees In The Database - Advanced data structuresTrees In The Database - Advanced data structures
Trees In The Database - Advanced data structures
 
Category theory for beginners
Category theory for beginnersCategory theory for beginners
Category theory for beginners
 

Semelhante a Link Walking with Riak

Evolution of the Graph Schema
Evolution of the Graph SchemaEvolution of the Graph Schema
Evolution of the Graph SchemaJoshua Shinavier
 
Linked data radical change
Linked data   radical changeLinked data   radical change
Linked data radical changeRichard Wallis
 
Large Scale Graph Analytics with JanusGraph
Large Scale Graph Analytics with JanusGraphLarge Scale Graph Analytics with JanusGraph
Large Scale Graph Analytics with JanusGraphP. Taylor Goetz
 
Large Scale Graph Analytics with JanusGraph
Large Scale Graph Analytics with JanusGraphLarge Scale Graph Analytics with JanusGraph
Large Scale Graph Analytics with JanusGraphDataWorks Summit
 
Linked Data Best Practices and BibFrame
Linked Data Best Practices and BibFrameLinked Data Best Practices and BibFrame
Linked Data Best Practices and BibFrameRobert Sanderson
 
Linked Data and OCLC
Linked Data and OCLCLinked Data and OCLC
Linked Data and OCLCRichard Wallis
 
FiloDB: Reactive, Real-Time, In-Memory Time Series at Scale
FiloDB: Reactive, Real-Time, In-Memory Time Series at ScaleFiloDB: Reactive, Real-Time, In-Memory Time Series at Scale
FiloDB: Reactive, Real-Time, In-Memory Time Series at ScaleEvan Chan
 
Scaling the Web: Databases & NoSQL
Scaling the Web: Databases & NoSQLScaling the Web: Databases & NoSQL
Scaling the Web: Databases & NoSQLRichard Schneeman
 
How does Riak compare to Cassandra? [Cassandra London User Group July 2011]
How does Riak compare to Cassandra? [Cassandra London User Group July 2011]How does Riak compare to Cassandra? [Cassandra London User Group July 2011]
How does Riak compare to Cassandra? [Cassandra London User Group July 2011]Rainforest QA
 
"PageRank" - "The Anatomy of a Large-Scale Hypertextual Web Search Engine” pr...
"PageRank" - "The Anatomy of a Large-Scale Hypertextual Web Search Engine” pr..."PageRank" - "The Anatomy of a Large-Scale Hypertextual Web Search Engine” pr...
"PageRank" - "The Anatomy of a Large-Scale Hypertextual Web Search Engine” pr...Stefan Adam
 
HATEOAS: The Confusing Bit from REST
HATEOAS: The Confusing Bit from RESTHATEOAS: The Confusing Bit from REST
HATEOAS: The Confusing Bit from RESTelliando dias
 
Dropping ACID: Wrapping Your Mind Around NoSQL Databases
Dropping ACID: Wrapping Your Mind Around NoSQL DatabasesDropping ACID: Wrapping Your Mind Around NoSQL Databases
Dropping ACID: Wrapping Your Mind Around NoSQL DatabasesKyle Banerjee
 
Big Data (NJ SQL Server User Group)
Big Data (NJ SQL Server User Group)Big Data (NJ SQL Server User Group)
Big Data (NJ SQL Server User Group)Don Demcsak
 
NoSql - mayank singh
NoSql - mayank singhNoSql - mayank singh
NoSql - mayank singhMayank Singh
 
An Introduction to NOSQL, Graph Databases and Neo4j
An Introduction to NOSQL, Graph Databases and Neo4jAn Introduction to NOSQL, Graph Databases and Neo4j
An Introduction to NOSQL, Graph Databases and Neo4jDebanjan Mahata
 
The Characteristics of a RESTful Semantic Web and Why They Are Important
The Characteristics of a RESTful Semantic Web and Why They Are ImportantThe Characteristics of a RESTful Semantic Web and Why They Are Important
The Characteristics of a RESTful Semantic Web and Why They Are ImportantChimezie Ogbuji
 
What's New in RDF 1.1?
What's New in RDF 1.1?What's New in RDF 1.1?
What's New in RDF 1.1?Richard Cyganiak
 
Intro to the semantic web (for libraries)
Intro to the semantic web (for libraries) Intro to the semantic web (for libraries)
Intro to the semantic web (for libraries) robin fay
 
May 2013 HUG: Apache Sqoop 2 - A next generation of data transfer tools
May 2013 HUG: Apache Sqoop 2 - A next generation of data transfer toolsMay 2013 HUG: Apache Sqoop 2 - A next generation of data transfer tools
May 2013 HUG: Apache Sqoop 2 - A next generation of data transfer toolsYahoo Developer Network
 

Semelhante a Link Walking with Riak (20)

Graph Databases
Graph DatabasesGraph Databases
Graph Databases
 
Evolution of the Graph Schema
Evolution of the Graph SchemaEvolution of the Graph Schema
Evolution of the Graph Schema
 
Linked data radical change
Linked data   radical changeLinked data   radical change
Linked data radical change
 
Large Scale Graph Analytics with JanusGraph
Large Scale Graph Analytics with JanusGraphLarge Scale Graph Analytics with JanusGraph
Large Scale Graph Analytics with JanusGraph
 
Large Scale Graph Analytics with JanusGraph
Large Scale Graph Analytics with JanusGraphLarge Scale Graph Analytics with JanusGraph
Large Scale Graph Analytics with JanusGraph
 
Linked Data Best Practices and BibFrame
Linked Data Best Practices and BibFrameLinked Data Best Practices and BibFrame
Linked Data Best Practices and BibFrame
 
Linked Data and OCLC
Linked Data and OCLCLinked Data and OCLC
Linked Data and OCLC
 
FiloDB: Reactive, Real-Time, In-Memory Time Series at Scale
FiloDB: Reactive, Real-Time, In-Memory Time Series at ScaleFiloDB: Reactive, Real-Time, In-Memory Time Series at Scale
FiloDB: Reactive, Real-Time, In-Memory Time Series at Scale
 
Scaling the Web: Databases & NoSQL
Scaling the Web: Databases & NoSQLScaling the Web: Databases & NoSQL
Scaling the Web: Databases & NoSQL
 
How does Riak compare to Cassandra? [Cassandra London User Group July 2011]
How does Riak compare to Cassandra? [Cassandra London User Group July 2011]How does Riak compare to Cassandra? [Cassandra London User Group July 2011]
How does Riak compare to Cassandra? [Cassandra London User Group July 2011]
 
"PageRank" - "The Anatomy of a Large-Scale Hypertextual Web Search Engine” pr...
"PageRank" - "The Anatomy of a Large-Scale Hypertextual Web Search Engine” pr..."PageRank" - "The Anatomy of a Large-Scale Hypertextual Web Search Engine” pr...
"PageRank" - "The Anatomy of a Large-Scale Hypertextual Web Search Engine” pr...
 
HATEOAS: The Confusing Bit from REST
HATEOAS: The Confusing Bit from RESTHATEOAS: The Confusing Bit from REST
HATEOAS: The Confusing Bit from REST
 
Dropping ACID: Wrapping Your Mind Around NoSQL Databases
Dropping ACID: Wrapping Your Mind Around NoSQL DatabasesDropping ACID: Wrapping Your Mind Around NoSQL Databases
Dropping ACID: Wrapping Your Mind Around NoSQL Databases
 
Big Data (NJ SQL Server User Group)
Big Data (NJ SQL Server User Group)Big Data (NJ SQL Server User Group)
Big Data (NJ SQL Server User Group)
 
NoSql - mayank singh
NoSql - mayank singhNoSql - mayank singh
NoSql - mayank singh
 
An Introduction to NOSQL, Graph Databases and Neo4j
An Introduction to NOSQL, Graph Databases and Neo4jAn Introduction to NOSQL, Graph Databases and Neo4j
An Introduction to NOSQL, Graph Databases and Neo4j
 
The Characteristics of a RESTful Semantic Web and Why They Are Important
The Characteristics of a RESTful Semantic Web and Why They Are ImportantThe Characteristics of a RESTful Semantic Web and Why They Are Important
The Characteristics of a RESTful Semantic Web and Why They Are Important
 
What's New in RDF 1.1?
What's New in RDF 1.1?What's New in RDF 1.1?
What's New in RDF 1.1?
 
Intro to the semantic web (for libraries)
Intro to the semantic web (for libraries) Intro to the semantic web (for libraries)
Intro to the semantic web (for libraries)
 
May 2013 HUG: Apache Sqoop 2 - A next generation of data transfer tools
May 2013 HUG: Apache Sqoop 2 - A next generation of data transfer toolsMay 2013 HUG: Apache Sqoop 2 - A next generation of data transfer tools
May 2013 HUG: Apache Sqoop 2 - A next generation of data transfer tools
 

Mais de Susan Potter

Thinking in Properties
Thinking in PropertiesThinking in Properties
Thinking in PropertiesSusan Potter
 
Champaign-Urbana Javascript Meetup Talk (Jan 2020)
Champaign-Urbana Javascript Meetup Talk (Jan 2020)Champaign-Urbana Javascript Meetup Talk (Jan 2020)
Champaign-Urbana Javascript Meetup Talk (Jan 2020)Susan Potter
 
From Zero to Haskell: Lessons Learned
From Zero to Haskell: Lessons LearnedFrom Zero to Haskell: Lessons Learned
From Zero to Haskell: Lessons LearnedSusan Potter
 
Dynamically scaling a political news and activism hub (up to 5x the traffic i...
Dynamically scaling a political news and activism hub (up to 5x the traffic i...Dynamically scaling a political news and activism hub (up to 5x the traffic i...
Dynamically scaling a political news and activism hub (up to 5x the traffic i...Susan Potter
 
Functional Operations (Functional Programming at Comcast Labs Connect)
Functional Operations (Functional Programming at Comcast Labs Connect)Functional Operations (Functional Programming at Comcast Labs Connect)
Functional Operations (Functional Programming at Comcast Labs Connect)Susan Potter
 
Twitter4R OAuth
Twitter4R OAuthTwitter4R OAuth
Twitter4R OAuthSusan Potter
 
Deploying distributed software services to the cloud without breaking a sweat
Deploying distributed software services to the cloud without breaking a sweatDeploying distributed software services to the cloud without breaking a sweat
Deploying distributed software services to the cloud without breaking a sweatSusan Potter
 

Mais de Susan Potter (7)

Thinking in Properties
Thinking in PropertiesThinking in Properties
Thinking in Properties
 
Champaign-Urbana Javascript Meetup Talk (Jan 2020)
Champaign-Urbana Javascript Meetup Talk (Jan 2020)Champaign-Urbana Javascript Meetup Talk (Jan 2020)
Champaign-Urbana Javascript Meetup Talk (Jan 2020)
 
From Zero to Haskell: Lessons Learned
From Zero to Haskell: Lessons LearnedFrom Zero to Haskell: Lessons Learned
From Zero to Haskell: Lessons Learned
 
Dynamically scaling a political news and activism hub (up to 5x the traffic i...
Dynamically scaling a political news and activism hub (up to 5x the traffic i...Dynamically scaling a political news and activism hub (up to 5x the traffic i...
Dynamically scaling a political news and activism hub (up to 5x the traffic i...
 
Functional Operations (Functional Programming at Comcast Labs Connect)
Functional Operations (Functional Programming at Comcast Labs Connect)Functional Operations (Functional Programming at Comcast Labs Connect)
Functional Operations (Functional Programming at Comcast Labs Connect)
 
Twitter4R OAuth
Twitter4R OAuthTwitter4R OAuth
Twitter4R OAuth
 
Deploying distributed software services to the cloud without breaking a sweat
Deploying distributed software services to the cloud without breaking a sweatDeploying distributed software services to the cloud without breaking a sweat
Deploying distributed software services to the cloud without breaking a sweat
 

Último

08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 

Último (20)

08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 

Link Walking with Riak

  • 1. Link Walking with Riak (KV) Susan Potter / Finsignia June 25, 2011
  • 2. Riak Ecosystem Riak Search Riak KV Riak Core
  • 3. Riak Ecosystem Riak Search Riak KV Riak Core
  • 4. Riak Ecosystem Riak Search Riak KV Riak Core
  • 5. Riak Ecosystem Riak Search Riak KV Riak Core
  • 6. Riak Ecosystem Riak Search Riak KV Riak Core
  • 7. % whoami # curl http://susanpotter.net/whoami/windycitydb2011.json • 15 years RDBMS • 3-4 years KV databases (CouchDB and now Riak) • 1 year Redis • Using graph database in next part of platform
  • 8. % whoami # curl http://susanpotter.net/whoami/windycitydb2011.json • 15 years RDBMS • 3-4 years KV databases (CouchDB and now Riak) • 1 year Redis • Using graph database in next part of platform
  • 9. % whoami # curl http://susanpotter.net/whoami/windycitydb2011.json • 15 years RDBMS • 3-4 years KV databases (CouchDB and now Riak) • 1 year Redis • Using graph database in next part of platform
  • 10. % whoami # curl http://susanpotter.net/whoami/windycitydb2011.json • 15 years RDBMS • 3-4 years KV databases (CouchDB and now Riak) • 1 year Redis • Using graph database in next part of platform
  • 11. Scope of Talk • Problem Domain • not Consistent Hashing or DHTs • Linking Objects • not Vector Clocks • Traversing Links • not Gossip Protocol • Link Maintainence • not Hinted Handoff • not Read Repair • not Eventual Consistency
  • 12. Scope of Talk • Problem Domain • not Consistent Hashing or DHTs • Linking Objects • not Vector Clocks • Traversing Links • not Gossip Protocol • Link Maintainence • not Hinted Handoff • not Read Repair • not Eventual Consistency
  • 13. Scope of Talk • Problem Domain • not Consistent Hashing or DHTs • Linking Objects • not Vector Clocks • Traversing Links • not Gossip Protocol • Link Maintainence • not Hinted Handoff • not Read Repair • not Eventual Consistency
  • 14. Scope of Talk • Problem Domain • not Consistent Hashing or DHTs • Linking Objects • not Vector Clocks • Traversing Links • not Gossip Protocol • Link Maintainence • not Hinted Handoff • not Read Repair • not Eventual Consistency
  • 15. Scope of Talk • Problem Domain • not Consistent Hashing or DHTs • Linking Objects • not Vector Clocks • Traversing Links • not Gossip Protocol • Link Maintainence • not Hinted Handoff • not Read Repair • not Eventual Consistency
  • 16. Scope of Talk • Problem Domain • not Consistent Hashing or DHTs • Linking Objects • not Vector Clocks • Traversing Links • not Gossip Protocol • Link Maintainence • not Hinted Handoff • not Read Repair • not Eventual Consistency
  • 17. Scope of Talk • Problem Domain • not Consistent Hashing or DHTs • Linking Objects • not Vector Clocks • Traversing Links • not Gossip Protocol • Link Maintainence • not Hinted Handoff • not Read Repair • not Eventual Consistency
  • 18. Scope of Talk • Problem Domain • not Consistent Hashing or DHTs • Linking Objects • not Vector Clocks • Traversing Links • not Gossip Protocol • Link Maintainence • not Hinted Handoff • not Read Repair • not Eventual Consistency
  • 19. Scope of Talk • Problem Domain • not Consistent Hashing or DHTs • Linking Objects • not Vector Clocks • Traversing Links • not Gossip Protocol • Link Maintainence • not Hinted Handoff • not Read Repair • not Eventual Consistency
  • 20. Scope of Talk • Problem Domain • not Consistent Hashing or DHTs • Linking Objects • not Vector Clocks • Traversing Links • not Gossip Protocol • Link Maintainence • not Hinted Handoff • not Read Repair • not Eventual Consistency
  • 23. Linking[1/2] curl -X PUT -H ’Content-type: text/json’ -H ’Link: </riak/artist/Lady-Gaga>; riaktag=“performer”’ -H ’Link: </riak/artist/DJ-Snake>; riaktag=“producer”’ -H ’Link: </riak/artist/DJ-White-Shadow>; riaktag=“producer”’ ... -H ’Link: </riak/artist/Fernando-Garibay>; riaktag=“producer”’ http://host:8098/riak/album/Born-This-Way data ...
  • 24. Linking[1/2] curl -X PUT -H ’Content-type: text/json’ -H ’Link: </riak/artist/Lady-Gaga>; riaktag=“performer”’ -H ’Link: </riak/artist/DJ-Snake>; riaktag=“producer”’ -H ’Link: </riak/artist/DJ-White-Shadow>; riaktag=“producer”’ ... -H ’Link: </riak/artist/Fernando-Garibay>; riaktag=“producer”’ http://host:8098/riak/album/Born-This-Way data ...
  • 25. Linking[1/2] curl -X PUT -H ’Content-type: text/json’ -H ’Link: </riak/artist/Lady-Gaga>; riaktag=“performer”’ -H ’Link: </riak/artist/DJ-Snake>; riaktag=“producer”’ -H ’Link: </riak/artist/DJ-White-Shadow>; riaktag=“producer”’ ... -H ’Link: </riak/artist/Fernando-Garibay>; riaktag=“producer”’ http://host:8098/riak/album/Born-This-Way data ...
  • 26. Linking[1/2] curl -X PUT -H ’Content-type: text/json’ -H ’Link: </riak/artist/Lady-Gaga>; riaktag=“performer”’ -H ’Link: </riak/artist/DJ-Snake>; riaktag=“producer”’ -H ’Link: </riak/artist/DJ-White-Shadow>; riaktag=“producer”’ ... -H ’Link: </riak/artist/Fernando-Garibay>; riaktag=“producer”’ http://host:8098/riak/album/Born-This-Way data ...
  • 27. Linking[1/2] curl -X PUT -H ’Content-type: text/json’ -H ’Link: </riak/artist/Lady-Gaga>; riaktag=“performer”’ -H ’Link: </riak/artist/DJ-Snake>; riaktag=“producer”’ -H ’Link: </riak/artist/DJ-White-Shadow>; riaktag=“producer”’ ... -H ’Link: </riak/artist/Fernando-Garibay>; riaktag=“producer”’ http://host:8098/riak/album/Born-This-Way data ...
  • 28. Linking[2/2] • Two Dimensional both direction and type/tag • 0..* links per object of any type/tag • Metadata traversing not load, parse, then lookup cycle • Model sufciency otherwise graph database might be more useful • Link to other buckets (in same Riak cluster)
  • 29. Linking[2/2] • Two Dimensional both direction and type/tag • 0..* links per object of any type/tag • Metadata traversing not load, parse, then lookup cycle • Model sufciency otherwise graph database might be more useful • Link to other buckets (in same Riak cluster)
  • 30. Linking[2/2] • Two Dimensional both direction and type/tag • 0..* links per object of any type/tag • Metadata traversing not load, parse, then lookup cycle • Model sufciency otherwise graph database might be more useful • Link to other buckets (in same Riak cluster)
  • 31. Linking[2/2] • Two Dimensional both direction and type/tag • 0..* links per object of any type/tag • Metadata traversing not load, parse, then lookup cycle • Model sufciency otherwise graph database might be more useful • Link to other buckets (in same Riak cluster)
  • 32. Linking[2/2] • Two Dimensional both direction and type/tag • 0..* links per object of any type/tag • Metadata traversing not load, parse, then lookup cycle • Model sufciency otherwise graph database might be more useful • Link to other buckets (in same Riak cluster)
  • 33. Traversing Links[1/4] • GET /riak/album/Born-This-Way/artist,_,1 • GET /riak/album/Born-This-Way/artist,performer,1 • GET /riak/album/Born-This-Way/artist,producer,1 • GET /riak/album/Born-This-Way/_,performer,1 • GET /riak/album/Born-This-Way/_,producer,1
  • 34. Traversing Links[1/4] • GET /riak/album/Born-This-Way/artist,_,1 => all artists linked to album regardless of link tag/type • GET /riak/album/Born-This-Way/artist,performer,1 • GET /riak/album/Born-This-Way/artist,producer,1 • GET /riak/album/Born-This-Way/_,performer,1 • GET /riak/album/Born-This-Way/_,producer,1
  • 35. Traversing Links[1/4] • GET /riak/album/Born-This-Way/artist,_,1 => all artists linked to album regardless of link tag/type • GET /riak/album/Born-This-Way/artist,performer,1 • GET /riak/album/Born-This-Way/artist,producer,1 • GET /riak/album/Born-This-Way/_,performer,1 • GET /riak/album/Born-This-Way/_,producer,1
  • 36. Traversing Links[1/4] • GET /riak/album/Born-This-Way/artist,_,1 => all artists linked to album regardless of link tag/type • GET /riak/album/Born-This-Way/artist,performer,1 => artists linked to album with tag/type “performer” • GET /riak/album/Born-This-Way/artist,producer,1 • GET /riak/album/Born-This-Way/_,performer,1 • GET /riak/album/Born-This-Way/_,producer,1
  • 37. Traversing Links[1/4] • GET /riak/album/Born-This-Way/artist,_,1 => all artists linked to album regardless of link tag/type • GET /riak/album/Born-This-Way/artist,performer,1 => artists linked to album with tag/type “performer” • GET /riak/album/Born-This-Way/artist,producer,1 • GET /riak/album/Born-This-Way/_,performer,1 • GET /riak/album/Born-This-Way/_,producer,1
  • 38. Traversing Links[1/4] • GET /riak/album/Born-This-Way/artist,_,1 => all artists linked to album regardless of link tag/type • GET /riak/album/Born-This-Way/artist,performer,1 => artists linked to album with tag/type “performer” • GET /riak/album/Born-This-Way/artist,producer,1 => artists linked to album with tag/type “producer” • GET /riak/album/Born-This-Way/_,performer,1 • GET /riak/album/Born-This-Way/_,producer,1
  • 39. Traversing Links[1/4] • GET /riak/album/Born-This-Way/artist,_,1 => all artists linked to album regardless of link tag/type • GET /riak/album/Born-This-Way/artist,performer,1 => artists linked to album with tag/type “performer” • GET /riak/album/Born-This-Way/artist,producer,1 => artists linked to album with tag/type “producer” • GET /riak/album/Born-This-Way/_,performer,1 • GET /riak/album/Born-This-Way/_,producer,1
  • 40. Traversing Links[1/4] • GET /riak/album/Born-This-Way/artist,_,1 => all artists linked to album regardless of link tag/type • GET /riak/album/Born-This-Way/artist,performer,1 => artists linked to album with tag/type “performer” • GET /riak/album/Born-This-Way/artist,producer,1 => artists linked to album with tag/type “producer” • GET /riak/album/Born-This-Way/_,performer,1 => object linked to album with tag/type “performer” • GET /riak/album/Born-This-Way/_,producer,1
  • 41. Traversing Links[1/4] • GET /riak/album/Born-This-Way/artist,_,1 => all artists linked to album regardless of link tag/type • GET /riak/album/Born-This-Way/artist,performer,1 => artists linked to album with tag/type “performer” • GET /riak/album/Born-This-Way/artist,producer,1 => artists linked to album with tag/type “producer” • GET /riak/album/Born-This-Way/_,performer,1 => object linked to album with tag/type “performer” • GET /riak/album/Born-This-Way/_,producer,1
  • 42. Traversing Links[1/4] • GET /riak/album/Born-This-Way/artist,_,1 => all artists linked to album regardless of link tag/type • GET /riak/album/Born-This-Way/artist,performer,1 => artists linked to album with tag/type “performer” • GET /riak/album/Born-This-Way/artist,producer,1 => artists linked to album with tag/type “producer” • GET /riak/album/Born-This-Way/_,performer,1 => object linked to album with tag/type “performer” • GET /riak/album/Born-This-Way/_,producer,1 => object linked to album with tag/type “producer”
  • 43. Traversing Links[2/4] • GET /riak/album/A/artist,_,1/artist,collaborator,1 • GET /riak/album/A/artist,performer,0/artist,collaborator,1 • GET /riak/album/A/artist,producer,0/album,release,1
  • 44. Traversing Links[2/4] • GET /riak/album/A/artist,_,1/artist,collaborator,1 • GET /riak/album/A/artist,performer,0/artist,collaborator,1 • GET /riak/album/A/artist,producer,0/album,release,1
  • 45. Traversing Links[2/4] • GET /riak/album/A/artist,_,1/artist,collaborator,1 => all artists associated with album A and all artists that have collaborated with these artists • GET /riak/album/A/artist,performer,0/artist,collaborator,1 • GET /riak/album/A/artist,producer,0/album,release,1
  • 46. Traversing Links[2/4] • GET /riak/album/A/artist,_,1/artist,collaborator,1 => all artists associated with album A and all artists that have collaborated with these artists • GET /riak/album/A/artist,performer,0/artist,collaborator,1 • GET /riak/album/A/artist,producer,0/album,release,1
  • 47. Traversing Links[2/4] • GET /riak/album/A/artist,_,1/artist,collaborator,1 => all artists associated with album A and all artists that have collaborated with these artists • GET /riak/album/A/artist,performer,0/artist,collaborator,1 • GET /riak/album/A/artist,producer,0/album,release,1
  • 48. Traversing Links[2/4] • GET /riak/album/A/artist,_,1/artist,collaborator,1 => all artists associated with album A and all artists that have collaborated with these artists • GET /riak/album/A/artist,performer,0/artist,collaborator,1 => all “collaborators” of “performers” on album A excluding “performers” • GET /riak/album/A/artist,producer,0/album,release,1
  • 49. Traversing Links[2/4] • GET /riak/album/A/artist,_,1/artist,collaborator,1 => all artists associated with album A and all artists that have collaborated with these artists • GET /riak/album/A/artist,performer,0/artist,collaborator,1 => all “collaborators” of “performers” on album A excluding “performers” • GET /riak/album/A/artist,producer,0/album,release,1
  • 50. Traversing Links[2/4] • GET /riak/album/A/artist,_,1/artist,collaborator,1 => all artists associated with album A and all artists that have collaborated with these artists • GET /riak/album/A/artist,performer,0/artist,collaborator,1 => all “collaborators” of “performers” on album A excluding “performers” • GET /riak/album/A/artist,producer,0/album,release,1
  • 51. Traversing Links[2/4] • GET /riak/album/A/artist,_,1/artist,collaborator,1 => all artists associated with album A and all artists that have collaborated with these artists • GET /riak/album/A/artist,performer,0/artist,collaborator,1 => all “collaborators” of “performers” on album A excluding “performers” • GET /riak/album/A/artist,producer,0/album,release,1 => all albums that “producers” on album A have released
  • 52. Traversing Links[3/4] artist,performer,1 • Bucket name e.g. artist, album • Tag (or type) name e.g. performer, producer • Return (or “keep”) useful in nested traversals • Wildcarding ’_’ for bucket and tag means “any” • Nesting traverse on multiple levels • Multiple Sources? how to walk links from multiple objects?
  • 53. Traversing Links[3/4] artist,performer,1 • Bucket name e.g. artist, album • Tag (or type) name e.g. performer, producer • Return (or “keep”) useful in nested traversals • Wildcarding ’_’ for bucket and tag means “any” • Nesting traverse on multiple levels • Multiple Sources? how to walk links from multiple objects?
  • 54. Traversing Links[3/4] artist,performer,1 • Bucket name e.g. artist, album • Tag (or type) name e.g. performer, producer • Return (or “keep”) useful in nested traversals • Wildcarding ’_’ for bucket and tag means “any” • Nesting traverse on multiple levels • Multiple Sources? how to walk links from multiple objects?
  • 55. Traversing Links[3/4] artist,performer,1 • Bucket name e.g. artist, album • Tag (or type) name e.g. performer, producer • Return (or “keep”) useful in nested traversals • Wildcarding ’_’ for bucket and tag means “any” • Nesting traverse on multiple levels • Multiple Sources? how to walk links from multiple objects?
  • 56. Traversing Links[3/4] _,_,0 • Bucket name e.g. artist, album • Tag (or type) name e.g. performer, producer • Return (or “keep”) useful in nested traversals • Wildcarding ’_’ for bucket and tag means “any” • Nesting traverse on multiple levels • Multiple Sources? how to walk links from multiple objects?
  • 57. Traversing Links[3/4] _,_,0/album,release,1 • Bucket name e.g. artist, album • Tag (or type) name e.g. performer, producer • Return (or “keep”) useful in nested traversals • Wildcarding ’_’ for bucket and tag means “any” • Nesting traverse on multiple levels • Multiple Sources? how to walk links from multiple objects?
  • 58. Traversing Links[3/4] • Bucket name e.g. artist, album • Tag (or type) name e.g. performer, producer • Return (or “keep”) useful in nested traversals • Wildcarding ’_’ for bucket and tag means “any” • Nesting traverse on multiple levels • Multiple Sources? how to walk links from multiple objects?
  • 59. curl -X POST -H “Content-type: application/json” http://host:8098/mapred data @- {"inputs":[ ["artist","Ke$ha"], ["artist", "Lady+Gaga"] ], "query":[ {"link": { "tag": "release", "bucket": "album" }}, {"map":{ "language":"javascript", "source":"function(v) return [v]; "} } ] } ^D
  • 60. curl -X POST -H “Content-type: application/json” http://host:8098/mapred data @- {"inputs":[ ["artist","Ke$ha"], ["artist", "Lady+Gaga"] ], "query":[ {"link": { "tag": "release", "bucket": "album" }}, {"map":{ "language":"javascript", "source":"function(v) return [v]; "} } ] } ^D
  • 61. curl -X POST -H “Content-type: application/json” http://host:8098/mapred data @- {"inputs":[ ["artist","Ke$ha"], ["artist", "Lady+Gaga"] ], "query":[ {"link": { "tag": "release", "bucket": "album" }}, {"map":{ "language":"javascript", "source":"function(v) return [v]; "} } ] } ^D
  • 62. Link Maintenance • Commit Hooks can use either pre- or post-commit hooks • Automatic Backlinks can use commit hooks to generate backlinks automatically • Trigger Messages links could only be used as triggers • Delete Cleanup post-commit hook with backlinks can clean up links to new orphans automatically
  • 63. Link Maintenance • Commit Hooks can use either pre- or post-commit hooks • Automatic Backlinks can use commit hooks to generate backlinks automatically • Trigger Messages links could only be used as triggers • Delete Cleanup post-commit hook with backlinks can clean up links to new orphans automatically
  • 64. Link Maintenance • Commit Hooks can use either pre- or post-commit hooks • Automatic Backlinks can use commit hooks to generate backlinks automatically • Trigger Messages links could only be used as triggers • Delete Cleanup post-commit hook with backlinks can clean up links to new orphans automatically
  • 65. Link Maintenance • Commit Hooks can use either pre- or post-commit hooks • Automatic Backlinks can use commit hooks to generate backlinks automatically • Trigger Messages links could only be used as triggers • Delete Cleanup post-commit hook with backlinks can clean up links to new orphans automatically
  • 66. Possibilities Object metadata extensions?
  • 67. Limitations Not a graph database!
  • 68. References[1/2] • Riak Wiki http://wiki.basho.com/ • Riak Mailing List riak-users@lists.basho.com • Riak Contrib http://contrib.basho.com/ • Riak Code Repos http://github.com/basho
  • 69. References[1/2] • Riak Wiki http://wiki.basho.com/ • Riak Mailing List riak-users@lists.basho.com • Riak Contrib http://contrib.basho.com/ • Riak Code Repos http://github.com/basho
  • 70. References[1/2] • Riak Wiki http://wiki.basho.com/ • Riak Mailing List riak-users@lists.basho.com • Riak Contrib http://contrib.basho.com/ • Riak Code Repos http://github.com/basho
  • 71. References[1/2] • Riak Wiki http://wiki.basho.com/ • Riak Mailing List riak-users@lists.basho.com • Riak Contrib http://contrib.basho.com/ • Riak Code Repos http://github.com/basho
  • 72. References[2/2] • Secondary index support in Riak? Introducing Secondary Indices: http://www.oscon.com/oscon2011/public/schedule/detail/19806 • riak_core applications e.g. Riak Search, riak_zab, riak_pipe • Comet KV database supports Active Storage Objects (ASO), handlers http://vanish.cs.washington.edu/pubs/osdi2010comet.pdf
  • 73. References[2/2] • Secondary index support in Riak? Introducing Secondary Indices: http://www.oscon.com/oscon2011/public/schedule/detail/19806 • riak_core applications e.g. Riak Search, riak_zab, riak_pipe • Comet KV database supports Active Storage Objects (ASO), handlers http://vanish.cs.washington.edu/pubs/osdi2010comet.pdf
  • 74. References[2/2] • Secondary index support in Riak? Introducing Secondary Indices: http://www.oscon.com/oscon2011/public/schedule/detail/19806 • riak_core applications e.g. Riak Search, riak_zab, riak_pipe • Comet KV database supports Active Storage Objects (ASO), handlers http://vanish.cs.washington.edu/pubs/osdi2010comet.pdf
  • 75. Credits • Basho & Riak logos Courtesy of Basho • Icy chained fence photo http://www.flickr.com/photos/existentist/342177746/ • Frozen chain photo http://www.flickr.com/photos/skedonk/4197921511/ • Hook and chain photo http://www.flickr.com/photos/37491467@N07/3871760093/
  • 76. Questions? Figure: http://www.flickr.com/photos/42682395@N04/ @SusanPotter
  • 77. Questions? Figure: http://www.flickr.com/photos/42682395@N04/ @SusanPotter