Опубликован: 13.10.2008 | Уровень: специалист | Доступ: платный
Лекция 10:

Новая файловая система WinFS

< Лекция 9 || Лекция 10 || Лекция 11 >
Аннотация: Предпосылки появления системы. Обзор архитектуры. Модель программирования WinFS. WinFS API

Предпосылки появления

Проблема поиска среди большого объема данных

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

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

  • где есть упоминания о футболе;
  • где есть упоминания о тренере, команде или игроках этой команды;
  • относящихся к городу или стадиону, где проходил матч;
  • созданных в 2007 году.

Дублирование данных

Еще одна проблема состоит в том, что одни и те же данные часто хранятся в нескольких местах в разных форматах. Разработчики тратят много времени и усилий на создание собственных уникальных представлений для хранения информации о людях, местах и событиях. Например, понятие "контакт" есть в Microsoft Office Outlook, Microsoft Windows Address Book, MSN Messenger, ICQ, различных программах для мобильных устройств. В каждом приложении понятие "контакт" определяется по-своему, соответственно, для хранения используется свое представление, что затрудняет интеграцию, совместное использование данных и их синхронизацию.

Проблемы современного подхода к хранению данных

Итак, какие же проблемы стали причиной появления новых подходов к хранению данных?

  • Разработчики все время заново изобретают базовые абстракции данных.
  • Разные приложения не могут легко использовать общие данные.
  • Одна и та же информация хранится в нескольких местах.
  • Пользователю приходится вводить одну и ту же информацию многократно.
  • Отсутствует синхронизация между копиями одних и тех же данных.
  • Отсутствуют уведомления об изменении данных.

Что такое WinFS?

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

На данный момент WinFS существует в виде отдельного установочного пакета и может работать в рамках операционной системы Microsoft Windows XP и Windows Vista. Возможно, WinFS станет частью последующих операционных систем.

Платформа хранения данных

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

База данных

WinFS поддерживает ядро реляционной базы данных (SQL Server 2005), которое позволяет использовать реляционные запросы для поиска экземпляров хранимых типов. WinFS разрешает устанавливать произвольные взаимосвязи между элементами хранимой информации. Разработчики автоматически получают возможности поиска, репликации, защиты и установления взаимосвязей между данными созданных ими типов, а также между данными предопределенных в Wndows типов. Такая структура дает возможность вести поиск информации, задавая системе вопросы, а не запрашивая поиск по папкам.

WinFS - не только реляционная база данных, она поддерживает и иерархическое хранилище. Она может возвращать данные как структурные типы и как объекты - типы плюс поведение. То есть WinFS можно рассматривать как объектно-ориентированную базу данных.

Файловая система

Для традиционных данных вроде текстовых документов, аудиозаписей и видеоклипов WinFS - новая файловая система Wndows. Основные данные файла (файловый поток) хранятся в виде файла на томе NTFS. Однако при любом вызове API, изменяющем или добавляющем данные в файловый поток NTFS, WinFS извлекает из потока метаданные и сохраняет их в своем хранилище.

Новые приложения могут хранить свои данные непосредственно в WinFS. Доступ к файловым потокам возможен через старый Wn32 API и новый WinFS API.

Модель программирования WinFS

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

На вершине иерархии модели данных WinFS находится служба WinFS, представляющая собой просто экземпляр WinFS. Уровень ниже в иерархии занимает том (volume). Том - самый большой автономный контейнер элементов. Каждый экземпляр WinFS состоит из одного или нескольких томов. Внутри тома хранятся элементы (items). Элемент в WinFS - новая единица целостности. Все операции производятся над элементами, а не над файлами. Система хранения содержит именно элементы. По сути, элемент является базовым типом системы хранения данных, он обладает набором атрибутов данных и реализует базовую поддержку запросов.

Тома в файловой системе WinFS

Рис. 10.1. Тома в файловой системе WinFS

В WinFS выделяют особый тип элемента - папка. Папки бывают двух типов: контейнеры и виртуальные папки.

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

Виртуальная папка - это динамический набор элементов. Она представляет собой именованное множество элементов. Множество элементов можно задать явным перечислением либо как результат запроса к WinFS. При добавлении в хранилище нового элемента, удовлетворяющего запросу, он будет автоматически включен в такую папку Виртуальная папка также называется элементом, содержащим набор неудерживающих ссылок (nonholding links). Виртуальная папка является аналогом представлений в базе данных (view).

