gpt4 book ai didi

java - 我应该使用键/值数据库来存储我的 API 日志吗?

转载 作者:搜寻专家 更新时间:2023-10-30 23:47:13 26 4
gpt4 key购买 nike

我从我的 API 获得了很多日志。我分析这些日志以获取有趣的信息,例如本月有多少用户使用该 API 或他们进行的 Activity 类型。

我所做的所有分析都取决于一个时期。 所以时间戳对我来说非常重要。

事实上,实际上我在时间戳上使用了索引。问题是时间戳是继续的。

我的问题是哪个数据库更适合我的用例?

我听说过键/值数据库,使用时间戳作为键很有趣吗?

谢谢。

最佳答案

这是 IBM 的一篇两年前的文章,更多地讨论了 SQL 实现,但在执行 NoSQL 实现时也可能需要牢记这一点:

当然,您的应用会有所不同,我不确定您的时间戳的粒度,但可以在同一时间戳记录两个项目。

您最好为键值存储创建一些其他形式的唯一键算法,为每个时间戳添加某种序列化。所以时间戳中的第一个项目是“.1”,第二个是“.2”,等等。所以你会有某种 timestamp.serialid 格式。

我的另一个想法是:您是否正在合并来自多个应用程序/进程或机器的 API 日志文件?您也许可以执行某种 elementid.appid.timestamp.serialid 来制作唯一 key 。

这完全取决于您的用例,所以我不能肯定地说更多。我还想知道您希望在事后读取/分析方面如何处理您的键值存储,因为这可能会极大地改变您的 NoSQL 解决方案。如果您计划进行大量日志分析,那么,是的,有充分的理由将其放入 NoSQL 数据库中,特别是如果您想要进行诸如快速数据分析之类的操作,然后将一些较旧的项目推回入磁盘进行存储。

至于数据库,显然每个供应商都会坚持自己的产品;但要选择最适合工作的工具。最好在购买前试用,并针对您的特定设置进行测试。我来自 Aerospike,所以我显然偏向于将其作为键值存储:http://www.aerospike.com/


今天与一位非常聪明的人交谈,他还建议您可能希望使用“自日期时间 'x' 以来的毫秒数”之类的东西作为主键。根据您记录的内容,可能仍有可能与主键发生冲突。

因此,另一个建议是获取该主键的所有条目(例如:该毫秒的所有日志条目)并将它们加载到同一条记录中,以一种“桶”的形式。您需要应用程序逻辑来解析同一主键下的多个日志条目,但这是另一种蒙蔽猫皮的方法。

关于java - 我应该使用键/值数据库来存储我的 API 日志吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27022664/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com