Фильтрация реплицируемых данных (окончание)
По материалам статьи Microsoft:
Filtering Published Data
Join фильтры
Join фильтры позволяют использовать в Merge репликации перекрестные отношениям между таблицами, когда
в публикации фильтр по одной таблице основан на значениях из другой таблицы. Join фильтр определяет
отношения между двумя таблицами, которые будут использоваться в течение Merge процесса. Это подобно
обычному объединению двух таблиц. Join фильтры используют имена двух статей и заданное условие
объединения, которое представляет отношения между этими двумя таблицами в публикуемых статьях.
Условие объединения задаётся обычно в такой форме:
ARTICLE1_TABLE.COLUMN = ARTICLE2_TABLE.COLUMN
Join фильтры обычно используются вместе с фильтрами строк и позволяют Merge процессу поддерживать
ссылочную целостность между этими двумя таблицами. Если таблица, издаваемая с фильтром строк, ссылается
на foreign key в другой издаваемой таблице, статья foreign key таблицы должна иметь Join фильтр для обеспечения
ссылочной зависимости от статьи primary key таблицы.
Enterprise Manager использует это правило автоматически при создании публикации для того, чтобы предложить
объединение с логикой фильтрации для foreign key таблицы, основанной на foreign key ссылках. По этой причине,
а также для простоты использования, рекомендуется, чтобы Вы предварительно определили отношения primary
key и foreign key, а затем выбрали автоматическую генерацию Join фильтра, при создании публикации средствами
Create Publication Wizard.
Обратите внимание: Синтаксис создания ограничений FOREIGN KEY в CREATE TABLE или ALTER
TABLE предполагает возможность использования опции NOT FOR REPLICATION. Когда эта опция установлена,
Microsoft SQL Server 2000 предполагает, что ссылка была проверена, когда пользователь внёс изменения в данные.
Поэтому SQL Server 2000 пропускает дополнительные шаги дальнейшей обработки, в которых проверяется
ссылка во время синхронизации данных Merge процессом. Если эта опция включена, должен быть определен
Join фильтр, который позволит избежать появление недопустимых по foreign key строк на подписчике.
Join фильтры строго не ограничены отношениями primary key - foreign key. Join фильтр может быть основан на
любой логике сравнения, которая сопоставляет данные в двух таблицах статьи, но эта логика должна использовать,
если возможно, проиндексированные столбцы для обеспечения более высокой эффективности.
Merge процесс умеет оптимизировать эффективность в зависимости от того, основано ли условие объединения
на уникальном столбце, что имеет место, когда Join фильтр представляет foreign key отношения. Если условие
объединения основано на уникальном столбце, в целях повышения эффективности, для этой статьи свойство
join_unique_key должно быть включено.
Хотя в фильтре строк можно использовать подзапрос, это нельзя ещё считать Join фильтром. Если Вы обновляете
строку в таблице упомянутым выше подзапросом, запрос не будет переоценён, и строка не будет включена в
репликацию. Join фильтры существуют только в Merge репликации.
Предупреждение: Join фильтры, оперирующие большим количеством таблиц будут существенно снижать
эффективность репликации. Не рекомендуется задействовать в Join фильтре более четырёх таблиц.
Определяемые пользователем функции и статические фильтры
Определяемые пользователем функции (UDF), это подпрограммы, составленные из скрытых от пользователя
наборов логики Transact-SQL. Вы можете использовать их в статических или динамических фильтрах.
Используя определяемые пользователем функции, Вы увеличиваете возможности фильтрации, т.к. появляется
возможность создания фильтров на основе часто используемой логики, управляемой таблицей бизнес-правил
или любым набором сложных команд, которые возвращают вычисленные значения.
Вы можете использовать определяемые пользователем функции, которые возвращают скалярные значения
(int, char или decimal) при горизонтальной фильтрации (фильтрация строк, копирующая подмножество строк из
таблицы) в репликации снимков, репликации транзакций или Merge репликации.
Чтобы создавать определяемую пользователем функцию для использования в фильтре публикации, используйте
команду CREATE FUNCTION для базы данных, которая содержит издаваемые данные, и включайте в неё
необходимые операторы и команды Transact-SQL. Вы можете использовать функцию в фильтре при создании
новый публикации в Create publication Wizard или при конфигурировании существующей публикации через
диалоговое окно её свойств. Если публикация уже имеет подписчиков, нужно удалить все её подписки, и
только потом создавать или изменять фильтры строк. Вы не должны реплицировать функцию, чтобы
использовать её как часть фильтра в публикации.
Определяемые пользователем функции и динамические фильтры
Вы можете повысить гибкость фильтрации Merge публикации и повысить эффективность динамической
фильтрации используя определяемые пользователем функции для создания разделов данных. Динамические
фильтры позволяют определять разделы одной публикации, передаваемые разным подписчикам.
Динамические фильтры могут использовать встроенные функции (например: SUSER_SNAME()), которые
выдают разные значения на каждом подписчике публикации. Разные разделы данных копируются разным
подписчикам, в зависимости от значений, возвращаемых функцией.
Определяемые пользователем функции расширяют возможности фильтрации, за счёт использования функций
в динамическом фильтре. Это позволяет определять бизнес-правила, скалярные или табличные значения,
используемые при выделении разделов издаваемых данных в динамическом фильтре.
ССЫЛКИ НА СТАТЬИ
Информационные технологии в управлении качеством процессов
Автор: С.А.Калихман.
Международный стандарт ISO 9000:2000 определил процесс как
«Совокупность взаимодействующих видов деятельности, преобразующих входы в
выходы, для которых определены цели, критерии эффективности и «хозяин» процесса
(лицо ответственное за эффективность)»...[подробнее] Истоки сегодняшних продуктов OLAP
Автор: Найгель Пендс.
Идея обработки многомерных данных не является новой.
Фактически она восходит к 1962 году, когда Кен Айверсон опубликовал свою книгу
"Язык программирования" ("A Programming Language" - APL).
Первая практическая реализация APL была осуществлена в конце шестидесятых
компанией IBM. APL - это математически определённый язык с многомерными
переменными и изящными, хотя и довольно абстрактными операторами. Он
предназначался больше для описания многомерных преобразований, нежели для
использования в качестве практического языка программирования. Так, например, в
нем не уделялось внимания таким приземленным вопросам, как работа с файлами или
вывод на печать. В очень сжатой нотации языка использовались греческие символы.
В действительности, тексты программ получались весьма компактными. Он стал
известен, как "язык только для написания", потому что было гораздо
легче переписать заново программу, нежели исправить ранее сохраненный текст...
[подробнее] Что следует понимать под термином OLAP?
Автор: Найгель Пендс.
Проблема, которая встала перед нами с самого начала
исследований OLAP, заключалась в решении того, какой продукт правомерно
относить к категории OLAP. Решить является ли продукт "именно OLAP"
становилось все сложнее в связи с тем, что все больше и больше поставщиков
утверждали, что они имеют "именно OLAP", в то время как это могло
означать все что угодно. Нельзя было полагаться на собственные описания
поставщиков независимо от их членства в Совете OLAP (OLAP Council). Такое
членство не являлось надежным индикатором того, что компания действительно
производит OLAP продукт. Например, несколько известных поставщиков OLAP не
являются членами Совета, в то же время существуют члены Совета, которые не
являются поставщиками OLAP...
[подробнее] Редактирование данных в DataGrid
Автор: Dimon aka Manowar.
В элемент управления DataGrid (как впрочем и в DataList)
встроена мощная поддержка возможности редактирования связанных с этим элементом
данных. Оба этих элемента управления позволяют управлять отображением выбранной
или редактируемой записи, а также обновлять связанные данные. И все это при
минимальном программировании. Например, для того, чтобы установить в режим
редактирования пятую строку DataGrid необходимо присвоить свойству
EditItemIndex элемента управления DataGrid значение 4 (нумерация строк в
DataGrid начинается с 0). Соответственно для того, чтобы выйти из режима
редактирования необходимо свойству EditItemIndex присвоить значение -1.
Наиболее сложной операцией при редактировании DataGrid является извлечение
введенных данных и запись их в источник данных, но эта операция сложна только
по сравнению с прочими простейшими операциями редактирования. Впрочем вскоре мы
в этом убедимся...
ЕRP в России: полноценных внедрений пока нет
Автор: Лев Звонарев, Евгений Корзун.
Три-четыре года назад в России довольно интенсивно стали
открываться представительства западных компаний - разработчиков ЕRР-систем.
Собственных разработок такого класса у нас еще не было. В то время считалось,
что внедрение системы такого типа (SAP/R3, BAAN, ORACLE APPLICATION и т.д.)
разом решит все проблемы управления и очень хорошо скажется на экономических
показателях деятельности предприятия. Главное же - просто выбрать подходящую
для этого предприятия систему. Тогда цены на программное обеспечение были по
карману далеко не каждому предприятию, а после финансового кризиса 1998 года
они стали практически недоступными многим предприятиям...
[подробнее] Работа с данными. Вчера, сегодня, завтра...
Автор: Сергей Воронцов.
Не хотелось бы делать очередное глобальное сравнение двух
различных технологий, двух различных подходов и что самое важное двух эпох в
методах доступа к данным. Этими сравнениями пестрят все настоящие книги по
ADO.Net. Но, к сожалению, для того, что бы действительно по настоящему понять,
что по настоящему отличает технологии ADO и ADO.Net мне все же придется сделать
краткий экскурс в эту область. И особенно это будет полезно для тех, кто имеет
опыт разработок под ADO / OLE DB...
[подробнее]