Синхронизация таблиц?

iZk

Guest
Синхронизация таблиц?

база MySQL 4.0.

Есть таблица users с клонками uid и username. Сторонними каким-то программами эта таблица наполняется, изменяется.. удаляются строки...

задача устроить мониторинг изменений таблицы.

Сейчас это делаеться так:
1) в таблице добавлена клонка lUpd (TIMESTAMP)
2) выбираю все строки в которых lUpd >= значению последнего просмотра
3) получаю COUNT(*) если он не равен предидущему то значит какаято запись стерта, чтобы ее найти приходиться держать в массив из id

Главными недостатками считаю:
1) не оперативно
2) 2 лишних запроса каждый N секунд

хотелось бы все это сделать правильно и красиво.

Можноли остаться на Mysql 4.0 Или неизбежен апгрейд на 4.1 или 5.0
 

alpine

Новичок
iZk
У тебя эти две таблицы на разных хостах и нет возможности настроить репликацию. Так?
 

Falc

Новичок
iZk
Почему бы сразу не делать:
SELECT * FROM users WHERE lUpd >= значению последнего просмотра

???
 

iZk

Guest
Falc
Как ты написал - так и есть! только при таком методе проблемно отслеживать удаление строк, и приходиться скажем каждый 10 секунд делать запрос. А одним только этим запросом их не обнаружишь! Приходиться еще кол-во общее смотреть. Итак получаем результат не сразу. А 99.9% запросов долбит впустую как правило. Одни недостатки.

alpine
Ну можно сказать и так. Вообще найдя решение красивое можно много чего сделать.

я предполагаю, что это должнобыть в идеале так
mysql_query ("тра ляля из таблицы такойто")
и на выполнении это функции программа подвисает, до того момента как произойдет некое событие, оновления строки или удаления.

Мне бы только направление нужное понят, куда смотреть. Так вроде не глупый, разберусь.
 

alpine

Новичок
Falc
Так он отловит только INSERT и UPDATE остается еще DELETE записей.

-~{}~ 24.08.05 19:32:

iZk
Я когда-то столкнулся с подобной проблемой. Решил ее переливкой заархивированного дампа таблицы на удаленный хост по http. В таблице было примерно 20 000 записей, переливка происходит глубокой ночью и занимат 5-10мин(много времени уходит на создание полнотекствого индекса), переодичность - раз в неделю, посещаемость сайта 1500 - 2000 хостов/день.
Если интересно могу подробней.
 

iZk

Guest
Мне необходимо это делать не реже чем раз в 10 минут. Но возможен варинт сбоев в сети и тогда необходимо чтобы обе структуры работали любое кол-во времени по отдельности, а появление связи свело бы их. А если получиться избежать вот этих проверок, то почему бы не синхронизировать таблицы мгновенно?

Подобные задачи решались описанным выше способом, но исключить его недостатки так и не удалось.

А суть такова, есть некая программа, которая должна работать в связке с базой, но находится она на другом краю интернета. Возможны перебои в связи. А работу продолжать надо, в любом случае у программы есть локальная копия базы в виде асоциативного массива или какой либо другой (не такой крутой базы, скажем SQLite) Соотвесвенно нужна двухсторонняя "псевдо"-репликация этого массива и базы MySQL.

Боюсь придеться остаться на старой схеме)
 
Сверху