![]() |
Одна база данных на несколько компьютеров без локальной сети, но с Интернетом
Здравствуйте, обращаюсь к светлым головам сего бренного мира.
Суть задачи состоит в том, чтобы база данных (MS Access) была все время в актуальном состоянии, т.е. редактируется она на нескольких компьютерах (не одновременно, поочередно) и просто уже нет сил таскать ее туда-сюда на флешке. Возникла идея посылать SQL-запросы на веб-сервер на каком-нибудь бесплатном сервере (была мысль написать что-нибудь простенькое на PHP, без визуального интерфейса), скрипт бы записывал все запросы в файл, а когда компьютер бы подключался к скрипту, тот посылал бы ему пачки запросов. Но тут есть проблема, нужно указывать отправителя (компьютер на каком были действия) и исключать его при передачи запросов, а то он просто начнет дублировать записи. Тут получается очень все запутано и я немного задумался - может не надо городить уже готовое, а то я то может и сделал бы все это, но без шлифовки и ошибок по первых порах не обошлось бы по-любому, а так как база данных моей фирмы, то не допустима потеря или некорректность данных. Рассматривал виртуальную сеть через интернет и совместное использование базы данных, но тут тоже не все так гладко: во-первых не все компьютеры находятся всегда в Интернете, когда на одном из них идет работа с базой; во-вторых не допускается передача результирующего ответа по интернет каналу, так как результат может иметь до 100 строк таблицы, а такие запросы будут передаваться с задержкой, что не есть ГУД, таких запросов может быть до 100 в минуту, а то и больше иногда (100 в сек, но только вставка). Итак вопрос господа знатоки: что можете посоветовать в данной ситуации. Ситуацию расписал как можно подробнее, что бы не возникало никаких недоразумений. Программа для работы с базой данных моя, так что я могу спокойно оперировать со всеми запросами к базе данных. Буду очень рад хоть какой-то помощи, спасибо. |
Хм... Интересная задача. А такой вопрос - база Access используется только как база или же и оболочка управления/работы тоже в ней?
Учитывая, что интернет есть не всегда, локальной связи между машинами нет, задача может превратиться в неразрешимую. Тут 2 варианта - либо все таки выкладывать базу наружу и цепляться клиентами к ней, либо писать какой то дополнительный модуль для клиентов, который будет все результаты их работы складывать во временную базу, а при появлении интернета синхронизироваться с основной базой. Дублирования избежать просто, достаточно придумать уникальный ключ для каждого клиента, например имя_машины_день_месяц__год_час_минута_секунда_милисекунда, получим что то вроде ivanov01_02_2012_10_01_35_21. Это и идентификатор и показатель времени и метод для отслеживания, были ли такие данные переданы ранее. |
Время: 05:12. |
Время: 05:12.
© OSzone.net 2001-