У меня есть база данных с личными данными, которые я хочу анонимизировать со случайными именами и т. Д. Например, таблица person (id int, first_name varchar, last_name varchar, birth_date date)
. У меня также есть таблица со случайными именами, например. first_name (id int, value varchar)
. Я знаю, что это сводится к оптимизации select * from ... order by rand()
, и я прочитал несколько вопросов о StackOverflow (и http://jan.kneschke.de/projects/mysql/order-by-rand/),, но это не отвечает на вопрос об обновлении со случайными данными в массе.
Я пробовал:
- (вначале)
UPDATE _person me SET birth_date = (SELECT value FROM anonymizer.birth_date ORDER BY RAND() LIMIT 1)
(... то же самое для других столбцов). Поскольку существует несколько таблиц, анонимная обработка всей БД происходила в течение часа, когда я ее прерывал. - (В настоящее время)
UPDATE _person me join anonymizer.first_name on anonymizer.first_name.id = round(rand() * (select max(id) from anonymizer.first_name)) SET first_name = anonymizer.first_name.value
. Этот единственный запрос занял 5 минут (без учета других столбцов и таблиц).
Я могу подготовить свои поддельные таблицы данных любым способом (initс порядковыми номерами и т. д.). Есть ли способ эффективно анонимизировать БД?