Adobe AIR — SQLite — несколько клиентов

#sqlite #air #adobe

#sqlite #air #adobe

Вопрос:

У меня есть продукт для коммерческих точек продаж, написанный на Adobe AIR и работающий сейчас примерно в 100 точках розничной торговли. У большинства моих клиентов в магазине около 5 компьютеров. У некоторых из моих крупных клиентов 10-20 компьютеров.

В настоящее время приложение использует встроенную базу данных SQLite для сохранения данных. На ранней стадии я допустил огромную техническую ошибку, и у некоторых из моих крупных клиентов возникли проблемы. Мне интересно, может ли кто-нибудь предложить несколько идей о том, как обойти проблему. Вот оно…

Приложение работает в режимах Master и Workstation. В режиме Master база данных находится на физическом компьютере. В режиме рабочей станции приложение обращается к базе данных по сети. SQLite не предназначен для использования таким образом, и это вызывает всевозможные проблемы (блокировка файлов, исчезновение данных, повреждение файлов и т.д.).

Я ломал голову над тем, как решить эту проблему, не полностью переписывая приложение. У меня есть хорошее разделение задач в приложении, поэтому у меня есть возможность перезаписать уровень данных.

Вот некоторые из требований: 1) Приложение должно работать в автономном режиме 2) Решение должно быть способно обрабатывать транзакции 3) Решение должно поддерживать синхронные соединения

Некоторые из идей, которые у меня возникли, следующие:

1) Напишите «сервер базы данных», который находится перед базой данных и позволяет запускать только 1 инструкцию одновременно. 2) Измените базу данных на MySQL и используйте библиотеку assql. Я не верю, что это поддерживает синхронные инструкции.

Какие идеи у вас есть?

Спасибо!

Комментарии:

1. вы можете создать базу данных MySQL и сохранить ее с помощью php, но предполагая, что в локальной сети нет сервера mysql и / или php, вы могли бы подключить рабочие станции к ведущему серверу и позволить ведущему выполнять действия с базой данных. Рабочие станции могут ставить действия с базой данных в очередь на сервере. Таким образом, у вас будет только 1 активное подключение к sqlite в сети.