在我目前的Bigtable设计中,我所有的行键,列限定符和值都是二进制值。我正在使用Go客户端,只需将[]byte
键转换为string
,就可以毫无问题地写数据(貌似)。
但是,当使用Bigtable API涉及键/值上的正则表达式时,这会带来一些问题,例如Go客户端filters中的bigtable.ColumnFilter
bigtable.ValueFilter
,bigtable.RowKeyFilter
和library。
我正在寻找有关这些问题的建议或最佳做法:
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]
谢谢!
to escape all regex characters use:regexp.QuoteMeta
package regexp也可以帮助您安全地对二进制值使用正则表达式,而不会出现任何问题。但是,请记住
所有字符都是UTF-8编码的代码点。