Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[geogig-dev] mapdb storage module prototype

Hi all,

during the last days, I've been experimenting with mapdb (www.mapdb.org) 
in order to find out if it would be suitable as a backend for geogig. So 
I prototyped a mapdb storage plugin for geogig both for objects and graph 
databases.

https://github.com/sebastian-r-schmidt/geogig/tree/mapdb-storage

On Linux Systems I am able to do import, log, status, branch, merge and 
show commands from the commandline. But don't expect it to be production 
ready, it's more a functional prototype and would need a bit of 
polishing before using it in a production context. For example, on a 
Windows machines I ran into some weird problem with background writing 
processes and file deletion coming from mapdb storage system. I will 
look into that further.

If you would like to try it out have a look at
https://github.com/sebastian-r-schmidt/geogig/tree/mapdb-storage/src/storage/mapdb 
how to activate, current status and todos.

My Experiences with mapdb:
* Very easy to use interface
* Performance "feels" ok, but I didn't stress test it really yet.
* Currently Beta releases of 2.0 are happening about every four weeks. 
There are quite a few issues reported on the issue tracker, the author 
seems to work on them. I'm not so sure how to judge on that - no issues 
could also mean that no-one is using it.
* I ran into a problem with multi key Maps and "submapping" (fixed in 
current Snapshot Release).
* No so sure if "beta" means Feature Completeness in the case of mapdb. 
 From 2.0-beta5 to 2.0-beta6 the internal storage format changed. Well, 
that's we're currently doing with geogig as well, so I should not 
complain :-)
* Single Process Database. If one Process (or Thread) is accessing it, 
others cannot reopen. I ran into this while trying to access a geogig 
repo with the geoserver-geogig extension. The Code for UI integration 
opens the DB to check which branches exist, and then it holds the 
lock to the DB preventing the data store to be created.

Comments or even help on coding would be warmly welcomed.

Kind regards,
Sebastian


Back to the top