Top Banner
edo cabinet http://tinyurl.com/edocabinet Sunday, July 19, 2009
59

Edo Cabinet

May 19, 2015

Download

Technology

John Mettraux

Tokyo Cabinet|Tyrant, Ruby FFI, rufus-tokyo
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Edo Cabinet

edocabinet

http://tinyurl.com/edocabinetSunday, July 19, 2009

Page 2: Edo Cabinet

ruby andtokyo cabinet

http://www.flickr.com/photos/kiim/3185168797/Sunday, July 19, 2009

Page 3: Edo Cabinet

jmettraux

swiss guywants to write less codeends up writing too much

http://github.com/jmettraux/Sunday, July 19, 2009

Page 4: Edo Cabinet

why rufus-tokyo ?

need to persist data quickly

Sunday, July 19, 2009

Page 5: Edo Cabinet

Tokyo Cabinet|Tyrant

key/value store

persistent

fast, fast, fast

http://tokyocabinet.sourceforge.net/Sunday, July 19, 2009

Page 6: Edo Cabinet

Hirabyashi-san is providing ruby bindings

but no “sudo gem install”

and it’s ‘extconf’

and ...

http://tokyocabinet.sourceforge.net/rubydoc/Sunday, July 19, 2009

Page 7: Edo Cabinet

Sunday, July 19, 2009

Page 8: Edo Cabinet

what I want

{ }

Sunday, July 19, 2009

Page 9: Edo Cabinet

Sunday, July 19, 2009

Page 10: Edo Cabinet

what I want

what I built

Sunday, July 19, 2009

Page 11: Edo Cabinet

rufus-tokyo

ruby gem

Tokyo CabinetTokyo Tyrant

ruby FFI

Sunday, July 19, 2009

Page 12: Edo Cabinet

http://blog.headius.com/2008/10/ffi-for-ruby-now-available.htmlSunday, July 19, 2009

Page 13: Edo Cabinet

ruby FFI

Sunday, July 19, 2009

Page 14: Edo Cabinet

FFI

Foreign Function Interface

common lisphaskell

Sunday, July 19, 2009

Page 15: Edo Cabinet

ruby FFI

from Rubinius

thanks to Wayne Meissner

to jruby and ruby

http://wmeissner.blogspot.com/2008/11/more-on-ruby-ffi.htmlSunday, July 19, 2009

Page 16: Edo Cabinet

ruby FFI

an example

the ‘crypt’ function

Sunday, July 19, 2009

Page 17: Edo Cabinet

Sunday, July 19, 2009

Page 18: Edo Cabinet

http://files.getdropbox.com/u/76595/rk_crypt.rbSunday, July 19, 2009

Page 19: Edo Cabinet

ruby FFI

an example

‘uuid_generate’

Sunday, July 19, 2009

Page 20: Edo Cabinet

http://files.getdropbox.com/u/76595/rk_uuid.rbSunday, July 19, 2009

Page 21: Edo Cabinet

ruby FFI flow

1) attach functions2) call functions

Sunday, July 19, 2009

Page 22: Edo Cabinet

ruby FFI

an example

libevent

Sunday, July 19, 2009

Page 23: Edo Cabinet

http://files.getdropbox.com/u/76595/rk_libev.rbSunday, July 19, 2009

Page 24: Edo Cabinet

http://files.getdropbox.com/u/76595/rk_libev.rbSunday, July 19, 2009

Page 25: Edo Cabinet

Sunday, July 19, 2009

Page 26: Edo Cabinet

ruby FFI

more fun

from ruby to lua

Sunday, July 19, 2009

Page 27: Edo Cabinet

http://jmettraux.wordpress.com/2009/03/16/ruby-to-lua/Sunday, July 19, 2009

Page 28: Edo Cabinet

http://github.com/remogatto/ffi-inliner/Sunday, July 19, 2009

Page 29: Edo Cabinet

Sunday, July 19, 2009

Page 30: Edo Cabinet

Tokyo Cabinet|Tyrant

Sunday, July 19, 2009

Page 31: Edo Cabinet

Mikio Hirabayashi is the author

mixi.jp is the source

