Как я могу преобразовать UUID в UUID5 во время запросов выбора (или вставки) в postgres? - PullRequest
0 голосов
/ 01 мая 2019

Есть ли способ преобразовать UUID в UUID5 в существующем наборе данных postgres?

У меня есть настройка master / slave с pglogical репликацией определенных таблиц и столбцов.Мне нужно предоставить доступ к этим реплицированным данным третьей стороне, но я хочу максимально анонимизировать их.

Каждая строка в таблице использует UUID (сгенерированный в коде) в качестве первичного ключа, но вДля обеспечения анонимности мне нужно убедиться, что первичные ключи мастер-таблицы и реплицированных таблиц односторонне преобразованы, чтобы сделать обратную трассировку более сложной.Некоторые из реплицированных таблиц также ссылаются друг на друга, что означает, что я не могу просто исключить эти столбцы - значения должны совпадать между таблицами.Надеюсь, что пока это имеет смысл ...

Есть ли способ использования uuid-ossp и uuid_generate_v5() для существенного использования существующих UUID в качестве пространства имен для UUID v5, возвращая те, что в представлении, третьемупартия (или даже использовать для преобразования определенных столбцов во время репликации)?

Я немного озадачен.Если мне удастся разобраться в этом полностью в postgres, мне не придется разбираться с дополнительными инструментами для преобразования данных, прежде чем разрешить доступ третьим сторонам, я могу просто предоставить им данные в реальном времени, а не в пакетном режиме.Но если мне нужно задействовать какой-то дополнительный код, тогда, я думаю, это не конец света ...

Заранее спасибо!

1 Ответ

1 голос
/ 01 мая 2019

Просто предоставьте доступным только для чтения представления сторонним лицам (в отдельной схеме) и ограничьте доступ к данным для этих представлений (или схемы).

Представление может быть затем определено с помощью запроса, такого как:

SELECT uuid_generate_v5(t.uuid, 'custom-third-party'), t.a, t.b, ...
FROM ...

Таким образом, вы также можете предоставлять разные UUID различным сторонним организациям, поскольку исходные UUID должны быть уникальными для всех вводимых данных.

Стратегии перезаписи данных не будут масштабироваться и просто добавят издержки там, где это не нужно.

...