用于存储大型日志的数据库 table

Database for storing a large log table

我们有一个 API 服务器 运行 每天处理大约 500.000 个请求。我们希望将所有这些请求保存在数据库中,以便能够分析数据。我们记录如下内容:

我们希望将这些日志保留 3 个月,这将在该数据库中产生大约 45.000.000 条记录。超过 3 个月的记录将被删除。

将这 4500 万条记录存储在 sql 数据库中是可能的,但是对这些数据执行任何分析真的很慢。我们想进行广泛的分析,例如 - 与上周同一天相比,特定用户今天做了多少请求?与其他任何一天相比,今天有多少百分比的请求失败?查看显示请求数量是上升还是下降的趋势图。查看在给定时间请求的前 10 个资源。你明白了 - 我们希望能够像这样进行各种分析。

您能否就这些日志的存储位置提供任何建议,以便能够实时(或接近实时)进行此类分析?任何 nosql 数据库对此有好处吗?蔚蓝?我看到有一个叫做 azure sql 数据仓库的东西,可以用来做这个吗?我查看了 Microsoft Power Bi,它可能非常适合对这些数据进行分析,但我应该将数据存储在哪里。

如果有人能给我一些建议,我将不胜感激。

您绝对希望将日志存储在 SQL OLTP 数据库中。日志的本质 table 是事务性的,您将不断更新它并受益于提交速度。

您提到的报告速度问题可以通过在日志数据库之上构建一个OLAP 数据仓库来解决。您的数据模型似乎非常简单,因此实施起来不会有太多开发工作。

获得实时报告的唯一方法是在 OLTP 数据库之上构建报告。如果您可以忍受一小段延迟,大多数地方会选择在一夜之间重建他们的立方体,这将提供近乎即时的 24 小时延迟报告。

对于概念性的回应,我深表歉意,但由于没有为您设计基础架构,我认为在问答形式中可以做到这一点。

Power BI 可能是适合您的解决方案。它实际上在内存中启动了一个 SQL Server Analysis Services 实例,这实际上是一个 "OLAP data warehouse"。当您在免费的 PBI 桌面工具中进行设计并为 PBI Web 用户发布到 Microsoft 的云时,基础设施要求是最低的。

可以发布的数据有限制 - 请参阅下面的 link。请注意,PBI 使用非常有效的 Vertipac 压缩,因此数据集通常比原始数据小很多。我经常看到每 MB 有 10k - 50k 行,因此使用单个 Pro 许可证应该可以达到 45m。在 PBI Desktop 中无情地过滤您的列列表以优化它。

https://powerbi.microsoft.com/en-us/documentation/powerbi-admin-manage-your-data-storage-in-power-bi/

使用 PBI Pro 许可证,您可以每小时刷新一次,一天最多 8 次:

https://powerbi.microsoft.com/en-us/documentation/powerbi-refresh-data/

构建 SQL 数据库和 OLAP/SSAS 解决方案在过去的 20 年里对我来说是一份不错的职业。如果您有时间和金钱,那仍然是 "Rolls Royce" 解决方案。但 20 年后我仍在学习,因为这是一个技术上具有挑战性的领域。如果您还没有这些技能,我建议 Power BI 是一条更有效率的途径。