В одной базе данных могут содержаться как первичные данные, так и данные-копии. Приложение-клиент, работающее со своей СУБД, может вносить изменения напрямую (операторами INSERT, DELETE, UPDATE) только в первичные данные. Для изменения копии данных предназначен механизм асинхронного вызова процедур. Для работы этого механизма в нескольких базах данных создаются процедуры с одинаковым именем и параметрами, но, разумеется, с различным текстом. В одной базе данных процедура помечается как предназначенная к репликации. Вызов этой процедуры вместе со значениями параметров через журнал и механизм репликации передается к узлам-подписчикам, и в их базах данных вызывается одноименная процедура с теми же значениями параметров.
Система, хранящая вторичные данные, может быть любой из ряда систем, доступных через шлюз: будь то Oracle, Informix, DB2, RMSили ISAM и т.д. Система, хранящая первичные данные, требует наличия менеджера журнала транзакций (LogTransferManager – LTM). Интерфейс LTM является открытым, и в скором будущем, возможно, подобные модули будут созданы для нестандартных источников данных.
Вообще тиражирование данных может найти самое разнообразное применение:
• для разгрузки сервера, выполняющего активное обновление данных от сложных запросов, связанных с поддержкой принятия решений;
• для консолидации данных от подразделений в центре;
• для обмена данными по медленным или ненадежным линиям связи;
• для поддержания резервной базы данных;
• для построения сети равноправных узлов, обменивающихся данными.
Подчеркнем, что репликационный сервер тиражирует транзакции, а не отдельные изменения в базе данных. Метод тиражирования транзакций гарантирует целостность внутри транзакций и, как следствие, невозможность нарушения ссылочной целостности. Схема обновления первичных данных и копий данных исключает возможность возникновения конфликтов; последние могут быть вызваны лишь неправильным проектированием системы или сбоем.
Большинство производителей современных промышленных СУБД в той или иной степени обеспечивают поддержку распределенной обработки транзакций. Распределенная обработка данных основывается на синхронных и асинхронных механизмах обработки распределенных транзакций. Эти механизмы могут использоваться и совместно. Поскольку каждый механизм обладает своими сильными и слабыми сторонами, его выбор зависит от требований конкретной подзадачи.
Задача масштабирования рано или поздно встает в любой организации, и это вполне объяснимо. Никто и никогда не покупает аппаратуру про запас, с большими резервами по вычислительной мощности. В то же время объемы хранимых данных и количество реально работающих приложений имеют тенденцию к неуклонному увеличению. Поэтому лучше всего изначально остановить свой выбор на такой аппаратной конфигурации, которая в дальнейшем будет легко наращиваться и развиваться.
Этому требованию в наибольшей степени отвечают компьютеру с симметричной многопроцессорной (SMP) или массивно-параллельной (MPP) архитектурой, на которых при увеличении количества процессоров обеспечивается практически линейный рост производительности. Обработка нескольких запросов, вложенных циклов внутри одного запроса, загрузка и сортировка данных, создание индексов и т.д. – все это выполняется параллельно на различных процессорах. Более того, одновременно реализуется эффективная динамическая балансировка загрузки системных ресурсов (процессоров, оперативной и дисковой памяти).
СУБД компании Microsoft
MicrosoftSQLServerпредоставляет широкие возможности: встроенную поддержку приложений Интернета, улучшенные механизмы распределенных транзакций, тиражирование в разнородных средах, расширенные средства распределенного управления и, что особо важно, новую архитектуру динамической блокировки.
В случае с динамической блокировкой, предложенной в SQLServer 6.5, используются интеллектуальные функции машины баз данных для оптимизации и детализации блокировок в зависимости от потребностей приложений, обращающихся к базе данных. Технология динамической блокировки рассматривается фирмой Microsoft в качестве стратегического направления в развитии SQLServer. Речь идет о реализации системы IRL (Insertrow-levellocking). В целом же стратегия динамической блокировки в SQLServer включает в себя:
• систему динамического выбора уровня блокировки (строка, страница, набор страниц или таблиц);
•блокировку на уровне строки для всех типов транзакций (INSERT, UPDATE, DELETE, SELECT);
•использование смешанных страниц, группирующих связанные строки из различных таблиц.
Microsoft, безусловно, стремится к тому, чтобы продемонстрировать преимущества архитектуры новой системы. Одним из наиболее частых аргументов оказывается именно наличие интеллектуальной системы динамической блокировки, построенной на уровне машины баз данных и избавляющей независимых разработчиков программного обеспечения от необходимости выбора эффективной системы блокировок. Это позволяет им полностью сосредоточиться собственно на разработке прикладного программного обеспечения. Упрощается и администрирование базы данных. Наконец, должен снизиться уровень непроизводительных затрат на блокировку.
В качестве модуля хранения и области, защищенной блокировкой, MicrosoftSQLServerиспользует страницы. В большинстве случаев блокировка на уровне страницы оказывается приемлемой, хотя и вероятны случаи конкурентного доступа к страницам с часто используемой многими пользователями информацией.
Пакет «Microsoft SQL Server» ориентирован на эксплуатацию ресурсов сети Интернет и построение корпоративных систем класса Интранет. Выход пакета MSServer замыкает логическую цепочку, которую выстраивала компания Microsoft в сфере Интернета. Она включает в себя: сетевую основу распределенных вычислений (WindowsNTServer); совокупность интегрированных приложений-серверов (BackOffice) технологииWin32 и OLE; средства разработки (VisualBasic, Java, JavaScript, FrontPage, InternetStudio), набор настольных приложений (Office) и системы, призванные поддерживать работу конечного пользователя,- Windows 95 и WindowsNTWorkstation.
СУБД компании Oracle
Архитектура, положенная в основу сервера Oracle, полностью реализует преимущества открытых систем и является дальнейшим развитием ставшей уже традиционной технологии «клиент-сервер». Система управлениями базами данных OracleRDBMS(сервер многомерной реляционной базы данных) предоставляет пользователям широчайший набор возможностей для создания прикладных информационных систем:
• различного масштаба – от однопользовательских систем и систем уровня небольшого подразделения до глобальных межрегиональных распределенных систем обработки информации;
• различного назначения – от систем, ориентированных на работу в режиме реального времени (On-UneTransactionProcessing – OLTP), до систем поддержки принятия решений (DecisionSupportSystems – DSS) и систем, основанных на концепциях «хранилищ данных» (DataWarehouse).
OracleRDBMS соответствует самым строгим требованиям, предъявляемым к системам хранения и обработки информации:
• работает и обеспечивает масштабируемость и переносимость созданных на ее основе прикладных систем более чем на ста аппаратных и операционных платформах – от персональных ЭВМ до больших машин и многопроцессорных компьютеров с симметричной параллельной (SMP) и массивно-параллельной (MPP) архитектурами, а также поддерживает кластерную архитектуру;
• реально поддерживает многопроцессорные платформы (распараллеливание построения индексов, сортировки, запросов, копирования и восстановления данных). При этом с ростом количества процессоров производительность систем растет практически линейно;
• обладает исключительными возможностями по совместному использованию различных аппаратных, операционных, сетевых платформ и позволяет объединять все информационные системы предприятия в единую интегрированную вычислительную среду;
• позволяет организовать распределенное хранение и обработку данных (системы, основанные на двухфазной фиксации транзакций, на симметричной асинхронной и ассиметричной репликации данных);
• предлагает средства для бесперебойной промышленной эксплуатации (круглосуточной и круглогодичной) и поддерживает работу с очень большими объемами данных (до нескольких терабайтов);
• гарантирует автоматическую защиту от сбоев, случайных повреждений данных и несанкционированного доступа. После сбоев, не повлекших за собой физического повреждения внешних магнитных носителей, система восстанавливается автоматически во время повторного запуска ядра Oracle;
• поддерживает все основные промышленные стандарты;
• обеспечивает мощные декларативные ограничения целостности. Процедурные возможности позволяют работать с хранимыми процедурами, функциями, алертами, триггерами, пакетами процедур;
• включает в себя мощные утилиты для загрузки данных из внешних файлов в таблицы, их копирования, восстановления, перемещения из одной БД в другую, управления использованием дискового пространства;
• автоматически реализует коллективный доступ к данным. Имеет встроенный высокоэффективный механизм блокировок на уровне отдельной строки таблицы (как для собственно данных, так и для индексов);
• оптимизирует операции дискового ввода/вывода;
• проводит «интеллектуальную» оптимизацию запросов на основе анализа автоматически собираемой статистической информации о числе строк в таблице, наличии и селективности имевшихся индексов;
• поддерживает пользовательские расширения языка SQL ( разработчик имеет возможность писать на PL/SQLсобственные функции: в дальнейшем на них можно ссылаться в выражениях SQL, как если бы они являлись встроенными функциями этого языка);
• поддерживает динамический SQL;
• позволяет ограничивать ресурсы, доступные пользователю (для каждого конкретного пользователя администратор может контролировать время доступа, операции ввода/вывода, потребление процессорного времени и т.д.);