с более компетентными в Postgres спецами. у меня есть одна задача, связанная с «обезличиванием» данных в базе. можете подсказать, какой функцией лучше и эффективней целый столбец с текстовыми значениями ( уже заполненный, с определенными данными , NOT NULL) заменить рандомными, уникальными значениями, каждую строку?
А это точно именно то, что Вам нужно? Я к тому, что такая замена сделает Вам из 1 | Иванов 2 | Иванов что-то вроде: 1 | foo random 2 | random bar Т.е. идентичность значений потеряется. Если это устраивает — да хоть на UUID меняйте, например. Иначе нужно что-то аналогичное шифрованию (с никому неизвестным ключом).
благодарю за пояснение! а вот об этом я не подумал если честно. ведь тестировщикам потом импортирую dump этой базы для тестов. копию проекта подниму на сервере 🗿 а это реально сделать средствами самого postgres или придется прибегать к сторонним утилитам/расширениям каким то, можете подсказать? или в каком направлении изучать?
По идее, реально. Но Вы лучше подождите — может, Вам подскажут готовые средства / дадут ссылки (мне лично этим не приходилось заниматься).
Смотрите в сторону obfuscation/masking. Вот тут есть примерные методы, без реализации https://postgres.ai/docs/database-lab/masking
благодарю! посмотрю 👍
Это очень сложно. 1. Узнать всё, что надо замазать 2. Если база не идеально нормализована, то эти значения уже включены куда-то ещё, как части строк или как фотографии документов, журналы, архивы Уже не говоря про ситуации, когда замазываемое значение используется как ссылка. 3. Если надо замазать какие-то числа, но на их основе наверняка всякого расчитано, и программа станет работать неправильно 4. Сломаются инварианты, неочевидные из схемы базы. Типа того, что если имя пользователя начинается на \, то это означает что... Или деление пользователей на группы было не любым, а по алфавиту. Или имя пользователя используется программой ещё и как имя файла. Или товаары относят к категории поиском подстроки в имени товара....
А если отвечать на исходный вопрос, то напишите функцию для этого. По мере работы вы будуете её расширять, добавляя настроечные параметры. Типичная замена set name = 'user#' || id::text Именно рандом редко нужно
https://www.postgresql.eu/events/fosdem2019/sessions/session/2287/slides/151/postgresql_anonymizer.reveal..pdf Посмотрите
круто! благодарю 🤝 я посмотрел, судя по содержимому для меня самое то! попробую как подключусь к бд!
Обсуждают сегодня