Tonic находится на переднем крае инноваций в области данных, разрабатывая платформу, предназначенную для упрощения создания синтетические данные, которые могут эффективно заменять наборы данных, содержащие личную идентифицирующую информацию (PII) или защищенную медицинскую информацию (PHI). Ключевой аспект этого начинания включает в себя подмножество баз данных — важный процесс, который предполагает извлечение репрезентативной выборки из более крупного набора данных при сохранении целостности исходной базы данных. Например, может потребоваться получить 5% данных пользователей. Однако наивные подходы к подмножеству могут привести к нарушению ограничения внешних ключей или выборке, которая не отражает общую картину данных.
Зачем нужно подмножество данных?
Подмножество данных становится особенно важным в нескольких сценариях:
- Когда вы хотите использовать вашу производственную базу данных в тестовых или стадийных средах без PII, особенно если база данных обширна и требуется только часть данных.
- Когда вам нужна тестовая база данных, включающая определенные строки из производственной базы данных, а также связанные строки из других таблиц для воспроизведения ошибки.
- Когда вы делитесь данными с другими, обеспечивая при этом, что не вся информация раскрыта.
Для упрощения процесса подмножества мы открываем исходный код нашего проприетарного инструмента подмножества, названного Condenser. Этот проект доступен на GitHub. Прежде чем углубляться в код, мы предоставим обзор проблемы подмножества, выделяя ключевые моменты и техники, реализованные в Condenser.
Быстрый обзор
Подмножество базы данных включает извлечение набора строк из нескольких таблиц при сохранении ограничений исходной базы данных. Эта практика полезна по разным причинам, таким как уменьшение масштаба производственной базы данных для использования в стадийных, тестовых или разработческих средах. Этот подход не только помогает сократить затраты, но и при сочетании с удалением PII значительно повышает продуктивность. Другой распространенный сценарий — копирование определенных строк из одной базы данных в другую с сохранением ссылочной целостности.
В этой статье мы сосредоточимся на том, как эффективно уменьшить масштаб базы данных до желаемого процента от ее первоначального размера, например, создавая новую базу данных, содержащую только 5% пользователей из производственной базы.
Существующие решения и наша цель
Хотя такие компании, как Oracle, Informatica и Computer Associates, предлагают инструменты для подмножества данных, эти решения часто имеют ограничения. Их закрытый исходный код и скудная документация затрудняют использование для пользователей, особенно для небольших команд, полагающихся на легкие open-source инструменты, такие как Postgres или MySQL. Единственная заметная open-source альтернатива, с которой мы столкнулись — Jailer, который, несмотря на активное сопровождение и точность, представляет сложности конфигурации для сложных баз данных с многочисленными таблицами и циклическими внешними ключами.
Наша цель заключалась в создании инструмента подмножества базы данных, который требует минимальных параметров конфигурации, даже для баз данных со сложными отношениями внешних ключей, включая циклы.