2010-08-09 3 views
0

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

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

Мои вопросы: 1) Будет ли этот метод эффективным? Или было бы лучше, если бы PHP-скрипт записывал данные в текстовый файл, а затем для задания cron вызывать php-скрипт для обработки текстового файла каждую минуту?

2) Когда я выхожу с версией 2 настольного приложения, как мне настроить базу данных для обработки новых изменений? Например, предположим, что v1 программы просто отправляет одну переменную. Тогда v2 программы отправляет две переменные. Я не смогу убедиться, что все пользователи обновятся до версии 2. Итак, если пользователь все еще использует версию 1, должен ли сценарий php просто записывать данные одной переменной в базу данных и оставить другую переменную пустой?

Другой сценарий заключается в том, что в версии 2 я решил, что исходная переменная должна быть изменена? Как мне это обработать?

Любые комментарии оцениваются!

ответ

1

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

  • приложение рабочего стола непосредственно обращается к центральной базе данных
  • приложение рабочего стола связывается с веб-службой, чтобы скрыть детали базы данных (например, управление версиями)
  • У вас есть php, делающий все с помощью db и использующий браузер вместо настольного приложения.

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

+0

Одной из причин для PHP является то, что если кто-то может напрямую подключиться к базе данных, у них уже есть больше доступа, чем любой клиент должен иметь. Любой, кто мог бы найти строку подключения к DB в приложении, мог бы вставлять тонны поддельных данных по своему усмотрению, потенциально снимая все. Сценарий PHP или какая-либо другая служба, работающая на сервере, сделает это сложнее, поскольку данные могут быть легко проверены и до того, как они будут сохранены. И для справки, PHP-скрипт может быть веб-сервисом. – cHao

+0

Да точно. PHP-скрипт просто получает данные и дает мне параметры для фильтрации данных перед добавлением в базу данных. Это также означает, что мне не нужно жестко кодировать данные базы данных в настольном приложении. – Steve

+0

cHao: вопрос о последующей деятельности. Какой адрес я должен использовать для базы данных. Например, если мой веб-сервер был google.com, я не должен также использовать google.com для моего адреса базы данных, потому что я не смог бы разделить эти два позже, если бы я хотел, чтобы мой веб-сервер на одном компьютере и моей базе данных на другом компьютере, правильно ? Так какие адреса следует использовать? google.com для веб-сервера и database.google.com для базы данных? – Steve

1

Создать версию API веб-сервиса и использовать его.

Отметьте эмблему на версия.

+0

Можете ли вы дать мне ссылку для дальнейшего чтения? – Steve

+0

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

+0

Мой ответ на этот вопрос может быть вам полезен. http://stackoverflow.com/questions/948355/when-is-an-api-overengineered/948419#948419 –

0

Эффективность скрипта PHP будет зависеть от нескольких факторов, в том числе от того, насколько хорошо он написан и как структурирована ваша база данных. Будьте особенно осторожны с индексами; они ускоряются, читает совсем немного, но ценой замедления пишет - иногда резко.

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

+0

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

+0

Смотреть ключи. Некоторое время все будет хорошо, но если вы не будете осторожны, в какой-то момент вы можете обнаружить, что MySQL тратит больше времени на обновление индексов, чем обновление фактической таблицы. – cHao

Смежные вопросы