User:Shashi/NoSQL backend

= Design and Brainstorming =


 * Extend / hack the DB_DataObject (or rather Memcached_DataObject) class to provide a way to plug-in NoSQL backends.
 * Use the existing shema definitions (eg. those in db/core.php) to determine the structure for MongoDB collections
 * Also use the same to serialize objects to be stored in Redis.
 * Write seperate functions to perform operations that are currently done using custom SQL queries
 * Create auxillary datastructures for Redis and MongoDB so that slow queries become much faster.
 * Profile everything on all the backends by writing suitable plugins and test cases.
 * Find and use an indexing module for MongoDB to speed-up full-text searches of notices, profiles and groups.
 * Provide an install-time web interface to use multiple backends (eg. store the social graph in Redis as well as MySQL and replicate it on these N redis servers)
 * Provide config options and scripts to change and migrate these later
 * Using the profiling results set predefined configurations for performance / low memory / high disk latency and more use cases.
 * Write scripts to migrate existing installs to the MongoDB and Redis backends and write tests to make damn sure they work.