Реклама:

Ситуация упорядочения при слиянии файлов настолько привычна прикладным программистам, что многие организации и люди разрабатывали свои собственные «стандартные» программы упорядочения. И в методике Джексона имеется стандартный способ обработки таких ситуаций. Причем этот процедурный способ допускает много существенных отклонений от стандарта, поскольку, как вы, наверное, понимаете, не бывает ничего истинно стандартного и любая ситуация уникальна в большей или меньшей степени.

Рассмотрим основное требование к упорядочению и разработаем соответствующее стандартное решение.

6.1. Проблема упорядочения

Как отмечалось ранее, часто необходимо сравнивать данные из одного или более входных файлов, в которых записи упорядочены последовательно с использованием одного и того же ключа сортировки. Иначе говоря, записи организованы в некотором порядке, основанном на общем элементе данных, например на имени клиента или на идентифицирующем номере клиента. Но обычно не все возможные значения основного ключа будут представлены в каждом файле. Например, в банковской системе основной файл за-

1) Leach E. How to Make a Million Dollars, from the Penguin Dictionary of Modern Quotations.

писей о клиентах может содержать запись о клиенте #007 (мистере Бонде), но в файле транзакций (т.е. текущих изменений) может не оказаться никаких записей о транзакциях для этого клиента. Последнее может просто означать, что клиент #007 уезжал из страны на некоторое время и еще не вызвал никаких транзакций на свои дорожные расходы. И наоборот, может найтись транзакция для мистера Бомжа, клиента #365, не учтенного в основном файле. Это свидетельствовало бы о том, что мистер Бомж является новым клиентом.

Эта возможность несоответствия делает проблему упорядочения особенно интересной для разработчиков программ. Проблеме упорядочения свойственны две существенные черты:

1. Наличие более чем одного последовательного входного файла.

2. Файлы упорядочены, или отсортированы и должны быть обработаны совместно по тому же самому элементу (элементам) данных, т.е. ключу (ключам) .

6.2. Структуры упорядочиваемых данных

Основная проблема упорядочения иллюстрируется схемой на рис. 6.1.

Кинг Д. Создание эффективного программного обеспечения

Рис. 6.1. Проблема упорядочения.

Файлы А и В сортируются по одному и тому же элементу данных, но не все значения этого ключевого элемента представлены в обоих файлах. Предположим, что речь идет о пакетной (т.е. не оперативной) программе обновления данных для финансовой фирмы. Фирма давала деньги взаймы ряду клиентов, и клиенты нерегулярно возвращают части своих долгов. Эти нерегулярные платежи представлены транзакциями в файле В. Основные записи о состоянии счетов клиентов хранятся в файле А. Файл В содержит транзакции, поступившие в течение недели. Поэтому каждую неделю файл В сопоставляется с файлом А, и файл А обновляется за счет информации, находившейся в файле В. Любые платежи, произведенные в течение данной недели, учитываются в соответствующих счетах клиентов. Поскольку процесс является пакетным и последовательным, каждый раз создается новый файл А. Те записи в файле А, которым не соответствуют транзакции в файле В, просто копируются в новой версии. Транзакции в файле В, соответствующие основным записям о клиентах в файле А, интегрируются с этими основными записями для формирования обновленных основных записей в новом файле А. Записи транзакций, для которых нет соответствующих основных записей о клиентах в файле А, считаются представляющими новых клиентов, и для нового файла А на их основе создаются новые основные записи о клиентах.


⇐ Предыдущая страница| |Следующая страница ⇒