Как обновить базу данных удаленного доступа MS? - PullRequest
2 голосов
/ 14 января 2012

Мне нужно создать веб-приложение, чтобы показать и разрешить редактирование для набора данных.

Эти данные содержатся в файле базы данных Access, который используется другим приложением (настольное приложение).

Я оцениваю лучший способ выполнить эту работу.

К сожалению, моя цель перехода на другое решение для баз данных (rdbms, например, MySQL или Postgres) была отклонена заказчиком.

Вопрос в том, как сохранить целостность данных и синхронизировать их между сервером и рабочим столом, на котором выполняется приложение, которое также использует эти данные.

Все, что мне нужно сделать, это прочитать данные, сохранить отредактированные или новые данные, датьавторизованным пользователям - интерфейс для просмотра этих новых вставленных данных, то есть для их проверки, и импорта их в исходную базу данных доступа.

Я нашел следующие возможные решения (для обновления копии MDB для настольных компьютеров), ноу каждого из них есть свои плюсы и минусы:

  • удаленный доступ к машине Windows
    • подвергает машину несанкционированному доступуed access
  • используйте rsync для синхронизации файлов (один раз в день)
    • если mdb на клиентском компьютере был отредактирован с помощью настольного приложения, произойдет потеря данных
    • может быть обновлено только после проверки всех данных
    • реальных синхронизированных данных не будет (пока не будет запущен rsync)
  • клиент-серверприложения
    • могут использовать безопасные уровни для защиты данных от злоумышленников
    • требуется 3-е приложение (на рабочем столе)
    • синхронизация требует, чтобы авторизованные пользователи использовали это 3-е приложение для импорта данных(который запросит удаленную базу данных и обновит локальную базу данных)

Знаете ли вы какой-нибудь другой способ, который мог бы помочь мне сделать это?Я ориентируюсь на модель клиент-сервер, даже если это будет дороже, но это единственный способ, с помощью которого я вижу, как это работает.

Видите ли вы другие плюсы / минусы данного решения?

Я не выбрал PL для разработки этого, но я думал использовать PHP и / или Python.Удаленной средой (для сервера) может быть Windows или * nix (предпочтительно).

Спасибо.

Ответы [ 3 ]

2 голосов
/ 14 января 2012

Первая идея:

exposes the machine to unauthorized access

Это не совсем верный аргумент. Все, что вы помещаете в Интернет, разоблачено. И это не так, как он не может быть защищен с помощью SSL / TLS. Даже RDP может быть защищен через SSH-туннель, например.

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

Для обеспечения безопасности достаточно использовать SSL и обычную аутентификацию (например, поддерживаемую SOAPpy в случае с Python). Вы можете использовать pyodbc для подключения к базе данных Access.

1 голос
/ 15 января 2012

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

Причина, по которой я спрашиваю?

Вы можете рассмотреть возможность использования Access 2010 и Office 365. Это позволяет вам связывать таблицы с облаком, но на самом деле таблицы также кэшируются локально для вашего Accessрабочий стол.Это означает, что используется синхронизация репликации данных в реальном времени, и это происходит автоматически для Access 2010 (поэтому вам не нужно писать какой-либо код).

Что это означает при запуске настольного приложения Access,Вы можете отключить сеть, и она продолжит работать.В тот момент, когда у вас есть Wi-Fi или подключение, локальные изменения синхронизируются с Office 365. Еще лучше то, что теперь вы можете создавать веб-формы в Access.

Данные, к которым вы прикоснулись или отредактировали (или новые записи с обеих сторон), попадут на ваш локальный компьютер.Таким образом, вы добавляете записи в клиенте Access, веб-пользователи также увидят эти новые ссылки.

Итак, в Access 2010 теперь есть веб-публикация, и это работает с новым офисом 365. Цена начинается с 6 долларов в месяц.И если всего несколько пользователей, то пусть все они войдут в систему под одной учетной записью!Это означает, что вы можете все это запустить и запустить за меньшее время, чем требовалось для создания этой публикации, и менее чем за 10 долларов в месяц!

Для тех, кто не знает, Access 2010 имеет веб-публикацию.При публикации форм доступа они преобразуются в формы .net (zammel / XAML), а код преобразуется в JavaScript.Таким образом, код формы на самом деле работает на стороне браузера.

Поскольку система работает в Office 365, то вы используете железо большой мощности и теоретически вы можете масштабировать до миллионов пользователей для этой установки.Когда вы публикуете приложение Access в Office 365, на стороне сервера вы больше не используете файлы mdb или Access, а то, что называется Access Web Services.Таблицы фактически становятся эквивалентом списков SharePoint.Новым для SP 2010 стало то, что эти списки теперь имеют реляционные функции, такие как каскадное удаление.

Настоящая прелесть этой системы в том, что вы можете писать, создавать и делать все внутри Access без необходимости изучать или касаться ЛЮБОГО ВИДА серверапобочные технологии.Вот мое короткое видео, и на полпути я запускаю приложение Access только с веб-браузером.

http://www.youtube.com/watch?v=AU4mH0jPntI

ActiveX или даже Silverlight не требуются.На самом деле мои приложения Access отлично работают на iPad с помощью веб-браузера Safari.

Так что вы можете продолжить использовать Access и просто опубликовать свое приложение в Интернете с новыми функциями Access 2010.

1 голос
/ 14 января 2012

ну, вы можете использовать 2 дБ и синхронизировать изменения с помощью своего рода веб-сервиса между ними. разделяющий веб-сервер Db (который вы можете использовать современный MySQL или что-то еще) и текущий доступ Db Вы должны создать своего рода Rest Api, возвращающий новые или измененные записи по методу GET, удаление по методу DELETE и т. Д. С использованием метки времени в методе http. и затем вы можете запросить на каждой стороне запланированное задание для новых записей на другой стороне (передача с помощью json), что приведет к относительной несинхронности записей.

Вы можете позаботиться о безопасности, выставив базу данных приложения только в определенном порту и только для http-запросов, поступающих с IP-адреса сервера webapp. также используя http аутентификацию, хэши если это не большая нагрузка, приложение с высокой степенью параллелизма (что, я полагаю, не так, поскольку вы используете доступ как Db), должно работать.

Вы можете создать этот мини-API с любым веб-фреймворком Python, таким как TurboGears 2.1, Django или мини-фреймворками, такими как бутылка или колба

p.s Если вы предпочитаете python (а почему бы и нет), не используйте pyodbc напрямую, работайте с python beautiful orm - sqlalchemy намного лучше

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...