我将在RoR上创建统计数据。我有三种模式:用户,项目和渠道。用户拥有项目,而项目有许多渠道。现在,我正在使用MySQL设计所有这些模型。
该业务的目的是为用户提供每个信道不同参数的时间变化。例如:谷歌广告频道每天有1000个节目,每天100次点击,来自谷歌广告公司的两个人当天买了些东西。所以我可以把所有的信息存储在专栏里,比如:频道“谷歌广告”,显示: 1000,点击: 100,购买: 2。但是我需要按天发布,请给我一个如何设计这样的数据库的建议?也许我该用另一个解决方案,也许是NoSQL?
输入:用户每天填写来自不同来源的广告的数据(我称之为渠道,例如: Google ):印象和点击的数量(稍后的数据将自动导入使用API)。输出:各种统计,如图形和CTR的不同渠道,所有渠道等。
发布于 2013-09-17 18:33:16
我建议您为每个属性创建一个单独的表。就像这样
table impressions
-channel_id
-date timestamp
-other attributes like ad_id
table clicks
-channel_id
-date timestamp
-ad_id对于每一个事件,您只要做一个插入,以显示统计数据也是非常有效的-它只是索引扫描与计数或聚合函数。而且,这种方法扩展得很好--您可以很容易地分割这些表。或者用nosql解决方案替换它。对于这样的任务,我推荐HBase --这个数据模型自然会在HBase模式中转换,而且HBase非常擅长范围扫描。
UPD:我看到你的问题更新了,所以我需要澄清。基本表,这些表仍然可以用来存储事实。在它们之上,您可以立即生成图表和报告。如果您关心性能,人们通常会预先收集数据。因此,如果您的员工需要5/10/30分钟的决议,您可以将其汇总为5/10/30_ into _table,以便进行快速报告。
这批处理旧数据需要时间。如果它不适合您的SLA,现代男性使用CEP引擎,如twitter风暴,以分析和汇总这个表的实时。或者,您只需缓冲一分钟,聚合它们,然后存储。我不知道RoR如何适合这个角色,我也不知道您的需求。但我认为这是另一个故事。
https://dba.stackexchange.com/questions/50064
复制相似问题