![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
БД со статической информацией [D6, IB6.x]
Kombat © (2002-06-11 15:04:00)HI All! Помогите с советом! Есть БД с информацией которая пишется один раз и потом не меняется (каждый месяц, неделю записываем данные о счетах, накладных клиента, его телефонных переговорах) эта база создается на год (большой объем). И есть БД где хранятся справочники, данные о клиентах и прочая динамическая инфо. Разделение БД обусловлено тем что не хочется каждый день бекапить новые данные вместе со статикой. Кто может подсказать как быть со ссылочной целостностью (иметь копии справочников в БД статики?, синхронизировать их?). Как вообще в таких случаях поступают?
Johnmen (2002-06-13 11:11:00) [21]>Fareader © (13.06.02 11:04) : И по поводу транзакций ты совершенно прав !
И не только откат, но и механизм принятия непонятен !
TSV (2002-06-13 11:11:00) [22]Я же написал, что нужен триггер... В триггере все операции протекают в разрезе одной транзакции. Если что-то произойдет не так, то нужно просто сделать ROLLBACK.
> Johnmen © (13.06.02 10:58)
А что, такое в IB реализовать нельзя??? А еще потом говорят, что он круче... ;-)
Fareader (2002-06-13 11:04:00) [23]2TSV © (12.06.02 18:21) Если я не ошибаюсь, то чтобы создать такую ссылочную целостность - прийдется писать UDF, чтобы заносить данные в базы-сателиты, но как тогда откатить изменения в этих сателитах, если откатывается транзакция в мастере?
Поправьте, если я не прав.
Johnmen (2002-06-13 10:58:00) [24]>TSV © (13.06.02 10:42) : Вот именно - IB, а не MSSQL...
TSV (2002-06-13 10:42:00) [25]Прочитай внимательно еще раз... ;-)
Внешние ключи в базах-сателлитах строятся на таблицу tPersons (см. выше). А изменения в этой таблице инициируются из базы-мастера.
В терминах IB не знаю (нюансы языка), работаю с MS SQL Server.
Удачи.
Johnmen (2002-06-13 10:01:00) [26]>TSV © (12.06.02 18:21)
Я что-то не уловил, где тут поддержание ссылочной целостности, да к тому же и терминах IB ???
fool (2002-06-12 18:37:00) [27]>TSV
Молдец, порадовал старика! :0)
TSV (2002-06-12 18:21:00) [28]Значится так.
Существует так называемая модель баз-сателитов. То есть есть база с какими-то общими данными. Назовем ее xMaster. И есть базы, которые могут ссылаться на данные в xMaster. Назовем их xSatelite1, xSatelite2, ... , xSateliteN. Допустим, что у нас есть в главной базе таблица Persons (ID, Name, Age, ...), на которую могут ссылаться из других баз. Как обеспечить ссылочную целостность? В каждой базе-саттелите мы создадим таблицу, например tPersons, которая будет содержать лишь первичный ключ, такой же, как и в Persons. Далее для Persons мы пишем триггеры на вставку и удаление, в которых распространяем (вставляем или удаляем) данные (ключи) в таблицы баз-сателлитов. Для того, чтобы жестко не завязываться на имена баз-сателлитов, в главной базе создается табличка с именами баз-сателлитов. А в триггере формируется курсор на ее основе и строятся динамические операторы на INSERT и DELETE. Вот собственно и все. ;-)
ЗЫ
Идея эта не моя и авторство я себе не приписываю...
Kombat (2002-06-12 16:46:00) [29]2TSV © Если можно, то по подробнее о решении "не влоб".
Я пришел к выводу, что наиболее оптимальное решение - это ведение всех данных в одной БД (тогда и целостность решается и синхронизации никакой ненадо), потом делаем прогу (или берем готовое) которая будет ночью вытягивать из БД НЕ статические таблицы (справочники, таблицы с меняющимися данными) и уже эту БД (вытяжку) архивируем, т.е. решается проблема излишних данных в архиве. Кроме того, 01.01 каждого года делаем КОПИЮ текущей БД, и это будет НЕ изменяемая БД прошлого года (для справок). А из текущей удаляем статику за прошедший год и живем дальше.
Может кто предложит что получше?
TSV (2002-06-12 15:57:00) [30]> Fareader © (12.06.02 14:52)
Я и не умничаю...
Если кому-то сильно надо, то напишу.
С уважением.
Fareader (2002-06-12 14:52:00) [31]2TSV © (11.06.02 19:01) а подробнее? Умничать любой может, а предложить дельный вариант - не каждый :(
TSV (2002-06-11 19:01:00) [32]> Johnmen © (11.06.02 15:14)
Про ссылочную целостность можно не забывать... Просто делается это не "в лоб"...
Удачи. ;-)
Kombat (2002-06-11 18:29:00) [33]Просто каждый месяц прибавляется по ~150~200 Мб, и каждый день архивировать данные которые не меняются (за два года набежало ~2 Гб - это планируется перенос фоксовкой задачи на нормальные рельсы) не сыльно рационально с точки зрения дискового пространства и времени. Я уже сам пришол к тому что нужна одна база, тогда и ссылки и все нормально, но бекап 2-3 Гб каждый день ? (((
Johnmen (2002-06-11 15:14:00) [34]Традиционно - все в одной базе.
И почему вдруг не хочется каждый день бекапить новые данные вместе со статикой ?
А если в разных - то это, на мой взгляд, чуднО, и про ссылочную целостность можно забыть...:)