powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Проблема времени
16 сообщений из 16, страница 1 из 1
Проблема времени
    #37531458
host.13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет!
Есть задача - разработать систему хранения сообщений с приборов. Есть центральный - сервер БД, системное время которого принимается эталонным. К серверу подключены клиентские приложения, которые получают сигналы с приборов и пишут их в БД с отметкой о времени поступления сигнала. Локальное системное время может изменяться, и при этом сообщения с приборов должны быть сохранены временем сервера. В случае потери связи с сервером клиент переключается в автономный режим и продолжает накапливать сообщения с приборов. Когда связь восстановится, все накопленные сообщения должны быть записаны БД временем сервера. Существуют ли технологии для обеспечения независимости от локального системного времени? И вообще, существует ли решение у этой задачи?
Заранее благодарен.
...
Рейтинг: 0 / 0
Проблема времени
    #37531537
DeathHand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
host.13,

Код: plaintext
select sysdate from dual;

Любая субд может вернуть свое время (время сервера) какойто функцией. Пишите ее результат в таблицу, рядом в соседнюю ячеку можно писать локальное время с клиента - на всякий. Клиенты даже менять не потребуется - просто сделайте тригер "до вставки в таблицу" в котором будете заполнять столбец системной датой.
...
Рейтинг: 0 / 0
Проблема времени
    #37532566
host.13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DeathHand,

Это понятно. А как определить сколько времени на сервере, если он не доступен?
...
Рейтинг: 0 / 0
Проблема времени
    #37532598
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
host.13DeathHand,

Это понятно. А как определить сколько времени на сервере, если он не доступен? Никак.

Сохраняйте локальное время клиента, потом при записи на сервер пересчитывайте.

Можно упростить задачу, храня разницу во времени, но это, строго говоря, неточно.
...
Рейтинг: 0 / 0
Проблема времени
    #37532616
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно ещё упростить задачу, синхронизируя время на сервер и клиентах.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Проблема времени
    #37532728
JoFan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
host.13,

очевидно, что время нужно хранить в UTC
...
Рейтинг: 0 / 0
Проблема времени
    #37532774
DeathHand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
host.13DeathHand,

Это понятно. А как определить сколько времени на сервере, если он не доступен?Когда связь
host.13Когда связь восстановится, все накопленные сообщения должны быть записаны БД временем сервера .
host.13Локальное системное время может изменяться, и при этом сообщения с приборов должны быть сохранены временем сервера.
У Вас во всех случаях данные сохраняются временем сервера. Не зависимо от того, что после разрыва - время сообщения < времени сервера.
...
Рейтинг: 0 / 0
Проблема времени
    #37532776
DeathHand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
host.13А как определить сколько времени на сервере, если он не доступен?
Ненада ничего определять. Когда пишите в БД - тогда и подставляйте время сервера. Писать в БД когда сервер не доступен - не возможно, согласитесь.
...
Рейтинг: 0 / 0
Проблема времени
    #37532784
DeathHand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DeathHandhost.13DeathHand,

Это понятно. А как определить сколько времени на сервере, если он не доступен?Когда связь
host.13Когда связь восстановится, все накопленные сообщения должны быть записаны БД временем сервера .
host.13Локальное системное время может изменяться, и при этом сообщения с приборов должны быть сохранены временем сервера.
У Вас во всех случаях данные сохраняются временем сервера. Не зависимо от того, что после разрыва - время сообщения < времени сервера.
...
Рейтинг: 0 / 0
Проблема времени
    #37532807
DeathHand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JoFanhost.13,

очевидно, что время нужно хранить в UTC
что дальше? Тянуть его с сайта IERS? Если уж сервер бывает не доступен, к интернету клиентам точно постоянного доступа нет.
...
Рейтинг: 0 / 0
Проблема времени
    #37532863
JoFan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DeathHandJoFanhost.13,
очевидно, что время нужно хранить в UTC
что дальше? Тянуть его с сайта IERS? Если уж сервер бывает не доступен, к интернету клиентам точно постоянного доступа нет.

Насколько долго сервер бывает не доступен ?
Насколько при этом будет рассинхрон по времени ?
Если в допустимых пределах, то значит нет проблем т.к. при появлении сервера будет синхронизация по нему.
...
Рейтинг: 0 / 0
Проблема времени
    #37534852
host.13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо всем откликнувшимся.
Сообщения должны писаться в БД не временем сервера, а временем получения сообщения.Задача сводится к тому, чтобы определить время сервера даже тогда, когда он недоступен. Думаю так: в момент неудачи записи в БД на клиенте запускается таймер, раз в секунду пытаемся произвести записи и в момент, когда нам это удается, запрашиваем время серера. Время получения сообщения = (время сервера - сколько таймер натикал). Кто-нибудь так вообще делает? Может, другие методы есть?
...
Рейтинг: 0 / 0
Проблема времени
    #37534904
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
host.13Кто-нибудь так вообще делает? Может, другие методы есть?

Как я уже сказал: периодически синхронизируй время контроллеров и на сервере. Контроллеры,
у которых часы сильно спешат - на помойку.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Проблема времени
    #37534917
DeathHand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
host.13Спасибо всем откликнувшимся.
Сообщения должны писаться в БД не временем сервера, а временем получения сообщения.Задача сводится к тому, чтобы определить время сервера даже тогда, когда он недоступен. Думаю так: в момент неудачи записи в БД на клиенте запускается таймер, раз в секунду пытаемся произвести записи и в момент, когда нам это удается, запрашиваем время серера. Время получения сообщения = (время сервера - сколько таймер натикал). Кто-нибудь так вообще делает? Может, другие методы есть?
Вы можете синхронизировать время клиентов с временем сервера - в момент, когда сервер доступен. Таким образом, приблизительно получите в любой момент времени - на клиенте то время, которое сейчас на сервере. Время на клиенте же - тоже идет, или я чего-то не понимаю? :)

Правильно позиционируйте свою задачу. Ваша задача - не по разработке, а по организации возможности получения актуального времени :) Из данного заявления - следует, что нечерта трогать клиенты и сервер. Просто - нужно организовать процесс синхронизации. Не разработать, а организовать. Заметьте разницу.

И вообще, давайте уберем сферичность. Что за приборы? По чем коннект? Какие контроллеры?

Потому как - вся серия S7 к примеру - имеет часики встроенные, которые с панелью держат железобетоннейший коннект, и время там идет четко (иначе датчик с панелью выкидывают нахер).
...
Рейтинг: 0 / 0
Проблема времени
    #37534919
DeathHand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Проблема времени
    #37534921
DeathHand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Проблема времени
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]