Создание таблиц во время выполнения против создания баз данных во время выполнения - PullRequest
1 голос
/ 29 августа 2010

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

Структура приложения выглядит следующим образом:

файлы веб-сайта : .php,, .htm, изображения и css

база данных : содержит более 20 таблиц

Приложение в настоящее время находится на рассмотрениииспользуется компанией и двумя другими дочерними компаниями (в основном бета-тестирование).Поскольку база пользователей мала, я вручную копирую файлы веб-сайта и базу данных, чтобы настроить приложение для использования новой компанией.Я ищу способ сделать приложение более «масштабируемым» без необходимости выполнять «масштабирование» вручную (то есть я не хочу вручную управлять тремя различными наборами файлов и баз данных), поскольку код нейтрален в отношении компании, а базы данных содержатИнформация о компании, мне нужно будет воссоздать базу данных только тогда, когда пользователь запрашивает новую компанию для настройки.Существует несколько способов создания базы данных для новой компании.

  1. Во время выполнения я могу создать новую базу данных с 20+ таблицами, используя CREATE DATABASE

  2. Во время выполнения я могу создать дополнительные 20+ таблиц с названием компании в качестве префикса для таблиц, используя CREATE TABLES

  3. Я могу добавить столбец компании для всехмои таблицы, а затем продолжить добавление информации, как и раньше.

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

Второй вариант означает, что я могу создать все в одной базе данных.Но этот вариант немного более «общий».

Я бы не стал использовать третий вариант из-за проблем с блокировкой на уровне таблицы в MySQL (я не использую InnoDb для всех своих таблиц).

Так что мой выбор между вариантом 1 и 2. Разработчики, которые управляли финансовыми приложениями, пожалуйста, посоветуйте, как только закончится фаза бета-тестирования, база использования увеличится, и я не хочувручную изменить то же самое в 10 базах данных и наборах файлов.Что будет лучше всего делать?

1 Ответ

1 голос
/ 29 августа 2010

С точки зрения безопасности, клиенты должны иметь отдельные базы данных, которые ограничивают доступ пользователей MySQL.Этот пользователь должен иметь только разрешения, необходимые приложению (часто это SELECT, INSERT, DELETE и UPDATE), а не административные права (DROP, CREATE, GRANT, ...).Таким образом, у вас есть четкий обзор баз данных и таблиц.
Когда вам нужно изменить структуру таблицы, вы просто выполняете (тщательно протестированный) SQL-запрос к вашей базе данных.

CSS, изображенияи другой статический контент может быть помещен в поддомен, или Alias (Apache)
Библиотеки и нейтральные классы также должны быть помещены в один каталог, используя include_path длявключите такой файл, чтобы у вас был только один набор файлов, который необходимо изменить.

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