# Sunday, 24 October 2010
Question: If you were given carte blanche to design a cloud platform, which database would you use?
Answer: This is a trick question since "none" is an acceptable answer.

In researching how to manage cached objects for the Cool Mesh project, I found this article on the High Availability blog "Are Cloud-Based Memory Architectures the Next Big Thing?" that articulates a lot of what I'm seeing in progressive cloud design.

Many high availability cloud platforms currently manage all reads and writes through memcached objects before persisting to a database. In some cases, the database write is done asynchronously while the cached object is trusted as authoritative. How can a database be called a system of record if the client is already proceeding on operations with a cached object before it hits the database? Dunno. It's only a matter of time before common sense prevails and we begin to manage in memory objects as the system of record and using disks as a backup or bootstrap index.

Now, would I let 100 people withdraw funds from a single bank account using this architecture? Probably not. A RAM system of record assumes some level of volatility, immutability, and non-transactional requirements.

I see this cloud architecture playing out in a couple phases:
1) RAM based architectures with system of record in memory, but still using disks for backup
2) Solid State Drive (SSD) based architectures that have memory I/O performance, but revert back to system of record on disk

The timing of each phase is largely driven by the cost and performance of SSDs. Cool Mesh is learning towards the phase 1 approach, but also makes use of HTML5 local storage for distribution of object storage, so no real benefit in waiting for phase 2 anyway.

Sunday, 24 October 2010 15:19:23 (Pacific Daylight Time, UTC-07:00)