我们正在开发一个应用程序,其中数百万的用户将同时输入信息。 假设该应用程序允许人们对他们想居住的地理位置进行评估。 允许每个参与者使用0-10之间的十进制值对每个区域评分。 每个人根据性别(例如,性别)以及认为自己活跃或喜欢文化的人都属于一个或多个组。

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

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

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 | 
                                                            +-----+-----+-------+ 

我们当前的实现使用一组相似的表来存储评分,但是我们无法实时计算平均值。 每当我们需要结果时(例如,向我显示加利福尼亚州女性的平均得分),我们都必须将所有信息拉入内存并手动运行计算。

我想知道如何利用数据库技术(例如视图,触发器,存储过程等)向我展示一个简单的表格,该表格可以让我按人员和组的评分,因此我们不必手动运行计算。

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

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

除了决定如何构建这种视图之外,我不确定要为PeopleGroups使用(和索引)哪种数据类型。 我想我希望索引是整数,但是这将阻止我创建下表,因为我无法区分Person 1和Group 1 -具有ID(例如P1和G1)是否会对性能产生影响? 我显然担心设计的可扩展性。

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  | …     |*
+-----------+-----+-------+

===============>>#1 票数:0

Apache Flume是旨在解决此类问题的开源工具。 还可以查看Google Cloud Dataflow。

https://flume.apache.org/

  ask by WhiskerBiscuit translate from so

未解决问题?本站智能推荐:

3回复

我们应该对哪种数据库进行隔离,以及哪种隔离级别最好?

在SQL Server 2005中, 我有很多存储过程,一些用于事务的更新表记录,一些用于获取表记录。 当一个SP调用一个正在更新表记录的浏览时,如果我运行另一个SP来表示表数据,那么它应该在没有等待的情况下运行,我需要做什么? 我们应该对哪种数据库进行隔离,以及哪种隔离级别最
1回复

如果映射Timestamp类型的数据库列,应该使用C#中的哪种数据类型? [重复]

这个问题已经在这里有了答案: T-Sql中的时间戳在C#中意味着什么? 4个答案 我的客户端使用C#作为客户端,对SQL Server ORM使用Insight.Database 。 我遇到了SQL Server 2017数据库数据类型'时间戳',并且不确定C#
1回复

Sql Server Migration Assistant使用哪种数据库作为内部数据存储库?

Sql Server Migration Assistant使用哪种数据库作为内部数据存储库并将其存储在source-metabase.mb文件中? 我想这是我可以用来打开和编辑某些条目的标准工具之一(我需要为带有BLOB数据迁移的表自动添加一些自定义脚本) 您也可以建议如何检查最流
1回复

systemdbserver.systebdb.dbo是哪种数据库模式?

因此,我在这里冒一些风险。 但是,由于对SQL Server并不十分熟悉,所以有时我看到似乎是如下所示的数据库架构: 我熟悉dbo是什么,但是您是否可以告诉我,例如, systemdbserver是数据库服务器的名称(顾名思义),那么SystemDB是database ,最后DBO是s
5回复

哪种数据类型最适合在数据库中保存图像?

我们正在使用Asp.net和Sql server开发一个电子商务网站。 客户可以查看和订购各种开关和灯具。 由于我们需要为每个类别显示这些产品的图像,我们需要显示的图像数量可能会增加到500以上。我们对是否应该将这些图像保存为SQL中的图像类型或者是否更好地存储图像的路径。 在后一种情
1回复

哪种数据库软件适合于数据历史学家? [关闭]

我的项目是一个数据历史系统。 它每5秒钟从源读取一次数据(包含10,0000条记录),并将其插入数据库以进行报告和分析。数据的格式很简单(iNT,INT,Float,DateTime)。 我必须使用OLAP数据库方法吗? SQL Server是否适合这种情况? 谢谢...
1回复

哪种数据类型可用于在数据库中存储HTML文件?

我想在Sql Server存储一个网页。 该页面可能包含图像和其他内容。 我应该使用哪种数据类型? 如前所述这里 ,NTEXT,文字和图像数据类型将在未来版本中删除SQL Server 。 什么数据类型可用于存储具有不同内容的HTML文件,如图像和JavaScript代码等内容?
1回复

播种数据库的策略

我刚刚开始研究使用SQL Server DB的.NET项目。 我得到了一个脚本,该脚本使用所有表,SP等设置数据库,但没有数据。 我最初的冲动是进入数据库并手动输入一些虚拟数据来设置几个用户,依此类推,以便我可以开始使用该应用程序。 但是,每次我尝试添加记录时,外键约束都会妨碍您。
3回复

这种数据库设计可以吗?

我正在为一家地毯公司开发一个mvc应用程序。 地毯的价格将取决于颜色组合和尺寸。 因此,为了模拟这种情况,我使用了2个表。 1,地毯 2.CarpetVarients。(用于各种颜色和尺寸组合)。 在CarpetVarients表中,我正在考虑创建“颜色”,“尺寸”和“价格”列(以
4回复

对于有很多问题的问卷,我应该使用哪种类型的数据库设计?

我有一个项目,需要记录对包含50多个问题的问卷的回答。 每个问题都与数字1到5相关联。因此,每个调查表填写的数据类似于 每个人都问同样的问题。 我想知道对于这种情况正确的数据库设计是什么。 我会像 或这样做的更好方法是什么? 我是否使用巨型varchar列来序列化信息