2. About Us
• Founder of Oursky Ltd.
• Web application development services
(Ruby on Rails, Django, Pylons, PHP,
Wordpress, etc.);
• FONCEPT.com - a T-Shirt design sharing
portal;
• Working on a SaaS workflow application.
8. Take advantage of
Python Power
• TIOBE: Python is no. 8
• Such as:
• Want interactive debugger? iPython
• Logging? Chainsaw
• Testing? Nose, MiniMock
• ..... blah blah balh
9. Power of other Python
Web Framework
• Tons of lib from Zope
• ToscaWidgets from TurboGears
• Authkit
• (except Django)
10. Community
• Pylons Book
• Quick response (e.g.):
• We fired Ticket #620 at Pylons Trac
• “init_model called twice in nosetests”
• Bug get fixed in 2 weeks, committed to
trunk and temp. solution are discussed.
12. Introduction
• By mixi.jp (Facebook in Japan)
• TokyoCabinet (Engine)
• TokyoTyrant (Server)
• TokyoDystopia (Full-Text Search)
• Opensources, standard C
13. TokyoCabinet
• Key/value DB
• Insert: 0.4 sec / 1M records
• Search: 0.33 sec / 1M records
• hash / B+ Tree structure
• Key Value / Hash / B+ Tree / Fixed Length /
Table
• Driver: Perl, Ruby, Python, PHP, Erlang...
14. TokyoTyrant
• Network server
• Binary / Memcache / HTTP protocol
• 17.2 sec / 1M queries
• Hot Backup, Master-to-Master replication
• Extensible by Lua
15. Lua - Extensions
function incr(key, i)
i = tonumber(i)
local old = tonumber(_get(key))
i = old + i
_put(key, i)
return i
end
16. Lua - Extension
function expire()
local args={}
local cdata = string.format(“%d”, _time())
table.insert(args, “addcond0x0NUMLE”..cdata)
table.insert(args, “out”)
local res = _misc(“search”, args)
if not res then
_log(“expire failed”)
end
end
18. LightCloud
• Distributed and persistent key-value
database
• Opensource and used by Plurk
• Scale out by just adding nodes
• Nodes are replicated
Elapsed for 10000 gets: 1.74538516998 seconds [memcache]
Elapsed for 10000 gets: 3.57339096069 seconds [lightcloud]
Elapsed for 10000 sets: 1.88236999512 seconds [memcache]
Elapsed for 10000 sets: 9.23674893379 seconds [lightcloud]