首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在构建可伸缩的“运行平均”视图时,我应该考虑哪些数据库技术?

在构建可伸缩的“运行平均”视图时,我应该考虑哪些数据库技术?
EN

Stack Overflow用户
提问于 2015-05-16 20:12:16
回答 1查看 27关注 0票数 0

我们正在开发一个应用程序,数百万用户将同时输入信息。假设应用程序允许人们对他们想要居住的地理区域进行评级。允许每个参与者使用从0到10的十进制值对每个区域进行评级。每个人都属于基于性别等属性的一个或多个群体,以及自认为活跃或享受文化的人。

每次评分时,我们都需要有一个视图,显示每个区域/组的平均评级。我知道大多数DB都有一个“平均”函数,但是为了我们的目的,我们需要能够使用我们自己的函数,因为我们可以使用几何平均值而不是算术平均值。

下面是一些可能使用的表。注意:为了简洁起见,i没有包含关系表PeopleGroups,该表映射一个人所属的组。

代码语言:javascript
运行
复制
Regions               People            Groups              RegionScoresByPerson
+-----+------------+  +-----+-------+   +-----+----------+  +-----+-----+-------+
| RID |    NAME    |  | PID | Name  |   | GID |   Name   |  | RID | PID | Score |
+-----+------------+  +-----+-------+   +-----+----------+  +-----+-----+-------+
|   1 | Flordia    |  | P1  | Alice |   | G0  | Everyone |  |   1 | P1  |     6 |
|   2 | California |  | P2  | Bob   |   | G1  | Women    |  |   1 | P2  |     8 |
+-----+------------+  | P3  | Frank |   | G2  | Men      |  |   1 | P3  |     3 |
                      | P4  | Mary  |   | G3  | Active   |  |   1 | P4  |     2 |
                      +-----+-------+   | G4  | Culture  |  |   1 | P1  |     7 |
                                        +-----+----------+  |   1 | P2  |     5 |
                                                            |   1 | P3  |     8 | 
                                                            |   1 | P4  |     2 | 
                                                            +-----+-----+-------+ 

我们当前的实现使用了一组类似的表来存储评级,但我们并不实时计算平均值。当我们需要结果时(例如,给我显示加州女性的平均分数),我们必须把所有的信息提取到内存中,并手动运行计算。

我想知道如何利用数据库技术,如视图、触发器、存储过程等,向我展示一个简单的表,使我能够获得人员和组的分数,这样我们就不必手动计算了。

我想要一些表,如下所示,其中所有内容都由DB处理。RegionScoresByPerson表上的任何插入、更新、删除操作将自动反映在此表中。如果不明显,则标记有*计算行的行。在这种情况下,我使用的是一个简单的算术平均值,但是我的设计应该允许任何类型的函数。

EID代表实体ID (个人或团体)

除了决定如何构建这样的视图之外,我还不确定如何为PeopleGroups使用什么类型的数据类型(和索引)。我想我希望索引是整数,但这会阻止我创建下面的表,因为我无法区分Person 1和Group 1 -- ID(如P1和G1 )会影响性能吗?显然,我担心这种设计是可伸缩的。

代码语言:javascript
运行
复制
ScoreView
+-----------+-----+-------+
| RID       | EID | Score |
| 1         | P1  | 6     |
| 1         | P2  | 8     |
| 1         | P3  | 3     |
| 1         | P4  | 2     |
| 1         | P1  | 7     |
| 1         | P2  | 5     |
| 1         | P3  | 8     |
| 1         | P4  | 2     |
| 1         | G0  | 4.75  |*
| 1         | G1  | 4     |*
| 1         | G2  | …     |*
| 1         | G3  | …     |*
+-----------+-----+-------+
EN

回答 1

Stack Overflow用户

发布于 2015-05-16 20:55:16

Apache是为解决这类问题而设计的开源工具。还可以看看。

https://flume.apache.org/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30280275

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档