Memory footprint: - does Metakit load the whole DB into memory upon calling storage()?
Nope. Memory mapped files.
- does Metakit hold each entire view in memory?
If you create it: yes. Once committed: no. If you make changes: some pieces until commit.
Concurrency: - what are the better schemes for db locking, in cases where multiple clients (eg under Apache CGIs) need to write to a db? - if I'm using file locks to make it safe for multiple client writes, how severely will this impact the website performance under load (eg if being slashdotted) ? (worst case scenario - someone doing a site search)
Metakit does not support concurrent access (other than the trivial all-read-only).
Two ways to do it: server process or file locks.
For wikit, a simple wiki based on MK, I use file locks + a static Apache page cache, triggered by error redirects when a static copy is not present. Works/scales well.
For Python, have a look at Brian Kelley's Metaserve, it's on the links page:
http://www.equi4.com/mklinks.html
In the future, the design wil be commit-aside: saving changes to a second file, with "instant replay" for readers (again, mmap: no reading until used). A bit like journalling, but geared at MK's more specific properties. Will reduce contention to *only* the writers, i.e. just a file lock on the commit-aside file for writers. Semi-vaporware ("some condensation").
-jcw
_____________________________________________ Metakit mailing list - [EMAIL PROTECTED] http://www.equi4.com/mailman/listinfo/metakit
