我们运行的API服务器每天提供大约500,000个请求。我们希望将所有这些要求保存在数据库中,以便能够分析数据。我们记录如下:
我们希望将这些日志保留3个月,这将导致该数据库中约有45.000.000条记录。当记录超过3个月时,它们将被删除。
可以在sql数据库中存储这4500万条记录,但是对这些数据执行任何分析都非常慢。我们希望进行广泛的分析 - 与上周同一天相比,特定用户今天做了多少次请求?与其他任何一天相比,今天有多少百分比的请求失败?查看趋势图,显示请求数量是上升还是下降。查看在给定时间要求的前10个资源。你得到它 - 我们希望能够做这样的所有分析。
您能否就如何存储这些日志提供任何建议,以便能够实时(或接近实时)进行这样的分析?任何可能对此有用的nosql数据库? Azure的?我看到有一种名为azure sql datawarehouse的东西,可以用于此吗?我查看了Microsoft Power Bi,它可能非常适合对这些数据进行分析,但我在哪里存储数据。
如果有人对我提出一些建议,我将非常感激。
答案 0 :(得分:2)
Power BI可能是一个很好的解决方案。它实际上在内存中旋转了一个SQL Server Analysis Services实例,它实际上是一个" OLAP数据仓库"。在免费的PBI桌面工具中进行设计并向PBI Web用户发布到Microsoft的云时,基础结构要求极低。
可以发布的数据有限 - 请参阅下面的链接。请注意,PBI使用非常有效的Vertipac压缩,因此数据集通常比原始数据小很多。我经常看到每MB 10k到50k行,因此使用单个Pro许可证应该可以达到45m。在PBI Desktop中无情地过滤列列表以优化它。
使用PBI Pro许可证,您可以每小时刷新一次,每天最多8次:
https://powerbi.microsoft.com/en-us/documentation/powerbi-refresh-data/
在过去的20年里,构建SQL数据库和OLAP / SSAS解决方案对我来说是一个很好的职业。那仍然是"劳斯莱斯"解决方案,如果你有时间和金钱。但是20年后我仍在学习,因为这是一个技术上具有挑战性的领域。如果你还没有这些技能,我建议Power BI将是一条更富有成效的道路。
答案 1 :(得分:1)
您绝对希望将日志存储在SQL OLTP数据库中。日志表的本质是事务性的,您将不断更新它,并将从提交速度中受益。
您提到的报告速度问题可以通过在日志数据库之上构建OLAP数据仓库来解决。看来您的数据模型非常简单,因此实施起来不是很大的开发工作。
获取实时报告的方法是在OLTP数据库之上构建报告。如果您可以延迟一段时间,大多数地方选择在一夜之间重建立方体,这将提供24小时延迟的即时报告。
对于概念性回应表示抱歉但没有为您设计基础架构,我认为这可以用Q& A格式消失。