我如何处理Bigtable中的二进制行键和列限定符上的正则表达式过滤器?

问题描述 投票:1回答:1

在我目前的Bigtable设计中,我所有的行键,列限定符和值都是二进制值。我正在使用Go客户端,只需将[]byte键转换为string,就可以毫无问题地写数据(貌似)。

但是,当使用Bigtable API涉及键/值上的正则表达式时,这会带来一些问题,例如Go客户端filters中的bigtable.ColumnFilter bigtable.ValueFilterbigtable.RowKeyFilterlibrary

我正在寻找有关这些问题的建议或最佳做法:

  • 我如何转义二进制值以安全地使用这些过滤器,而Bigtable不会意外地将字节解释为正则表达式字符?例如。使用bigtable.ColumnFilter逐字节地简单匹配列限定符。
  • 扩展名,我需要跳过哪些箍以安全地在这些二进制值上使用正则表达式?例如,我想使用bigtable.RowKeyFilter匹配以特定字节开头和结尾的行键(我知道这样做会降低性能)。

对于上下文,这是我的架构的简化版本:

  • 行键:[16 byte UUID][8 byte big-endian uint][8 byte big-endian uint]
  • 列限定符:[8 byte big-endian uint][8 byte big-endian uint]
  • 值:[8 byte big-endian uint]

谢谢!

go google-cloud-bigtable bigtable
1个回答
0
投票

to escape all regex characters useregexp.QuoteMeta

package regexp也可以帮助您安全地对二进制值使用正则表达式,而不会出现任何问题。但是,请记住

所有字符都是UTF-8编码的代码点。

© www.soinside.com 2019 - 2024. All rights reserved.