我必须使用正则表达式过滤器在 Google Cloud BigTable 中按日期解析一系列行键,其中行键中的每个日期都根据 Unix 纪元(1 月 1 日 00:00:00)存储为反向时间戳,1970)。
例如,给定 Date d = "2018-03-09T10:48:00.000Z"
,自 Unix 纪元以来的 MS 日期是 d.valueOf() = 1520592480000
。在 JavaScript 中,允许的最大整数是 Number.MAX_SAFE_INTEGER = 9007199254740991
,因此我们通过求差来计算d的反向日期r: var r = Number.MAX_SAFE_INTEGER - d
哪里r = 9005678662260991
。
给定两个反向日期r1和r2,如何在RE2中编写正则表达式来获取此范围内的所有日期字符串?我正在尝试使用 NodeJS(有限的文档)在 BigTable 中使用反向时间戳行键查找某个范围内的所有日期,因此,如果您知道有比这更简单的解决方案,我也会接受这些!
谢谢
最佳答案
Javascript 最大整数的解决方法是使查找不太自然和高效。
我建议以 Javascript 和 Bigtable 都易于理解的方式表达行,同时保持自然顺序和过滤属性。
如果您需要反转以防止热点,您可以尝试仅反转部分时间戳(10 秒?)或在 key 中添加盐(您可以在此处查看“加盐”部分https://cloud.google.com/bigtable/docs/schema-design-time-series)。
关于javascript - 编写正则表达式过滤器来解析以反向时间戳顺序存储的一系列日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49306861/