[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: lmdb as a Lua database



Russell Haley wrote:
Hi,

So I'm using LMDB to create a simple 'database' system for lua that
will allow me to directly serialize and store lua table data. So far I
have used the wonderful lmdb wrapper lightningmdb and created a simple
API to hide some of the mechanisms.

Honestly, your API is so well thought out, I'm doing a disservice by
removing a lot of the powerful features. However, I press ahead and
beg forgiveness. :)

I have two questions:

1) There is a simplified vs cursor API. I am starting to suspect that
the simplified functions are just basic wrappers around the cursor
API? I ask because if this is the case, I could just remove my support
for the simplified API and only have to support one set of functions.

Yes, everything uses cursors internally.

2) The key lookup is blazing fast (so awesome, this thing is going to
smoke!). I wanted to create a way of indexing the data elements within
the database by allowing users to create lua functions that parse the
lua table values.
--a basic table that would be serialized into a lmdb database called t1
t1 = {
1={col_a="test",col_b="item1"},
2={col_a="not-a-test",col_b="item2"},
3={col_a="test",col_b="item3"}
}

--The function that would be called per-row to create an index.
local function(k,v)

    return v.col_a, k
end

The idea would be to use the dupsort feature to create an 'index'
database with data structured as:

not-a-test, 2
test, 1
test, 3

Sure, that's generally what dupsort is for.

--
  -- Howard Chu
  CTO, Symas Corp.           http://www.symas.com
  Director, Highland Sun     http://highlandsun.com/hyc/
  Chief Architect, OpenLDAP  http://www.openldap.org/project/