Partition question

Are paritions just a way to silo access to data or are there performance benefits?

For example, with the task tracking tutorial application, let’s say a user has multiple projects, each with multiple tasks.

All the project and task data would be read-write for a given user, let’s say with a partition value of “user=user1”.

You could give every project and task the same partition as their user: “user=user1”

Or you could give every project and task the following partitions

user=user1;project=proj1
user=user1;project=proj2
user=user1;project=proj3

Are there performance benefits to further sub-partitioning each project and its tasks?

3 Likes

@David_Boyd There are performance benefits for partitioning data if the partition is read/write for mobile clients.

For read/write partitions we generally recommend 20-30 clients, this number is non-deterministic because it depends on how much data each client is writing, how much of this data is conflicting with other writes, the amount of time the user is offline - so it can vary but this is a good number for a rule of thumb.

For read-only realms its not uncommon to scale to thousands or tens of thousands of clients listening to a read-only realm - this is because it is essentially a data push without conflicts.

I hope this helps

Thank you! 20-30 writes? Can you elaborate on that? Is this during a specific time period or total or per-second/minute/hour?

@David_Boyd Oops, typo - I meant 20-30 client writers - updated :smiley: