...on the code front, having done the Apache integration is the object store. I'm still writing documentation for what we have already, but I'm talking specifically about code here.
As you'd know from the open source code, a part of the Candomble (the internal name for the object store) is based upon SQLite. Specifically, the bit that writes to disk, when it needs to.
However, we're designing this system to run on multiple machines, transparently, so what becomes absolutely needed is a message passing architecture.
Here are some of the basic requirements of a cloud object store:
- Distributed - the system needs to distribute data across many machines
- "Self Aware" - as more machines come into play, the load is shared without any manual configuration on the part of the datastore clients or the datastores themselves.
- Redundant - each piece of data always needs to be in at minimum, two places
- Predictable - should go without saying really, but the datastore needs to have predictable speed. It's easy to make it go blindingly fast, but better is that it operates at a reasonable pace, all the time.
- Segmented - again, it should be obvious. Because we're storing data for multiple sites, it needs to segment itself nicely into data partitions for each of those sites, without fear of that data colliding.
There are others, but those are the ones I'm having to deal with right now.