![]() |
|
Модераторы: skyboy |
![]()
|
|
| AlexeyFyodorov |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 13.12.2008 Репутация: нет Всего: нет |
Приветствую. Мною была написана программа для ведения учёта товара (типа 1С), там закупки, продажи, перемещения и т.п., не принципиально. Общая логика такая: на сервере крутится БД, а все, кому положено, коннектятся к ней через инет. Использовал Delphi7, MySQL5.1 и Zeos6.6.5. Пока тестиров в перелах Питера всё было хорошо, а когда выдал поставщикам товара из штатов, начались проблемы. Периодически программа теряет соединение с сервером, видимо из-за протяженности маршрута, соответственно возникают сложности с вылавливанием удачных/неудачных изменений (где то используется кэширование изменений датасета, где то нет). Конечно, логичнее было бы организовывать всё это на базе сайта, но я и так не ахти какой программер, а в вебе вообще почти 0, да и нет желания разбираться уже 2 раза бросал на полпути.
Подскажите пожалуйста возможные методы решения этой проблемы. Репликация не подходит, т.к. нет возможности её удалённо настроить, да и использоваться это всё будет на разных компах, короче нужно по принципу запустил и работает. Пока есть только одна идея: прицепить клиентов к SQLite (что за зверь такой MySQL Embedded и как его прикрутить я с разбегу не разобрался) и сделать что-то типа синхронизации по требованию, актуальность данных не критична. Не скажу, что могу сделать это на раз-два, но хотя бы представляю как. Возможно есть метод проще и правильнее? Повторюсь, я самоучка, разбирался только в том, что было необходимо для текущей задачи и возможно не знаю очевидных вещей. Зарание спасибо. |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 41 Всего: 260 |
использовать транзакции. в случае внезапного разрыва соединения, по крайней мере, не будет "половинчатых данных" в базе. останется решить проблему, чтоб на клиенте не надо было по несколько раз забивать одни и те же недоотправленные данные. например, не делать запрос к базе напрямую, а бросать запросы в некий пул, который обрабатывается отдельным потоком и посылает, посылает, посылает повторно одни и те же запросы, пока они наконец не проскочат в базу. с другой стороны, возникает проблема: отложенные запросы на изменение данных могут "пройти" позже, чем запросы на выбор данных. так что надо всю работу с БД сделать через этот некий пул запросов.
|
|||
|
||||
| AlexeyFyodorov |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 13.12.2008 Репутация: нет Всего: нет |
А если применительно к zeos, то упрощенно это что то похожее на:
Не могу разобраться как в zeos транзакции работают, да и куда это повесить в тех случаях, когда кэширование использовать не целесообразно? |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | MySQL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |