Показать сообщение отдельно
Старый 29.10.2019, 18:11   #92
ujin
Senior Member
 
Аватара для ujin
 
Регистрация: May 2010
Адрес: Novosibirsk
Сообщения: 761
Благодарил(а): 1 раз(а)
Поблагодарили: 10 раз(а) в 10 сообщениях
По умолчанию Ответ: Функционал

Цитата:
Сообщение от Gel Посмотреть сообщение
Извлечь последние 10 значений из базы:
'select datetime(timestamp/1000,'\''unixepoch'\''),id_variable,real_value,int _value from value order by timestamp desc limit 10;'[/CODE]
На этом примере я могу объяснить почему сделал длинный кортеж.
1. Здесь ключевое поле будет состоять из двух столбцов timestamp и id_variable.
2. К каждому значению переменной будет добавляться timestamp это примерно удвоение объема данных
3. Переменная не может быть одновременно real_value и int_value. Одно поле лишнее - это примерно утроение объема сохраняемых данных
Чтобы компенсировать, необходимо вводить апертуры и сжимать данные.
4. При чтении нескольких значений для конечного представления добавится объединение.
5. Некоторые значения могут быть пропущены и при объединении заменятся на NULL, придется подставлять старые данные. Либо это делать дальше при отображении.
6. Теряется сам NULL как показатель, что данные были недостоверные. Придется заменить либо +Inf либо -Inf. Теряется автоматическое заполнение.
Понятно, что способ плохенький. Ограничения тоже понятны.
Единственный (на мой взгляд) правильный выход - поле с двоичными данными, что и сделано например у Siemens на сервере данных. У других не видел.
Пока это не мой уровень.


__________________
В жизни 2 правила успеха:
1 Не говори всего что знаешь
2 ...
ujin вне форума   Ответить с цитированием