Проектирование структуры базы данных
Построим информационную модель системы расчета с абонентами. В ходе исследования существующей схемы расчетов были выявлены следующие основные сущности:
· Клиент (абонент, владелец телефона) · Услуга · Подразделение · Начисление · Телефонный разговор, подлежащий повременной тарификации · Начисление за повременные разговоры (за один день) · Оплата · Категория клиента · Проведенные расчеты
IDEF1X-диаграмма взаимодействия между этими сущностями представлена в Приложении 6. После нормализации данных и разрешения связей «многие ко многим» путем введения граничных сущностей диаграмма принимает вид, указанный в Постановка задачи требует наличия механизма поддержки истории для сущностей, влияющих на результаты расчетов. К сущностям, для которых должен поддерживаться механизм регистрации изменений относятся:
· Клиент (владелец телефона) · Услуга · Подразделение · Начисление · Постоянное начисление · Категория клиента
Для регистрации изменений используется структура данных, представленная на рис.2.5.
Рис.2.5. Структура данных для поддержки механизма регистрации изменений
Суть данной модели такова:
1. Каждая сущность характеризуется набором состояний, изменяющихся во времени. 2. Каждое состояние характеризуется набором атрибутов сущности, а также датой начала и датой окончания состояния. 3. Сущность однозначно идентифицируется своим внешним ключом и актуальной датой.
4. Дочерние таблицы ссылаются на сущность по её внешнему ключу. 5. При смене состояния внешний ключ не меняется.
Целостность данных обеспечивается с помощью триггеров на сервере.
Для дальнейшего анализа выделим в структуре базы данных несколько подсистем:
· Картотека абонентов · Начисления · Повременный учет
После определения атрибутов сущностей схема данных с учетом механизма поддержки истории принимает вид, приведенный в Приложении 6. SQL-скрипт для генерации базы данных представлен в Приложении 1.
Схема репликации данных
Тиражирование данных в системе построено по схеме с одним сервером подписки (центральный сервер) и множеством серверов репликации (районы).
Рис.2.6. Организация репликации данных.
Данные на центральном сервере доступны только для чтения чтобы избежать конфликтов по модификации записи.
Рис.2.7. Подробная схема репликации данных.
Схема репликации приведена на рис.2.7. Рассмотрим процесс передачи изменений подробнее:
1. При изменении данных в реплицируемой таблице новые данные через триггер записываются в журнал изменений. Кроме того, туда заносится имя таблицы, код сделанного изменения и первичный ключ измененной записи. 2. При возникновении в базе определенного события (например при большом количестве записей в журнале изменений) или в определенный момент времени коммуникационный сервис запускает процесс репликации. 3. Процесс репликации устанавливает соединение с сервером подписки и начинает синхронизацию данных. 4. Сервер подписки принимает измененную запись и модифицирует соответствующим образом таблицу на своей стороне. 5. Если в процессе изменения записи был сгенерирован новый ключ, то он передается на сервер репликации. 6. Сервер репликации заменяет первичный ключ реплицируемой записи на ключ, возвращаемый с сервера подписки и удаляет соответствующую запись из журнала изменений.
При передаче изменений коммуникационным сервисом используется протокол двухфазной фиксации транзакций (Two-phase commit transactions), что позволяет застраховаться от ошибок. При синхронизации данных подобным методом процесс репликации может быть прерван в любой момент времени и продолжен позднее с той же точки. Данная особенность позволяет использовать такую схему тиражирования даже на очень плохих каналах связи.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|