我需要将错误日志保存在Google Bigtable中。每个日志都属于一个代表任何服务类型的项目。需要支持以下查询。
获取所有唯一错误在给定的开始日期和结束日期之间和它们发生的次数。 顺序应该降序,以便最新的错误排在最前面。例如,存在三个错误。它们中的两个是相似的,它们只是在不同的时间发生。相应的查询应返回两个错误,而其中一个错误的计数为2,表明他的错误发生了两次。
每个错误都有一个指纹,它是错误消息和堆栈跟踪的哈希。
我现在想知道如何设计行键来执行上述查询。
a)使用项目ID和指纹。
reversed_projectID#fingerprint
如果发生新的错误,它将检查是否已经存在类似的错误,并在适当时增加其计数。否则,它将创建一个新的计数为1的行。另一方面,我不知道如何提供降序。
b)将每个错误存储在单独的行中。
reversed_projectID#reversed_timestamp
这将解决降序问题,但不会汇总类似错误。例如,如果某人想要查看给定时间范围内的所有唯一错误,并且该范围包含例如四个唯一错误,但每个错误发生了50.000次,那么我将需要对200.000行执行行扫描并将其汇总到服务器。
有人对可能的解决方案有想法吗?非常感谢。
您可以查看此documentation,其中以JSON representation为例讨论Cloud Error Reporting中的日志条目格式。这将帮助您使用MutateRow API请求为writing to BigTable构建数据。如果以后希望在新创建的数据库上利用BigQuery的功能,则可以参考此document。