Опубликован: 29.07.2008 | Доступ: свободный | Студентов: 1879 / 489 | Оценка: 4.31 / 4.13 | Длительность: 09:00:00
Лекция 1:

Какие именно данные приложения следует хранить в базе данных

Лекция 1: 123 || Лекция 2 >

Использование файловой системы с XML-данными

Несмотря на то, что в SQL Server 2005 были внесены заметные усовершенствования в способ хранения XML в базе данных, по-прежнему можно обращаться к XML-документам, хранящимся вне базы данных. При помощи операторов FOR XML и OPENXL вы сможете записать XML-фай-лы и выполнить разбивку этих файлов для вставки в базу данных. Оба оператора были доступны в SQL Server 2000 и по-прежнему функционируют в SQL Server 2005. Более того, можно использовать оператор OPENROWSET для массовой высокопроизводительной загрузки XML-документов в базу данных.

Где хранить файлы внешних приложений

Не исключено, что вы окажетесь в такой ситуации, когда для поддержки вашего приложения будут необходимы файлы других типов - документы Microsoft Word (файлы .doc ), электронные таблицы Microsoft Excel (файлы .xls ), изображения (файлы .jpg или .bmp ), видео (файлы .mpeg ), или даже звуковые файлы (файлы .wav ). Где лучше хранить эти файлы, если они необходимы бизнес-приложению? Существует два широко используемых метода хранения таких файлов:

  • Хранение файлов в файловой системе со ссылкой на них в базе данных.
  • Хранение файлов в виде больших объектов в столбцах LOB в таблице базы данных.

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

Совет: Можно также реализовать управление версиями файлов в таблице. В зависимости от реализации вы сможете хранить предыдущую и текущую версии файлов в одной таблице. Возможно, однако, что вы найдете более полезным хранение в таблице только текущей версии, что тоже ускорит выполнение запросов. Если вам не нужно часто пользоваться предыдущими версиями, но приходится хранить их в качестве справочного материала, создайте еще одну таблицу и храните в ней прошлые версии вместе со всей необходимой информацией по версиям. Это позволит вам быстро извлечь текущую версию, а при необходимости вы все же сможете получить предыдущую для справки.

Если файлы хранятся в файловой системе, то это дает такие же преимущества, которые были ранее рассмотрены для хранения настроек приложения в конфигурационном файле. Вы можете быстро обратиться к этим файлам при помощи старых испытанных методов, например, через Проводник Windows в Microsoft Windows. Пользователи смогут обратиться к этим файлам вне контекста приложения (что может быть желательным или нежелательным, в зависимости от того, как используются файлы). Если вы работаете с файлами, используя репозиторий документов, то ссылка на файлы из таблицы, вероятно, подойдет для вашего случая – при этом таблица хранится в упрощенной форме, способствующей ускорению поиска. Однако если приложение зависит от отдельных характеристик файла, например, если нужно, чтобы Столбец А в Excel содержал номера счетов, то предоставление пользователям возможности доступа к этим файлам подвергает риску целостность приложения.

Какие обстоятельства говорят в пользу хранения файлов в базе данных? Если файлы в базе данных хранятся с использованием типа данных LOB, например, BINARY или IMAGE, можно управлять доступом к файлам. Вам не придется беспокоиться о путях к файлам и других проблемах, связанных с файловой системой, которые возникают, если файлы хранятся за пределами базы данных и приложения. Тем не менее, приложению понадобится учетная запись на тот случай, если у других внешних приложений возникнет необходимость в этих файлах. Независимо от того, какому способу хранения файлов - в базе данных или в файловой системе - будет отдано предпочтение, необходимо продумать ссылочный механизм и механизм отслеживания информации о данных в базе данных.

Примечание: Если вы интересуетесь тем, может ли SQL Server обрабатывать хранение файлов в таблице базы данных, особенно если вам приходится хранить несколько предыдущих версий, попробуйте обратиться к инструменту координации совместной работы от Microsoft - Windows SharePoint Services (поставляется с Microsoft Windows 2003) и Microsoft Office SharpPoint Portal Services. Любое из этих приложений использует базы данных SQL Server для управления файлами, сохраняя версии файлов в таблицах базы данных.

Заключение

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

Краткий справочник по 1 лекции

Для того чтобы Выполните следующие действия
Запустить среду SQL Server Management Studio В меню Start (Пуск) выберите команду All Programs, Microsoft SQL Server2005, SQL Server Management Studio (Все программы, Microsoft SQL Server 2005, Среда Server Management Studio)
Ввести и выполнить новый запрос в SQL Sever Management Studio Нажмите кнопку New Query (Создать запрос), введите текст запроса в панели запроса и нажмите кнопку Execute (Выполнить).
Просмотреть XML-данные для строки, возвращенной запросом Щелкните на ссылке в панели Results (Результаты), которая находится под окном запроса.
Использовать метод XQuery query(), чтобы возвратить данные, хранящиеся в переменной SampleXML. Используйте предложение T-SQL SELECT @SampleXML.query("/root/L1/L2)")
Лекция 1: 123 || Лекция 2 >
Марат Уздемиров
Марат Уздемиров
Ярослав Малащенко
Ярослав Малащенко