СПАСОИ (10) - Лекция №14 - Анализ и выбор архитектуры (продолжение): различия между версиями
ILobster (обсуждение | вклад) м (ссылка назад) |
ILobster (обсуждение | вклад) м (→Анализ и выбор архитектуры распределённой системы: как диктовали, так и записывали, не к нам претензии) |
||
(не показано 5 промежуточных версий 2 участников) | |||
Строка 11: | Строка 11: | ||
[[Файл:10semSPASOIl14pic1.png|center|700px]] | [[Файл:10semSPASOIl14pic1.png|center|700px]] | ||
Надо сказать, что <code>ADO.NET</code> уже считается устаревшим. На смену ему стали использоваться, например, <code>LINQ</code> (без языка запросов) и <code>LINQ to SQL</code>. | <strike>Надо сказать, что <code>ADO.NET</code> уже считается устаревшим. На смену ему стали использоваться, например, <code>LINQ</code> (без языка запросов) и <code>LINQ to SQL</code>.</strike> Неверно, LINQ работает под ADO.NET. Существуют три отдельные технологии ADO.NET LINQ: LINQ to DataSet, LINQ to SQL и LINQ to Entities. Технология LINQ to DataSet обеспечивает расширенные и оптимизированные запросы к DataSet, LINQ to SQL позволяет запрашивать непосредственно схемы базы данных SQL Server, а LINQ to Entities позволяет выполнять запросы к EDM (модель данных с использованием сущностей). http://msdn.microsoft.com/ru-ru/library/bb399365(v=vs.110).aspx | ||
Пользователь читает из каталогов информацию о веб-сервисах и формирует XML-сообщение для доступа к нужному сервису. Результаты обращения возвращаются также в XML виде. | Пользователь читает из каталогов информацию о веб-сервисах и формирует XML-сообщение для доступа к нужному сервису. Результаты обращения возвращаются также в XML виде. | ||
Строка 93: | Строка 93: | ||
# соответствующая запись тиражируется на подписавшиеся серверы. | # соответствующая запись тиражируется на подписавшиеся серверы. | ||
{{Forward|l=СПАСОИ (10) - Лекция №15 - Анализ и выбор архитектуры (продолжение)}} | |||
[[Категория:Структурное проектирование АСОИ (10 семестр)]] | [[Категория:Структурное проектирование АСОИ (10 семестр)]] | ||
[[Категория:Конспекты лекций и семинаров]] | [[Категория:Конспекты лекций и семинаров]] |
Текущая версия от 21:10, 13 июня 2014
...начало
Анализ и выбор архитектуры распределённой системы
Интероперабельные системы
Веб-сервисы
Пример разработок Microsoft:
Надо сказать, что Неверно, LINQ работает под ADO.NET. Существуют три отдельные технологии ADO.NET LINQ: LINQ to DataSet, LINQ to SQL и LINQ to Entities. Технология LINQ to DataSet обеспечивает расширенные и оптимизированные запросы к DataSet, LINQ to SQL позволяет запрашивать непосредственно схемы базы данных SQL Server, а LINQ to Entities позволяет выполнять запросы к EDM (модель данных с использованием сущностей). http://msdn.microsoft.com/ru-ru/library/bb399365(v=vs.110).aspx
ADO.NET
уже считается устаревшим. На смену ему стали использоваться, например, LINQ
(без языка запросов) и LINQ to SQL
.
Пользователь читает из каталогов информацию о веб-сервисах и формирует XML-сообщение для доступа к нужному сервису. Результаты обращения возвращаются также в XML виде.
Тиражирование данных
Или репликации. Это автоматическое копирование изменённых данных с одного сервера на другой.
Плюсы тиражирования:
- увеличивается производительность системы - пользователям из одного города для получения котировок из другого города достаточно обратиться к своему локальному серверу, а не к удалённому в другом городе;
- надёжность - если один сервер вышел из строя, то ничего страшного, полная копия данных имеется и на другом сервере.
Зачем нужно тиражирование
Изменения котировок на московской бирже обязательно должны реплицироваться на сервера питерской биржи и наоборот.
Классификация способов тиражирования
Следующие способы:
- традиционная (снимки);
- усовершенствованная:
- синхронная;
- асинхронная:
- пакетная;
- на уровне записей:
- без конфликтов (одна Master реплика, остальные ReadOnly);
- с обнаружением конфликтов:
- с ручным разрешением конфликтов;
- с автоматическим разрешением конфликтов.
Тиражирование на основе снимков
Описание канала связи:
CREATE DATABASE LINK имя_канала
CONNECT TO имя_пользователя
IDENTIFIED пароль
USING спецификация_описание_узла_сервера_БД;
Описание снимка:
CREATE SNAPSHOT имя_снимка
REFRESH FAST|COMPLETE
-- снимок на сервере 2 будет обновляться каждые 7 дней с момента даты создания снимка
NEXT Sysdate+7
-- оператор SELECT автоматически пересылается на удалённый сервер БД при запросе обновления
SELECT * FROM имя_пользователя.таблица@имя_канала;
Синхронная и асинхронная репликация
Транзакция - совокупность изменений в БД, которая должна быть выполнена вся или ни одного. Атомарное обновление.
Действия, выполняемые системой для синхронной и асинхронной репликации разные.
Синхронная - фиксация изменений на серверах БД выполняется в две фазы:
- опрашиваются все серверы, участвующие в транзакции, на предмет того, готовы ли они зафиксировать изменения. Если хоть один отказался, то всем рассылается
ROLLBACK
; - если все серверы дали положительный ответ, то им высылается
COMMIT
.
Асинхронная - изменения передаются на серверы БД по мере их готовности. Если какой-либо сервер не готов принять изменения, то они сохраняются в глобальном координаторе, которые затем будут ему переданы, когда он будет готов.
Асинхронная на уровне записей без конфликтов
UPDATE котировка
SET продажа = 31, покупка = 30
WHERE код_ценной_бумаги = 0;
Перед обновлением на клиенте выполняется команда "начать транзакцию". Все изменения в БД отражаются в журнале изменений - записи до и после обновления. По оператору "конец транзакции" выполняются следующие действия:
- запускается менеджер журнала изменений, который читает записи транзакции после обновления и передаёт их репликационному серверу;
- репликационный сервер для каждой записи транзакции по имени таблицы, имени ключевого атрибута а также по диапазону ключей ищет соответствующую строчку в таблице публикаций. Для нашего примера будет найдена первая строчка;
- из таблицы Подписка определяются серверы, которые подписались на эту публикацию (у нас это сервер 2);
- соответствующая запись тиражируется на подписавшиеся серверы.
продолжение...