WinFS также предоставляет встроенные элементы (embedded items). Встроенный элемент - особый вид связи внутри элемента (встроенная связь) для ссылки на другой элемент. Элемент, на который ссылается такая связь, обрабатывается только в контексте содержащего его элемента. Встроенные элементы могут оказаться полезны при моделировании ситуаций типа "в электронное письмо вложен документ Microsoft Word".

Для классификации элементов в WinFS также поддерживаются категории. Каждому элементу можно назначить одну или несколько категорий. Можно выстроить иерархию категорий и использовать имя категории при поиске элементов.

Итак, структуризация информации WinFS может быть осуществлена следующими способами:

  • на основе иерархии папок;
  • по типам (всякий элемент WinFS - объект определенного типа);
  • по свойствам элементов (объекты могут обладать свойствами);
  • по взаимосвязям;
  • по категориям.

WinFS API

Для доступа к данным WinFS можно использовать три API:

  • управляемый WinFS API - строго типизированный, "высокоуровневый" интерфейс;
  • ADO .NET - низкоуровневый интерфейс для работы с данными в формате XML или в виде таблиц и строк. Можно манипулировать данными с помощью T-SQL.
  • Wn32-функции - предоставляют доступ к файлам и папкам WinFS.

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

Управляемые классы WinFS находятся в пространстве имен System.Storage и во вложенных в него пространствах. Наиболее часто используются классы пространства System.Storage.Core.

Отметим ряд возможностей WinFS, используемый для любых классов данных.

  • Асинхронность - выполнение асинхронных запросов с использованием стандартной модели асинхронного программирования .NET.
  • Транзакции.
  • Уведомления.
  • Поддержка BLOB и потоков (streams).
  • Курсоры и разбиение на страницы.

Уведомления

Многим приложениям важно отслеживать состояние своих данных и получать уведомления об изменении их состояния. Служба уведомлений WinFS поддерживает концепции долговременных и кратковременных подписок. Кратковременная подписка (short-term subscription) существует до тех пор, пока приложение ее не отменит либо пока приложение не завершится. Долговременная подписка (long-term subscription) сохраняется между перезапусками приложений. Наблюдатели (watchers) в WinFS API - это группа классов, позволяющих приложению избирательно получать уведомления об изменениях в хранилище WinFS, а также предоставляющих информацию о состоянии, которая может сохраняться приложением. Можно отслеживать состояние элементов, встроенных в них элементов, взаимосвязей между элементами.

Итоги

Важно понимать, что к хранению и поиску данных есть два принципиально разных подхода:

  1. Хранить данные, не концентрируясь на механизмах группирования, связывания, структурирования и прочих аспектах хранения. При этом основные усилия разработчиков системы хранения сосредоточены на создании разнообразных и эффективных алгоритмов поиска данных (примером такого подхода может служить Google Mail). Очевидно, при таком подходе существует опасение, что нетривиальный запрос будет обрабатываться в течение длительного времени и может вообще не вернуть релевантных данных.
  2. Развивать многочисленные способы управления хранимыми данными (как делает, например, WinFS), облегчая таким образом поиск. Однако задача установления связей и группировки во многом ложится на разработчиков прикладного программного обеспечения и самих пользователей. Процесс организации своих собственных данных может оказаться трудоемким и неудобным.

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

< Лекция 9 || Лекция 10 || Лекция 11 >
Ринат Гатауллин
Ринат Гатауллин

Здравствуйте. Интересует возможность получения диплома( https://intuit.ru/sites/default/files/diploma/examples/P/955/Nekommerch-2-1-PRF-example.jpg ). Курс пройден. Сертификат не подходит. В сертификате ошибка, указано по датам время прохождения около 14 дней, хотя написано 576 часов.

Вячеслав Кузнецов
Вячеслав Кузнецов

Здравствуйте.

Как оплатить курс?

Павел Окунцев
Павел Окунцев
Россия, Нижневартовск, НГГУ, 2007
Pavel Krupoderov
Pavel Krupoderov
Россия, Казань