实时数据处理和报告(建议)

时间:2017-06-14 16:04:56

标签: sql

TLDR;

好的,所以我在下面写的不太清楚......

长话短说。我正在寻找一种数据库解决方案,它支持高速摄取,快速处理以及直接通过API(用于客户端报告)或通过客户端(可通过API访问)执行大型复杂查询的能力。

虽然我已经看过各种解决方案,但我没有足够的经验(在这个领域)知道哪个是最好的,以及它们的实现是否适合我的要求(因此尝试解释我的要求。)

我们目前使用了大量的AWS服务,因此任何直接托管或通过AMI进行托管都非常有用。

我被赋予了重新设计和升级我们当前数据分析系统的任务,该系统基本上运行在极其陈旧且不受支持的软件上,相当缓慢且完全不可扩展。

背景

目前,我们有一个ColdFusion服务器,它通过电子邮件,FTP和通过我们的客户端界面手动上传来监听正在接收的文件。然后解析文件并将其提取到事实表中。

然后将作业添加到队列中,该队列告诉我们的数据处理器以30分钟的间隔收集事实记录并对它们进行一些计算。

由于ColdFusion的时代,我们已经决定摆脱它并找到更多的物联网/大数据意识。

我尝试了什么

数据重组/规范化

因此,许多功能都是基于客户/用户在10年前定义的要求,而这些要求已不再适用。考虑到这一点,数据进行了重组,使其更容易理解和索引。

事实/汇总表

由于每个数据记录之间的间隔可以是完全随机的,即1-30分钟,因此系统必须处理所有数据,同时提供一致的体验。这就是我们当前系统默认以30分钟为间隔进行报告的原因。

事实表包含原始数据,即id, timestamp, value,相应地在ID和时间戳上建立索引。

然后我研究了使用Window函数为记录之间的每分钟生成行,将记录之间的差异除以分钟数并填补空白。

这显然导致摘要表中至少48行,变为1440行,这进一步降低了速度。

尝试了另一个解决方案,然后使用上面的窗口函数,但是在查询数据进行报告时 - 直接失败了。

ElasticCache / Solr的

在处理完数据之后,我想到了使用ElasticCache或类似的方法对其进行索引,并且初始测试看起来很好,但是它们的聚合功能并不适合我需要的东西(即你可以按日期等分组,但是你失去了能力分页。)

现在......

所以,我一直在研究各种内存解决方案,即Hadoop / Hive,面对事情看起来很神奇,我很关心如何将数据提供给前端。

我认为这需要一个API与Hadoop / Hive进行通信?

我很欣赏这是一个悬而未决的问题但是我的雇主限制我不会为某人咳嗽,除非我能证明我已经筋疲力尽了。

1 个答案:

答案 0 :(得分:0)

您的要求有点含糊。因此,让我尝试提出一个选择,如果您愿意,我会很乐意通过更新我的答案来进一步深入研究。

由于您提到您当前已经在使用大量AWS服务,因此是否考虑过使用AWS IoT Analytics处理,存储和分析IoT数据?它具有可扩展的摄取部分,针对IoT用例进行了优化的数据存储,并与AWS机器学习套件和QuickSight集成以进行分析。

在这里看看:https://aws.amazon.com/iot-analytics

免责声明:我正在AWS上工作,但此帖子仅基于我的个人观点,并非AWS的正式声明。