--- slug: /ru/operations/utilities/clickhouse-obfuscator --- # Обфускатор ClickHouse Простой инструмент для обфускации табличных данных. Он считывает данные входной таблицы и создает выходную таблицу, которая сохраняет некоторые свойства входных данных, но при этом содержит другие данные. Это позволяет публиковать практически реальные данные и использовать их в тестах на производительность. Обфускатор предназначен для сохранения следующих свойств данных: - кардинальность (количество уникальных данных) для каждого столбца и каждого кортежа столбцов; - условная кардинальность: количество уникальных данных одного столбца в соответствии со значением другого столбца; - вероятностные распределения абсолютного значения целых чисел; знак числа типа Int; показатель степени и знак для чисел с плавающей запятой; - вероятностное распределение длины строк; - вероятность нулевых значений чисел; пустые строки и массивы, `NULL`; - степень сжатия данных алгоритмом LZ77 и семейством энтропийных кодеков; - непрерывность (величина разницы) значений времени в таблице; непрерывность значений с плавающей запятой; - дату из значений `DateTime`; - кодировка UTF-8 значений строки; - строковые значения выглядят естественным образом. Большинство перечисленных выше свойств пригодны для тестирования производительности. Чтение данных, фильтрация, агрегирование и сортировка будут работать почти с той же скоростью, что и исходные данные, благодаря сохраненной кардинальности, величине, степени сжатия и т. д. Он работает детерминированно. Вы задаёте значение инициализатора, а преобразование полностью определяется входными данными и инициализатором. Некоторые преобразования выполняются один к одному, и их можно отменить. Поэтому нужно использовать большое значение инициализатора и хранить его в секрете. Обфускатор использует некоторые криптографические примитивы для преобразования данных, но, с криптографической точки зрения, результат будет небезопасным. В нем могут сохраниться данные, которые не следует публиковать. Он всегда оставляет без изменений числа 0, 1, -1, даты, длины массивов и нулевые флаги. Например, если у вас есть столбец `IsMobile` в таблице со значениями 0 и 1, то в преобразованных данных он будет иметь то же значение. Таким образом, пользователь сможет посчитать точное соотношение мобильного трафика. Давайте рассмотрим случай, когда у вас есть какие-то личные данные в таблице (например, электронная почта пользователя), и вы не хотите их публиковать. Если ваша таблица достаточно большая и содержит несколько разных электронных почтовых адресов, и ни один из них не встречается часто, то обфускатор полностью анонимизирует все данные. Но, если у вас есть небольшое количество разных значений в столбце, он может скопировать некоторые из них. В этом случае вам следует посмотреть на алгоритм работы инструмента и настроить параметры командной строки. Обфускатор полезен в работе со средним объемом данных (не менее 1000 строк).