mysql — PHP-приложение для настольного приложения

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

Приложение будет использоваться многими сотрудниками нашей компании, поэтому мы подумали об установке на своих компьютерах веб-сервера (Apache) и запуске приложения на своих компьютерах. Проблема в том, что, если мы решим пойти по этому пути, мы должны:

  • Загрузите все данные из MySQL ДО запуска приложения
    (когда пользователь имеет доступ к Интернету) и сохранить эти данные в формате JSON
    файл

    • Измените все запросы в проекте, чтобы получать данные из JSON вместо базы данных.
    • Кроме того, существует множество функций, которые вставляют данные в базу данных в режиме реального времени, поэтому нам придется использовать SQLite, а затем
      перенести данные в базу данных MySQL
    • Наконец, таким образом, люди, которые используют эту программу, будут иметь доступ ко ВСЕМ файлам PHP, и они могут изменить их в любое время.

У нас нет времени думать о реальном настольном Java-приложении, потому что это приложение будет использоваться с января, поэтому у нас нет времени его разрабатывать.

Есть ли у вас какие-либо предложения? Есть ли что-то, о чем я не думаю, или технология, которая может мне помочь?
Спасибо!

PS. Я рассмотрел такие программы, как Nightrain PHP Desktop, но они только избегают установки Apache, не более того …

4

Решение

Вступление

Поскольку вам, очевидно, нужно быстрое решение, я дам вам одно. Это основано на информации, которую мы знаем. Предупреждение, это решение не элегантно, и вам НУЖНО заменить его, когда у вас будет такая возможность.

Решение

  1. Очистите все ваши первичные и внешние ключи.
  2. Замените их на BINARY(16) с индексом.

Каждая запись будет нуждаться в том, чтобы ее псевдо-первичный ключ генерировался случайным образом с помощью CSRNG. Бинарный 16 просто удобен для соответствия стандарту UUID. Это обеспечит уникальную индексацию каждой новой записи, несмотря на недостаток знаний о других дистрибутивах.

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

  1. Каждому ноутбуку потребуется копия всей базы данных.
  2. Каждому ноутбуку будет разрешено только добавлять новые данные, никогда не удалять и не изменять базовые данные.

Фактически, как правило, все данные в центральной базе данных теперь будут доступны только для записи / только для чтения. Неважно, насколько ошибочны вновь объединенные данные, их нельзя ни удалять, ни изменять.

  1. Новые данные следует рассматривать как «обновления» на основе их метки времени.

Таким образом, каждая таблица будет нуждаться в метке времени.

  1. Наконец, следует сохранить запись о том, когда было произведено распространение копии, чтобы сохранить информацию о том, какие данные следует объединить с центральной базой данных.

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

Заключение

Я бы использовал это решение, только если бы я действительно имел. На самом деле, я бы оценил только 80% вероятности того, что он будет работать даже с некачественным качеством. Это также предполагает, что вы можете посвятить все оставшееся время разработки ре-факторингу методов вставки данных.

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

Каждая новая функция должна быть обратно совместима со старыми данными.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector