Hi all,

I’ve developed a new database connectivity library for Pharo, called Tarantalk.

Tarantalk is a connector for Tarantool.

Tarantool is a Lua engine with tuple persistence. It is like a GemStone in Lua.

Firstly, Tarantalk can be used as a tuple-centric DBMS. You can store
arbitrary Smalltalk objects as tuples, and retrieve them by multiple

tarantalk := TrTarantalk connect: ‘taran:talk@localhost:3301’.
space := tarantalk ensureSpaceNamed: ‘bookmarks’.
primaryIndex := space ensurePrimaryIndexSetting: [ :options | options
tree; partsTypes: #(#string)].
space insert: #(‘Tarantool’ ‘https://tarantool.org’ ‘Tarantool main site’).
space insert: #(‘Pharo’ ‘http://pharo.org’ ‘Pharo main site’).
primaryIndex selectHaving: #(‘Pharo’).
” => #(#(‘Pharo’ ‘http://pharo.org’ ‘Pharo main site’))”

What is more interesting is that Tarantalk can call remote Lua
functions and can evaluate Lua expressions.
So you can extend your database system freely with Lua and Smalltalk!

— Lua
function bookmarkUrls()
local urls = {}
for k,v in box.space.bookmarks:pairs() do
table.insert(urls, v[2])
return urls

tarantalk call: ‘bookmarkUrls’.
” => #(#(‘http://pharo.org’ ‘https://tarantool.org’))”

(tarantalk evalWithReturn: ‘(require(“digest”).sha512_hex(…))’
arguments: {‘Hello, Smalltalk’}) value.
” => #(‘ec599e128831b282f6f7a833834c90a3eb2e61453e5757ca3c2bc8a26e94d7c2f76bd6a7ce33df2427f3821e44a12d26781d39eac6782b59a649950ea59f9e13’)”

Moreover, Tarantalk is pretty fast compared to some other NoSQL databases.

A simple micro benchmark shows that Tarantalk is about 5x faster than
RediStick Redis client.


[:masashi | ^umezawa]


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

%d bloggers like this: