преобразовать в UUID в ThingsBoard

Я только что обновился с Thingsboard 2.4 до 3.0, а также с postgresql 9.6 до 12.
Я работал над извлечением данных из Postgre при получении данных из таблицы ts_kv с использованием ключа без дефисов. Поле entity_id таблицы ts_kv было похоже на '1e81629b3d597b0b9dd7d78e05760aa' в postgresql 9.6. В стоимости нет гипьенов. Но поле entity_id таблицы ts_kv было изменено как 'b3d597b0-1629-11e8-b9dd-7d78e05760aa' в postgre 12. Все поля id похожи на '1e81629b3d597b0b9dd7d78e05760aa', кроме таблицы ts_kv. Значение с дефисами может быть UUID.

Я могу получить значения поля id без дефисов из таблицы устройств, а затем я хотел бы выбрать некоторые ключевые значения из таблицы ts_kv.

Могу ли я преобразовать значение без дефисов в UUID? И есть ли какие-нибудь методы для получения данных из базы данных ThingsBoard?

Спасибо


person Byungsoon Kim    schedule 02.09.2020    source источник
comment
Дефисы всегда генерируются Postgres как отображение uuid, на самом деле они не присутствуют, а на стороне ввода с дефисами или без них одинаковы, можно использовать любой формат. Если вам нужно отобразить без дефисов, преобразуйте его в текст и используйте функцию замены, чтобы удалить их. См. скрипт, демонстрирующий оба варианта.   -  person Belayer    schedule 02.09.2020
comment
Спасибо за ваш ответ.   -  person Byungsoon Kim    schedule 03.09.2020
comment
В одной таблице указано «8ee0a190-b298-11e9-a151-0f81c8b4f14e», а в других - «1e9b2988ee0a190a1510f81c8b4f14e» для того же устройства. Я предполагаю, что у них может быть какая-то перестановка друг друга.   -  person Byungsoon Kim    schedule 03.09.2020
comment
Я сомневаюсь, что между ними есть какие-то перестановки или какие-либо другие отношения. Я бы подумал, что это просто одно и то же устройство, которому назначены разные клавиши. Я предполагаю, что эти столбцы entity_id сгенерированы PK. Имейте в виду, что цель сгенерированных ключей - строго сохранять уникальность строк в таблице. На самом деле это не имеет ничего общего с их идентификацией для деловых целей. Возможно уникальный ключ или, по крайней мере, неуникальный индекс на устройстве в каждой таблице; напишите свой запрос для поиска по устройству.   -  person Belayer    schedule 03.09.2020
comment
Спасибо, Страхующий. К сожалению, после получения идентификатора устройства «1e9b2988ee0a190a1510f81c8b4f14e» мне нужно получить некоторые значения из таблицы, используя идентификатор «8ee0a190-b298-11e9-a151-0f81c8b4f14e». Поэтому мне нужно преобразовать «1e9b2988ee0a190a1510f81c8b4f14e» в «8ee0a190-b298-11e9-a151-0f81c8b4f14e».   -  person Byungsoon Kim    schedule 04.09.2020
comment
Что значит ПК?   -  person Byungsoon Kim    schedule 04.09.2020
comment
PK = ›Первичный ключ   -  person Belayer    schedule 04.09.2020


Ответы (1)


Мы использовали странное представление UUID в 2.x, чтобы поддерживать совместимость между нашим API Cassandra и Postgresql и разрешать сортировку сущностей по времени создания. Это был плохой дизайн, поэтому в 3.x мы заменили странное представление UUID обычным представлением, а также добавили created_time. Смотрите функцию преобразования:

// github.com/thingsboard/thingsboard/blob/35feb2fea43bbb8d39071af63fa6426f25502dd5/dao/src/main/resources/sql/schema-entities.sql#L344

person Andrew    schedule 09.09.2020