Постройте график с точками в концах отрезка и только с одной точкой в начале и увидите разницу. Удивительно как можно давно и плотно работать с графиками и не понимать очевидную вещь... Да даже и вне контекста графиков, если не хранить конец отрезка, то как узнать с какого момента величина начала меняться?ksv писал(а): ↑Вт июл 24, 2018 6:38 pmНет ровно никакой информативности в записи повторяющихся данных в конце периода этих самых неизменяющихся данных. Сам факт новой записи с новыми данными и говорит о конце этого предыдущего периода. То есть отрезок и без этого повтора однозначно определяется по двум записям в БД с РАЗЛИЧАЮЩИМИСЯ данными.
[РЕШЕНО] Повторяющиеся данные в БД и их запись.
Модератор: immortal
-
- Сообщения: 1554
- Зарегистрирован: Сб янв 13, 2018 5:00 pm
- Благодарил (а): 39 раз
- Поблагодарили: 574 раза
Re: [РЕШЕНО] Повторяющиеся данные в БД и их запись.
-
- Сообщения: 102
- Зарегистрирован: Вт июл 17, 2018 10:19 am
- Благодарил (а): 23 раза
- Поблагодарили: 4 раза
Re: [РЕШЕНО] Повторяющиеся данные в БД и их запись.
Нет. Точнее в общем случае - нет. Может быть и такой стиль отрисовки, безусловно. И Highchart имеет такой стиль отдельно - отрисовка горизонтальной линии до следующего изменения. При этом хайчарту для этого не требуется повтор данных. Но это опция. Вы можете отрисовать так, а можете иначе по тем же самым данным. И более распространенным и более естественным отображением является простая кусочно-линейная апроксимация, которая наиболее естественно отображает реальное изменение той же температуры. Если, к примеру, в течение часа было 24 градуса, а потом датчик выдал 25, то это значит что в течение часа температура повышалась, а не резко скакнула, и линия графика должна быть не горизонтальной с резкой ступенькой в конце, а диагональная. Но, это дело вкуса, разумеется. Важно другое - в базе данных повторное значение лишнее для всех вариантов отрисовки, оно не нужно ни для горизонтальной линии, ни для диагональной, ни для сплайна, ни для чего, ни для какой логики и математики оно не требуется, поскольку элементарно вычисляется, если это необходимо. Этот повтор - избыточность для хранения в БД.
Я могу предположить версию, зачем так сделано в mjd. Дело видимо в том, что тип графика line в mjd не поддержан, а тип spline криво связывает разрозненные точки, график получается неестественным. Добавив же искусственно повторное значение мы получаем красивый ровный меандроподобный сглаженный график, который хоть и красив, но менее юзабелен и большом массиве отображения.
Отлично, вот вы и подтвердили ту очевидную истину, которую я зачем-то пытаюсь тут втолковывать. Если y1 и y2 равны, причем разумеется равны (то есть это факт сам по себе), то нахрена её, эту y2 в базе-то хранить? Повторюсь, для отрисовки графиков второе значение не требуется ни для Highchart, ни для других библиотек (а я пользовался amChart, Google Chart, и везде одинаково).
Да, не нравится. Очень не нравится. Это глупо и бессмысленно. Если иного пути нет - буду фильтровать. Однако для этого необходимо брать последнее значение из истории. Как это делается, подскажете? Хранить в переменной, конечно, можно, но этот вариант хуже, так как менее надёжен.
-
- Сообщения: 102
- Зарегистрирован: Вт июл 17, 2018 10:19 am
- Благодарил (а): 23 раза
- Поблагодарили: 4 раза
Re: [РЕШЕНО] Повторяющиеся данные в БД и их запись.
Чувак, мотани пару страниц этой ветки назад, я уже все давно нарисовал и выложил скрины. Может тогда поймёшь, о чем я... Хотя... Если задаётся вопрос "как узнать с какого момента величина начала меняться", то я пас. Это ребята, 5-ый класс, наверное... Извините, расстроен... Все, за сим я заканчиваю этот бесполезный ликбез.fandaymon писал(а): ↑Вт июл 24, 2018 9:59 pmПостройте график с точками в концах отрезка и только с одной точкой в начале и увидите разницу. Удивительно как можно давно и плотно работать с графиками и не понимать очевидную вещь... Да даже и вне контекста графиков, если не хранить конец отрезка, то как узнать с какого момента величина начала меняться?
-
- Сообщения: 102
- Зарегистрирован: Вт июл 17, 2018 10:19 am
- Благодарил (а): 23 раза
- Поблагодарили: 4 раза
Re: [РЕШЕНО] Повторяющиеся данные в БД и их запись.
Всё, я сам понял смысл этой повторной точки. Наличие повтора в БД перед изменением говорит о том, что все это время данные с датчика исправно поступали. Если бы повторного значения не было, было бы непонятно, работал датчик все это время, или нет. Вот в этом смысл есть. Согласен.
-
- Сообщения: 1554
- Зарегистрирован: Сб янв 13, 2018 5:00 pm
- Благодарил (а): 39 раз
- Поблагодарили: 574 раза
Re: [РЕШЕНО] Повторяющиеся данные в БД и их запись.
Ну вот это меня и удивляет - что класс пятый...ksv писал(а): ↑Вт июл 24, 2018 11:44 pmЧувак, мотани пару страниц этой ветки назад, я уже все давно нарисовал и выложил скрины. Может тогда поймёшь, о чем я... Хотя... Если задаётся вопрос "как узнать с какого момента величина начала меняться", то я пас. Это ребята, 5-ый класс, наверное... Извините, расстроен... Все, за сим я заканчиваю этот бесполезный ликбез.fandaymon писал(а): ↑Вт июл 24, 2018 9:59 pmПостройте график с точками в концах отрезка и только с одной точкой в начале и увидите разницу. Удивительно как можно давно и плотно работать с графиками и не понимать очевидную вещь... Да даже и вне контекста графиков, если не хранить конец отрезка, то как узнать с какого момента величина начала меняться?
Как можно выкинуть временную метку с которой началось изменение и считать что мы не потеряли информацию?!
Какое отношение ко всему этому имеет кусочно линейная аппроксимация?!
По какой причудливой логике если наш термометр каждую минуту в течение часа выдавал 24 градуса, а потом в час и 1 минуту выдал 25, то это означает что температура весь этот час поднималась?!
И самое главное - ПОЧЕМУ автор программы должен в неё закладывать не обычную логику, а вот такую?!
-
- Сообщения: 102
- Зарегистрирован: Вт июл 17, 2018 10:19 am
- Благодарил (а): 23 раза
- Поблагодарили: 4 раза
Re: [РЕШЕНО] Повторяющиеся данные в БД и их запись.
Как рисовать линию графика - вопрос предпочтений. Я использую всегда очень короткие интервалы опроса тех датчиков, где мне важно отследить резкие изменения.
Я говорю лишь только о том, что сам факт записи новых данных однозначно даёт ответ какими были предыдущие данные, и для этой цели хранить их не нужно. Здесь не может быть никакой потери данных по самой логике записи в БД - отсутствие данных означает их повтор. Из этой логики ВСЕ отсутствующие данные, в том числе и запись о конце неизменяющихся отрезка, восстановимы, потому-что известно что они одинаковы. Вот контроль работы самого датчика - да, вариант применения этого повтора. Но я это реализую иначе - отдельным бинарными свойством.
И нигде я не просил что-то менять автора в логике, я хотел понять зачем так, никто ответить оказался не в состоянии. Просто буду фильтровать этот ненужный повтор сам, это просто.
Я говорю лишь только о том, что сам факт записи новых данных однозначно даёт ответ какими были предыдущие данные, и для этой цели хранить их не нужно. Здесь не может быть никакой потери данных по самой логике записи в БД - отсутствие данных означает их повтор. Из этой логики ВСЕ отсутствующие данные, в том числе и запись о конце неизменяющихся отрезка, восстановимы, потому-что известно что они одинаковы. Вот контроль работы самого датчика - да, вариант применения этого повтора. Но я это реализую иначе - отдельным бинарными свойством.
И нигде я не просил что-то менять автора в логике, я хотел понять зачем так, никто ответить оказался не в состоянии. Просто буду фильтровать этот ненужный повтор сам, это просто.
-
- Сообщения: 1554
- Зарегистрирован: Сб янв 13, 2018 5:00 pm
- Благодарил (а): 39 раз
- Поблагодарили: 574 раза
Re: [РЕШЕНО] Повторяющиеся данные в БД и их запись.
Если вы художник и вам не важно, что именно показывает график, то да - рисуйте как вам хочется. Мажордомо писался не для художников и он строит график по точкам.
Вот жеж - точка это 2 координаты! 2! Да, одна из них (y) - одинаковая в начале и конце отрезка, но вторая-то (x) - разная! Отрезок задаётся всегда 2 координатами, даже если известно что этот отрезок параллелен оси x. Мы не можем отбросить вторую точку, потому что она даёт нам длину отрезка. Или в школе вам это не рассказывали?!Я говорю лишь только о том, что сам факт записи новых данных однозначно даёт ответ какими были предыдущие данные, и для этой цели хранить их не нужно. Здесь не может быть никакой потери данных по самой логике записи в БД - отсутствие данных означает их повтор. Из этой логики ВСЕ отсутствующие данные, в том числе и запись о конце неизменяющихся отрезка, восстановимы, потому-что известно что они одинаковы.
Да, если у нас период опроса датчиков постоянный и он где-то хранится, то мы можем сделать вывод, что если тут данные записаны, то на предыдущем опросе было предыдущее значение. НО! Для вывода правильного графика нам всё равно нужно будет посчитать вторую точку и добавить её в выборку. Нам нужно хранить период опроса. И этот период опроса должен быть постоянным, что конечно бывает совсем не всегда. Итого - чрезмерное усложнение, которое к тому же не охватывает весь диапазон датчиков.
-
- Сообщения: 102
- Зарегистрирован: Вт июл 17, 2018 10:19 am
- Благодарил (а): 23 раза
- Поблагодарили: 4 раза
Re: [РЕШЕНО] Повторяющиеся данные в БД и их запись.
https://www.highcharts.com/docs/chart-a ... line-chart
Удивительно, правда? И как это highchart рисует отрезок по одной точке..? (см. опцию STEP). Ума не приложу. Шаманы, не иначе.
Устал я, честно. Оставайтесь при вашем мнении, мне это не важно.
-
- Сообщения: 1554
- Зарегистрирован: Сб янв 13, 2018 5:00 pm
- Благодарил (а): 39 раз
- Поблагодарили: 574 раза
Re: [РЕШЕНО] Повторяющиеся данные в БД и их запись.
Ключевое слово - правильный. Я ж говорю - никто не может запретить вам рисовать как угодно и что угодно, но как-то люди в общем и математики в частности договорились, что нарисовать график, это значит отложить все имеющиеся у нас точки и соединить их линиямиksv писал(а): ↑Ср июл 25, 2018 12:12 pmhttps://www.highcharts.com/docs/chart-a ... line-chart
Удивительно, правда? И как это highchart рисует отрезок по одной точке..? (см. опцию STEP). Ума не приложу. Шаманы, не иначе.
Устал я, честно. Оставайтесь при вашем мнении, мне это не важно.
В вашем примере вы всё равно рисуете не по одной точке, а по 2 - просто вторая точка вычисляется.
Мне в прицнипе тоже всё равно, что за каша у вас в голове, я просто реагирую на
И нигде я не просил что-то менять автора в логике, я хотел понять зачем так, никто ответить оказался не в состоянии.
-
- Сообщения: 102
- Зарегистрирован: Вт июл 17, 2018 10:19 am
- Благодарил (а): 23 раза
- Поблагодарили: 4 раза
Re: [РЕШЕНО] Повторяющиеся данные в БД и их запись.
Отреагировать проще всего (и правильнее) было бы таким ответом, который исходя из всего вышеизложенного напрашивается уже сам собой: "В mjd так сделано потому, что этот способ хранения данных обеспечивает правильную отрисовку именно этих поддерживаемых стилей графиков именно этой используемой в mjd библиотеки". Вот всё. Ответ понятен и удовлетворителен.
Давышто? А я как-то и упустил это из виду
Я неправильную стратегию избрал с самого начала, сделав упор на отрисовку графиков, думая, что аудитории этот аргумент будет ближе. И не учёл скудную поддержку стилей хайчарта мажордомом. На самом же деле я ратую только лишь за экономию объёмов хранимых в БД данных, это гораздо важнее.ksv писал(а): ↑Вт июл 24, 2018 11:33 pmВажно другое - в базе данных повторное значение лишнее для всех вариантов отрисовки, оно не нужно ни для горизонтальной линии, ни для диагональной, ни для сплайна, ни для чего, ни для какой логики и математики оно не требуется, поскольку элементарно вычисляется, если это необходимо.
p.s. А нет, не устал
Ок, я полагаю, мы (ну ладно, - я) разобрались с этим вопросом. Спасибо всем за участие в дискуссии, извините, если кого оскорбил ненароком. Но если что, готов таки продолжить