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.
Designing persistence schema for BigTable on AppEngine
database design;relational database;google cloud datastore
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 entitiesThe 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:Datastore Overview (Python)Entities, properties and keys (Java)Data Modeling and Scalability in Google App Engine (Python examples)BTW, GAE also provides support for relational DBs based on MySQL