| « Поставить закладку » « Сделать стартовой » | |||
|
|||
| Статьи:: Базы данных :: Учебник по Access 2002 :: Глава 19. Миграция приложений.
Глава 19. Миграция приложений.
Глава 19. Миграция приложений В данной главе
будут рассмотрены вопросы, касающиеся преобразования приложений Access с целью
переноса их в другую среду эксплуатации. Для обозначения таких преобразований мы
будем применять термин миграция. Под миграцией приложений понимается
целевое преобразование приложения с изменением его внутренней структуры и
сохранением внешнего интерфейса. Таким образом, к миграции относится как
преобразование приложений, созданных в более ранних версиях Access, в среду
Access 2002, так и преобразование приложения, созданного в среде Access 2002, в
двухуровневое клиент-серверное приложение, в котором обработка данных
выполняется сервером базы данных. Потребность в
таких преобразованиях очевидна. При переходе на новую версию инструментального
программного обеспечения возникает вопрос о том, как сохранить то, что уже
наработано в предыдущих версиях, и с минимальными затратами обновить свои
приложения, получив возможность использовать все преимущества новых технологий.
Второй вопрос — как обеспечить дальнейшее развитие приложений не только в
сторону добавления новых функций, но и в сторону их масштабирования, т. е.
получить возможность подключения существенно большего количества пользователей к
базе данных. В гл. 17 мы обсуждали, как создать с использованием
Microsoft Access 2002 приложение, которое имело бы архитектуру "клиент-сервер".
Однако необязательно разрабатывать такое приложение "с нуля". Access 2002 имеет
встроенные средства, которые позволяют выполнить преобразование уже существующих
приложений, перенеся на Microsoft SQL Server все таблицы, правила проверки
вводимых данных и многое другое. В данной главе
мы постараемся ответить на поставленные вопросы и рассказать о
том:
Преобразование настольного приложения Access в приложение с
архитектурой "клиент-сервер" Приложение,
разработанное в среде Access, является настольным приложением. Оно может быть
предназначено для одного пользователя или может быть многопользовательским. Оно
может быть простым или достаточно сложным, как, например, приложение,
рассмотренное в гл. 16, в котором взаимодействуют несколько процессов.
Однако все эти процессы работают под управлением настольной СУБД Access, a
настольная СУБД имеет ограничения как по количеству одновременно работающих
пользователей, так и по объему базы данных. С увеличением сложности приложения и
накоплением данных в таблицах Access может возникнуть необходимость перенесения
этих данных на сервер баз данных, который работает на значительно более мощной
программно-аппаратной платформе. В этом случае приложения Access 2002
устанавливаются на клиентских машинах и играют роль клиентов, обращающихся к
данным, хранящимся в базах данных SQL-сервера. В
клиент-серверных информационных системах на компонент "сервер" возлагается
задача надежного хранения данных и обработки запросов клиента, в то время как от
"клиентской" части требуется лишь обеспечение удобного интерфейса пользователя.
Поэтому компонент "сервер" исполняется на специальной серверной платформе,
которая обеспечивает серверное приложение необходимыми ресурсами и мощностью, а
компонент "клиент" исполняется на менее мощной аппаратно-программной платформе.
В нашем случае мы рассматриваем систему с серверной СУБД Microsoft SQL Server,
работающей под управлением Windows NT Server, и клиентскими частями,
управляемыми менее мощными СУБД Microsoft Access 2002. (О технологии
"клиент-сервер" и ее применении в Access см. гл. 17.) Целесообразность перехода к клиент-серверной
архитектуре Выбор
архитектуры приложения главным образом зависит от поставленной задачи. Многие
задачи успешно реализуются в небольших сетях с файловым сервером. В других
случаях нужно применять более мощную клиент-серверную архитектуру.
Преобразование настольного приложения в клиент-серверное (upsizing)
целесообразно с точки зрения обеспечения четырех важнейших
требований:
Наиболее важным
требованием, которое обычно предъявляется к масштабным приложениям, является
повышение надежности. Отдельные копии приложений, работающие на клиентских
компьютерах в файл-серверных сетях, не имеют синхронизированного журнала
транзакций (напомним, что транзакция представляет собой одну операцию
обмена данными между клиентом и сервером), поэтому сбой на любой клиентской машине или в сети может
привести к порче данных. Обычно такую базу данных можно восстановить, но это
может занять достаточно продолжительное время, в течение которого никто из
пользователей не сможет работать с системой. В клиент-серверных системах при
централизованном управлении данными сбои в .сети или клиентских компьютерах
редко влияют на базу данных. Кроме того, большинство серверов имеют возможность
быстро и качественно восстановить данные. Для этого сервер использует
специальный механизм управления транзакциями. Этот механизм гораздо более
эффективен, чем соответствующий механизм в настольных СУБД, т. к. сервер
контролирует работу транзакций централизованно. Например, процессор обработки
данных Jet поддерживает обработку транзакций только во время текущей сессии
(сеанса работы). Он не может разрешить проблем, возникших из-за сбоя в
предыдущей сессии. Он может оставить "зависшие" блокировки в файле блокировок
(файле с расширением Idb), и никто не сможет получить доступ к данным, пока вы
не удалите этот файл. Он также не гарантирует защиту данных, если сбой произошел
в процессе завершения транзакции. Разумеется, это очень редкое событие, но оно
может стать основанием для серьезного рассмотрения вопроса о переходе к
использованию клиент-серверных приложений. Повышение
производительности является другой, иногда не менее важной причиной перехода к
клиент-серверной архитектуре. Хотя существует огромное множество способов
повысить производительность многопользовательских приложений, подключение
сервера часто является единственным способом достижения необходимого
результата. Требования к
производительности приложения зависят от типа задач, которые оно должно
выполнять. В следующей таблице указаны некоторые задачи, для которых, вероятно,
лучше перейти к клиент-серверной архитектуре. Таблица
19.1. Преимущества использования сервера для некоторых
задач
Иногда полезно
некоторые таблицы перенести на сервер, но такие процедуры, как анализ данных,
составление сложных отчетов путем слияния многих таблиц, лучше оставить на
клиентских станциях. Можно даже все данные держать на сервере и дать возможность
загружать нужные таблицы целиком на рабочие станции для анализа. Масштабируемыми (scalability) называют приложения, которые могут
быть расширены (распределены) на большее число компьютеров, (возможно,
использующих разные аппаратно-программные платформы) для обслуживания большего
числа пользователей, но при условии, что такое расширение (то есть установка
приложений на новые подключаемые к сети компьютеры) не потребует какой-либо
переработки самого приложения. Многопользовательские системы на базе настольных
СУБД сильно ограничены как по числу клиентов, так и по размерам баз данных,
причем снять эти ограничения невозможно даже за счет наращивания ресурсов
компьютеров, т. к. они присущи самим СУБД. Системы же, использующие серверы баз
данных, могут поддерживать тысячи пользователей и огромные базы данных (в сотни
гигабайт) за счет увеличения производительности как аппаратной, так и
программной платформы сервера. Сервер базы
данных предоставляет более мощные средства защиты данных от несанкционированного
доступа, чем настольные СУБД. Права доступа могут устанавливаться очень гибко —
до уровня полей таблиц. Можно, например, вообще запретить пользователю прямое
обращение к таблицам, регламентируя взаимодействие пользователя только через
промежуточные объекты — представления и хранимые процедуры. Способы преобразования приложений Access для использования их с SQL
Server Предположим, у
вас имеется приложение Microsoft Access, которое необходимо приспособить для
работы с сервером базы данных (например, Microsoft SQL Server). Существует
несколько способов выполнения такого преобразования.
Чтобы получить
клиент-серверное приложение, следует воспользоваться специальной надстройкой
Accees 2002, называемой Мастер преобразования в формат SQL Server для интеграции
приложения Access 2002 с SQL Server. Она позволяет преобразовать и перенести
базу данных Access в существующую или новую базу данных на SQL Server, 7.0 или
6.5 (или на ограниченной версии сервера MSDE или MSDE2000) или создать новый
проект Access 2002. А перед этим
можно разделить файл приложения Access на два файла: файл объектов данных и файл
объектов приложения. Небольшие
приложения Microsoft Access обычно состоят из одного файла базы данных. Сетевое
приложение удобнее создавать так, чтобы оно включало два файла MDB: первый —
файл объектов данных (в нем хранятся таблицы), второй — файл объектов
приложения (в нем хранятся все остальные объекты — формы, запросы, отчеты,
страницы доступа к данным, макросы и модули VBA). При этом в файле объектов
приложения устанавливаются связи с таблицами, хранящимися в файле объектов
данных. Файл объектов
данных называют частью заднего плана приложения (back-end), a файл
объектов приложения — частью переднего плана (front-end). Файл объектов
данных обычно размешается на файловом сервере, а копии приложений переднего
плана — на клиентских рабочих станциях. Разделение базы
данных дает следующие преимущества.
Чтобы изучить
механизм разделения базы данных, используйте копию нужной базы данных,
помещенную, например, в папку Shared (Общие). Для разделения файла базы данных в
Microsoft Access 2002 используется специальная надстройка — Мастер разделения
баз данных. Далее описана процедура разделения файла базы данных.
Рис. 19.1.
Диалоговое окно Разделение базы данных
Рис. 19.2.
Диалоговое окно Создание базы данных с
таблицами
Рис. 19.3.
Сообщение об успешном завершении операции
разделения
Рис. 19.4.
Список таблиц в окне базы данных
Рис. 19.5.
Диалоговое окно Диспетчер связанных таблиц Перенос сетевого приложения на платформу SQL Server Прежде чем
использовать Мастера преобразования в формат SQL Server, необходимо выполнить
некоторые подготовительные действия, а после завершения процесса переноса нужно
просмотреть автоматически создаваемый отчет о результатах переноса и выполнить
ряд действий, позволяющих подготовить полученное клиент-серверное приложение к
дальнейшему использованию. Таким образом, процесс переноса разделяется на три
этапа: подготовительный этап, выполнение переноса и подготовка приложения к
эксплуатации. Прежде чем
приступить к переносу реального приложения, мы советуем провести подобный
эксперимент, используя приложение "Борей" или любую другую демонстрационную базу
данных. Чтобы
подготовить приложение к переносу на платформу SQL Server, рассмотрим процесс
переноса базы данных Access 2002 в Microsoft SQL Server на примере приложения
"Борей", входящего в комплект демонстрационных приложений Microsoft Access
2002.
Хотя SQL Server
7.0 и выше поддерживает имена, допустимые в Access, рекомендуется придерживаться
правил именования объектов, принятых в версии SQL Server 6.5. Предположим, с
помощью программы Enterprise Manager на SQL Server создана новая база данных
Sample, которая будет использоваться для переноса приложения "Борей". Создайте
ссылку на этот источник данных в SQL Server с помощью Администратора ODBC на
панели управления Windows. При переносе
базы данных в SQL Server, кроме таблиц, переносятся индексы и связи между
таблицами. При этом индексы отображаются в соответствующие объекты SQL Server.
Индексы, использующиеся в Access и SQL Server, очень похожи, отличие состоит
только в том, что SQL Server не поддерживает индексы по убыванию. Первичные
ключи из Access отображаются в некластеризованные уникальные индексы в SQL
Server. В SQL Server 6.x и выше они, кроме того, маркируются и как
первичные ключи. Если перенос
выполняется в SQL 6.x или выше, то при переносе связей вы можете выбрать
один из методов задания связей в SQL Server: декларативная ссылочная
целостность (DRI —Declarative Referential Integrity) или триггер (см.
рис. 19.10). DRI — это свойство SQL Server, которое позволяет задавать связи
между таблицами в описаниях таблиц в виде внешних ключей (foreign keys). Однако
DRI не поддерживает каскадных обновлений и удалений. Поэтому, чтобы сохранить те
описания каскадных операций, которые были в базе данных Access, следует
использовать триггеры (примеры триггеров и индексов приведены в гл. 17).
При переносе таблиц переносятся все поля, которые были в таблицах Access, и
такие их свойства, как правила проверки введенных значений (validation rules) и
значения по умолчанию (default values). Замечание
Для таблиц
Access, имеющих поля типа Одинарное с плавающей точкой (Single) (это 4
байта), Двойное с плавающей точкой (Double) (это 8 байтов), Поле MEMO
(Memo), Поле объекта OLE (OLE Object), в результате переноса в SQL
Server создается еще поле типа Штамп времени (Timestamp). Это поле
Microsoft Access использует при работе с присоединенными таблицами сервера для
проверки, не было ли изменений в записи. При отсутствии этого поля работа с
такими таблицами может быть не всегда корректной. Правила проверки
введенных значений для полей таблиц Access обычно представляются в SQL Server в
виде триггеров, т. к. правила в SQL Server не позволяют выдавать сообщения об
ошибках. Чтобы начать процесс переноса базы данных на платформу SQL
Server:
Рис. 19.6.
Диалоговое окно выбора способа переноса базы
данных
Рис.
19.7. Вкладка Machine Data Source
Рис. 19.8.
Диалоговое окно для регистрации новой базы данных в SQL
Server
Подготовка клиент-серверного приложения к
эксплуатации После переноса
базы данных в SQL Server Мастер преобразования в формат SQL Server присоединяет
к вашему приложению все созданные на сервере таблицы, старые таблицы делает
локальными и создает документ — отчет о переносе базы данных, в котором описаны
результаты работы мастера и все возникшие проблемы, если они были. Полезно его
изучить, прежде чем работать с обновленным приложением. Чтобы
подготовить базу данных к работе после переноса на платформу SQL
Server.
Скорее всего,
ваше клиентское приложение Access придется модифицировать, чтобы оно эффективно
работало с SQL Server. Использование приложений предыдущих версий Microsoft
Access Чтобы
использовать в Access 2002 существующие приложения, разработанные в предыдущих
версиях Access, необходимо выяснить, возможно ли это и что для этого требуется
сделать. Поддержка 2000 года в Microsoft Access 2000 и
2002 Правила
обработки вычислений, использующих даты, в Access достаточно сложны, поэтому
обработка дат производится с высокой точностью. При интерпретации двусмысленных
дат Access, начиная с версии Access 2000, делает некоторые предположения.
Например, если дата включает только название месяца и одну или две цифры, Access
предполагает, что число от 1 до 31 определяет день указанного месяца текущего
года. Допустим, пользователь ввел дату декабря 2, тогда Access воспримет ее как
2 декабря текущего года, а не как 1 декабря 2002 г. Если пользователь ввел дату
декабря 32, Access воспримет ее как 1 декабря 1932 г. В Access
обработка дат, имеющих сокращенное указание года одной или двумя цифрами,
происходит с учетом дат XXI века, как показано в табл. 19.2. Таблица
19.2. Поддержка дат после 2000 года
Чтобы быть
уверенным, что Access правильно проинтерпретирует введенную дату, указывайте
номер года четырьмя цифрами (например, 2001 вместо 01). Администратор
приложения или системный администратор может настроить Microsoft Office, исходя
из пожеланий пользователей, чтобы определить правила интерпретации дат.
Например, есть возможность изменить нижнюю границу интерпретации двузначных
номеров года дат XX столетия на меньшее число, чем 30 (см. табл. 19.2).
Администратор может также изменить формат дат, используемый по умолчанию, для
отображения четырехзначных номеров года вместо двузначных. Информацию о
настройке интерпретации дат можно найти на Web-узле Microsoft. Совместимость форматов баз данных разных версий Microsoft
Access При разработке
новых версий Access фирма Microsoft стремится обеспечить совместимость снизу
вверх всех созданных ранее приложений. В новой версии
Access 2002 формат предыдущей версии Access 2000 поддерживается полностью, т. е.
базы данных и проекты Access 2000 можно беспрепятственно открывать и изменять в
них объекты, данные и структуру данных, пользуясь новыми инструментальными
средствами Access 2002. Хотя, если возникнет потребность в использовании всего
спектра новых возможностей Access 2002, базу данных или проект Access 2000 можно
будет преобразовать в формат Access 2002. Файлы баз данных
ранних версий Access (1.0, 1.1, 2.0, 95, 97) существенно отличаются по структуре
от формата баз данных Access 2000, в то время как между версиями Access 2000 и
Access 2002 не так уж много отличий. Поэтому для полноценного использования
прежних версий этих файлов необходимо их преобразование в форматы более
поздних версий Access. Новые версии Access снабжаются специальными утилитами для
преобразования файлов баз данных предшествующих версий. Многокомпонентная
структура MDB-файлов усложняет процедуру их преобразования и не всегда допускает
полную совместимость версий. Неполная совместимость с ранними версиями приводит
к ограничению набора допустимых операций для работы с преобразованными
таблицами. В формат Access 2002 можно преобразовать только базы данных, начиная
с версии 2.0 и выше. Чтобы использовать в Access 2002 базы данных более ранних
версий, требуется сначала преобразовать их в формат Access 2.0, 95, 97 или 2000
средствами этих версий Access. Базу данных
Access 2.0, 95 или 97 необязательно преобразовывать, чтобы использовать ее в
новой версии Access 2002, если не требуется изменять в этой базе данных
структуру данных и объектов или создавать новые объекты. Эту базу данных можно
просто открыть в Access 2002 без преобразования. Общая схема
поддержки форматов предыдущих версий Microsoft Access (без преобразования) для
Access 2000 и Access 2002 представлена в табл. 19.3. Каждая строка таблицы
содержит сведения о типе совместимости соответствующей версии Access с другими
версиями, которые перечислены в столбцах таблицы. В этой таблице использованы
следующие условные обозначения:
Таблица
19.3. Совместимость форматов баз данных разных версий Microsoft
Access
Совместное использование базы данных в нескольких версиях
Access В некоторых
случаях не все пользователи многопользовательского приложения Access могут
перейти к работе с новой версией Access одновременно. Хотя бы потому, что не все
компьютеры организации могут иметь достаточные для этого ресурсы. Access
позволяет нескольким пользователям работать с одними и теми же данными в файле
базы данных, используя при этом разные версии Access. Например, база данных
может быть создана в среде Access 95 или даже Access 2.0 и иметь соответствующий
формат. Часть пользователей может продолжать работать с этой базой данных в той
же среде Access 2.0 или Access 95, а другие пользователи могут работать с этим
же файлом в среде Access 2002, имея возможность использовать большинство новых
средств Access 2002. Единственное ограничение для пользователей Access 2002 —
они не смогут менять структуру базы данных и создавать в ней новые объекты. Сами
данные доступны им как на чтение, так и на запись. Такую стратегию можно
использовать для приложений, состоящих из одного файла MDB и для разделенных на
части front-end/back-end приложений. Чтобы
использовать разделенную базу данных из предыдущей версии в разных версиях
Access, достаточно преобразовать файл объектов приложения в формат Access 2000
или 2002 и присоединить к нему таблицы из исходного файла объектов
данных. Чтобы
использовать в разных версиях Access базу данных, состоящую из одного файла в
формате одной из предыдущих версий Access:
Если база данных
предыдущей версии Access уже разделена на файл объектов данных и файл объектов
приложения, остается только преобразовать файл объектов приложения в формат
Access 2000 или 2002:
После этого
можно наращивать функциональность файла объектов приложения, используя все новые
возможности Access 2000 или 2002. (Об использовании Диспетчера связанных
таблиц см. гл. 3.) Использование в Access 2000 и 2002 баз данных предыдущих версий без
преобразования формата Access 2002, так
же как и предыдущие версии Access, позволяет открывать базы данных предыдущих
версий Access, не преобразуя их в новый формат. Поскольку исходный формат базы
данных не меняется, остальные пользователи могут продолжать использовать эту
базу данных в ранней версии Access. При этом работа с базами данных Access 2000
в Access 2002 ничем не будет ограничена, но пользователи Access 2000 или
2002 будут иметь
ограничения при использовании базы данных более ранних версий: Access 2.0, 95
или 97. Можно будет просматривать и редактировать данные в таблицах, добавлять и
удалять записи, но нельзя будет изменять структуру данных и объектов базы данных
или добавлять новые объекты. Для этой цели базу данных необходимо открыть в той
версии Access, в которой она была сохранена. Существуют
определенные ограничения при работе с базами данных предыдущих версий Access
из-за неполной совместимости разных версий.
Использование файлов объектов приложения предыдущих версий
Access Если база
данных, созданная в ранней версии Access: 2.0, 95 или 97, впервые открывается в
Access 2000 или 2002, появится диалоговое окно, предупреждающее о том, что база
данных имеет более раннюю версию, поэтому она недоступна для
изменений. Предлагается
преобразовать выбранную базу данных в формат Access 2000 или 2002, чтобы
получить возможность работать с этой базой, изменяя структуру ее объектов, и
использовать все возможности Access 2000 или 2002. Выбор результирующего формата
в данном случае зависит от того, какой формат считается выбранным по умолчанию:
Access 2000 или 2002. Чтобы выбрать тот или иной формат, перед преобразованием
откройте какую-нибудь базу данных в Access 2002, выберите команду Сервис,
Параметры (Tools, Options) и в появившемся диалоговом окне Параметры
(Options) на вкладке Другие (Advanced) выберите желаемый формат в
раскрывающемся списке Формат файла по умолчанию (Default File
Format). Чтобы
преобразовать базу данных ранней версии в формат Access 2000 или 2002,
необходимо выбрать переключатель Преобразовать базу данных (Convert
Database) и нажать кнопку ОК. Появится диалоговое окно, в котором нужно указать
имя и путь для сохранения базы данных в формате новой версии. После нажатия
кнопки Сохранить (Save) в строке состояния отобразятся сообщения
Преобразование (Converting), Компиляция (Compiling), Сжатие
(Compacting) и Проверка системных объектов (Verifying System
Objects). После удачного завершения преобразования появится предупреждающее диалоговое
окно о том, что преобразованную версию больше нельзя будет использовать в
предыдущих версиях Access, и откроется обновленная база данных. При
преобразовании базы данных Access ранней версии, в которой содержатся ссылки на
таблицы в другой базе данных, удостоверьтесь, что внешние таблицы хранятся в
файле с заданным именем в той же папке, на которую указывают ссылки. Если Access
не найдет связанные таблицы в процессе преобразования базы данных, вы не сможете
использовать преобразованную базу данных. Как только база данных преобразована в
формат Access 2000 или 2002, необходимо переместить файл со связанными таблицами
в нужную папку и переустановить связи на таблицы с помощью Диспетчера связанных
таблиц. Преобразование баз данных не затрагивает связанные таблицы — файл, в
котором хранятся эти таблицы, остается в формате предыдущей версии
Access. Если необходимо
сохранить формат базы данных, например, когда разработка базы осуществляется в
команде с сотрудниками, которые по каким-либо причинам пользуются ранней версией
Access, возможно открытие текущей базы данных без преобразования. В этом случае
объекты будут доступны только для просмотра, но не для редактирования. Если все
же принято решение открыть базу данных ранней версии в Access 2002 без
преобразования, следует выбрать переключатель Открыть базу данных (Open
Database) в диалоговом окне, представленном на рис. 19.13, и нажать кнопку ОК.
Access добавит в базу данных информацию, необходимую для того, чтобы прежняя
версия могла работать в Access 2002, и откроет ее. Если в дальнейшем потребуется
преобразовать эту базу данных в новый формат Access 2000 или 2002, откройте ее в
Access 2002 и выберите команду Сервис, Служебные программы, Преобразовать базу
данных (Tools, Database Utilities, Convert Database) и команду к формату Access
2000 (То Access 2000 File Format) или команду к формату Access 2002 (То Access
2002 File Format). Использование файлов объектов данных предыдущих версий
Access Для разделенных
баз данных возможно преобразование в формат Microsoft Access 2000 или 2002
только файла объектов приложения с сохранением прежней версии файла объектов
данных. Связанный файл объектов данных может быть совместно использован
пользователями, работающими с 16-разрядной версией Access, с Access 95, 97,
2000, 2002 и с Visual Basic версии 3.0 и выше. Присоединение связанной таблицы
из файла объектов данных происходит без вывода предупреждающих диалоговых окон.
Однако при этом нельзя будет воспользоваться некоторыми новыми возможностями
Access 2000 или 2002, например, такими как репликация, при работе с файлами
предыдущих версий. Файлы баз данных
ранних версий Access не следует преобразовывать в формат Access 2000 или 2002 в
следующих случаях:
Если с помощью
предыдущих версий Access разработано несколько приложений для рабочей группы,
необходимо оставить разделяемый файл объектов данных в исходном формате до тех
пор, пока все файлы объектов приложения не будут преобразованы в формат Access
2000 или 2002. Установление связи с таблицами и сохранение исходного формата
файла объектов данных сопряжено с минимальными усилиями или совсем их не
требует. Варианты преобразования баз данных в Access
2002 Приложение
Microsoft Access 2002 поддерживает несколько вариантов преобразования форматов
баз данных. В том числе и преобразование к форматам некоторых предыдущих версий
Access. Все эти варианты перечислены в табл. 19.4. Таблица
19.4. Преобразование форматов в Microsoft Access
2002
|