CommunityToolkit / Datasync

A collection of libraries that implement a client-server system used for synchronizing data from a cloud-based database.
https://communitytoolkit.github.io/Datasync/
Other
66 stars 13 forks source link

Datasync server performance #130

Closed tele-bird closed 1 month ago

tele-bird commented 1 month ago

We are considering DS as a way to make our Maui mobile app perform well in a connectivity-challenged environment. We want relatively fast data updates to clients, to reduce their chances of seeing stale data when their device is offline, so we plan to initiate REST requests for certain data proactively, in the background (even when they have not requested to view the data yet).

One concern is the impact that these proactive REST requests might have on our database....

Let’s say.. At maximum, we expect 5,000 or so active users with the mobile app running on their phone at any given time. If we’re polling for data updates every 10 seconds, that would mean our web servers would need to handle 30,000 requests per minute. Does that mean that EF Core will perform 30,000 database queries per minute (one per request) as well? Or, is there some mechanism that EF Core uses to determine whether any changes have been made without making a database query? If not, is there a way we can modify our DS server integration to limit the query load on our DB?

I found this blog post from @adrianhall describing how to implement data caching to avoid DB queries for Azure Mobile Apps. Does this still apply to Datasync? Enabling caching for Azure Mobile Apps with API Management

adrianhall commented 1 month ago

Transferring to discussions.