Kii Cloud is a very powerful platform for modelling your data. After taking a look, you can see immediately that it's just another JSON store. However, it has some capabilities beyond storing/retrieving JSON that make it better suited for mobile development.
In Kii Cloud, we have the concept of "buckets". "buckets" are containers which contains a set of objects. Those objects can be of any type - or, even more, they can be just untyped JSON documents.
Those "buckets" are located in a "scope". A scope can be:
- The root of the app
- A given user
- A given group
You can take advantage of them to organize your data, and we take advantage of this layout to scale your app better.
For example, it's a common data pattern that your users have private data, which they access individually. By storing this data together with the user (in a "user-scope" bucket), we ensure that this data can be efficiently accessed individually.
Another common data access pattern is that you have data that belongs not to a single user, but to a group of users. By using a group-scoped bucket in this case, you give us hints about how to better layout that data for this access pattern.
Indexing all of this heterogeneous data for the access patterns you need is a challenging task, and we need as much info as you can give us for it. By using scopes wisely, you ensure that the Kii Cloud understands your data access patterns and stores your data according to them, and therefore your app scales nicely and response times are good.
ACLs are access control lists. With this feature, you can set who has access to what data. There are different ACLs for each item, allowing each different operations. Refer to our documentation for details.
By the way, scopes (described above) also provide default "sensible" ACLs for the objects, depending where the bucket is scoped (user-private data, group-private data...). This is very powerful and makes permissions and data modelling in Kii Cloud feel quite natural: take advantage of it!
Objects have only one unique property - their ID. The uniqueness of the ID is guaranteed in a given bucket.
We provide automatic UUID-based identifiers in case you don't care about them, but having your own assigned IDs is a powerful feature you can take advantage of when, for example, ensuring you're storing objects with a unique property - Just use this property for the ID.
Let me remark that IDs are unique in a bucket - object with ID "1234" in app-scoped bucket "ABC" is not the same as object with ID "1234" in app-scoped bucket "DEF".