Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

БД со статической информацией [D6, IB6.x]


Страницы:   1 2

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]

Традиционно - все в одной базе.
И почему вдруг не хочется каждый день бекапить новые данные вместе со статикой ?
А если в разных - то это, на мой взгляд, чуднО, и про ссылочную целостность можно забыть...:)


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо