Database design 我应该在哪里存储需要经常查看的用户统计信息?

Database design 我应该在哪里存储需要经常查看的用户统计信息?,database-design,caching,statistics,Database Design,Caching,Statistics,在我的web应用程序中,我的用户有许多事件。其中一个事件是“用户更新facebook状态”。一个用户可能有数百个此类事件,共有10种类型的事件。我需要以一种非常可伸缩的方式显示事件计数和基于事件的其他用户统计信息。这是因为每个用户都可以看到自己的统计数据。显然,我们无法在用户每次访问网站时都进行计算,因此缓存这些统计数据无疑是一条可行之路 为“statistics”创建一个单独的表有意义吗?该表将为我们正在缓存的每个统计数据提供一个用户id和一列?表基本上起作用了,所以我想知道是否有更好或不同的

在我的web应用程序中,我的用户有许多事件。其中一个事件是“用户更新facebook状态”。一个用户可能有数百个此类事件,共有10种类型的事件。我需要以一种非常可伸缩的方式显示事件计数和基于事件的其他用户统计信息。这是因为每个用户都可以看到自己的统计数据。显然,我们无法在用户每次访问网站时都进行计算,因此缓存这些统计数据无疑是一条可行之路


为“statistics”创建一个单独的表有意义吗?该表将为我们正在缓存的每个统计数据提供一个用户id和一列?表基本上起作用了,所以我想知道是否有更好或不同的方法来实现它。

您可以计算这些统计数据并将它们放入memcache,根据需要读取/增加它们,因为这些数据不需要持久化(将有一个服务器负载尖峰从一个冷缓存,您可能会考虑速率限制登录/计算等)。然而,这种情况是一个理想的候选人的非关系数据存储,如(“高度可伸缩,最终一致,分布式,结构化密钥值存储”)是一个非常有趣的读数:

根本问题是中国特有的 关系数据库的思维方式 把计算的负担放在 读而不是写。这是 对于大规模web应用来说,这是完全错误的 应用程序,其中响应时间为 很关键,这让事情变得更糟了 大多数应用程序的串行性。 页面的每个组件都会在 从数据存储中读取,以及 完成以下操作: 先走一步

非关系数据存储 这种模式完全是因为 没有复杂的读取操作 模型迫使你改变 您的计算将写入,而 将大多数读操作简化为简单的 操作–相当于选择 *从
表中


<>你可以计算这些统计数据并把它们放在MeMcache中,根据需要读取/递增,因为这个数据不需要持久化(有一个服务器负载尖峰来自一个冷缓存,你可以考虑速率限制登录/计算等)。但是,对于非关系数据存储(如“高度可扩展、最终一致、分布式、结构化的键值存储”)来说,此场景是一个理想的候选。这是一个非常有趣的阅读:

根本问题是中国特有的 关系数据库的思维方式 把计算的负担放在 读而不是写。这是 对于大规模web应用来说,这是完全错误的 应用程序,其中响应时间为 很关键,这让事情变得更糟了 大多数应用程序的串行性。 页面的每个组件都会在 从数据存储中读取,以及 完成以下操作: 先走一步

非关系数据存储 这种模式完全是因为 没有复杂的读取操作 模型迫使你改变 您的计算将写入,而 将大多数读操作简化为简单的 操作–相当于选择 *从
表中


Cassandra非常有趣,谢谢你的链接。我正在研究这是什么意思——“页面的每个组件都会阻塞数据存储的读取,以及之前的操作的完成情况。”代码是按顺序处理的(即逐行处理),因此缓慢的操作会减慢下面的所有内容。“读取时阻塞”means等待返回数据。明白了。对于我的情况,Cassandra似乎有点过火了,因为主要的一点似乎是阻止复杂的连接和读取时间。在我的情况下,我只需要缓存每种类型事件的计数。例如,我有事件类型“用户更新的facebook状态”事件表中可能有5000万行,我需要按userid和event_type_id查询计数,这样我就可以说“此用户已注册此事件43次”所以问题不是复杂的查询,而是昂贵的操作。你认为Cassandra仍然值得考虑吗?Cassandra非常有趣,谢谢你的链接。我正在研究这是什么意思-“页面的每个组件都会阻塞从数据存储中读取的数据,以及之前操作的完成情况。”代码按顺序处理(即逐行处理),因此缓慢的操作会减慢它们下面的所有内容。“阻塞读取”“意味着等待返回数据。明白了。对于我的情况,Cassandra似乎有些过火了,因为主要的一点似乎是阻止复杂的连接和读取时间。在我的情况下,我只需要缓存每种类型事件的计数。例如,我有事件类型“用户更新的facebook状态”事件表中可能有5000万行,我需要按userid和event_type_id查询计数,这样我就可以说“此用户已注册此事件43次”,所以问题不是这么复杂的查询,而是一个昂贵的操作。您认为Cassandra仍然值得考虑吗?