http://tokyocabinet.sourceforge.net/index.htmlSunday, July 19, 2009

Page 32: Edo Cabinet

http://alpha.mixi.co.jp/blog/?author=3Sunday, July 19, 2009

Page 33: Edo Cabinet

http://www.slideshare.net/estraier/introduction-to-tokyo-productsSunday, July 19, 2009

Page 34: Edo Cabinet

Sunday, July 19, 2009

Page 35: Edo Cabinet

rufus-tokyo

Sunday, July 19, 2009

Page 36: Edo Cabinet

2 products

Tokyo Cabinetlocal file

Tokyo Tyrantremote cabinet fileover TCP socket (or Unix socket)

Sunday, July 19, 2009

Page 37: Edo Cabinet

local cabinet lib

Sunday, July 19, 2009

Page 38: Edo Cabinet

remote tyrant server

cabinet lib

Sunday, July 19, 2009

Page 39: Edo Cabinet

ttmemcached

httptyrant server

cabinet lib

Sunday, July 19, 2009

Page 40: Edo Cabinet

2 flavours

- key/value (abstract)

- key/hash of values (table)

Sunday, July 19, 2009

Page 41: Edo Cabinet

{ k => v } { k => { k => v } }

hash

tableB+ tree table

fixed length

table

Sunday, July 19, 2009

Page 42: Edo Cabinet

{ k => v } { k => { k => v } }

abstract table

Sunday, July 19, 2009

Page 43: Edo Cabinet

key/value

like { }

Sunday, July 19, 2009

Page 44: Edo Cabinet

Sunday, July 19, 2009

Page 45: Edo Cabinet

key/hash of values (table)

like a { pk => { } }

Sunday, July 19, 2009

Page 46: Edo Cabinet

Sunday, July 19, 2009

Page 47: Edo Cabinet

Sunday, July 19, 2009

Page 48: Edo Cabinet

locallocal remoteremote

Rufus::Tokyo::Cabinet

Rufus::Tokyo::Table

Rufus::Tokyo::Tyrant

Rufus::Tokyo::TyrantTable

{ } { pk => { } } { } { pk => { } }

1 access1 access1+ accesses

lua embedded1+ accesses

lua embedded

Sunday, July 19, 2009

Page 49: Edo Cabinet

tt-src $ .configure --enable-luatt-src $ makett-src $ sudo make install

http://openwferu.rubyforge.org/tokyo.htmlSunday, July 19, 2009

Page 50: Edo Cabinet

http://jmettraux.wordpress.com/2009/04/07/rufus-tokyo-0112-extlua/Sunday, July 19, 2009

Page 51: Edo Cabinet

http://www.igvita.com/2009/07/13/extending-tokyo-cabinet-db-with-lua/Sunday, July 19, 2009

Page 52: Edo Cabinet

Sunday, July 19, 2009

Page 53: Edo Cabinet

Rufus::Edo

Sunday, July 19, 2009

Page 54: Edo Cabinet

FFI

+ ruby, jruby+ no compilation when ‘gem install’

- slower than classical c extension

=> Rufus::Edo

Sunday, July 19, 2009

Page 55: Edo Cabinet

Sunday, July 19, 2009

Page 56: Edo Cabinet

locallocal remoteremote

Rufus::Tokyo::Rufus::Tokyo::Rufus::Tokyo::Rufus::Tokyo::

FFI Cabinet Table Tyrant TyrantTable

Rufus::Edo::Rufus::Edo::Rufus::Edo::Rufus::Edo::

c ext Cabinet Table ? ?

pure ruby NetTyrant NetTyrantTable

Sunday, July 19, 2009

Page 57: Edo Cabinet

ruby to tyrant, the fastest

http://github.com/actsasflinn/ruby-tokyotyrant/

ruby c extension for Tyrant

rufus-tokyo friendly

Sunday, July 19, 2009

Page 59: Edo Cabinet

many thanks to

Mikio HirabayashiZev BlutIlya GrigorikJustin ReagorFlinn MullerWayne E. SeguinMatthew KingYuki SatowWayne MeissnerKim Erlandsen (picture)and many others

Sunday, July 19, 2009