user model
class User
attr_accessor :user_id
attr_accessor :email
def lc_email
email.downcase.strip
end
end
17
Slide 18
Slide 18 text
credential model
class Credential
attr_accessor :credential_id
attr_accessor :token
has_one :user
end
18
Slide 19
Slide 19 text
board
19
Slide 20
Slide 20 text
board model
class Board
attr_accessor :board_id
attr_accessor :title
has_one :creator, :class => User
has_many :pins
end
20
Slide 21
Slide 21 text
pin
21
Slide 22
Slide 22 text
pin model
class Pin
attr_accessor :pin_id
attr_accessor :caption
has_one :board
has_one :original, :class => Pin
has_many :comments
end
22
Slide 23
Slide 23 text
discovery
23
Slide 24
Slide 24 text
modeling
with riak
24
Slide 25
Slide 25 text
riak kv
•bucket : key namespace
•key : key identifier
•value : blob or structured
GET /riak/users/LijPmIDZ
{"email":"[email protected]"}
25
Slide 26
Slide 26 text
links
•link : metadata pointer
•tag : link type
•target : key reference
GET /riak/boards/B5SMouGg
> Link: ;
riaktag="creator"
26
Slide 27
Slide 27 text
traversing links
•bucket : bucket to include
•tag : link type to collect
•keep : (0 or 1) return linked values
•“_” is wildcard
GET /buckets/boards/keys/J9MlC2EN/
users,creator,1
27
Slide 28
Slide 28 text
2i : secondary indexes
•index : index name + type
•type : string or int
•key : reference
GET /riak/users/LijPmIDZ
> x-riak-index-email_bin:
[email protected]
28
Slide 29
Slide 29 text
2i querying
•bucket : implicit in result
•range queries as well
•full list of keys returned unsorted
GET /buckets/users/index/
email_bin/foo%40bar.com
{"keys":["LijPmIDZ"]}
29
Slide 30
Slide 30 text
search
•bucket : values to search
•full-text tokenized
•“+” and “-” allowed
GET /solr/users/select?q=email%3A+foo
%40bar.com&wt=json
{... "docs":[{"id":"LijPmIDZ","index":"users",
"fields":{"_type":"User",
"email":"[email protected]"}}]}}
30
Slide 31
Slide 31 text
map-reduce
•POST to /mapred endpoint
•input : optional input values
•map : function to generate
intermediate values
•reduce : function to process
intermediate values
31