I have tried to design the datastore schema for a very small application. That schema would have been very simple, if not trivial, using a relational database with foreign keys, many-to-many relations, joins, etc.

But the problem was that my application was targeted for Google App Engine and I had to design for a database that was not relational. At the end I gave up.

Is there a book or an article that describes design principles for applications that are meant for such databases?

The books that I have found are about programming for App Engine and they don't spend many words about database design principles.

  • There are no Design Principals for NoSql! It Name Value Pair Wild West!
    – Morons
    Nov 7, 2012 at 22:05

1 Answer 1


In general, creating a data model for a NoSQL database is no different than for any other database (remember No stands for NotOnly). You should still look for cohesive objects that you can name and describe as:

  • entities (or in some cases: documents)
  • attributes
  • associations/relationships between entities

The difference to a traditional relational model may come from particularities of the NoSQL DB used, or the scenario you are trying to achieve (i.e. optimize for frequent reads, writes, udpates). For example, in a GAE application you can optimize read access by explicitely modeling parent/child relationships, keep data consistent by entity groups, and multi-valued properties to improve multi-entity join operations.

There is some good documentation on this (related to GAE) by the folks at Google and others:

BTW, GAE also provides support for relational DBs based on MySQL

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.