Friday, March 6, 2009

Data storage

Contemporary Database access.

Current database technology is mostly based on the relation database, a huge peice of expensive black box software.

However most people design their data from object oriented classes. On all web sites I've worked on, we always first designed the .net data classes, then created tables in the database, and then a mapping between the. It don't really matter if this mapping is hibernate, linq2sql or some manual ado.net mapping. And the performance bottlenecks always seems to be in the databases too, even if there is only a few hundred mb of data.

What i would like to see is two things.
An ORM or object database that i don't have to design the database tables to use. Maybe it generates the tables from attributes i put on my classes.

Secondly i want the data layer to help me cache data, writing caching policies is tiresome, and some messaging system between different servers to invalidate the cache should be in here as well.

Some things are happening that may finally put the relation database to rest. SimpleDB and all the other database from the cloud "operating systems" are moving away from relations and complex concurrency models to scale better. I have no clue how to do complex queries and aggregation on these platforms. Maybe we got too spoiled on relation databases and their unlimited query complexities.