David McNab wrote:

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

Reply via email to