针对IndexedDB存储的多用户分析

时间:2016-06-17 17:34:44

标签: javascript html5 web-applications architecture indexeddb

我正在创建一个Web应用程序,并且需要存储一些用户数据(例如他们在应用程序中的收藏夹历史记录)。我曾考虑过将IndexedDB用于此目的,因为它比我在使用MySQL的服务器端更容易实现。但是,我确实希望针对此用户数据运行分析,例如询问用户保存到其收藏列表的最受欢迎的内容是什么。如果我使用IndexedDB,我可以在客户端使用一些Javascript来偶尔转发来自每个IndexedDB存储的用户数据,以便对其进行分析。我的问题是:这是否可以扩展为> 25,000名用户?或者,我只是在用这种方法遇到麻烦,在这种情况下,我应该只在服务器端将所有用户数据存储在MySQL中,以便更轻松地进行分析?

1 个答案:

答案 0 :(得分:0)

这是两个不同的概念,因为我理解你的问题。

indexDB在本地存储在用户浏览器上,并且受本地用户行为的影响 - 干净的cach,cookie刷新和启用的浏览器选项。

如果您的站点/应用程序将某些数据加载到用户浏览器(例如表/ graphdata / friendlist等),您应该使用indexDB,并且您希望允许快速导航而不需要服务器调用来发送回服务器的某些查询。

考虑到这一点,你可以存储不同的用户会话并构建一个小的键/值数据库,并在你想要服务器MySQL数据库时发送它并将其保存在你身边并允许用户导航这些数据或使用JS API,以便为您的用户加载正确的内容。

服务器端的MySQL数据库可以做同样的事情但你在这里有更多的延迟参数 - 用户位置与服务器位置,DNS,网络延迟,服务器CPU,磁盘,表结构和表大小可能会减慢你的速度。

您应该决定所需的内容,以便在服务器端了解有关用户的更多信息,以及用户需要哪些数据才能快速轻松地使用您的APP。这两个数据流没有捆绑,您可以使用异步JS命令在没有代码阻塞的情况下运行它们。

关于规模问题,IndexDB适用于1-2MB的数据,如果你有一个最喜欢的网站密钥,你应该考虑清理过程或计算应用程序的主要功能。那么你只需要为这个键值添加+1 - sitename_favorite - 5 此数据仅供每个用户使用,负载将在您的MySql服务器上,该服务器将不时为用户获取更新。 IndexDB将由用户的本地机器管理,因此25K用户与indexDB部分无关,一旦用户更新到达,负载将在MySQL服务器上。