Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
Clone this wiki locally
For the design of the backend it seems to make sense to look at 3 different user types:
1) simple needs, little content, few writes, few reads (or easily cacheable)
2) mid level needs, maybe a few hundred pages, moderate level of writes, quite a few reads with potentially a fair number of different permission roles
3) heavy users
It seems certainly 1) needs a pure PHP solution that works on any shared host. This means it needs to work with the file system or a MySQL database, but cannot require any custom extensions or server daemons. For 2) should still work on a high end shared hosting package. But requiring Java might be tricky, same for non standard server daemons. That being said, one can probably expect MongoDB/CouchDB to become more available in shared host packages. For 3) we can expect willingness to rely on being willing to install custom extensions and server daemons.
As a result:
1) will use file system or MySQL with Zend_Lucene for search
2) will probably use CouchDB with Zend_Lucene or Lucene/Solr for search
3) will use CouchDB/MongoDB or a Java JCR with Lucene/Solr for search
Some relevant links about Jackrabbit:
– Since RDBMS and even NoSQL are not really ideal for tree traversal, the solution might be to keep the tree structure in some cache (APC, memcache, XML, YAML, PHP Array).