В моем текущем проекте Bigtable все мои ключи строк, классификаторы столбцов и значения являются двоичными значениями. Я использую клиент Go, и простое приведение ключей []byte
к string
позволяет мне записывать данные (казалось бы) без проблем.
Однако при использовании API-интерфейсов Bigtable возникают некоторые проблемы. задействовать регулярные выражения для ключей / значений, таких как фильтры bigtable.ColumnFilter
, bigtable.ValueFilter
и bigtable.RowKeyFilter
в Go клиенте библиотеке .
I ' Я ищу рекомендации или рекомендации по этим вопросам:
- Как я могу избежать двоичных значений, чтобы безопасно использовать эти фильтры без случайной интерпретации байтом Bigtable символа regex? Например, для простого совпадения байтового спецификатора столбца с использованием
bigtable.ColumnFilter
. - В расширении, через какие циклы мне нужно перейти, чтобы безопасно использовать регулярные выражения для этих двоичных значений? Например, я хочу использовать
bigtable.RowKeyFilter
для сопоставления ключей строк, которые начинаются и заканчиваются указанными c байтами (я знаю, что это будет иметь плохую производительность).
Для контекста это упрощенная версия моей схемы:
- Ключи строк:
[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]
Спасибо!