Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

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.

share|improve this question
    
There are no Design Principals for NoSql! It Name Value Pair Wild West! –  Morons Nov 7 '12 at 22:05

1 Answer 1

up vote 1 down vote accepted

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

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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