Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Одна база данных на несколько компьютеров без локальной сети, но с Интернетом (http://forum.oszone.net/showthread.php?t=227015)

andrey.vadimovich 04-02-2012 01:35 1851418

Одна база данных на несколько компьютеров без локальной сети, но с Интернетом
 
Здравствуйте, обращаюсь к светлым головам сего бренного мира.
Суть задачи состоит в том, чтобы база данных (MS Access) была все время в актуальном состоянии, т.е. редактируется она на нескольких компьютерах (не одновременно, поочередно) и просто уже нет сил таскать ее туда-сюда на флешке. Возникла идея посылать SQL-запросы на веб-сервер на каком-нибудь бесплатном сервере (была мысль написать что-нибудь простенькое на PHP, без визуального интерфейса), скрипт бы записывал все запросы в файл, а когда компьютер бы подключался к скрипту, тот посылал бы ему пачки запросов. Но тут есть проблема, нужно указывать отправителя (компьютер на каком были действия) и исключать его при передачи запросов, а то он просто начнет дублировать записи. Тут получается очень все запутано и я немного задумался - может не надо городить уже готовое, а то я то может и сделал бы все это, но без шлифовки и ошибок по первых порах не обошлось бы по-любому, а так как база данных моей фирмы, то не допустима потеря или некорректность данных.

Рассматривал виртуальную сеть через интернет и совместное использование базы данных, но тут тоже не все так гладко: во-первых не все компьютеры находятся всегда в Интернете, когда на одном из них идет работа с базой;
во-вторых не допускается передача результирующего ответа по интернет каналу, так как результат может иметь до 100 строк таблицы, а такие запросы будут передаваться с задержкой, что не есть ГУД, таких запросов может быть до 100 в минуту, а то и больше иногда (100 в сек, но только вставка).

Итак вопрос господа знатоки: что можете посоветовать в данной ситуации.

Ситуацию расписал как можно подробнее, что бы не возникало никаких недоразумений. Программа для работы с базой данных моя, так что я могу спокойно оперировать со всеми запросами к базе данных.

Буду очень рад хоть какой-то помощи, спасибо.

Delirium 06-02-2012 03:02 1852587

Хм... Интересная задача. А такой вопрос - база Access используется только как база или же и оболочка управления/работы тоже в ней?
Учитывая, что интернет есть не всегда, локальной связи между машинами нет, задача может превратиться в неразрешимую.

Тут 2 варианта - либо все таки выкладывать базу наружу и цепляться клиентами к ней, либо писать какой то дополнительный модуль для клиентов, который будет все результаты их работы складывать во временную базу, а при появлении интернета синхронизироваться с основной базой. Дублирования избежать просто, достаточно придумать уникальный ключ для каждого клиента, например имя_машины_день_месяц__год_час_минута_секунда_милисекунда, получим что то вроде ivanov01_02_2012_10_01_35_21. Это и идентификатор и показатель времени и метод для отслеживания, были ли такие данные переданы ранее.


Время: 05:12.

Время: 05:12.
© OSzone.net 2001-