Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
SOA и Refferential Integrity
|
|||
|---|---|---|---|
|
#18+
Уважаемые ALL, хочу услышать мнение SQL-сообщества о SOA. Проблема достаточно известная, и в блогах можно найти инфу. Но пока, все что мне попадалось, пишут люди, далекие от баз и с умным видом изобретающие велосипеды. Итак, для простоты, связка "customer-order-operator". В терминах "сервис ориентированной архитектуры", по крайней мере, как я ее понимаю, предполагается 3 независимых сервиса, каждый из которых работает со своей базой. Как в терминах SOA сохранить целостность данных (удаление заказчика, деактивация оператора и т.д). Или, может, по определению, подобная архитектура ПОДРАЗУМЕВАЕТ возможные потери целостности? Если есть линки на обсуждене по теме с участием SQL guru - бросьте, не поленитесь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2005, 15:59 |
|
||
|
SOA и Refferential Integrity
|
|||
|---|---|---|---|
|
#18+
Честно, ничего не знаю про СОА, надеюсь тут специалисты расскажут. Однако вызывает изумление сам факт того, что сначала тесно связанные данные раскидали по независимым БД не из-за реальной потребности, а в силу навязанной идеологии, а потом начали парить мозги, как же обеспечить целостность и синхронизацию изменений. Нет, вообще-то системы с расщепленными данными встречаются на каждом шагу, и задачи эти с помощью репликации и распределенных транзакций люди решают постоянно, но это вызвано реалиями жизни - территориальной удаленностью серверов, а вовсе не какой-то "сервис-ориентированной архитектурой". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2005, 07:43 |
|
||
|
SOA и Refferential Integrity
|
|||
|---|---|---|---|
|
#18+
Поскольку SOA не панацея, то и применение ее на такой задаче ненужно. А если для примера, то насколько я помню из статей MS, там предлагалось использовать "длинные транзакции" через BizTalk Server (надеюсь правильно написал). Была задача рассмотрена тоже из классики по приему заказов на в оптовый магазин. Так там было 3 БД MS SQL Server, одна унаследованная система на мейнфрейме и десяток вебсервисов и ASP.NET приложений. Ужас :). Все транзакции, затрагивающие БД и унаследованную систему решались именно через BizTalk. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2005, 09:24 |
|
||
|
SOA и Refferential Integrity
|
|||
|---|---|---|---|
|
#18+
Попробую свормулировать по другому. Нет спора, для WEB-систем, а также для распределенных систем (с репликацией, в частности), СОА это подход. Вопрос лежит несколько в другой плоскости: Должна ли база данных быть интегральной частью сервиса, или коллектив независимых сервисов общается с единой базой? Сценарий в случае 2-х независимых сервисов "заказчик" и "заказ" Один сервис удаляет заказчика, другой добавляет заказ. Понятно, что если база одна, то проблем нет. Либо не удалим заказчика, либо не добавим заказ. А если система независима, как быть? 1. Использовать AK вместо PK и мириться с возможной потерей связи? При этом не будет понятия "используй OUTER JOIN вместо INNER JOIN", поскольку связывание заказа и заказчика происходит на клиенте? 2. Строить "map tables" на стороне "ко многим", то есть дуплицировать на стороне "заказ" ЧАСТЬ данных из "заказчика", генерить для нее локальный PK и хранить оригинальный PK как "ExrternalID", и использовать новый ключ как FK? 3. В принципе запретить удаления и изменения PK, использовать "logical delete" и мириться с частичными потерями. (То есть, украли номер визы, хозяин сообщил, визу пометили как краденную, но все транзакции на покупку пройдут, до тех пор, пока системы не будут синхронизированы) 4. Богу-богово, кесарю-кесарево? Или мухи - отдельно, котлеты - отдельно? База данных не является частью сервиса, и точка. Я понимаю, что реальная жизнь, она из компромиссов, но тем не менее... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2005, 10:48 |
|
||
|
SOA и Refferential Integrity
|
|||
|---|---|---|---|
|
#18+
Если системы настолько независимы, то я бы использовал 2 и 3 вместе. Оптимально, имхо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2005, 11:08 |
|
||
|
SOA и Refferential Integrity
|
|||
|---|---|---|---|
|
#18+
Если у меня НЕ будет выбора, то я тоже буду использовать вместе 2 и 3 :-) Но хотелось бы услышать аргументированные мнения за и против включения баз данных в арчитектуру сервиса. Как правильно должен уживаться сабж? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2005, 11:27 |
|
||
|
SOA и Refferential Integrity
|
|||
|---|---|---|---|
|
#18+
Артем, Вы имели в виду http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/dngrfSOAChallenges-EntityAggregation.asp этот линк? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2005, 11:37 |
|
||
|
SOA и Refferential Integrity
|
|||
|---|---|---|---|
|
#18+
GaryАртем, Вы имели в виду http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/dngrfSOAChallenges-EntityAggregation.asp этот линк? Нет, я читал статью с названием Building Distributed Applications, но ссылку почему-то выкидывает меня на VS2005 :). Видимо статья переехала. Вернее там был цикл статей про написание большой системы с помошью 2003 студии. (6 штук). Не претендую на аргументированное мнение, но могу сказать свою позицию. Она заключается в вытеснении БД из архитектуры сервиса. Сервисы мне нравятся больше как всего-лишь еще один клиент к корпоративной БД (корпоративным базам данных), выполняющий в общей архитектуре лишь одну из задач, а именно облегчение интеграции с другими приложениями, разработанными не мной, но которые должны работать в связке. RI, которое можно реализовать в общей БД, перевешивает для меня все бенефиты SOA (которые я еще до конца и не понял:) ). А все эти рекламные истории о сервисах по всему инету, работающих вместе - не вдохновляют. :) Сорри, зовут на совещание. Вернусь, постараюсь изложить более аккуратно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2005, 13:23 |
|
||
|
SOA и Refferential Integrity
|
|||
|---|---|---|---|
|
#18+
У меня такое же мнение, но руководство видит проблему иначе. Можно повернуть это как извечный спор между разработчиком аппликаций и разработчиком баз. С моей точки зрения, веб сервис такой же клиент, как и другие, то есть я не вижу никакой разницы между client-server, 3tier и soa с точки зрения базы. У нас тоже распределенная система, о которой так вопят любители сервисов (несколько банков, разнесенных по планете и имеющие ОБЩИЙ портфель заказов), но я даже в этом случае не могу представить себе независимость данных - объединение идет горизонтальное (то есть по FK, BankID), а не по entities (customer, order, etc). Есть репликация, она используется - зачем весь этот огород городить? ПыСы. Мы, похоже, в одной лодке, а я надеялся, что откликнется какой-нибудь сторонник soa, поддерживающий переход на эту систему именно с точки зрения баз данных. ПыПыСы. Когда Вы вернетесь с совещания, видимо, я на него пойду, так что задержка возможна ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2005, 13:45 |
|
||
|
SOA и Refferential Integrity
|
|||
|---|---|---|---|
|
#18+
В общем раз наши мнения совпали, то обсуждать действительно нечего особо. :) Нового мы друг другу ничего не скажем. Подождем сторонников SOA архитектуры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2005, 14:52 |
|
||
|
SOA и Refferential Integrity
|
|||
|---|---|---|---|
|
#18+
GaryПыСы. Мы, похоже, в одной лодке, а я надеялся, что откликнется какой-нибудь сторонник soa, поддерживающий переход на эту систему именно с точки зрения баз данных. Я не сторонник (впрочем, и не противник :) ), просто выскажу, наверное, очевидное соображение. Концептуально, построение распределенного приложения на веб-сервисах не должно отличаться от такового же на CORBA. Разница будет технологическая. Т.е. для вашего примера - заказчики отдельно, заказы отдельно - должен существовать сервис транзакций, который будет обеспечивать ту самую целостность, о которой вы совершенно справедливо озаботились. По физике это будет похоже на распределенную транзакцию (двухфазная фиксация) для нескольких СУБД, только вместо координатора у вс будет сервис транзакций, а вместо этих СУБД должны быть сервисы, поддерживающие транзакционность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2005, 16:47 |
|
||
|
SOA и Refferential Integrity
|
|||
|---|---|---|---|
|
#18+
То Темплар Вот-Вот!!!! По сути, Вы предлагаете 2PC между разделенными БД. И что я выиграл? Праздник, оттого, что сказал шефу "А мы теперь работаем в SOA!!!", а на деле, где-то внизу, даже не в моем <SQL> коде, BEGIN DISTRIBUTED TRANSACTION .... И мне плевать на ресурсы, которые жрет MTC, SQL Server, чтобы поддерживать эту лабуду? Не проще, если уж так, положить эту базу где-то "посередке"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2005, 17:02 |
|
||
|
SOA и Refferential Integrity
|
|||
|---|---|---|---|
|
#18+
GaryНе проще, если уж так, положить эту базу где-то "посередке"? Так ведь есть случаи, когда это принципиально невозможно. Классический пример - банковский перевод. Сервис транзакций в этом случае позволяет интегрироваться на более высоком уровне абстракции, чем 2PC и, соответственно, охватить большую область применения (и сегмент рынка, соответственно). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2005, 18:56 |
|
||
|
SOA и Refferential Integrity
|
|||
|---|---|---|---|
|
#18+
Templar Сервис транзакций в этом случае позволяет интегрироваться на более высоком уровне абстракции, чем 2PC и, соответственно, охватить большую область применения (и сегмент рынка, соответственно). А попроще можно? :-) Что такого я выигрываю в бизнесе за счет очевидного проигрыша в скорости и ресурсах? Я работаю таки с банковскими системами, и мне проще расположить ВСЮ базу в головном банке, и пусть все сервисы туда ходят. Второй вариант - часть даты реплицируется, причем в TransactionalReplication, и, таким образом, не будет необходимость в удаленном доступе. А если уж надо отредактировать, то милости просим в базу хозяина через прокси (linked server) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2005, 19:17 |
|
||
|
SOA и Refferential Integrity
|
|||
|---|---|---|---|
|
#18+
Gary Templar Сервис транзакций в этом случае позволяет интегрироваться на более высоком уровне абстракции, чем 2PC и, соответственно, охватить большую область применения (и сегмент рынка, соответственно). А попроще можно? :-) Что такого я выигрываю в бизнесе за счет очевидного проигрыша в скорости и ресурсах? Я работаю таки с банковскими системами, и мне проще расположить ВСЮ базу в головном банке, и пусть все сервисы туда ходят. Второй вариант - часть даты реплицируется, причем в TransactionalReplication, и, таким образом, не будет необходимость в удаленном доступе. А если уж надо отредактировать, то милости просим в базу хозяина через прокси (linked server) Речь идет о межсистемном взаимодействии. Понятно, что у себя в хозяйстве вы можете оптимизировать размещение софта и, видимо, сможете обойтись без распределенной БД и сервисов. Но если речь идет об интеграции с другими системами (с банком-партнером, например), то ситуация меняется. Проще будет это сделать на основе готового продукта, который поддерживает энное число СУБД и АБС. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2005, 19:58 |
|
||
|
SOA и Refferential Integrity
|
|||
|---|---|---|---|
|
#18+
С межсистемным взаимодействием у меня нет проблем. Это понятно и очевидно. Есть желание (не мое) писать СВОЮ систему как набор таких сервисов (с чем я, в принципе, согласен). И вопрос в том, должна ли быть база данных вынесена за пределы этих сервисов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2005, 14:16 |
|
||
|
SOA и Refferential Integrity
|
|||
|---|---|---|---|
|
#18+
GaryС межсистемным взаимодействием у меня нет проблем. Это понятно и очевидно. Есть желание (не мое) писать СВОЮ систему как набор таких сервисов (с чем я, в принципе, согласен). И вопрос в том, должна ли быть база данных вынесена за пределы этих сервисов. Свою систему чтобы обеспечить взаимодействие с ней других, заранее не известных систем, или все внутрисистемное взаимодействие? В последнем случае какова цель? В первом напрашивается единая база, а сервисы - интерфейсы. Во втором похоже при единой базе интерфейсы к ней в форме сервисов не дают ничего кроме затрат. Если разделять базы на какие-то тематические области, изолированные друг от друга и общающиеся только через сервисы тогда может смысл в какой-то высокоуровневой модульности? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2005, 14:50 |
|
||
|
SOA и Refferential Integrity
|
|||
|---|---|---|---|
|
#18+
ModelR ... Если разделять базы на какие-то тематические области, изолированные друг от друга и общающиеся только через сервисы тогда может смысл в какой-то высокоуровневой модульности? Вот интересная мысль. По идее такое проектирование большой системы даст в будущем некоторую свободу маневрирования. Например, если база станет узким местом по быстродействию, часть данных можно будет выделить на другой сервер и т.п. Понятно, что можно и на уровне БД задействовать кластеризацию и др. методы, но я пока веду речь о теории :). "высокоуровневая модульность" by ModelR, если смотреть на нее с точки зрения SOA - неплохой инструмент сделать архитектуру более гибкой. И тут уже возникает вопрос - что же выгоднее (для потребителя системы), более надежно защищенная целостность данных (RI в базе) или система, которую можно достаточно быстро адаптировать под новые нужды и требования. Тут уже не берусь судить - недостаточно опыта. зы: хорошую гибкую архитектуру можно воплотить и чисто на SQL. см. незабвенный топик в проектировании "Система с изменяющимися алгоритмами расчета". но это уже офф :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2005, 08:58 |
|
||
|
SOA и Refferential Integrity
|
|||
|---|---|---|---|
|
#18+
Всем привет! Тема достаточно интересная, и мне немного приходилось с этим связываться в общем. Основанием послужила - business integration. Это когда "старое должно работать", а "новое еще неможет" :-) Так что внесу свои пару центов Gary поскольку связывание заказа и заказчика происходит на клиенте? На стороне сервиса. так как по определениею не задача это клиента. Gary Сценарий в случае 2-х независимых сервисов "заказчик" и "заказ" Один сервис удаляет заказчика, другой добавляет заказ. Понятно, что если база одна, то проблем нет. Либо не удалим заказчика, либо не добавим заказ. А если система независима, как быть? Невижу здесь разницы - одна база или несколько. Только если система независима, сервис который принимает "заказ", должен удостовериться, что есть такой "заказчик" и "проследить" чтобы этот "заказчик" никуда неизчез во время приема "заказа". Если единая система - у Вас там будет relation между таблицами. Разница только в реализации. Хотя не принять заказ это роскошь, а удалить заказчика - расточительство :-) Gary хранить оригинальный PK как "ExrternalID", и использовать новый ключ как FK? Зачем нужни лишнии map-таблицы и "ExrternalID"? Хранит оригинал и все. Gary 3. В принципе запретить удаления и изменения PK, использовать "logical delete" Ммм... здесь все зависит от Вашей бизнес-логике. Удалять "заказчика" даже если он ничего незаказал не всегда целесообразно. Так как бывает нужна "история жизни". Но разумного изменения PK я невижу. Чтож это за PK тогда?! Gary и мириться с частичными потерями. (То есть, украли номер визы, хозяин сообщил, визу пометили как краденную, но все транзакции на покупку пройдут, до тех пор, пока системы не будут синхронизированы) Т.е. синхронизированны? А каким способом Вы это себе представляете? Как пример, при блокировки карты, оператор посылает запрос на сервис CardBlockService, который в свою очеред должен сделает 2 действия: 1) UPDATE CUSTCARD SET IS_BLOCKED = 1... - заблокировали 2) Послали сообщение через BizTalk/WebSphere MQ/Sonic MQ - другой системе. (при асинхронном взаимодействии) На "той" стороне: Прочитали сообщение и сделали соответствующие действия. Templar Концептуально, построение распределенного приложения на веб-сервисах не должно отличаться от такового же на CORBA. Разница будет технологическая. Абсолютно согласен. Различаеться только в названиях и реализациях. http://www-128.ibm.com/developerworks/webservices/newto/index.html Gary ПыСы. Мы, похоже, в одной лодке, а я надеялся, что откликнется какой-нибудь сторонник soa, поддерживающий переход на эту систему именно с точки зрения баз данных. Imho, на SOA нужно смотреть именно "со всех сторон". В этом и подтвердиться/опровергниться переход. Но самым главным является именно business process/workflow. Так как при классическом приеме "заказа", может формироваться длинная цепочка действий ( и не только с базами данных ) и не только в одной системе. А это уже далеко не INSERT INTO ORDERS... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2005, 14:28 |
|
||
|
SOA и Refferential Integrity
|
|||
|---|---|---|---|
|
#18+
ModelR GaryС межсистемным взаимодействием у меня нет проблем. Это понятно и очевидно. Есть желание (не мое) писать СВОЮ систему как набор таких сервисов (с чем я, в принципе, согласен). И вопрос в том, должна ли быть база данных вынесена за пределы этих сервисов. Свою систему чтобы обеспечить взаимодействие с ней других, заранее не известных систем, или все внутрисистемное взаимодействие? В последнем случае какова цель? В первом напрашивается единая база, а сервисы - интерфейсы. Во втором похоже при единой базе интерфейсы к ней в форме сервисов не дают ничего кроме затрат. Если разделять базы на какие-то тематические области, изолированные друг от друга и общающиеся только через сервисы тогда может смысл в какой-то высокоуровневой модульности? Именно эта идея и имеет место быть, то есть разделение баз по тематическим областям для высокоуровневой модульности. Можно сказать, что Вы цитируете нашего СТО. Артем1 что же выгоднее (для потребителя системы), более надежно защищенная целостность данных (RI в базе) или система, которую можно достаточно быстро адаптировать под новые нужды и требования. Похоже, заказчику более важно второе. Пишу и понимаю, что, видимо, стронники разделения, по крайней мере, в моем случае, правы. Плюсы начинают перешивать минусы. Но остаются вопросы, скорее, "на добивание". Aion Невижу здесь разницы - одна база или несколько. Только если система независима, сервис который принимает "заказ", должен удостовериться, что есть такой "заказчик" и "проследить" чтобы этот "заказчик" никуда неизчез во время приема "заказа". Если единая система - у Вас там будет relation между таблицами. Разница только в реализации. Хотя не принять заказ это роскошь, а удалить заказчика - расточительство :-) Согласен, пример надуман, но важен принцип. Какова реализация "вместо FK" в случае сервисов? Как защитить от удаления запись с "CustomerID", в то время, как начато добавление заказа, но еще не подтверждено? Aion Зачем нужни лишнии map-таблицы и "ExrternalID"? Хранит оригинал и все. То есть? реплицировать всю таблицу? А где тогда модульность? Или вместо JOIN по CustomerID сервис должен линковать дату сам? Aion Gary В принципе запретить удаления и изменения PK, использовать "logical delete" Ммм... здесь все зависит от Вашей бизнес-логике. Удалять "заказчика" даже если он ничего незаказал не всегда целесообразно. Так как бывает нужна "история жизни". Но разумного изменения PK я невижу. Чтож это за PK тогда?! Пример с изменением PK надуман, смотри выше... Хотя могу привести пример из своей практики. PK заказчика сегментный, из ID филиала и ID заказчика. Эта таблиза реплицируется, поэтому autoincrement не используется. В какой-то момент один из филиалов приказал долго жить, и нужно было "передать" всех клиентов новому филиалу. Выяснилось, что дешевле всего сгенерить новый ключ... Aion Gary и мириться с частичными потерями. (То есть, украли номер визы, хозяин сообщил, визу пометили как краденную, но все транзакции на покупку пройдут, до тех пор, пока системы не будут синхронизированы) Т.е. синхронизированны? А каким способом Вы это себе представляете? Как пример, при блокировки карты, оператор посылает запрос на сервис CardBlockService, который в свою очеред должен сделает 2 действия: 1) UPDATE CUSTCARD SET IS_BLOCKED = 1... - заблокировали 2) Послали сообщение через BizTalk/WebSphere MQ/Sonic MQ - другой системе. (при асинхронном взаимодействии) На "той" стороне: Прочитали сообщение и сделали соответствующие действия. Вот как раз (1) и (2) я не понимаю. Ведь это А. Асинхронно Б. Не в одном transaction context То есть, в классическом случае, после того, как (1) сделан commit, больше никаких транзакций по визе не пройдет, а в случае с SOA ичего не пройдет ПОСЛЕ ТОГО, КАК ПРИЙДЕТ уведомление. Aion А это уже далеко не INSERT INTO ORDERS... Разумеется :-) В моем случае это sp ~80KB + асинхронный вызов MQ в стороннюю систему. И я полностью поддерживаю мысль об этом вызове как сервисе... <offtop> Ужажаемый Aion, во второй половине августа я планирую отдохнуть в Юрмале, но с радостью пообщаюсь на SQL-ные темы, в том числе и на эту... Мой мыл igor[псина]tradertools[точка]com, пишите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2005, 14:21 |
|
||
|
SOA и Refferential Integrity
|
|||
|---|---|---|---|
|
#18+
Gary Согласен, пример надуман, но важен принцип. Какова реализация "вместо FK" в случае сервисов? В принципе, а как это делает сама база (теоритически)? Таким же путем и идти. Только накладно это получиться для реализации. Очень много нужно будет делать "лишнего". Gary Как защитить от удаления запись с "CustomerID", в то время, как начато добавление заказа, но еще не подтверждено? В итоге будет наподобие start) update customer set status = 'прием заказа' <прием заказа> если здесь кто-то попытаеться удалить "заказчика", получить отказ ввиду 'приема заказа' finish) update customer set status = 'заказ принят, статус inactive' Gary То есть? реплицировать всю таблицу? А где тогда модульность? Или вместо JOIN по CustomerID сервис должен линковать дату сам? Зачем все? Может и ничего и ненадо реплицировать. Смотря что необходимо и что пытаетесь достигнут. Приведу пример: У меня есть n-ое млн. кол-во заказов и мне нужно сделать оперативный отчет и мониторить его: кто и сколько заказывает сегодня или сегодняшний топ-10. Самое простое - реплицировать CUSTOMER (ID,NAME) в другую систему (читай - скорость) С другой стороны - если мне надо будет добавить, например LAST_PAYMENT_DATE из CUSTOMER в этот репорт, то только сервис будет "сливать" данные для этого репорта из двух источников (читай - достоверенность) NAME - можно принебречь, а вот когда последний раз заплатили - нужен оригинал. Gary Вот как раз (1) и (2) я не понимаю. Ведь это А. Асинхронно Б. Не в одном transaction context То есть, в классическом случае, после того, как (1) сделан commit, больше никаких транзакций по визе не пройдет, а в случае с SOA ичего не пройдет ПОСЛЕ ТОГО, КАК ПРИЙДЕТ уведомление. Что в этом плохого? Скорость? Надежность? Не факт. Просто на рутинных операциях, imho, это (асинхронность) самое "то". Опять же, никто не навязывает использование асинхронного взаимодействия. Можно же остановиться на том, что и есть, только в оболочке сервиса. Но варианты и для SOA есть... http://www-128.ibm.com/developerworks/webservices/library/ws-introwsat/ http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwebsrv/html/wsacoord.asp Таже самая "симуляция классики" как и без SOA. Но на приктике тогого я неделал. Если рассматривать эту ситуацию то Gary В моем случае это sp ~80KB + асинхронный вызов MQ в стороннюю систему. получаеться тоже самое. <offtop> welcome ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2005, 16:32 |
|
||
|
SOA и Refferential Integrity
|
|||
|---|---|---|---|
|
#18+
AionВ итоге будет наподобие start) update customer set status = 'прием заказа' <прием заказа> если здесь кто-то попытаеться удалить "заказчика", получить отказ ввиду 'приема заказа' finish) update customer set status = 'заказ принят, статус inactive' Это идея, несколько замедляет, но лечит мою паранойю. AionЗачем все? Может и ничего и ненадо реплицировать. Смотря что необходимо и что пытаетесь достигнут. Приведу пример: У меня есть n-ое млн. кол-во заказов и мне нужно сделать оперативный отчет и мониторить его: кто и сколько заказывает сегодня или сегодняшний топ-10. Самое простое - реплицировать CUSTOMER (ID,NAME) в другую систему (читай - скорость) С другой стороны - если мне надо будет добавить, например LAST_PAYMENT_DATE из CUSTOMER в этот репорт, то только сервис будет "сливать" данные для этого репорта из двух источников (читай - достоверенность) NAME - можно принебречь, а вот когда последний раз заплатили - нужен оригинал. Безусловно. Какую-то часть даты, часто используемую, можно реплицировать, зарабатывая скорость, а другую получать "на лету". AionНо варианты и для SOA есть... http://www-128.ibm.com/developerworks/webservices/library/ws-introwsat/ http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwebsrv/html/wsacoord.asp Таже самая "симуляция классики" как и без SOA. Но на приктике тогого я неделал. А я, похоже, скоро займусь :-) А линки в точку, буду учиться, большое спасибо. Aion<offtop> welcome ;-) Наглость - второе счастье... А куда - адресок то не дали :-))))), даже электронный :-))))))))))) UPDATE: пиво - ваше, оплата - моя :-)))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2005, 17:47 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=33098696&tid=1545828]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
105ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
| others: | 229ms |
| total: | 433ms |

| 0 / 0 |
