roma/roma — pull request #23 by kou (2014-11-19 03:08:51+00:00)
Title: Add Groonga based storage backend

What about adding Groonga based storage backend? It is fast like Tokyo Cabinet, has full-text search feature and is well maintained. We may be able to implement "value full-text searchable feature" as a plugin based on the Groonga based storage backend.

[Groonga](http://groonga.org/) is a full-text search engine but it also has column oriented storage feature. So we can use Groonga as key value store.

Here is a benchmark article in Japanese: [GroongaとTokyoCabinetのHash表のベンチマークについて](http://blog.createfield.com/entry/2014/07/26/233617)

It says that Groonga is faster than Tokyo Cabinet.

Note: The benchmark is not the same usage of this pull request. The benchmark stores data to "value" location in hash table. ("value" location is fixed size data store location.) This pull request implementation uses "column" for storing data. "column" is slower than "value" location but "column" supports type (such as text, integer and geo location) and variable size data. Variable size data is suitable for text data.

Here is another benchmark in Rroonga repository: https://github.com/ranguba/rroonga/blob/master/benchmark/read-write-many-small-items.rb#L8-17

It uses "column" not "value" location for storing data.

It says that (file based) Groonga is slower than memory based Tokyo Cabinet but faster than file based Tokyo Cabinet.