ФАЙЛОВАЯ СИСТЕМА, ПРЕДСТАВЛЕННАЯ ВНУТРИ БАЗЫ ДАННЫХ
FILE SYSTEM PRESENTED INSIDE DATABASE

Ссылка на связанную заявку
Настоящая заявка испрашивает приоритет заявки на патент США № 60/657,533 "FILE SYSTEM REPRESENTED INSIDE A DATABASE", поданной 28 февраля 2005. Все содержание этой заявки включено в описание по ссылке.
Уровень техники
Усовершенствования в компьютерной технологии (например, быстродействие микропроцессоров, емкость памяти, ширина полосы частот передачи данных, функциональные возможности программного обеспечения и т.п.) внесли большой вклад в расширенное применение компьютеров в различных отраслях промышленности. Все более мощные серверные системы, которые часто конфигурируются как массив серверов, обычно обеспечиваются для обслуживания запросов, исходящих от внешних источников, например сети "всемирной паутины" (World Wide Web).
Поскольку количество доступных электронных данных растет, становится необходимым хранить такие данные управляемым способом, который облегчает дружественные пользователю и быстрые поиск и извлечение данных. В настоящее время общий подход состоит в том, чтобы сохранять электронные данные в одной или более базах данных. В общем случае типовая база данных может быть названа как организованная коллекция информации с данными, структурированными так, что компьютерная программа может быстро осуществлять поиск и выбирать требуемые части данных, например. Обычно данные в базе данных организованы посредством одной или более таблиц. Такие таблицы организуются как массив строк и столбцов.
Таблицы могут содержать также набор записей, и запись включает в себя набор полей. Записи обычно индексируются как строки в таблице, а поля записи обычно индексируются как столбцы, так что пара индексов строка/столбец может указывать конкретную данную величину (данные) в таблице. Например, строка может хранить полную запись данных, относящихся к коммерческой сделке, человеку или проекту. Аналогично, столбцы таблицы могут определять отдельные части строк, которые имеют один и тот же общий формат данных, причем столбцы могут определять поля записей.
Каждая индивидуальная часть данных, взятая по отдельности, обычно не очень информативна. Приложения баз данных делают данные более полезными, потому что они помогают пользователям организовать и обрабатывать данные. Программное приложение базы данных позволяет пользователю сравнивать, сортировать, упорядочивать, объединять, отделять и связывать данные, так чтобы из данных могла быть сформирована полезная информация. Кроме того, емкость и универсальность баз данных выросли до невероятной степени, чтобы обеспечить фактически бесконечную емкость хранения, используя базы данных. Помимо этого, типовые системы базы данных предлагают ограниченные возможности запроса на основании времени, расширения файла, расположения и размера. Например, чтобы найти большие объемы данных, ассоциированных с базой данных, типовой поиск ограничен именем файла, размером файла, датой создания, где такие методы являются несовершенными и неподходящими.
При продолжении и увеличении формирования объема данных от конечных пользователей проблемы и трудности, сопровождающие нахождение, связывание и сохранение таких данных, достигают своего пика. Конечные пользователи записывают документы, сохраняют фотографии, считывают музыку с компакт-дисков, получают электронную почту, сохраняют копии посланной электронной почты и т.д. Например, в простом процессе создания музыкального компакт-диска конечный пользователь может создавать мегабайты данных. При считывании музыки с компакт-диска, при преобразовании файла в подходящий формат, при создании коробки (для компакт-диска), при создании метки компакт-диска - все эти операции требуют создания данных.
Мало того, что осложнения окружают пользователей, разработчики имеют аналогичные проблемы с данными. Разработчики создают и записывают несметное число приложений, изменяющихся от персональных приложений до высококачественно разработанных приложений предприятий. При создании и/или разработке разработчики часто, если не всегда, собирают данные. При получении таких данных эти данные должны быть сохранены. Другими словами, проблемы и трудности, окружающие нахождение, связывание и сохранение данных, затрагивают и разработчика, и конечного пользователя.
Кроме того, технологические усовершенствования в базах данных привели ко множеству форматов и/или конфигураций. Форматы и/или конфигурации базы данных увеличились соответствующим образом, при этом такие изменения могут вызывать трудности интеграции. Другими словами, несопоставимые базы данных файлов обычно не адаптируются хорошо друг с другом на основании различий развития. Поэтому существует потребность преодолеть вышеупомянутые приведенные в качестве примера неточности, связанные с обычными системами и базами данных.
Сущность изобретения
Нижеследующее представляет упрощенное изложение сущности изобретения, для того чтобы обеспечить основное понимание некоторых аспектов изобретения. Это изложение не является обширным обзором изобретения. Оно не предназначено ни для того, чтобы идентифицировать ключевые или критические элементы изобретения, ни для того, чтобы ограничивать объем изобретения. Единственная цель состоит в том, чтобы представить некоторые концепции изобретения в упрощенной форме в качестве вводной части к более подробному описанию, которое представлено ниже.
Настоящее изобретение относится к системам и/или способам, которые облегчают адаптацию (согласование) несопоставимых файловых систем. Адаптер файловой системы может обеспечивать однородность между первой файловой системой и второй файловой системой. Однородность может позволять приложению и/или API (программному интерфейсу приложений) для первой файловой системы быть реализованным во второй файловой системе. Адаптер файловой системы может реализовывать элемент (данных) с файловой поддержкой, который может быть элементом (данных), относящимся ко второй файловой системе, которая полагается (основывается) на файл и/или файловый поток, чтобы заполнить по меньшей мере одно свойство, ассоциированное с ним. Этот элемент (данных) с файловой поддержкой может использовать файл и/или ассоциированный файловый поток, чтобы "наполнить" элемент свойствами и/или метаданными во второй файловой системе. Используя элемент с файловой поддержкой, адаптер файловой системы допускает манипулирование посредством API, ассоциированным со второй файловой системой, а также существующими API, относящимися к текущей и предыдущей версиям первой файловой системы. Адаптер файловой системы может также обеспечивать синхронизацию между первой файловой системой и второй файловой системой. Должно быть понятно, что элемент с файловой поддержкой может включать (инкорпорировать) характеристики первой файловой системы во вторую файловую систему, такие как, но не ограничиваясь ими, атрибут, характеристики защиты, поток файлов, файл и т.д.
В соответствии с одним аспектом настоящего изобретения адаптер файловой системы может включать в себя компонент атрибутов. Этот компонент атрибутов может предоставлять атрибуты, связанные с файлом и/или файловым потоком, ассоциированным (связанным) с первой файловой системой, второй файловой системе. Файл может иметь по меньшей мере один атрибут, такой как, но не ограничиваясь ими, "доступный только для чтения", "сжатый", архивированный файл и т.д., причем бит и/или биты могут представлять такие атрибуты. Компонент атрибутов может позволять элементу файловой поддержки, который представляет файл и/или файловый поток в первой файловой системе, встраивать (инкорпорировать) такие атрибуты во вторую файловую систему.
В соответствии с другим аспектом настоящего изобретения адаптер файловой системы может включать в себя компонент обработчика метаданных, который позволяет по меньшей мере одному свойству оставаться в синхронизме между элементом (данных), элементом (данных) с файловой поддержкой и файлом поддержки (например, файлом в файловой системе, которая представлена элементом с файловой поддержкой). Свойство может быть модифицировано в потоке файлов поддержки, причем компонент обработчика метаданных может внедрять новое значение в соответствующее поле в элементе во второй файловой системе. Кроме того, свойство может быть изменено посредством API, ассоциированным со второй файловой системой; компонент обработчика метаданных может смещать это новое значение в поток файлов поддержки в пределах первой файловой системы.
В соответствии с еще одним аспектом настоящего изобретения адаптер файловой системы может включать в себя фантомный компонент, который обеспечивает синхронизацию для свойства элемента с файловой поддержкой. Кроме того, компонент туннелирования атрибутов может использоваться для обеспечения туннелирования атрибутов, чтобы облегчить изменение имени и/или сохранение (экономию) ресурсов во второй файловой системе. Кроме того, адаптер файловой системы может включать в себя компонент DAG (ориентированный ациклический граф, ОАГ - абстрактный тип данных), который использует ориентированный ациклический граф вместе с настоящим изобретением. В других аспектах настоящего изобретения обеспечиваются способы, которые облегчают адаптацию несопоставимых файловых систем.
Нижеследующее описание и прилагаемые чертежи подробно излагают некоторые иллюстративные аспекты изобретения. Эти аспекты иллюстрируют, однако, только несколько различных способов, которыми принципы изобретения могут использоваться, и настоящее изобретение предназначено, чтобы охватить все такие аспекты и их эквиваленты. Другие преимущества и новые признаки изобретения очевидны из нижеследующего подробного описания изобретения при рассмотрении совместно с чертежами.
Краткое описание чертежей
Фиг.1 иллюстрирует блок-схему примерной системы, которая облегчает адаптацию ассоциированной с файловым потоком файловой системы и ассоциированной с метаданными файловой системы.
Фиг.2 иллюстрирует блок-схему примерной системы, которая облегчает адаптацию по меньшей мере двух несопоставимых файловых систем, чтобы обеспечить однородность.
Фиг.3 иллюстрирует блок-схему примерной системы, которая облегчает адаптацию ассоциированной с файловым потоком файловой системы и ассоциированной с метаданными файловой системы.
Фиг.4 иллюстрирует блок-схему примерной системы, которая облегчает синхронизацию по меньшей мере двух несопоставимых файловых систем.
Фиг.5 иллюстрирует блок-схему элемента с файловой поддержкой, который облегчает адаптацию одной файловой системы с несопоставимой файловой системой.
Фиг.6 иллюстрирует блок-схему примерной системы, которая облегчает адаптацию ассоциированной с файловым потоком файловой системы и ассоциированной с метаданными файловой системы.
Фиг.7 иллюстрирует блок-схему примерной системы, которая облегчает адаптацию ассоциированной с файловым потоком файловой системы и ассоциированной с метаданными файловой системы.
Фиг.8 иллюстрирует примерную методологию для адаптации по меньшей мере двух несопоставимых файловых систем, чтобы обеспечить однородность.
Фиг.9 иллюстрирует примерную методологию для адаптации одной файловой системы с несопоставимой файловой системой.
Фиг.10 иллюстрирует примерную методологию для адаптации ассоциированной с файловым потоком файловой системы и ассоциированной с метаданными файловой системы.
Фиг.11 иллюстрирует примерное сетевое окружение, в котором могут использоваться новые аспекты настоящего изобретения.
Фиг.12 иллюстрирует примерную среду, которая может использоваться в соответствии с настоящим изобретением.
Подробное описание
Используемые в данной заявке термины "компонент", "система", "интерфейс" и т.п. предназначены для обозначения относящегося к компьютеру объекта, любого из аппаратного обеспечения, программного обеспечения (например, при выполнении) и/или программно-аппаратных средств. Например, компонентом может быть процесс, выполняющийся на процессоре, процессор, объект, выполняемой программой, программой и/или компьютером. В качестве иллюстрации как приложение, выполняющееся на сервере, так и этот сервер, могут быть компонентом. Один или более компонентов могут постоянно находиться в процессе, и компонент может быть локализован на одном компьютере и/или распределен между двумя или более компьютерами.
Настоящее изобретение описано со ссылками на чертежи, на которых аналогичные ссылочные позиции используются для обозначения аналогичных элементов. В нижеследующем описании с целью объяснения многочисленные конкретные подробности сформулированы, чтобы обеспечить исчерпывающее понимание настоящего изобретения. Очевидно, однако, что настоящее изобретение может быть осуществлено без этих конкретных подробностей. В других случаях известные структуры и устройства показаны схематично, чтобы облегчить описание настоящего изобретения.
Со ссылками на чертежи фиг.1 иллюстрирует систему 100, которая облегчает адаптацию (согласование) файловой системы с несопоставимой файловой системой. Файловая система 102 может быть системой хранения файлов, в которой структура основана на файловом потоке (потоке файлов) и/или каталоге. Файловая система 102 может использовать файловый поток так, что приложение и/или интерфейс прикладных программ (API) может расширять файловый поток, чтобы обеспечить более сложную структуру. Файловая система 104 может быть более сложной моделью, в которой элемент (данных), подэлемент, свойство и отношение определены для того, чтобы обеспечить представление информации в файловой системе 104 в качестве экземпляров сложных типов. Элемент (данных) может быть определен как самый маленький модуль целостности (связности) в файловой системе 104, который может быть независимо защищен, преобразован в последовательную форму, синхронизирован, скопирован, для него выполнено резервное копирование/восстановлен и т.д. Этот элемент является экземпляром типа, в котором все элементы в файловой системе 104 могут быть сохранены в едином глобальном экстенте (непрерывной области для определенного типа данных) элементов. Файловая система 104 может быть основана на по меньшей мере одном элементе и/или контейнерной структуре. Файловая система 104 может быть платформой хранения, которая открывает (предоставляет) метаданные с расширенными функциональными возможностями, которые скрыты в файлах, в качестве элементов. Должно быть понятно, что файловая система 104 может быть системой хранения файлов, представленная моделью данных, чтобы поддерживать описанные функциональные возможности.
Адаптер 106 файловой системы может обеспечивать совместимость и/или однородность (согласованность) между файловой системой 102 и файловой системой 104. Совместимость и/или однородность (согласованность) могут позволить осуществить приложение и/или API для файловой системы 102 в файловой системе 104. Адаптер 106 файловой системы может реализовывать элемент с файловой поддержкой, который может быть элементом, относящимся к файловой системе 104, которая основывается на файле и/или файловом потоке, чтобы заполнить по меньшей мере одно свойство, связанное (ассоциированное) с ним. Элемент с файловой поддержкой может действовать в качестве моста между файловой системой 102 и расширенной функциональными возможностями схематизированной файловой системой 104 и/или моделью данных, связанной с ней. Например, элемент изображения в файловой системе 104 может быть элементом с файловой поддержкой, причем элемент изображения поддерживается файлом, соответствующим стандартному формату изображения (например, JPEG, TIF, BMP и т.д.) файловой системы 102. Другими словами, элемент с файловой поддержкой может использовать файл и/или ассоциированный файловый поток (например, используемый файловой системой 102), чтобы заполнить элемент свойствами и/или метаданными в файловой системе 104. Используя элемент с файловой поддержкой, адаптер 106 файловой системы допускает манипуляцию API, ассоциированными с файловой системой 104, а также существующими API, относящимися к текущей и предыдущим версиям файловой системы 102. Адаптер 106 файловой системы может также обеспечивать синхронизацию между файловой системой 102 и файловой системой 104. В частности, элемент с файловой поддержкой может обеспечивать данные в синхронизме с соответствующими данными в файле поддержки. Должно быть очевидно и понятно, что элемент с файловой поддержкой может обеспечивать характеристики файловой системы 102 для файловой системы 104, такие как, но не ограничиваясь ими, атрибут, характеристику защиты, файловый поток, файл и т.д.
Система 100 дополнительно включает в себя интерфейсный компонент 108, который предоставляет различные адаптеры, соединители, каналы, тракты связи и т.д. для интеграции адаптера 106 файловой системы фактически в любую операционную(ые) систему(ы). К тому же, интерфейсный компонент 108 может обеспечивать различные адаптеры, соединители, каналы, тракты связи и т.д., которые предусматривают взаимодействие с данными и адаптером 106 файловой системы. Должно быть понятно, что хотя интерфейсный компонент 108 включен в адаптер 106 файловой системы, такое выполнение не ограничивается этим. Например, интерфейсный компонент 108 может быть автономным компонентом для приема или передачи данных, имеющих отношение к системе 100.
Фиг.2 иллюстрирует систему 200, которая облегчает адаптацию (согласование) по меньшей мере двух несопоставимых файловых систем, чтобы обеспечить однородность (согласованность). Адаптер 206 файловой системы может обеспечивать однородность и/или совместимость между файловой системой 202 и файловой системой 204. Однако должно быть понятно и очевидно, что адаптер 206 файловой системы может обеспечивать согласование множества несопоставимых файловых систем. Файловая система 202 может быть основанной на файловом потоке и каталоге файловой системой, которая использует по меньшей мере один API и/или приложение. Например, API и/или приложение, относящиеся к файловой системе 202, могут быть, но не ограничиваясь ими, 16- битной, 32- битной и т.д. версией. Файловая система 204 может быть сложной структурой, использующей элемент данных в качестве единицы совместимости (связности), причем метаданные, свойства, отношения реализованы в качестве экземпляров сложных типов. Файловая система 204 может быть моделью данных, которая может описывать форму данных, объявлять ограничения для того, чтобы заключать в себе некоторую семантическую совместимость в отношении данных и определять семантические ассоциации между данными. Используя адаптер 206 файловой системы, API и/или приложения, относящиеся к файловой системе 202, могут однородно использоваться в файловой системе 204. Должно быть понятно, что файловая система 202, файловая система 204 и адаптер 206 файловой системы могут быть по существу аналогичны файловой системе 102, файловой системе 104 и адаптеру 106 файловой системы на фиг.1, соответственно.
Адаптер 206 файловой системы может включать в себя анализирующий компонент 210, который анализирует файловую систему 202. Анализирующий компонент 210 может определять каталоги и/или файлы, ассоциированные с ними, чтобы облегчить обеспечение согласуемой и/или совместимой системы с файловой системой 204. Анализирующий компонент 210 может определять по меньшей мере один концевой узел (дерева). Должно быть понятно, что концевой узел может быть представлен в качестве элемента с файловой поддержкой, в то время как все каталоги и/или файлы файловой системы 202 могут быть представлены в качестве элементов в файловой системе 204. Таким образом, каталоги и/или файлы, которые не являются концевыми узлами, имеют присутствие в файловой системе 204, но не существует потока, связанного с ней.
Адаптер 206 файловой системы может дополнительно включать в себя генерирующий компонент 212, который создает и/или формирует элемент с файловой поддержкой. Генерирующий компонент 212 может создавать элемент с файловой поддержкой, на основании, по меньшей мере, частично на анализе файловой системы 202. Например, генерирующий компонент 212 может создавать элемент с файловой поддержкой для любого концевого узла, ассоциированного с файловой системой 202, причем элемент с файловой поддержкой является совместимым с файловой системой 204, так как элемент с файловой поддержкой расширен файлом и/или файловым потоком из файловой системы 202. Генерирующий компонент 212 может создавать элемент с файловой поддержкой по меньшей мере с одним из следующего: элемент с файловой поддержкой имеет связанный (например, поддерживающий) файловый поток; элемент с файловой поддержкой не может содержать другие элементы (например, они являются концевым узлами в пространстве имен); элемент с файловой поддержкой может быть фантомным (описано ниже); и атрибут файла (описано ниже) поддерживается для элемента с файловой поддержкой.
Элемент с файловой поддержкой может действовать в качестве моста между файловой системой 202 и файловой системой 204. Любой элемент файловой системы 204 может быть обозначен как элемент с файловой поддержкой, если 1) по меньшей мере часть содержимого (получены) из файла и/или файлового потока файловой системы 202, и/или 2) содержимое лежащего в основе файла должно подвергаться манипулированию по меньшей мере одним API и/или приложением, ассоциированными с файловой системой 202. Элемент с файловой поддержкой в файловой системе 204 может сохранять свойство метаданных, ассоциированное с элементом, а также с файловым потоком, ассоциированным с элементом. Должно быть понятно, что механизмы иерархии папка/каталог/файл файловой системы 202 могут быть представлены в файловой системе 204, используя контейнерные элементы, которые содержат другие элементы, включающие в себя элементы файловой поддержки. Таким образом, приложение, использующее API файловой системы 202, может работать "гладко" («бесшовно») с механизмом хранения файловой системы 204.
Фиг.3 иллюстрирует систему 300, которая облегчает согласование файловой системы, ассоциированной с файловым потоком, и файловой системы, ассоциированной с метаданными. Адаптер 306 файловой системы может обеспечивать однородное (согласованное) и/или совместимое взаимодействие между файловой системой 302 и файловой системой 304, которая является несопоставимой с ней. Адаптер 306 файловой системы может использовать элемент с файловой поддержкой в качестве элемента в файловой системе 304, которая может заполнять по меньшей мере одно свойство и/или метаданные файлом и/или файловым потоком, ассоциированным с файловой системой 302. Элемент с файловой поддержкой может выступать в качестве моста между файловой системой 302 (например, формат файла) и файловой системой 304 (например, расширенные схематизированные экземпляры сложных типов).
Адаптер 306 файловой системы может включать в себя компонент 310 атрибутов, который обеспечивает атрибуты, ассоциированные с файлом и/или файловым потоком, ассоциированные с файловой системой 302, для файловой системы 304. Например, файловая система 302 использует основанную на файловом потоке систему хранения, в которой файл может иметь по меньшей мере один атрибут, например, но не ограничиваясь ими, доступный только для чтения, сжатый, архивированный файл и т.д., причем бит и/или биты могут представлять такие атрибуты. Компонент 310 атрибутов может допускать, что элемент с файловой поддержкой, который представляет файл и/или файловый поток в файловой системе 302, встраивает такие атрибуты в файловую систему 304. Должно быть понятно, что компонент 310 атрибутов может представлять и/или соотносить такие атрибуты в качестве свойства с соответствующим элементом с файловой поддержкой. В одном примере компонент 310 атрибутов может обеспечивать обновление атрибута файла после закрытия файлового потока посредством запроса от файловой системы 302. Свойства могут быть обновлены посредством API, ассоциированным с файловой системой 304 (описано ниже).
Компонент 310 атрибутов может также обеспечивать атрибут элемента, который является вложенным типом, который может содержать атрибуты, обычные для всех элементов. Атрибуты могут быть устанавливаемым любым приложением, работающим посредством файловой системы 304 и/или API, ассоциированным с файловой системой 304. В качестве примера можно обеспечивать следующие атрибуты, которые должны быть использованы приложением и/или совместимостью с файловой системой 302.
Имя
Тип
Описание
IsArchive
FileStorageSystem.Boolean
ИСТИНА (TRUE), если элемент помечен как Архивный. Приложения могут устанавливать и использовать это свойство. FileStorageSystem может не интерпретировать/предписывать семантику этого свойства.Имеет значение по умолчанию, равное "истина"
IsHidden
FileStorageSystem.Boolean
ИСТИНА, если элемент помечен как скрытый. Приложения могут использовать этот атрибут, чтобы показать или скрыть элемент.FileStorageSystem может не интерпретировать/предписывать семантику этого свойства.Имеет значение по умолчанию, равное "ложь".
IsReadOnly
FileStorageSystem.Boolean
Элемент помечен как доступный только для чтения. Приложения могут «пожелать» предотвратить обновления для этих элементов.FileStorageSystem может не интерпретировать/предписывать семантику этого свойстваИмеет значение по умолчанию, равное "ложь".
IsSystem
FileStorageSystem.Boolean
Указывает, если элемент является частью операционной системы. Приложения могут обновлять это свойство и могут использовать для интерпретации его для отображения или других целей. FileStorageSystem может не интерпретировать/предписывать семантику этого свойства.Имеет значение по умолчанию, равное "ложь".
IsTemporary
FileStorageSystem.Boolean
Указывает, что элемент используется для временного хранения.FileStorageSystem может не интерпретировать/предписывать семантику этого свойства.Имеет значение по умолчанию, равное "ложь".
Адаптер 306 файловой системы может включать в себя компонент 312 обработчика метаданных, который позволяет по меньшей мере одному свойству оставаться в синхронизме между элементом, элементом с файловой поддержкой и файлом поддержки (например, файл в файловой системе 302, который представлен элементом с файловой поддержкой). Например, свойство может быть модифицировано в потоке файлов поддержки, причем компонент 312 обработчика метаданных может внедрять новое значение в соответствующее поле в элементе данных в файловой системе 304. В другом примере свойство может быть изменено посредством API, связанным с файловой системой 304; компонент 312 обработчика метаданных может смещать (переводить на более низкий уровень) новое значение в поток файлов поддержки в файловой системе 302. Должно быть понятно и очевидно, что отличный тип элемента с файловой поддержкой может иметь отличный компонент 312 обработчика метаданных, ассоциированный с ним.
Например, внедрение может быть выполнено компонентом 312 обработчика метаданных асинхронно после того, как файл был закрыт приложением. С другой стороны, смещение на более низкий уровень может быть асинхронным. Специальное свойство элемента может задавать, находятся ли внедренные свойства в синхронизме между элементом и файлом поддержки или нет. Состояние внедрения может задавать состояние ошибки внедрения элемента. Состояние может быть установлено асинхронно с закрытием файла на заданном по умолчанию потоке для элемента с файловой поддержкой. Состояние может быть равно NULL для элемента, не являющегося элементом с файловой поддержкой. Таблица, представленная ниже, изображает возможные значения для состояния внедрения.
Тип
Значение
Состояние
Описание
int32
0
READY (ГОТОВ)
Элемент изменен; внедрение выполнялось успешно.
1
STALE (Устаревший)
Элемент изменен; внедрение не выполнялось.
2
ERROR_STALE (Ошибка_устаревший)
Элемент изменен; внедрение выполнялось и потерпело неудачу по некоторой фатальной причине.
3
ERROR_DELAYED(Ошибка_задержанная)
Элемент изменен; внедрение выполнялось и потерпело неудачу по некоторой случайной причине.
Должно быть понятно, что файловая система 306 может использовать таблицу элементов, в которой сохранен по меньшей мере один элемент и/или элемент с файловой поддержкой. Таблица элементов может использовать таблицу файловых потоков и/или таблицу атрибутов файла, которая ассоциирует (связывает) файловый поток и/или атрибут файла с соответствующим элементом с файловой поддержкой, который может быть сохранен в таблице элементов. Таблица файловых потоков и/или таблица атрибутов файла могут сохранять соответствующий файловый поток и атрибут файла в связи с элементом, который должен быть элементом с файловой поддержкой (например, содержащим файловый поток и/или файл для предоставления функциональных возможностей и/или заполнения по меньшей мере одного свойства). Должно быть понятно, что атрибуты файла могут быть сохранены в таблице элементов. Семантика атрибутов файла может быть осуществлена, например, с помощью обновления API.
Кроме того, глобальная таблица элементов может содержать следующие добавления для элемента с файловой поддержкой.
Имя
Тип
Описание
(Текущие столбцы Tableltem)
LastAccessTime
FileStorageSystem.DateTime
Последний раз, когда обращались к файлу или каталогу. «База» не обновляет этот атрибут: может обновляться при необходимости. Имеет очень высокую частоту обновления и, следовательно, не является синхронизированным.
StreamSize
BigInt
Размер потока.
AllocationSize
Bigint
Размер распределения (назначения) для файлового потока.
PromotionStatus
Int32
Флаги ошибки внедрения.
Например, таблица файловых потоков может иметь следующие свойства.
Имя
Тип
Описание
Itemld
Uniqueidentifier не null (не пустой)
Идентификационная информация элемента FileStorageSystem.
Rowld
Uniqueidentifier не null (не пустой). ROWGUIDCOL уникальное значение по умолчанию (newid())
Уникальный идентификатор для каждого файлового потока.
Поток
varbinary(max) FILESTREAM не null (не пустой)
Файловый поток.
Ниже иллюстрируется пример файловой системы, которая использует хранилище файлового потока, в котором осуществлена 32-битовая система, и не рассматривается как ограничение настоящего изобретения. Ниже приведен пример атрибутов для 32-разрядной файловой системы, которая может быть поддержана системой 300 и системой хранения файлов (FSS, СХФ) (например, файловой системой 304).
Продолжая предыдущий пример, следующие атрибуты могут частично поддерживаться и/или полностью поддерживаться.
Фиг.4 иллюстрирует систему 400, которая облегчает адаптацию и/или встраивание файловой системы с несопоставимой файловой системой. Адаптер 406 файловой системы может обеспечивать согласование с файловой системой 402 и файловой системой 404. Файловая система 402 может быть основана на файловом потоке и включать в себя каталог, папку и файл. Например, файловая система 402 может быть 16-битовой файловой системой, 32-битовой файловой системой (например, файловой системой с FAT), в которой API (например, 16-битовый API, 32-битовый API) использует такую файловую систему для соответствующей операционной системы. Файловая система 404 может быть системой, основанной на сложном типе, и включает в себя тип, элемент, свойство, отношения, экземпляр типа, контейнер и т.д. Должно быть понятно, что файловая система 404 должна представить единицы информации в качестве объектов с ассоциированными метаданными и/или свойствами. Кроме того, файловая система 402 и файловая система 404 могут быть по существу подобны файловым системам 302, 304, 202, 204, 102, и 104 на фиг. 3, 2 и 1, соответственно.
Адаптер 406 файловой системы может создавать элемент с файловой поддержкой на основании, по меньшей мере, файловой структуры файловой системы 402, чтобы обеспечить "бесшовную" интеграцию в файловую систему 404. Элемент с файловой поддержкой может быть заполнен и/или расширен файлом и/или файловым потоком, чтобы создать и/или подключить свойства, используемые файловой системой 404. Этот элемент с файловой поддержкой может позволить использовать API для файловой системы 402 в файловой системе 404 независимо от формата API, требующего этот файловый поток, потому что элемент с файловой поддержкой является типом, который имеет файл и/или файловый поток, ассоциированный с ним. Другими словами, элемент с файловой поддержкой является мостом между файловой системой 402 и файловой системой 404.
Адаптер 406 файловой системы может включать в себя фантомный компонент 410, который обеспечивает синхронизацию для свойства элемента с файловой поддержкой. Фантомный компонент 410 может создавать фантомный элемент, который является точной копией (репликой) другого элемента с файловой поддержкой, но не содержит файловый поток. Кроме того, фантомный компонент 410 может обеспечивать "создание фантома", что является операцией создания фантомного элемента и/или преобразования существующего элемента в фантомный элемент. Фантомный компонент 410 может также обеспечивать "расформирование фантома", что является операцией для преобразования фантомного элемента в регулярный (обычный) элемент. Хотя фантомный компонент 410 включен в адаптер 406 файловой системы, должно быть понятно, что фантомный компонент 410 может быть отдельным компонентом и/или автономным модулем.
Нижеследующая таблица может обеспечивать дальнейшее описание относительно возможностей фантомного компонента 410.
Имя
Направление
Тип
Описание
Itemld
В
Guid
Идентификатор элемента для формирования фантома/расформирования фантома
IsGhost
В
BIT
Определяет, должен ли элемент быть создан как фантомный или расформирован из фантома.
concurrencyToken
В
BIGINT
concurrencyToken - ожидаемое значение маркера взаимосовместимости элемента. Если входное значение равно NULL, никакой проверки не делают. Значение по умолчанию - NULL.
В одном примере фантомный компонент 410 может создавать объект как фантомный для файловой системы 404. Если элемент не является элементом с файловой поддержкой, может быть возвращена ошибка. Если элемент уже является фантомным, эта операция является пустой операцией и возвращает "успешное выполнение". Фантомный компонент 410 может копировать эту информацию на все подобъекты в этом фантомном дереве элементов (например, все внедренные элементы, отношения и/или расширения) и устанавливает бит истины, чтобы информировать, что состояние объекта - "фантомный". Содержимое файлового потока может быть удалено для фантомного элемента после того, как произошло создание фантома (например, оно устанавливает файловый поток равным NULL).
В другом примере объект может быть расформированным фантомом посредством фантомного компонента 410. Если элемент не является элементом с файловой поддержкой, возвращается ошибка. Если элемент не является фантомным, операция является пустой операцией и возвращает "успешное выполнение". Бит может быть установлен равным "ложь", чтобы информировать о состоянии объекта, согласно которому объект не является фантомным. Файловый поток нулевой длины может быть создан и добавлен к таблице файлового потока. Расформирование фантома не восстанавливает содержимое файлового потока, и вызывающий (объект) должен явно заполнить файловый поток соответствующим содержимым (например, предпочтительно, по существу посредством аналогичной транзакции). В одном случае шаблон использования для операции расформирования фантома может быть следующим: открыть транзакцию; расформировать фантомный элемент; заполнить/восстановить содержимое файлового потока; и зафиксировать транзакцию.
Адаптер 406 файловой системы может включать в себя компонент туннелирования атрибутов (ATC) 412. ATC 412 обеспечивает туннелирование атрибута, чтобы облегчить изменение имени и/или экономию ресурсов в пределах файловой системы 404. Файловая система 402 использует временный файл, причем такой файл создается при открытии, доступе и/или редактировании. Когда файл сохраняется в файловой системе 402, имена временного файла и сохраненного файла меняются. Например, файл food.doc может быть создан, и к нему осуществлено обращение в файловой системе 402. При осуществлении доступа в файловой системе 402 может быть создан файл f1.tmp. Файл food.doc может быть перемещен в f2.tmp, причем f1.tmp перемещен в food.doc. Файл f2.tmp может быть затем удален в файловой системе 402. Однако на основании структуры файловой системы 404 и использования элемента для представления модулей информации вызов API для обновления имени является дорогим ресурсом. Обычно ATC 412 допускает обмен ассоциированным файловым потоком между двумя элементами с файловой поддержкой. Например, файловые потоки, сохраненные в таблице файловых потоков, могут использоваться посредством ATC 412, при этом идентификаторы элементов двух файловых потоков могут быть обменены. Хотя изображен как включенный в адаптер 406 файловой системы, должно быть понятно, что ATC 412 может быть автономным компонентом, включенным в любой подходящий компонент и/или их комбинацию.
Фиг.5 иллюстрирует элемент с файловой поддержкой, созданный для облегчения согласования множества несопоставимых файловых систем. В частности, элемент 502 с файловой поддержкой может обеспечивать согласованность между файловой системой 504 и файловой системой 506. Должно быть понятно, что файловая система 504 может быть по существу аналогичной файловым системам 402, 302, 202 и 102 на фиг. 4, 3,2 и 1, соответственно. Кроме того, файловая система 506 может быть по существу аналогичной файловым системам 404, 304, 204 и 104 на фиг. 4, 3, 2 и 1, соответственно.
Элемент 502 с файловой поддержкой может обеспечивать семантический уровень 508, который обеспечивает семантику (например, реализованную посредством обновления API, и/или компонентом обработчика метаданных, описанным выше). Элемент 502 с файловой поддержкой также включает в себя файловый поток 510. Файловый поток 510 может иметь технологию файловой системы 504. Приложения, связанные (ассоциированные) с файловой системой 504 (например, 32-битное приложение и/или API), могут оперировать непосредственно на файловых потоках для файлов, сохраненных в файловой системе 506, используя элемент 502 с файловой поддержкой. Многие из технологий файловой системы 504, например, но не ограничиваясь ими, управление кэшем, потоковая передача данных, блокировка байтового диапазона и отображение памяти не должны быть повторно реализованы файловой системой 506. Лежащие в основе потоки являются ассоциированными к элементу файловой поддержки 502. Кроме того, файловый поток 510 может быть защищен по меньшей мере одним списком управления доступом (ACL). Файловый поток 510 может быть представлен в таблице файловых потоков, например, как в следующей таблице.
Имя
Тип
Описание
Itemld
Uniqueidentifier не null
Идентификационная информация элемента системы хранения файлов.
Rowld
Uniqueidentifier не null ROWGUIDCOL уникальное значение по умолчанию (newid())
Уникальный идентификатор для каждого файлового потока.
Stream
Varbinary(max) FILESTREAM не null
Файловый поток.
Кроме того, элемент 502 с файловой поддержкой может также включать в себя атрибут 512 файла, состояние 514 объекта, модули 516 изменения и данные 518 элемента. Атрибут 512 файла может быть сохранен в таблице элементов, причем семантика атрибута файла может быть реализована, например, посредством обновленного API. Состояние 514 объекта может иметь атрибуты, сохраненные в поле определяемого пользователем типа (UDT) элемента состояния объекта. Семантика для атрибутов состояния объекта может быть реализована посредством этого обновленного API и/или компонента обработчика метаданных (не показано). Кроме того, элемент 502 с файловой поддержкой может использовать модули 516 изменения, чтобы изменить по меньшей мере один модуль и/или данные 518 элемента, которые представляют данные, относящиеся к элементу.
В одном примере нижеследующая таблица может представлять по меньшей мере одну характеристику состояния 514 объекта.
Имя
Описание
Тип
IsCompoundltemType
Boolean
ИСТИНА, если объект имеет тип Item и объявлен как "составной элемент" в объявлении схемы. ЛОЖЬ, если объект имеет тип Item и НЕ объявлен как "составной элемент" (например, объявлен как родовой контейнер) в объявлении схемы. Если объект не имеет тип Item (например, объект является ссылкой, фрагментом элемента или расширением), значение этого бита будет тем же, что элемент его владельца/источника. Имеет значение по умолчанию, равное "истина".
RootCompoundltemld
Guid
Хранит Itemld самого верхнего составного элемента Item, в котором этот объект содержится Значение равно NULL, если он не является частью иерархии составных элементов (например, он является " истинным родовым контейнером"). Если этот объект является самым верхним составным элементом корня (Root), значение может быть тем же, что и идентификатор элемента. Если этот объект содержится в пределах иерархии составных элементов, значением является идентификатор элемента самого верхнего RootCompound элемента иерархии. Имеет значение по умолчанию, равное "ложь"
IsRootFileBackedltem
Boolean
ИСТИНА, если элемент является корневым элементом с файловой поддержкой. ЛОЖЬ, если элемент не является элементом с файловой поддержкой или если элемент не является корневым элементом с файловой поддержкой (например, элементом, содержащимся в дереве элементов с файловой поддержкой). Для всех других объектов (ссылки, расширения и фрагменты элементов), этот флаг имеет то же значение, что элемент их собственника/источника. Имеет значение по умолчанию, равное "ложь"
RootFileBackedltemld
Guid
Хранит Itemld корневого элемента с файловой поддержкой, в котором этот объект содержится. Значение равно NULL, если он не является частью элемента с файловой поддержкой. Если этот объект - корневой элемент с файловой поддержкой, значение может быть тем же, что и идентификатор элемента. Если этот объект содержится в дереве элементов с файловой поддержкой, значение есть идентификатор элемента корневого элемента с файловой поддержкой.
IsGhost
Boolean
ИСТИНА, если объект является (частью) фантомной точной копией другого элемента. Имеет значение по умолчанию, равное "ложь"
Фиг.6 иллюстрирует систему 600, которая облегчает согласование ассоциированной с файловым потоком файловой системы и ассоциированной с метаданными файловой системы. Адаптер 606 файловой системы может обеспечивать согласованность и/или «бесшовную» интеграцию между файловой системой 602 (например, основанной на файловом потоке системой, использующей 32-битовые API) и файловой системой 604 (например, основанной на объектах системой, использующей элемент, тип, свойство и отношения для представления модулей информации). Должно быть понятно, что файловая система 602 может быть по существу аналогичной файловым системам 504, 402, 302, 202 и 102 на фиг. 5, 4, 3, 2 и 1, соответственно. Дополнительно, файловая система 604 может быть по существу аналогичной файловым системам 506, 404, 304, 204 и 104 на фиг. 5, 4, 3, 2 и 1, соответственно.
Компонент 608 ориентированного ациклического графа (DAG) может использоваться вместе с настоящим изобретением. Компонент 608 DAG может использовать ориентированный граф без каких-либо циклов, в котором для любой вершины (узла) не существует никакой направленной ветви, начинающейся и заканчивающейся в такой вершине (узле). Началом является вершина без входящих ребер, в то время как стоком - вершина без выходящих ребер. Конечный DAG имеет по меньшей мере одно начало и по меньшей мере один сток. Длина DAG является длиной (например, число ребер самого длинного направленного пути). Должно быть понятно, что файловая система 602 не содержит DAG, в то время как файловая система 604 может использовать компонент 608 DAG посредством адаптера 606 файловой системы. Хотя изображен как автономный модуль, компонент 608 DAG может быть включен в адаптер 606 файловой системы и/или любой другой подходящий компонент. Используя компонент 608 DAG, файл может одновременно описывать два каталога. Например, когда файл удаляется из каталога и физически удаляется, файл может все еще быть родственным ему.
Фиг.7 иллюстрирует систему 700, которая использует интеллектуальные возможности, чтобы облегчить согласование файловой системы с несопоставимой файловой системой. Система 700 может включать в себя файловую систему 702, файловую систему 704, адаптер 706 файловой системы и интерфейс 108, все из которых могут быть по существу аналогичны соответствующим компонентам, описанным со ссылками на предыдущие чертежи. Система 700 дополнительно включает в себя интеллектуальный компонент 708. Интеллектуальный компонент 708 может использоваться адаптером 706 файловой системы, чтобы облегчить согласование по меньшей мере двух несопоставимых файловых систем. Например, интеллектуальный компонент 708 может использоваться, чтобы облегчить определение файловой структуры файловой системы 702.
Должно быть понятно, что интеллектуальный компонент 708 может обеспечивать «рассуждение» или логический вывод состояний системы, окружения и/или пользователя из набора наблюдений, полученных посредством событий и/или данных. Вывод может использоваться, чтобы идентифицировать специфический контекст или действие, или может, например, генерировать распределение вероятности по состояниям. Вывод может быть вероятностным - то есть вычислением распределения вероятности по состояниям, представляющим интерес, на основании рассмотрения данных и событий. Вывод может также относиться к методам, используемым для создания событий более высокого уровня из набора событий и/или данных. Такой вывод приводит к конструкции новых событий или действий из набора наблюдаемых событий и/или сохраненных данных о событиях, действительно ли события являются коррелированными в малой временной области, и происходят ли события и данные из одного или нескольких событий и источников данных. Различные схемы и/или системы классификации (явно и/или неявно обученные) (например, машины опорных векторов, нейронные сети, экспертные системы, байесовы сети доверия, нечеткая логика, механизмы (системы) слияния данных,...) могут использоваться в связи с выполнением автоматического действия и/или действия по выведению в связи с настоящим изобретением.
Классификатор является функцией, которая отображает входной вектор атрибутов x=(x1, x2, x3, x4, xn), в доверие, что входные данные принадлежат классу, то есть f(x)=доверие(класс). Такая классификация может использовать основанный на вероятности и/или статистике анализ (например, разложение на утилиты анализа и затраты) для прогнозирования или (логического) вывода действия, которое пользователь желает, чтобы оно было автоматически выполнено. Машина опорных векторов (SVM) является примером классификатора, который может использоваться. SVM функционирует посредством нахождения гиперповерхности в пространстве возможных входных данных, и эта гиперповерхность пытается отделить инициирующие критерии от неинициирующих событий. Интуитивно это делает классификацию корректной для тестирования данных, которые являются близкими, но не идентичными обучающим данным. Другие подходы классификации ориентированных или неориентированных моделей включают в себя, например, байесовы наивы, байесовы сети, деревья решений, нейронные сети, нечеткие логические модели и могут использоваться вероятностные модели классификации, обеспечивающие различные шаблоны независимости. Классификация, как используется здесь, также включает в себя статистическую регрессию, которая используется для разработки моделей приоритета.
Компонент 710 представления может обеспечивать различные типы интерфейсов пользователя, чтобы облегчить взаимодействие между пользователем и любым компонентом, подсоединенным к адаптеру 706 файловой системы. Как изображено, компонент 710 представления является отдельным объектом, который может использоваться с адаптером 706 файловой системы. Однако должно быть понятно, что компонент 710 представления и/или подобные компоненты вида могут быть включены в адаптер 706 файловой системы и/или автономный модуль. Компонент 710 представления может обеспечить один или более графических интерфейсов пользователя (GUI, ГИП), интерфейсы командной строки и т.п. Например, может быть представлен (визуализирован) ГИП, который обеспечивает пользователя областью или средством для загрузки, импортирования, считывания и т.д. данных, и может включать в себя область для представления результатов как таковых. Эти области могут содержать известные текстовые и/или графические области, содержащие диалоговые поля, статические элементы управления, падающие меню, списки, всплывающие меню, средства управления редактированием, комбинированные управляющие элементы, "радио" кнопки, флаговые кнопки, кнопки для нажатия и графические поля. Кроме того, могут использоваться утилиты для облегчения представления, такие как вертикальные и/или горизонтальные полосы прокрутки для передвижения и кнопки панели для определения, будет ли область просматриваемой. Например, пользователь может взаимодействовать с одним или более компонентов, соединенных с адаптером 706 файловой системы.
Пользователь может также взаимодействовать с областями для выбора и обеспечения информации, например, посредством различных устройств типа мыши, трекбола, вспомогательной клавиатуры, клавиатуры, пера и/или речевой активации. Как правило, механизм типа кнопки (для) нажатия или клавиши ENTER на клавиатуре может использоваться вслед за вводом информации для инициализации поиска. Однако должно быть понятно, что изобретение этим не ограничивается. Например, простое подсвечивание флаговой кнопки может инициализировать передачу информации. В другом примере может использоваться интерфейс командной строки. Например, интерфейс командной строки может запрашивать (например, посредством текстового сообщения на дисплее и аудиосигнала) у пользователя информацию посредством выдачи текстового сообщения. Пользователь затем может ввести подходящую информацию, например алфавитно-цифровой входной сигнал, соответствующий опции, обеспеченной в подсказке интерфейса, или ответ на вопрос, изложенный в подсказке. Должно быть понятно, что интерфейс командной строки может быть использован в связи с ГИП и/или API. Кроме того, интерфейс командной строки может использоваться совместно с аппаратными средствами (например, видеоплатой) и/или дисплеями (например, черно-белым и EGA) с ограниченной графической поддержкой и/или каналами связи с узкой полосой частот.
Фиг. 8-10 иллюстрируют методологии в соответствии с настоящим изобретением. Для простоты объяснения методологии изображены и описаны как последовательность действий. Должно быть понятно и очевидно, что настоящее изобретение не ограничено проиллюстрированными действиями и/или порядком действий, например, действия могут происходить в различном порядке и/или одновременно, и с другими действиями, не представленными и описанными здесь. Кроме того, не все иллюстрированные действия могут требоваться, чтобы осуществить методы в соответствии с настоящим изобретением. Кроме того, специалистам понятно и очевидно, что методы могут быть альтернативно представлены как ряд взаимосвязанных состояний посредством диаграммы состояний или событий.
Фиг.8 иллюстрирует методологию 800, которая облегчает согласование и/или обеспечение однородности для по меньшей мере двух несопоставимых файловых систем. Первая файловая система может быть системой хранения файлов, в которой структура основана на файловом потоке и/или каталоге. Первая файловая система может использовать файловый поток так, что приложение и/или API может расширять файловый поток для обеспечения более сложной структуры. Вторая файловая система может быть более сложной моделью, в которой элемент, подэлемент, свойство и отношения определены, чтобы обеспечить представление информации во второй файловой системе как экземпляры сложных типов. Элемент может быть определен как наименьшая единица совместимости во второй файловой системе, которая может быть независимо защищена, преобразована в последовательную форму, синхронизирована, скопирована, для нее выполнено резервное копирование/восстановление и т.д. Элемент является экземпляром типа, причем все элементы во второй файловой системе могут быть сохранены в едином глобальном экстенте элементов. Вторая файловая система может быть основана по меньшей мере на одном элементе и/или контейнерной структуре. Вторая файловая система может быть платформой хранения, которая открывает метаданные с расширенными функциональными возможностями, которые скрыты в файлах в качестве элементов.
На этапе 802 первая файловая система, основанная на файловом потоке, может быть проанализирована. Такой анализ может определять структуру файла и содержимое, для которого должно быть использовано, чтобы обеспечить согласованность. На этапе 804 элемент с файловой поддержкой может быть создан на основании, по меньшей мере, анализа. Например, анализ может определять 32-битовую систему хранения файлов и число концевых узлов (вершин), ассоциированных с такой структурой. Таким образом, элемент с файловой поддержкой может быть создан для каждого концевого узла, ассоциированного с первой файловой системой, в то время как элемент может использоваться для представления файла и/или каталога, который не является вершиной (узлом). Элемент с файловой поддержкой может быть элементом во второй файловой системе, которая полагается на файл и/или файловый поток, чтобы заполнить некоторые или все свои свойства. Элемент с файловой поддержкой может действовать в качестве моста между первой файловой системой и второй файловой системой. На этапе 806 элемент с файловой поддержкой может использоваться для обеспечения согласованности между двумя несопоставимыми файловыми системами, основываясь по меньшей мере частично, на первой файловой системе, использующей файловый поток и файл, и второй файловой системе, встраивающую элемент с файловой поддержкой, который содержит файл и/или файловый поток, который может относиться к первой файловой системе.
Фиг.9 иллюстрирует методологию 900 для согласования одной файловой системы с несопоставимой файловой системой. На этапе 902 анализируется первая файловая система, которая использует файл и/или файловый поток в качестве своей структуры. На основе такого анализа создают элемент на этапе 904 для каждого каталога и/или файла, который не является концевой вершиной (концевым узлом) с первой файловой системой. На этапе 906 может быть определен концевой узел, существующий в первой файловой системе, при этом элемент с файловой поддержкой создан для него. Этот элемент с файловой поддержкой является элементом, ассоциированным со второй файловой системой, использующей сложные экземпляры типа для представления единицы информации. На этапе 908 элемент с файловой поддержкой расширяют и/или заполняют файлом, файловым потоком, атрибутом, характеристикой защиты и т.д., чтобы представлять файл как элемент (данных) во второй файловой системе. На этапе 910 элемент с файловой поддержкой используется для адаптации (согласования) первой файловой системы со второй файловой системой.
Фиг.10 иллюстрирует методологию 1000, которая облегчает согласование структурированной как файловый поток файловой системы и ассоциированной с метаданными файловой системой. На этапе 1002 анализируется структурированная как файловый поток файловая система (например, упомянутая как первая файловая система). На этапе 1004 элемент с файловой поддержкой может быть сформирован на основании, по меньшей мере частично, анализа первой файловой системы. Элемент с файловой поддержкой является элементом, ассоциированным со второй файловой системой, причем файл и/или файловый поток может расширять по меньшей мере одно из его свойств. На этапе 1006 элемент с файловой поддержкой может использоваться для согласования первой файловой системы со второй файловой системой.
На этапе 1008 может быть обеспечено создание фантома, чтобы гарантировать целостность атрибутов и синхронизацию между первой файловой системой и второй файловой системой. Например, фантомный элемент может быть создан таким, что он является точной копией другого элемента с файловой поддержкой, но не содержит файловый поток. Кроме того, может быть обеспечено создание фантома, что является операцией для создания фантомного элемента и/или преобразования существующего элемента в фантомный элемент. Дополнительно, может использоваться расформирование фантома, что является операцией для преобразования фантомного элемента в обычный элемент. На этапе 1010 атрибут из первой файловой системы может быть встроен и/или использоваться с элементом с файловой поддержкой, ассоциированным со второй файловой системой. Первая файловая система может содержать атрибут, которым может быть, но не ограничиваясь ими, доступный только для чтения, сжатый, архивированный файл и т.д., причем бит и/или биты могут представлять такие атрибуты. Должно быть понятно, что атрибуты могут быть включены во вторую файловую систему посредством элемента с файловой поддержкой.
На этапе 1012 может использоваться туннелирование атрибута и/или DAG. Туннелирование атрибута может обеспечивать обмен файлового потока между по меньшей мере двумя элементами с файловой поддержкой, чтобы обеспечить экономию ресурсов и/или изменение имен между временными файлами во второй файловой системе. DAG может обеспечивать граф соединенных элементов, который не имеет циклов. На этапе 1014 API первой файловой системы могут быть использованы во второй файловой системе, используя элемент с файловой поддержкой, который обеспечивает «бесшовную» интеграцию. Другими словами, элемент с файловой поддержкой содержит свойства метаданных, ассоциированные с элементом, а также с файловым потоком, ассоциированным с элементом. Элементы с файловой поддержкой могут управляться API, ассоциированными со второй файловой системой, а также частью API первой файловой системы.
Чтобы обеспечить дополнительный контекст для осуществления различных аспектов настоящего изобретения, Фиг. 11-12 и нижеследующее описание предназначены для обеспечения краткого общего описания подходящей вычислительной среды, в которой могут быть осуществлены различные аспекты настоящего изобретения. В то время как изобретение описано выше в общем контексте выполняемых компьютером команд компьютерной программы, которая выполняется на локальном компьютере и/или удаленном компьютере, специалисту ясно, что изобретение также может быть осуществлено в комбинации с другими программными модулями. В общем случае программные модули включают в себя подпрограммы, программы, компоненты, структуры данных и т.д., которые выполняют конкретные задачи и/или реализуют специфические абстрактные типы данных.
Кроме того, специалисту ясно, что способы изобретения могут быть осуществлены с другими конфигурациями компьютерной системы, включая в себя одиночный процессор или многопроцессорные компьютерные системы, миникомпьютеры, универсальные компьютеры, также как персональные компьютеры, карманные вычислительные устройства, основанную на микропроцессорах и/или программируемую бытовую электронику и т.п., каждая из которых может оперативно связываться с одним или более связанными устройствами. Иллюстрированные аспекты изобретения могут также быть осуществлены в распределенных вычислительных средах, где некоторые задачи выполняются удаленными устройствами обработки, которые связаны через коммуникационную сеть. Однако некоторые, если не все, аспекты изобретения могут быть осуществлены на автономных компьютерах. В распределенной вычислительной среде программные модули могут находиться в локальных и/или удаленных запоминающих устройствах памяти.
Фиг.11 изображает схематическую блок-схему типовой вычислительной среды 1100, с которой может взаимодействовать настоящее изобретение. Система 1100 включает в себя один или более клиента(ов) 1110. Клиент(ы) 1110 может быть аппаратным и/или программным обеспечением (например, потоки, процессы, вычислительные устройства). Система 1100 также включает в себя один или более серверов 1120. Серверы 1120 могут быть аппаратным и/или программным обеспечением (например, потоки, процессы, вычислительные устройства). Серверы 1120 могут заключать в себе потоки для выполнения преобразований, например, используя настоящее изобретение.
Одна возможная связь между клиентом 1110 и сервером 1120 может быть в форме пакета данных, адаптированного для передачи между двумя или более компьютерными процессами. Система 1100 включает в себя инфраструктуру 1140 связи, которая может использоваться для облегчения связи между клиентом(ами) 1110 и сервером(ами) 1120. Клиент(ы) 1110 оперативно связан с одним или более клиентским хранилищем(ами) 1150 данных, которые могут использоваться для хранения информации, локальной для клиента(ов) 1110. Точно так же сервер(ы) 1120 оперативно связан(ы) с одним или более сервером(ами) 1130 хранения данных, которые могут использоваться для хранения информации, локальной для серверов 1120.
Со ссылкой на фиг.12 примерная среда 1200 для осуществления различных аспектов изобретения включает в себя компьютер 1212. Компьютер 1212 включает в себя процессор 1214, системную память 1216 и системную шину 1218. Системная шина 1218 подсоединяет компоненты системы, включая, но не ограничиваясь ими, системную память 1216 к процессору 1214. Процессор 1214 может быть любым из различных доступных процессоров. Также могут использоваться архитектура со сдвоенными микропроцессорами и другие многопроцессорные архитектуры в качестве процессора 1214.
Системная шина 1218 может быть любой из нескольких типов шинных структур, включающих в себя шину памяти или контроллер памяти, периферийную шину или внешнюю шину, и/или локальную шину, используя любое множество доступных шинных архитектур, включая, но не ограничиваясь ими, архитектуру промышленного стандарта (ISA), микроканальную архитектуру (MSA), расширенную ISA (EISA), встроенный интерфейс (дисковых) устройств (IDE), локальную шину VESA (VLB), шину взаимодействия периферийных компонентов (PCI), шину Card Bus,
универсальную последовательную шину (USB), расширенный графический порт (AGP), шину Международной ассоциации производителей плат памяти для персональных компьютеров (PCMCIA), шину Firewire (IEEE 1394) и интерфейс малых компьютерных систем (SCSI).
Системная память 1216 включает в себя энергозависимую память 1220 и энергонезависимую память 1222. Базовая система ввода/вывода (BIOS), содержащая основные подпрограммы для передачи информации между элементами в компьютере 1212, например, во время запуска, сохранена в энергонезависимой памяти 1222. Посредством иллюстрации, а не ограничения, энергонезависимая память 1222 может включать в себя постоянное запоминающее устройство (ROM, ПЗУ), программируемое ROM (PROM, ППЗУ), электрически программируемое ROM (EPROM, ЭППЗУ), электрически стираемое программируемое ROM (EEPROM, ЭСППЗУ) или флэш-память. Энергозависимая память 1220 включает в себя оперативную память (RAM, ОЗУ), которая действует в качестве внешней кэш-памяти. Посредством иллюстрации, а не ограничения, RAM доступна во многих формах, например, в форме статического ОЗУ (SRAM), динамического ОЗУ (DRAM), синхронного динамического ОЗУ (SDRAM), SDRAM с двойной скоростью передачи данных (DDR SDRAM), расширенное SDRAM (ESDRAM), DRAM типа Synchlink (SLDRAM), ОЗУ «Direct Rambus» (RDRAM), динамическое ОЗУ Direct Rambus (DRDRAM) и динамическое ОЗУ Rambus (RDRAM).
Компьютер 1212 также включает в себя сменные/несменные, энергозависимые/энергонезависимые компьютерные носители данных. Фиг. 12 иллюстрирует, например, накопитель 1224 на диске. Накопитель 1224 на диске включает в себя, но не ограничивается этим, устройства, подобные дисководу магнитных дисков, дисководу гибких дисков, накопителю на магнитной ленте, Jaz-накопителю, Zip-накопителю, накопителю LS-100, плате флэш-памяти или типа "memory stick". Кроме того, накопитель 1224 на диске может включать в себя носители данных отдельно или в комбинации с другим носителем данных, включая, но не ограничиваясь ими, дисковод оптических дисков, типа накопителя на компакт-диске (CD-ROM), накопителя для записываемых дисков (CD-R накопитель), накопителя для перезаписываемых дисков (CD-RW накопителя) или цифровых универсальных дисках (DVD-ROM). Чтобы облегчить подключение устройств памяти 1224 на диске к системной шине 1218, обычно используется сменный или несменный интерфейс типа интерфейса 1226.
Должно быть понятно, что фиг.12 описывает программное обеспечение, которое действует как посредник между пользователями и основными компьютерными ресурсами, описанными в подходящей среде 1200. Такое программное обеспечение включает в себя операционную систему 1228. Операционная система 1228, которая может быть сохранена в памяти 1224 на диске, действует так, чтобы управлять и распределять ресурсы компьютерной системы 1212. Системные приложения 1230 пользуются преимуществом управления ресурсами операционной системой 1228 посредством программных модулей 1232 и данных 1234 программ, сохраненных или в системной памяти 1216, или памяти 1224 на диске. Должно быть понятно, что настоящее изобретение может быть осуществлено с различными операционными системами или комбинациями операционных систем.
Пользователь вводит команды или информацию в компьютер 1212 посредством устройств(а) 1236 ввода данных. Устройства 1236 ввода данных включают в себя, но не ограничиваются ими, устройство управления позицией, типа мыши, шарового указателя, пера, сенсорной панели, клавиатуры, микрофона, джойстика, игровой клавиатуры, спутниковой антенны, сканера, платы TV-тюнера, цифрового фотоаппарата, цифровой видеокамеры, web-камеры и т.п. Эти и другие устройства ввода данных подсоединяются к процессору 1214 через системную шину 1218 через порт(ы) 1238 интерфейса. Порт(ы) 1238 интерфейса включает в себя, например, последовательный порт, параллельный порт, игровой порт и универсальную последовательную шину (USB). Устройство(а) вывода 1240 используют часть тех же портов, что и устройство(а) 1236 ввода данных. Таким образом, например, порт USB может использоваться для обеспечения ввода на компьютер 1212 и вывода информации из компьютера 1212 на устройство вывода 1240. Адаптер 1242 вывода обеспечивается, чтобы иллюстрировать, что имеются некоторые устройства вывода 1240, подобные мониторам, динамикам и принтерам, помимо других устройств 1240 вывода, которые требуют специальных адаптеров. Адаптеры 1242 вывода включают в себя, в качестве иллюстрации, а не ограничения, видео- и звуковые платы, которые обеспечивают средства связи между устройством 1240 вывода и системной шиной 1218. Должно быть отмечено, что другие устройства и/или системы устройств обеспечивают обе возможности ввода и вывода, такие как удаленные компьютеры 1244.
Компьютер 1212 может работать в среде с сетевой структурой, используя логические соединения с одним или более удаленными компьютерами, такими как удаленные компьютеры 1244. Удаленными компьютерами 1244 могут быть персональный компьютер, сервер, маршрутизатор, сетевой компьютер, рабочая станция, основанный на микропроцессоре прибор, равноправное устройство или другой обычный сетевой узел и т.п., и обычно включают в себя многие или все элементы, описанные относительно компьютера 1212. Только с целью краткости, запоминающее устройство 1246 хранения проиллюстрировано с удаленным(и) компьютером(ами) 1244. Удаленный(е) компьютер(ы) 1244 логически связан(ы) с компьютером 1212 через сетевой интерфейс 1248 и затем физически связан(ы) через соединение 1250 связи. Сетевой интерфейс 1248 охватывает проводные и/или беспроводные сети связей, такие как локальные сети (ЛС, LAN) и глобальные сети (WAN, ГС). Технологии ЛС включают в себя распределенный интерфейс передачи данных по волоконно-оптическим каналам (FDDI), распределенный проводной интерфейс передачи данных (CDDI), сеть Ethernet, сеть с передачей маркера (Token Ring)
и т.п. Технологии ГС включают в себя, но не ограничиваются ими, двухточечные соединения, сети с коммутацией каналов, подобные цифровой сети с предоставлением комплексных услуг (ISDN) и их разновидности, сети с коммутацией пакетов и цифровые абонентские линии (DSL).
Соединения 1250 связи относятся к аппаратным средствам/программному обеспечению, используемым, чтобы соединить сетевой интерфейс 1248 с шиной 1218. В то время как соединение 1250 связи показывается для ясности внутри компьютера 1212, оно может также быть внешним к компьютеру 1212. Аппаратные средства/программное обеспечение, необходимые для соединения с сетевым интерфейсом 1248, включают в себя, только для целей примера, внутренние и внешние технологии, например, модемы, включающие в себя модемы обычной телефонной сети, кабельные модемы и DSL модемы, адаптеры ISDN и платы Ethernet.
Описанное выше включает в себя примеры настоящего изобретения. Конечно, невозможно описать каждую мыслимую комбинацию компонентов или методологий с целью описания настоящего изобретения, но специалисту ясно, что возможны много других комбинаций и модификаций настоящего изобретения. Соответственно, настоящее изобретение предназначено для охвата всех таких изменений, обновлений и модификаций, которые подпадают под форму и объем прилагаемой формулы изобретения.
В частности, и в отношении различных функций, выполняемых вышеописанными компонентами, устройствами, схемами, системами и т.п., термины (включая ссылку на "средства"), используемые для описания таких компонентов, предназначены, чтобы соответствовать, если иначе не обозначено, любому компоненту, который выполняет указанную функцию описанного компонента (например, функциональный эквивалент), даже тех, что не являются структурно эквивалентными раскрытой структуре, которая выполняет функцию в проиллюстрированных примерных аспектах изобретения. В этом отношении также понятно, что изобретение включает в себя систему, а также считываемую компьютером среду, имеющую выполняемые компьютером команды для выполнения действий и/или событий согласно различным способам изобретения.
Кроме того, в то время как специфический признак изобретения, возможно, был раскрыт относительно только одного из нескольких вариантов выполнения, такой признак может быть объединен с одним или более другими признаками других вариантов выполнения, как требуется и выгодно для любого данного или специфического применения. Кроме того, в той степени, как термины "включают в себя" и "включая в себя", и их варианты используются или в подробном описании или формуле изобретения, эти термины предназначены, чтобы означать то же, что и термин "содержащий".