Как мне обработать фильтры регулярных выражений для двоичных ключей строк и определителей столбцов в Bigtable? - PullRequest
1 голос
/ 24 января 2020

В моем текущем проекте 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]

Спасибо!

1 Ответ

1 голос
/ 24 января 2020

для экранирования всех символов регулярного выражения используйте : regexp.QuoteMeta

package regexp также может помочь безопасно использовать регулярные выражения над двоичными значениями без каких-либо проблем. однако имейте в виду, что

Все символы являются кодированными точками UTF-8.

...