erdody
unread,Jun 28, 2010, 5:17:48 PM6/28/10Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to project-voldemort
Hello,
We have decided to use Voldemort and there is one problem we need to
address.
We have a few fields (we use JsonSerializer and the value is a map of
several fields) we need to query by, on rare occasions, and we would
need range queries on some of these fields. These queries would be
made as maintenance tasks so performance is not critical, but we need
to be able to perform them somehow.
One option I was considering is to take advantage of the Secondary
index support in BDB and create an extension of BdbStorageEngine that
creates a BDB secondary database for each secondary index we need. The
SecondaryKeyCreator would need to deserialize the main value, extract
the corresponding value and create the secondary key. This creates a
performance overhead, but based on our preliminar tests, it's not very
significant.
The main advantage of this approach, as opposed to maintaining a
secondary index by hand (double StoreClient.put) is that the secondary
insert is transactional, handled by BDB.
Then, to make the range query, I was thinking of using something
similar to the AdminClient.fetchKeys, but taking advantage of the BDB
range queries support. I would need to make such query for each node
(could be done in parallel), of course, and merge the results.
A) Is our idea too crazy?
B) Other suggestions?
C) Are range queries or secondary indexes support in the Voldemort
roadmap?
Thanks in advance,
Diego Erdody