Добавление первичного ключа в виде хеша объекта #184
Closed
Kraysent
started this conversation in
Design review
Replies: 1 comment
-
|
Обсуждали на встрече, здесь просто фиксирую для историчности. |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Проблема
При кросс-идентификации нужно уметь однозначным образом идентифицировать объект оригинальной таблицы потому что по итогам обработки нужно в таблице кросс-идентификации хранить состояние объектов в виде
table_id-object_id-pgc-message, чтобы потом понимать, какой объект нужно перенести на 1-й уровень.Описание решения
При поступлении новой строки в виде
{ "ra": 123, "dec": 2345, "v_r": 454, "name": "SDSS_1234" }преобразовать её к единому формату и взять MD5 хеш от полученной строки. Дальше этот хеш можно использовать как первичный ключ внутри каждой таблицы нулевого уровня.
В качестве единого формата предлагаю использовать набор пар ключ-значение, сортированный в алфавитном порядке по ключам, преобразованный к формату JSON в виде
Это позволит решить сразу несколько проблем:
Загрузка схемы таблицы
hyperleda_internal_id. - При создании схемы таблицы пользователем нужно будет следить, чтобы внутри таблицы не было пользовательских столбцов с таким именем (и написать в описании метода API неразрешённые имена столбцов).hyperleda_internal_idкак PRIMARY KEY создаваемой таблицы.Загрузка данных
Отображение данных
Этот id - внутренний, мы ни при каких условиях пользователю не должны его показывать. При показе результатов кросс-идентификации можно будет либо отдавать пользователю всю отправленную им строку (без системного столбца), либо показывать только столбцы с определёнными UCD.
Альтернативы
Возможно вместо md5 стоит использовать какой-то хеш полегче - md5 до некоторого времени назад был криптографическим хешем, для наших целей он может быть медленным.
Beta Was this translation helpful? Give feedback.
All reactions