Новшества в версии Microsoft SQL Server 2008 устранили целый ряд трудностей, с которыми сталкивались разработчики при использовании этой СУБД в системах автоматизации документооборота.

В индустрии разработки систем автоматизации документооборота достаточно давно стало очевидно, что в основе хранилища системы должен лежать промышленный SQL-сервер. Попытки использовать специализированные, документо-ориентированные механизмы хранения отошли в прошлое. С развитием систем данного класса возникла необходимость хранить в системе не только файлы документов с набором атрибутов, но и другие достаточно сложные структуры данных, включая табличные данные (например, список заданий, связанных с документом), иерархические данные (иерархические справочники, связки документ — резолюции — задания — история исполнения заданий), ссылки (гиперссылки для связи между документами, ссылки на внешние по отношению к системе документы) и т. п. При этом в системах необходимо порой реализовать достаточно сложную бизнес-логику управления данными и обеспечения ссылочной целостности.

Помимо этого современная система документооборота должна поддерживать достаточно высокий уровень масштабирования подсистемы управления данными и различные способы увеличения надежности, включая средства кластеризации, резервного копирования и т. п. Часто на практике весьма эффективным оказывается применение схем с репликацией данных (например, для обеспечения единого справочного пространства корпоративной системы автоматизации документооборота в распределенной архитектуре).

Еще одна достаточно трудноразрешимая проблема при создании системы документооборота — организация системы разграничения прав доступа. На практике она оказывается достаточно вычурной, и ее крайне проблематично было бы применять, не имея мощных вычислительных возможностей современного SQL-сервера.

Все эти факторы ставят разработчика системы документооборота перед необходимостью использовать в качестве подсистемы управления данными надежный масштабируемый промышленный SQL-сервер. При разработке нашей системы DocsVision в качестве такового был выбран пакет Microsoft SQL Server, что вполне естественно, так как платформа DocsVision довольно тесно интегрирована с технологиями компании Microsoft.

Однако, выбрав SQL Server, при разработке системы автоматизации документооборота мы столкнулись с целым рядом сложностей, что потребовало разработки собственных сервисов, чтобы компенсировать недостатки платформы или взамен тех, которые отсутствовали по причине высокой сложности их реализации. Прежде всего это касалось работы с большими массивами файловой информации: в SQL файловые данные хранятся в таблице БД в виде бинарных массивов, что при большом объеме хранения существенно усложняет процедуры резервного хранения данных.

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

Выпущенная в середине прошлого года версия Microsoft SQL Server 2008 устранила целый ряд трудностей, с которыми нам приходилось сталкиваться в предыдущих версиях системы. Ниже мы приведем краткий перечень новых возможностей этой СУБД, которые существенно облегчили реализацию некоторых функций сиcтемы DocsVision.

Новые типы данных

Как уже было отмечено, в объектах системы документооборота бывает необходимо по-разному обрабатывать дату и время. При моделировании бизнес-объектов системы документооборота часто возникают задачи, требующие хранить отдельно только дату или только время. Например, этапы проекта удобно разграничивать датами, временная часть в данном случае не имеет смысла. Распорядок дня принято указывать в часах, тут без типа «время» не обойтись. С появлением новых типов данных Date — только дата и Time — только время как хранение, так и различные манипуляции с этими данными (например, вычисление продолжительности в днях или в часах) стали существенно удобнее и проще.

Автоматизация крупных предприятий, транспортных компаний и т. д. требует учитывать время в едином формате, при этом пользователи привыкли работать с локальным временем. Новый тип данных Datetimeoffset — дата-время с часовым поясом весьма удобен при построении распределенных решений, которые становятся все более востребованными. Вычисление относительных времен при схеме с несколькими серверами, находящимися в разных часовых поясах, представляло раньше существенную проблему. Еще один полезный тип данных — Datetime2, дата-время с увеличенной точностью (100 наносекунд) и расширенным диапазоном значений, позволяет фиксировать в журнале события в системе с высокой точностью, что часто бывает полезно при анализе системного журнала.

Помимо этого в SQL Server 2008 появился новый CLR-тип для хранения и обработки иерархических данных Hierarchyid, с его помощью можно гораздо удобнее и, что важно, эффективнее моделировать различные иерархические конструкции, о которых мы говорили выше.

Технология вытеснения файлов

Эта технология исключительно удобна при организации больших файловых архивов в рамках системы автоматизации документооборота. Суть ее заключается в том, что файлы и другие бинарные данные хранятся не в таблицах базы данных, как раньше, а в файловой системе NTFS. Помимо увеличения скорости чтения/записи для BLOB размером более 1 Мбайт, в ней также отсутствует ограничение на максимальный размер в 2 Гбайт, как это было ранее для типов varbinary(max). Теперь максимальный размер файла ограничивается только возможностями дисковой подсистемы. При этом для пользователя и, главное, для разработчика работа с «вытесненными» файлами остается совершенно прозрачной. Для файлов сохраняются механизмы полнотекстового индексирования и поиска, управление резервными копиями и т. п. При этом с данными FileStream можно работать как из T-SQL, так и из Win32 API для чтения/записи данных.

