они динамически типизированы?
Например, есть вот такой payload
{
"name" : "intMetric",
"value" : 1,
"type" : "Int32"
}
( это Protobuf )
Данные в value могут быть как Boolean, так и Float, Double.
Есть какие то best practices?
Не видел такого описанного. Но из общих соображэний — предлагаю выдать люлей человеку, который в колонку с префиксом int пихает double.
Это не человек, это спецификация Sparkplug, обычно все совпадает по типам, просто не могу придумать ничего кроме как создать несколько колонок с типами, и суффиксами int, bool, etc
ЯННП. Что значит "не человек". А что человек написал?
Ну логично что если будут данные double, то там будет не будет префикса int, я прислал пример конкретно с int данными 😅
Ну, и вообще — если это данные — то извлеките из них тип на этапе проектирования. Если лог какой-то чего-то, где можэт быть что угодно — то это не реляцыонные данные, можно строкой всё хранить, потом в данные преобразовывать.
Выяснить, какие данные будут — и создать под них соответствующее поле.
Или юзать что-то другое, не Postgres, если заранее неизвестно какие данные будут?
Если не упрётесь в производительность, проблемы синхронизацыи и хаос в данных — то и замечательно. Если упрётесь — сдадитесь опытному DBA, он спроектирует приличную схему под постгрес с учётом вашэго практического опыта.
Оке, спасибо за помощь
Да хаоса быть не должно, данные по сути это временной ряд датчиков сенсоров. И они четко структурированы. Просто тип данных может быть одним из 12 или даже 24, согласно спецификации, и это усложняет задачу немного, так как под эти данные нужно будет писать триггер alerting
Timescaledb показался более простым из-за схожести с Postgres
Ну, тожэ аргумент.
видимо спецификацию chatgpt писал.
Обсуждают сегодня