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

Код: plaintext
select sysdate from dual;

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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