Недоработка данной технологии состоит в том, что файлы пока могут храниться только на локальном диске сервера БД, хотя в начальной спецификации заявлялась возможность хранения данных на сетевых устройствах (эта технология носит название Remote BLOB). Microsoft обещает реализовать эту возможность в одной из следующих версий платформы, при этом помимо совместимости с различными физическими устройствами хранения будет поддерживаться и возможность независимого резервирования для файлов, хранящихся на данных устройствах, что существенно сократит накладные расходы на организацию резервного хранения больших файловых архивов.

Сжатие данных

Очень полезными оказались также технологии, обеспечивающие сохранение объема дискового пространства, занимаемого системой. Среди них можно отметить следующие.

ROW compression — обеспечивает сокращение места, которое занимают значения полей в строке данных. Уменьшается размер служебной информации, связанной с каждой записью. Оптимизируется хранение простых типов (например, int (4 байта)— если значение может быть сохранено в одном байте, будет использован только один байт) и строк с фиксированной длиной.

PAGE compression — система не хранит дубликаты значений полей в пределах страницы данных, если значение повторяется, то устанавливается ссылка на существующее поле.

BACKUP Compression — сжатие резервной копии позволяет сэкономить дисковое пространство и время при работе с большими базами данных.

Прозрачное шифрование данных

В предыдущих версиях системы при попытке сохранения в ней зашифрованных данных возникали определенные проблемы. Во-первых, это требовало соответствующих программных механизмов, во-вторых, зашифрованные таким образом данные выпадали из системы поиска. Теперь же система обеспечивает возможность шифрования файла данных, лог-файлов, резервной копии. При этом данные на диске хранятся зашифрованными, расшифровываются они только при загрузке в оперативную память; шифрование происходит прозрачно для клиентских приложений — никаких изменений в них не требуется, режим шифрования настраивается администратором системы. Благодаря этому провайдеры Интернет-сервисов хранения данных смогут предоставить клиентам гарантии невозможности несанкционированного доступа к информации, хранящейся в базе. Для компании DocsVision это достаточно актуальная задача, связанная с организацией хостинга системы документооборота на сервисе live.docvision.com.

Управление ключами безопасности

В новой версии SQL Server существенно упростилось управление ключами безопасности. Теперь для этой цели служит Microsoft Cryptographic API; появилась также возможность использовать внешние Hardware Security Modules (HSM) от сторонних производителей. Можно настраивать политику шифрования (например, разделить ключ на пять частей, причем любые три из них позволяют работать с данными, и т. д.) Эта особенность обеспечивает дополнительную защиту информации, например, от несанкционированного доступа к ней администратора системы.

Аудит баз данных

В Microsoft SQL Server 2008 появились средства отслеживания изменений в базе данных. Можно отслеживать не только изменения в таблицах, но и операции создания/изменения объектов. Информация асинхронно сбрасывается в файл, который можно использовать для анализа выполненных операций. Это позволяет построить систему аудита изменений критичных для бизнеса данных.

Расширение служб отчетности

Теперь система Reporting Services не зависит от Internet Information Services и потребляет меньше оперативной памяти. Доработан кэш отчетов, появилась возможность создавать образы ресурсоемких отчетов, можно настраивать генерацию отчетов по расписанию и т. д. Появилась возможность подписки на отчет — он будет доставлен группе пользователей в указанное время по электронной почте, причем параметры отчета могут определяться динамически для каждого пользователя в группе.

Теперь отчеты можно внедрять в другие приложения, пользователи могут просматривать их прямо из Microsoft Word или из Web-портала. Улучшилась производительность создания отчетов. Популярные отчеты с одинаковыми параметрами кэшируются, в результате пользователи получают результат быстрее. С появлением образов отчетов (snapshots) можно оптимизировать генерацию ресурсоемких выборок — отчеты будут генерироваться по расписанию, а пользователи получают доступ к готовым выборкам.

Команда MERGE

Эта команда позволяет эффективно переносить большие массивы данных из одной таблицы в другую. Такая возможность оказалась полезной при создании резервных серверов для хранения исторических данных и при загрузке данных из системы автоматизации документооборота в OLAP, когда обрабатывается очень большое число строк. Одна команда MERGE заменяет несколько прежних, в результате чего на выполнение операций тратится меньше времени.

Средства синхронизации

В последнее время возросла роль мобильных и удаленных пользователей, и задача создания offline-клиента (который мог бы продолжать работу с системой за границами офиса) для системы документооборота становится все более насущной. Сегодня, чтобы получить доступ к системе, удаленному пользователю нужно соединиться с корпоративной сетью, например, через VPN. Microsoft Sync Framework позволяет реализовать альтернативную схему работы для подобных клиентов. Мобильный пользователь работает с offline-копией данных, которая периодически выгружается в основную базу в тот момент, когда доступно соединение. Тем самым устраняется необходимость открывать VPN-соединение, пользователь не зависит от пропускной способности сети, улучшается масштабируемость (больше пользователей могут работать одновременно) и отказоустойчивость приложения (в случае сбоя на сервере пользователи работают с локальной копией).

Microsoft Synchronization Framework также полезен как альтернатива peer-to-peer репликации, так как допускает синхронизацию с гетерогенными базами данных, позволяет применять различные сервисы доступа к данным, например WCF. Эту возможность мы предполагаем поддерживать в новом компоненте системы DocsVision — мобильном клиенте, который разрабатывается в настоящий момент.