#28. Data discovery, автодокументирование и выявление персональных данных
Я довольно давно не писал про инструмент metacrafter [1] который я постепенно развиваю как небольшой экспериментальный проект по идентификации семантических типов данных, но которые имеет самое что ни на есть прямое применение. Собственно в этом и цель в создании таких инструментов - делать то чем пользуешься сам, желательно каждый день и делать это так чтобы инструменты помогали делать самую рутинную работу.
metacrafter - это инструмент идентификации семантических типов данных внутри баз данных и файлов с данными. Он обрабатывает схему данных и слепок , пример с данными, обычно до 10 тысяч записей. По набору правил metacrafter определяет какое поле файла/БД содержит имя пользователя, какое дату, какое ИНН юр. лица и так далее. Сейчас это более 111 правил более чем 60 семантических типов, для который создан отдельный реестр metacrafter-registry
Всё это реализовано в виде утилиты командной строки и библиотеки на Python, с примерами и множеством доступных правил.
Для чего создают и применяют такие инструменты? Есть три ключевых применения.
Идентификация персональных данных
Типовой кейс - у тебя десятки баз данных, тысячи таблиц, постоянно появляются новые и меняются имеющиеся. Тебе надо реализовать мониторинг того где лежат персональные данные и, прежде чем заставлять всех документировать свои таблицы, ты используешь этот инструмент чтобы идентифицировать те данные которые точно быстро определить.
Инструментов для такой задачи немало, это умеют специализированные каталоги данных, а поиск по Github’у выдаст некоторое количество инструментов с вшитыми в них правилами по идентификации персональных данных.
Идентификация персональных данных - это большой рынок. Вернее даже сказать, управление персональными данными. Более половины продуктов каталогов корпоративных данных, которые мне известны, имеют в основе бизнес модели именно соответствие (комплаенс) требованиями по идентификации и управлением персональными данными.
Систематизация и навигация
Типовой кейс - у тебя много команд аналитиков и дата-сайнтистов, они не могут найти данные. Ты хочешь написать свой или взять имеющийся каталог данных. Ты с помощью утилиты идентифицируешь какие данные имеют какой тип и привязываешь их для поиска и навигации, так чтобы всегда можно было таблицы с, например, ИНН компаний или СНИЛС пользователей.
Как человек анализирующий данные регулярно могу сказать что такого поиска мне лично нехватает во всех порталах открытых данных. Пример работающего использования - это раздел Классификация каталога данных Datacrafter [2].
Эти задачи помогают преодолевать ключевую проблему в ситуациях большого числа источников данных - это data discovery. По моим наблюдениям ближе всего к её решению подошли в проекте Auctus, научной поисковой системе по наборам данных. Но она ограничена сравнительно небольшим числом проиндексированных наборов данных. Всё остальное, увы, до сих пор не выходит за пределы научных статей.
Автоматическое документирование
Типовой кейс - у тебя куча унаследованных баз данных про которые мало кто знает что там лежит. Тебе надо подготовить документацию по тому что есть и продумать что с этим делать. Идентифицированные типы данных и связанные с ними значения дают возможность давать подсказки тем кто будет документировать или, даже, автоматически заполнять часть документации.
Автоматизацией документирования баз данных занимаются многие стартапы. Самый заметный Castor, создающий каталог данных именно с функциями автоматизации документирования и определения типов данных. Каталоги корпоративных данных - это, в принципе, продукты для которых документация является важной частью их позиционирования и автоматизация постепенно проникает в этот рынок.
Не все задачи одинаковы
Конечно же, есть задачи которые пока с помощью metacrafter'а решать сложно:
потоковое выявление и очистка персональных данных в текстах. Пока не поддерживается потому что metacrafter работает на базе правил выявления типов полей СУБД, а не разбора свободного текста. Это есть в планах, но это другого типа сложности задача и скорее всего именно она имеет комплексное решение. Такие задачи уже сейчас решают инструменты вроде Presidio от Microsot, выявляющие персональные данные в изображениях и текстах, но поддерживающие английский язык как основной;
отслеживание изменений. Сейчас metacrafter - это командная строка или библиотека для Python. Он не умеет, например, регулярно автоматически проверять базы данных на изменения в схемах и проверять новые или измененные поля с данными. Отслеживание изменений есть во многих продуктах каталогов данных и баз-данных-как-кода, но это другого типа продукты.
Хотя metacrafter экспериментальный продукт, он делается в гибридной модели открытого кода. Каждый может взять его движок, написать свои правила, адаптировать под собственные задачи. Наша команда развивает его как часть стека продуктов APICrafter и его бизнес модель в том что мы, кроме опенсорс продукта, создаем большое число правил под отраслевые задачи. Поэтому он не теряет ценности как продукт с открытым кодом, но мы помогаем на коммерческой основе тем кто хочет решать свои задачи в выбранной отрасли.
Всё вместе это часть большой темы связанной с работой с данными - это понимание данных. Инструменты лишь отражают общий подход в том что данные как и код должны быть понятны, документированы и предсказуемы. У разработчиков, DBA и дата-инженеров должны быть удобные и понятные инструменты которые автоматизируют хотя бы часть работы по формированию этого понимания.
#metadata #metacrafter #semanticdatatypes #datatypes #opensource #datatools