[Date Prev][Date Next]
It occurs to me that there is the potential to support an interesting use case
with LMDB when the database resides on remote shared storage. In the context
of slapd, you could run multiple read-only slapds concurrent with a single
read-write slapd on a single database.
The current liblmdb would need a couple small modifications to make this safe
- an option to use fcntl(LOCK) when obtaining a reader slot, and an msync()
when writing to a reader slot, to force reader lock table changes back to the
server before progressing on a read txn.
With an appropriate sharding director (like the feature recently added to
back-meta) you could arrange so that each slapd instance serves reads for a
distinct portion of the overall database. Then each host's memory would be
caching a distinct set of data, maximizing cache effectiveness. The DB size
could then grow arbitrarily large, and you simply add more machines/RAM/slapds
as needed to keep serving from cache.
-- Howard Chu
CTO, Symas Corp. http://www.symas.com
Director, Highland Sun http://highlandsun.com/hyc/
Chief Architect, OpenLDAP http://www.openldap.org/project/