Сервер является общим хостинг-сервером Windows с Hostgator.Нам разрешено использовать «неограниченные» базы данных MS SQL, а каждой из них разрешено «неограниченное» пространство.Я пишу сайт на PHP.Данные (не схема БД, а данные) должны быть версионированы таким образом, чтобы (в идеале) мой клиент мог выбрать желаемую версию БД из поля выбора при входе на веб-сайт, а затем (примерно раз в месяц)пометить текущие данные, также через простую форму на сайте.Я подумал о нескольких теоретических способах сделать это, и я не в восторге ни от одного из них.
1) Поместите столбец VersionNumber в каждую таблицу;иметь основную таблицу версий, в которой перечислены все версии для поля выбора при входе в систему.При пометке каждая строка без номера версии в каждой таблице в БД будет дублироваться, а оригиналу будет присвоен номер версии.
Это кажется самой простой идеей и для меня, и для моего клиента, но яЯ обеспокоен тем, что БД будет ужасно медленной всего через несколько месяцев, поскольку каждая таблица будет увеличиваться (по крайней мере) по сравнению с ее первоначальным размером каждый месяц.Там не так много данных, и, вероятно, никогда не будет, ни в одной версии.Но умножение версий в одной и той же таблице меня просто пугает.
2) Дублируйте БД каждый раз, когда мы помечаем теги.
Похоже, это должно было бы быть сделано моим клиентом вручную, так как серверподелился, так что мне уже не нравится идея.Но кроме того, старые БД должны были бы работать с текущим кодом веб-сайта, и, поскольку со временем вносятся изменения в структуру БД (что неизбежно), старые БД больше не будут работать с новым кодом веб-сайта.
3) Создавайте дубликаты таблиц (с версией в их названии) внутри одной и той же базы данных каждый раз, когда мы помечаем теги.Как и [v27_Employee].
Преимущество по сравнению с идеей (1) состоит в том, что ни одна таблица не станет огромной по размеру, что позволит запросам поддерживать свою скорость, а по идее (2) это можно теоретически сделатьлегко через простую форму тега сайта, а не вручную моим клиентом.Проблемы заключаются в том, что запросы в моем PHP-коде будут смущены, поскольку я пытаюсь объяснить, с какой таблицей Employee соединяется какая таблица адресов, в зависимости от того, какая версия выбрана, поскольку все они имеют одно и то же имя, но разные;а также то, что при изменении кода старые таблицы БД больше не совпадают, такая же проблема, как (2).
Итак, наконец, есть ли у кого-нибудь хорошие рекомендации?Лучшие практики?То, что они делали, работали в прошлом?
Спасибо, ребята.