## Designing no-SQL Schema

From: andrew cooke <andrew@...>

Date: Wed, 20 Jul 2011 22:55:33 -0400

I'm designing a schema for Google's AppEngine data store.  It's an interesting
process.  Since I am using Django nonrel, the model looks very similar to a
"normal" schema - I am using Model instances, CharFields, etc etc.

But the models themselves are very different.  From an SQL viewpoint, they are
a complete mess - there are many less tables, with large (ie string) values
repeated between models.

This is driven by the lack of joins and a desire for efficiency.  The end
result is strongly driven by the way in which the data are accessed
(completely unlike SQL).

In simple terms I have to sketch out how the application will work, identify
what data will be used for each process, and places those data items in a
single model.

This is a rather worrying process - what do I do if the application needs
extending in some way?  Perhaps even now I have too many (3) models - perhaps
there should be just one?  To be more confident in my database design I have
had to work out how my application will work in more detail than I would like.
The database is constraining my options to adapt my design.

The last point above is interesting - I have not seen it made before.  Using
no-SQL seems to reduce your agility.  But, of course, this may be simply my
lack of experience talking.  To try to reduce it into more objective terms: I
think I am saying that I am more confident in my domain model than in my
process.  Is that reasonable?

Andrew