Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как посмотреть журнал транзакций? / 6 сообщений из 6, страница 1 из 1
23.06.2005, 11:27
    #33130714
Mariuz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как посмотреть журнал транзакций?
Проблема собственно изначально такая.
Нужно обеспечить чтобы если у клиента пропала связь с сервером, он все равно мог работать локально (хотя бы на добавление), некоторого рода буферизация получается. Но тут встает другой вопрос, для этого должны быть локально доступны справочники. Чтобы их каждый раз целиком не грузить, а только обновления собственно и сабж. Если у кого-то есть другие мысли по этому поводу, с радостью рассмотрю все предложения. Заранее благодарен.
...
Рейтинг: 0 / 0
23.06.2005, 12:35
    #33130960
strizh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как посмотреть журнал транзакций?
Это не проблема сервера PostgreSQL. Это проблема клиентского приложения, которое должно все коллизии коннектов отслеживать и справочники буферизовать. Я клиента пишу на Visual Foxpro, и любой запрос к серверу попадает в локальный курсор на клиенте. При сохранениях (insert, update) я смотрю на ошибку. Если это пропал коннект - делаю его еще раз и повторяю операцию (1 раз).
...
Рейтинг: 0 / 0
24.06.2005, 07:09
    #33132475
Mariuz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как посмотреть журнал транзакций?
2 srtizh:
Это то как раз понятно. Но если один из справочников достаточно большой и достаточно часто обновляется гонять его по сети при каждом обновлении смысл не очень большой. Поэтому я и хочу просмотреть журнал транзакций и при изменении этого справочника на сервере изменять данные в буферизированном справочнике.
...
Рейтинг: 0 / 0
24.06.2005, 11:08
    #33132842
4321
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как посмотреть журнал транзакций?
Mariuz2 srtizh:
Это то как раз понятно. Но если один из справочников достаточно большой и достаточно часто обновляется гонять его по сети при каждом обновлении смысл не очень большой. Поэтому я и хочу просмотреть журнал транзакций и при изменении этого справочника на сервере изменять данные в буферизированном справочнике.
а не проще добавить поле со штампом обновления (timestamp) и пополнять справочник по результатам простого запроса (тако же и с удаленными - кидать в табличку - буфер удаленных со штампом времени удаления, по мере отваливания клиентов ее чистить).
...
Рейтинг: 0 / 0
24.06.2005, 12:00
    #33133008
Mariuz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как посмотреть журнал транзакций?
2 4321:
Спасибо за мысль! Я тоже уже об этом подумал но подумал в поле указывать время последнего обновления. А клиент периодически проверял бы какие обновления после последнего скачивания справочника обновились. Но тогда встает другой вопрос как клиенту получить время с сервера и как заполнять это поле? И все же через журнал транзакций думаю было бы правильнее. Но если никто не подскажет других вариантов, придеться делать так.
...
Рейтинг: 0 / 0
24.06.2005, 13:37
    #33133385
4321
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как посмотреть журнал транзакций?
Mariuz2 4321:
Спасибо за мысль! Я тоже уже об этом подумал но подумал в поле указывать время последнего обновления. А клиент периодически проверял бы какие обновления после последнего скачивания справочника обновились. Но тогда встает другой вопрос как клиенту получить время с сервера и как заполнять это поле? И все же через журнал транзакций думаю было бы правильнее. Но если никто не подскажет других вариантов, придеться делать так.

1. клиент не должен заполнять поле метки времени. Поле заполняет сервер (триггером на апдейт). Клиент даже может не просить это поле в перечне полей выборки (экономия трафика). Кстати сказать и метка может быть не временем (перевели часы назад???), а попросту свободным счетчиком изрядного размера (int8).

__
ЗЗЫ : Вариант отработки (триггер не описываем):
клиент получает данные:
0. (опционально - от порядка) сдвигает полученное ранее время предыдущей выборки справочника stime0 := stime (если получение времени и данных не оформлять в транзакцию +_ несколько записей в выборке погоды не сделает).
1. клиент получает новую метку времени сервера (в клиентскую переменную) stime
(если время получения данных сдвинуть до времени получения метки времени (пункт 2.) - пункт 0 можно опустить)
2. клиент получает новые данные
SELECT x,xx,xxx from sprxxx WHERE time > stime0;
и удаленные за это время
SELECT x,xx,xxx from sprxxx_del WHERE time > stime0;
ворос только в том, в какую структуру на клиенте дописывать/удалять вновь полученные данные справочников.


в любом случае, если после получения данных о справочнике другой сеанс удалит строку в справочнике, идентификатор которой вы захотели вставить в редактируемую запись - вы получите отлуп (если целостность проверяется) в момент попытки сохранения записи. А блокировать таблицу справочников с момента обновления данных о справочнике на клиенте до момента обновления данных на сервере клиентом - кажется диким излишеством.
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как посмотреть журнал транзакций? / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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