СИСТЕМЫ И СПОСОБЫ МАНИПУЛИРОВАНИЯ ДАННЫМИ В СИСТЕМЕ ХРАНЕНИЯ ДАННЫХ
SYSTEMS AND METHODS OF MANIPULATING DATA IN DATA STORAGE SYSTEM

Область техники, к которой относится изобретение
Настоящее изобретение в общем относится к базам данных, а конкретнее - к системам и (или) способам, облегчающим манипулирование данными на основе модели данных, и (или) к безопасному осуществлению, связанному с соответствующей системой хранения данных.
Уровень техники
Развитие компьютерных технологий (например, быстродействие микропроцессора, емкость памяти, ширина полосы передачи данных, функциональность программного обеспечения и т.п.) повсеместно приводит к более широкому применению компьютеров в различных отраслях. Более чем производительные серверные системы, которые зачастую сконфигурированы как матрицы серверов, обыкновенно используются, чтобы обслуживать запросы, идущие от внешних источников, таких как, например, сеть интернет («всемирная паутина»).
По мере роста количества доступных электронных данных становится все более важным хранить такие данные удобным в управлении образом, который облегчает пользователю дружественный и быстрый поиск и извлечение данных. В настоящее время обычным подходом является хранение электронных данных в одной или нескольких базах данных. В общем случае типичной базой данных считается организованная коллекция информации, где данные структурированы так, что компьютерная программа может, например, быстро искать и выбирать желательные фрагменты данных. Обычно данные внутри базы данных организованы в виде одной или нескольких таблиц. Такие таблицы выполнены в виде матрицы строк и столбцов.
Таблицы также могут содержать набор записей, где запись включает в себя набор полей. Записи обычно индексируются как строки в таблице, а поля записей обычно индексируются как столбцы, так что пара индексов строка/столбец может определять конкретную единицу данных в таблице. Например, строка может хранить завершенную запись данных, относящуюся к сделке купли/продажи, человеку или проекту. Аналогично, столбцы таблицы могут определять отдельные части строк, которые имеют один и тот же общий формат данных, где столбцы могут определять поля записей.
Каждый конкретный фрагмент данных, взятый отдельно, обычно не слишком информативен. Применения баз данных делают данные более полезными, поскольку помогают пользователям организовывать и обрабатывать данные. Применения баз данных позволяют пользователям сравнивать, сортировать, упорядочивать, объединять, разделять и увязывать друг с другом данные, так что из данных может быть выработана полезная информация. Емкость и гибкость баз данных выросли невероятно и допускают практически бесконечную емкость хранения при использовании баз данных. Тем не менее, обычные системы баз данных предлагают ограниченную способность исполнения запросов в зависимости от времени, расширения, местоположения и размера файлов. Например, чтобы провести поиск по огромным количествам данных, связанных с базой данных, поиск обычно ограничивается именем файла, размером файла, датой создания и т.д., а значит, такие технологии недостаточны и неуместны.
При непрерывном и все увеличивающемся создании данных конечными пользователями проблемы и сложности с поиском, установлением связей, манипулированием и хранением таких данных только возрастают. Конечные пользователи пишут документы, хранят фотографии, оцифровывают музыку с компакт-дисков, принимают электронную почту, сохраняют копии отправленной электронной почты и т.д. Например, при простом процессе создания музыкального компакт-диска конечный пользователь может создавать мегабайты данных. Оцифровка музыки с компакт-диска, преобразование файлов в приемлемый формат, создание обложки для коробки компакт-диска и разработка изображения самого диска, - все требует создания данных.
Подобные сложности окружают не только пользователей, разработчики сталкиваются с аналогичными проблемами вокруг данных. Разработчики могут создавать и записывать мириады приложений - от приложений для частных лиц до тщательно разрабатываемых корпоративных приложений. При создании и (или) разработке разработчики очень часто, если не всегда, собирают данные. После получения такие данные должны быть сохранены. Другими словами, проблемы и сложности вокруг поиска, установления связей, манипулирования и хранения данных влияют и на разработчиков, и на конечных пользователей. В частности, полнота данных должна быть гарантирована при каждом манипулировании такими данными без нарушений и (или) появления любых нестабильных условий в существующих системах и (или) базах данных.
Сущность изобретения
Ниже приводится упрощенное краткое описание изобретения для того, чтобы обеспечить общее понимание некоторых аспектов изобретения. Это краткое описание не является исчерпывающим описанием изобретения. Оно не предназначено ни для идентификации ключевых или критических элементов изобретения, ни для установления границ объема изобретения. Его единственная цель состоит в представлении некоторых принципов изобретения в упрощенной форме в качестве вводной части перед подробным описанием, которое будет представлено позднее.
Технический результат, на достижение которого направлено настоящее изобретение, заключается в облегчении манипулирования данными.
Настоящее изобретение относится к системам и (или) способам, облегчающим манипулирование данными на основе, по меньшей мере, модели данных, связанных с характеристиками и (или) ограничениями. Модель данных может представлять систему хранения данных (например, систему хранения файлов, основанную на базах данных), где подобная модель является иерархической моделью существующих объектов и подобъектов, которые могут представлять информацию в системе хранения данных в виде экземпляров сложных типов. Для того чтобы облегчить манипулирование данными, компонента манипулирования данными может обеспечивать процедуры манипулирования данными, связанные с системой хранения данных, при этом внедряя и (или) осуществляя по меньшей мере одну из характеристик и (или) ограничений. Другими словами, компонента манипулирования данными удерживает данные в системе хранения данных во время любого приемлемого манипулирования данными.
В соответствии с одним аспектом настоящего изобретения компонента манипулирования данными может включать в себя компоненту процедур, которая обеспечивает по меньшей мере одну процедуру, где процедура манипулирует данными. Процедура над данными может осуществлять копирование, обновление, замену, получение, установку, создание, удаление, перемещение, изменение и т.п. Кроме того, компонента манипулирования данными может включать в себя компоненту внедрения, которая внедряет и (или) осуществляет характеристику и (или) ограничение, связанные с моделью данных, которая представляет систему хранения данных. Путем использования характеристики и (или) ограничения совместно с манипулированием данными целостность модели данных поддерживается во всей системе хранения данных.
В соответствии с другим аспектом настоящего изобретения компонента манипулирования данными может использовать прикладной программный интерфейс (ППИ) (API). ППИ может быть сделан доступным для клиентов (например, для вызывающего абонента), и тогда ППИ является областью публичного контакта, которая может вызывать одну или несколько программ конкретного осуществления, чтобы выполнить запрос клиента. В одном объекте ППИ может обеспечивать программы (например, может не вовлекаться ни одна подпрограмма). ППИ может использоваться, чтобы позволить пользователю вызывать и (или) использовать по меньшей мере одну процедуру, связанную с манипулированием данными в системе хранения данных, при этом поддерживая по меньшей мере одну характеристику и (или) ограничение, связанные с ней. ППИ далее может использовать компоненту определения ППИ, которая может определять различные функции и (или) процедуры, позволяющие приемлемым операциям исполняться в системе хранения данных.
В соответствии еще с одним аспектом компонента манипулирования данными может включать в себя компоненту блокировки, которая облегчает поддержку множества одновременно вызывающих абонентов, одновременно с этим ликвидируя зависания. Для примера представим сценарий, где имеется множество одновременно вызывающих абонентов, которые запрашивают право пользования общим набором ресурсов таким образом, что ни один из запросов не может быть удовлетворен, так как каждый абонент ожидает другого, то есть может появиться зависание. В таком случае компонента блокировки может заблокироваться (например, блокируются вызывающие абоненты), и единственным выходом из этого случая будет исключение одного из абонентов. Составляющая блокировки также может поддерживать множество одновременно вызывающих абонентов так, что комплексная логика блокировки может гарантировать полностью выполнение или невыполнение индивидуальных запросов. Кроме того, компонента манипулирования данными может включать в себя компоненту оптимистического параллелизма, которая использует технологию оптимистического параллелизма, при этом такая технология предполагает низкую вероятность того, что первый процесс выполняет изменение в практически то же самое время, что и второй процесс, а блокировка не используется до тех пор, пока изменение не внесено в систему хранения данных. Когда одновременный доступ множества вызывающих абонентов вызывает к жизни предположения конкретного абонента о том, что состояние накопителя неверно, то предположения о неверности могут быть обнаружены, а запросы на изменения данных отвергаются системой до тех пор, пока вызывающий абонент не выполнит повторную синхронизацию понимания состояния системы и не выполнит запрос повторно. Эта технология может улучшать быстродействие системы путем устранения необходимости в выполнении инструкций по отключению блокировки. Кроме того, эта технология может сокращать зависания в системе путем устранения необходимости в отключении долговременных блокировок.
В соответствии с другим аспектом настоящего изобретения компонента манипулирования данными может включать в себя компоненту безопасности, обеспечивающую технологии безопасности, которые соответствуют множеству манипуляций с данными, используемых такой системой. Компонента безопасности может использовать профиль пользователя и (или) различные меры безопасности, такие как имя пользователя, пароль, биометрические признаки (например, отпечатки пальцев, сканирование сетчатки глаза, индуктивность, …), распознавание голоса и т.п., но не ограничивается ими, чтобы гарантировать целостность и дозволенность манипулирования данными конкретного объекта. Кроме того, компонента манипулирования данными может включать в себя компоненту ошибок, которая обеспечивает код ошибки в том случае, когда манипулирование данными приведет к тому, что характеристика и (или) ограничение не будут внедрены. Код ошибки может быть осуществлен, чтобы отметить незавершенность манипулирования данными, при этом код ошибки может соответствовать тексту, описывающему ошибку. В других аспектах настоящего изобретения обеспечены способы, облегчающие манипулирование данными, при этом соответствующие модели данных.
Нижеследующее описание и приложенные чертежи подробно излагают определенные примерные аспекты изобретения. Эти аспекты показывают, тем не менее, лишь некоторые из нескольких путей, которыми могут быть использованы принципы изобретения, и настоящее изобретение целенаправленно включает в себя все подобные аспекты и их эквиваленты. Другие преимущества и новые признаки изобретения станут очевидны из нижеследующего подробного описания изобретения, рассматриваемого вместе с чертежами.
Краткое описание чертежей
Фиг.1 иллюстрирует блок-схему примерной системы, облегчающей манипулирование данными, основанное, по меньшей мере, частично на модели данных с соответствующими характеристиками.
Фиг.2 иллюстрирует блок-схему примерной системы, облегчающей манипулирование данными в пределах характеристик системы хранения данных.
Фиг.3 иллюстрирует блок-схему примерной системы, облегчающей осуществление целостности и безопасности данных при манипулировании данными, связанными с системой хранения данных.
Фиг.4 иллюстрирует блок-схему примерной системы, облегчающей осуществление ППИ, который манипулирует данными, связанными с системой хранения данных.
Фиг.5 иллюстрирует блок-схему примерной системы, облегчающей активизацию ППИ, который манипулирует данными в пределах характеристик системы хранения данных.
Фиг.6 иллюстрирует блок-схему примерной системы, облегчающей активизацию ППИ, который манипулирует данными в пределах характеристик системы хранения данных.
Фиг.7 иллюстрирует блок-схему примерной системы, облегчающей манипулирование данными в системе хранения данных с использованием составляющей ППИ.
Фиг.8 иллюстрирует блок-схему примерной системы, облегчающей манипулирование данными, основанное, по меньшей мере, частично на модели данных.
Фиг.9 показывает примерную методологию активизации манипулирования данными, основанного, по меньшей мере, частично на системе, основанной на базах данных, при внедрении по меньшей мере одного ограничения модели.
Фиг.10 показывает примерную методологию манипулирования данными, основанного, по меньшей мере, на модели данных с внедрением соответствующих характеристик.
Фиг.11 показывает примерную сетевую среду, в которой могут быть использованы новые аспекты настоящего изобретения.
Фиг.12 показывает примерную рабочую среду, которая может использоваться в соответствии с настоящим изобретением.
Подробное описание изобретения
В настоящем описании термины «компонента», «система», «интерфейс» и т.п. используются для обозначения относящегося к компьютеру объекта либо аппаратного обеспечения, программного обеспечения (например, при исполнении) и (или) встроенного программного обеспечения. Например, компонентой может являться процесс, выполняющийся в процессоре, процессор, объект, исполняемый файл, программа и (или) компьютер. Для примера, компонентой могут быть как приложение, выполняющееся на сервере, так и сам сервер. Одна или несколько компонент могут оставаться внутри процесса; компонента может быть локализована на одном компьютере и (или) распределена между двумя или более компьютерами.
Настоящее изобретение описано со ссылками на чертежи, на которых одни и те же номера позиций везде используются для обозначения одних и тех же элементов. В нижеследующем описании, для целей объяснения, многочисленные конкретные подробности излагаются для того, чтобы обеспечить полное понимание настоящего изобретения. Может быть очевидно, что настоящее изобретение может использоваться без этих конкретных подробностей. В других примерах, чтобы облегчить описание настоящего изобретения, общеизвестные структуры и устройства показаны в виде блок-схем.
Теперь обратимся к чертежам. На фиг.1 показана система 100, облегчающая манипулирование данными, основанная, по меньшей мере, на модели данных с соответствующей ее характеристикой. Модель 102 данных может быть комплексной моделью, основанной, по меньшей мере, на структуре базы данных, в которой элемент, подэлемент, свойство и связь определяются так, чтобы допустить представление информации в системе хранения данных в виде экземпляров комплексных типов. Модель 102 данных может использовать набор базовых строительных блоков для создания и управления расширенных существующих объектов и связей между объектами. Элемент может быть определен как наименьший блок согласованности внутри модели 102 данных, над которым можно совершать независимые действия: делать безопасным, переводить в последовательную форму, синхронизировать, копировать, делать резервную копию/ восстанавливать из нее и т.д. Элемент является экземпляром того типа, в котором все элементы в модели 102 данных могут храниться в единой глобальной непрерывной области элементов. Модель 102 данных может быть основана по меньшей мере на одном элементе и (или) контейнерной структуре. Кроме того, модель 102 данных может быть платформой хранения, раскрывающей расширенные метаданные, которые спрятаны в файлах в виде элементов. Должно быть оценено, что модель 102 данных может представлять систему хранения файлов, основанную на базах данных, для поддержки описанной выше функциональности, в которой могут быть осуществлены любые пригодные характеристики и (или) атрибуты. Кроме того, модель 102 данных может представлять систему хранения файлов, основанную на базах данных, использующую контейнерную иерархическую структуру, где контейнер является элементом, который может содержать ноль или несколько элементов. Концепция удерживания осуществляется с помощью свойства идентификатора контейнера внутри связанного с ним класса. Накопитель также может быть контейнером, так что накопитель может быть физическим организационным или управляемым блоком. Кроме того, накопитель представляет корневой контейнер для дерева контейнеров внутри иерархической структуры. Кроме того, модель 102 данных может представлять систему хранения файлов, основанную на базах данных, которая определяет иерархическую модель по меньшей мере одного существующего объекта и ноль или несколько подобъектов для каждого объекта, чтобы представлять информацию как сложный тип.
Компонента 104 манипулирования данными может манипулировать данными, относящимися к модели 102 данных, тем самым гарантируя целостность и стабильность данных, связанных с характеристиками такой модели 102 данных. Модель 102 данных может включать в себя любые приемлемые характеристики и (или) указания, связанные с системой хранения файлов, основанной на базах данных. Компонента 104 манипулирования данными может обеспечивать перемещение, удаление, копирование, создание, обновление, замену и т.д. по меньшей мере для одного объекта, тем самым гарантируя стабильную систему (например, удовлетворяющую любым характеристикам, связанным с системой хранения файлов, основанной на базах данных, представленной моделью 102 данных). Например, модель 102 данных может представлять систему хранения файлов, основанную на базах данных, имеющую характеристику, где каждый идентификатор для контейнера уникален. Продолжая этот пример, компонента 104 манипулирования данными может применять любое приемлемое манипулирование данными (например, копирование, обновление, замену, получение, установку, создание, удаление, перемещение, …), тем самым внедряя и (или) поддерживая уникальность идентификатора для контейнеров. Должно быть оценено, что функции, описанные выше, не должны рассматриваться как ограничивающие настоящее изобретение, и что любое приемлемое манипулирование данными, вовлекающее модель 102 данных, может быть использовано при поддержании любой приемлемой характеристики, относящейся к ней. Кроме того, должно быть понятно, что компонента 104 манипулирования данными может манипулировать данными в соответствии с иерархической структурой (например, используя по меньшей мере один накопитель или контейнер, …), основываясь на модели 102 данных.
В соответствии с одним аспектом изобретения манипулирование данными может быть основано, по меньшей мере, частично на данных, вводимых пользователем, путем использования, например, прикладного программного интерфейса (ППИ) (не показан). При использовании ППИ взаимодействия и (или) манипуляции, вовлекающие модель 102 данных, и соответствующая система хранения файлов, основанная на базах данных, могут быть осуществлены при поддержке/внедрении любой приемлемой характеристики, связанной с ними. Должно быть оценено и понято, что ППИ может быть активизирован компонентой 104 манипулирования данными, отдельной компонентой, включенной в компоненту 104 манипулирования данными, и (или) любым их сочетанием.
Система 100 далее включает в себя компоненту 106 интерфейса, которая обеспечивает различные адаптеры, соединители, каналы, тракты связи и т.д., чтобы интегрировать компоненту 104 манипулирования данными практически в любую(ые) операционную(ые) систему(ы) и (или) систему(ы) баз данных. Кроме того, компонента 106 интерфейса может обеспечивать различные адаптеры, соединители, каналы, тракты связи и т.д., чтобы обеспечить взаимодействие с данными и компонентой 104 манипулирования данными. Должно быть оценено, что хотя компонента 106 интерфейса встроена в компоненту 104 манипулирования данными, такое встраивание не является ограничивающим. Например, компонента 106 интерфейса может быть отдельной компонентой, чтобы принимать и передавать данные, относящиеся к системе 100.
На фиг.2 показана система 200, облегчающая манипулирование данными, среди характеристик системы хранения данных. Система 202 хранения данных может быть системой хранения файлов, основанной на базах данных, которая представляет экземпляры данных в виде сложных типов путем использования, по меньшей мере, иерархической структуры. Система 202 хранения данных может включать в себя по меньшей мере одну характеристику, которая внедряется, чтобы гарантировать характеристики системы 202 хранения данных во время манипулирования данными. Должно быть оценено, что систему 202 хранения данных может представлять модель данных (не показана). Кроме того, элемент, подэлемент, свойство и связь могут быть определены в системе 202 хранения данных, чтобы позволить представление информации в виде экземпляров сложного типа. Система 202 хранения данных может быть моделью данных, которая может описывать форму данных, декларировать ограничения, чтобы обозначать определенную семантическую согласованность данных, и определять семантические связи между данными. Система 202 хранения данных может использовать набор базовых строительных блоков для создания и управления расширенными существующими объектами и связями между объектами.
Например, строительные блоки могут включать в себя «Элемент», «Расширение Элемента», «Связь» и «Фрагмент Элемента». «Элемент» может быть определен как наименьшая единица согласованности внутри системы 202 данных, над которым можно совершать независимые действия: делать безопасным, переводить в последовательную форму, синхронизировать, копировать, делать резервную копию/восстанавливать из нее и т.д. Например, элементы могут быть наименьшими единицами согласованности, но границы, нарисованные вокруг элемента, могут включать в себя связи, расширения элементов и фрагменты элементов, которые могут логически принадлежать элементу. Таким образом, элемент может быть строкой в таблице, но может также указывать на строку элемента и все его вторичные части. Другими словами, элемент может быть удален, скопирован и т.д. с гарантией того, что такая операция полностью применяется к элементу и всем его частям. Элемент является экземпляром того типа, где все элементы в системе 202 хранения данных могут храниться в единой глобальной непрерывной области элементов. «Расширение Элемента» является типом элемента, который расширен с использованием расширения объекта. Расширение объекта может быть определено схемой с соответствующими атрибутами (например, имя, расширенный тип элемента, объявление свойства, …). «Расширение Элемента» может быть осуществлено, чтобы сгруппировать набор свойств, которые могут быть применены к типу элемента, который расширяется. «Связь» является типом объекта, который определяет связь между двумя экземплярами элемента, где связи имеют направления (например, один элемент является источником связи, а второй является целью связи). «Фрагмент Элемента» является типом объекта, который способствует объявлению больших коллекций в типах элементов и (или) расширениях элементов, где элементы коллекции могут быть объектом. Должно быть оценено и понято, что система 202 хранения данных может представлять любую приемлемую систему хранения файлов, основанную на базах данных, которая обеспечивает представление данных в виде экземпляров сложных типов, а описание выше не должно рассматриваться как ограничивающее настоящее изобретение. Система 202 хранения данных может быть практически сходной с представлением модели 102 данных, показанной на фиг.1.
Компонента 204 манипулирования данными может обеспечить манипулирование данными в системе 202 хранения данных, внедряя по меньшей мере одну характеристику, связанную с такой системой 202 хранения данных. Компонента 204 манипулирования данными может обеспечить манипулирование, то есть следующие действия (но не ограничиваясь ими) над данными (например, представленными экземплярами сложных типов): копирование, обновление, замена, получение, установка, создание, удаление, перемещение и т.д. Должно быть оценено, что компонента 204 манипулирования данными может быть практически сходной с компонентой 104 манипулирования данными, показанной на фиг.1.
Компонента 204 манипулирования данными может включать в себя компоненту 206 процедур, которая обеспечивает конкретные функции для манипулирования данными в соответствии с характеристиками, связанными с системой 202 хранения данных. Другими словами, компонента 206 процедур может обеспечить технологии манипулирования, относящиеся к системе 202 хранения данных. Например, компонента 206 процедур может включать в себя копирование, перемещение, замену, установку, удаление, создание, получение, обновление данных и (или) представление данных в виде экземпляров сложных типов. Должно быть оценено, что компонента 206 процедур может обеспечить любую приемлемую технологию и (или) функцию манипулирования данными, которые могут быть осуществлена в системе 202 хранения данных. Хотя компонента 206 процедур показана как встроенная в компоненту 204 манипулирования данными, настоящее изобретение не ограничено этим. Компонента 206 процедур также может быть отдельной компонентой, либо встроенной в систему 202 хранения данных (например, ту, которая может быть реализацией концепции модели данных).
Компонента 204 манипулирования данными может далее включать в себя компоненту 208 внедрения, чтобы внедрить по меньшей мере одну характеристику системы 202 хранения данных в манипулирование данными. Как обсуждено выше, система 202 хранения данных может включать в себя любое приемлемое количество характеристик, которые могут обеспечить руководство манипулированием данными в такой системе 202 хранения данных. Другими словами, компонента 208 внедрения позволяет манипулирование данными в системе 202 хранения данных без нарушения ограничений модели данных, относящихся к системе 202 хранения данных. Должно быть оценено, что компонента 208 внедрения может быть встроена в компоненту 204 манипулирования данными (как показано), может быть отдельной компонентой, может быть встроенной в систему 202 хранения данных и может быть любым их сочетанием.
Например, система 202 хранения данных может использовать элемент, контейнер и иерархию структуры хранения (как обсуждено выше). Компонента 208 внедрения может осуществлять характеристики, относящиеся к идентификатору контейнера, связанному с системой 202 хранения данных. Например, компонента 208 внедрения может обеспечить по меньшей мере один из следующих признаков: (1) идентификатор контейнера для содержания идентификатора ненулевого элемента в накопителе (например, это может быть осуществлено с помощью функций манипулирования и (или) технологиями «Создать Элемент», «Создать Сложные Элементы», «Переместить Элемент» и «Заменить Элемент», обсуждаемые ниже); (2) идентификатор контейнера не обновляется с использованием функции и (или) технологии манипулирования «Обновить Элемент» (обсуждаемая ниже); и (3) идентификатор контейнера может быть изменен с помощью вызова «Переместить Элемент». Должно быть оценено и понято, что настоящее изобретение не ограничено указанными названиями перечисленных выше функций и (или) технологий.
В другом примере компонента 208 внедрения может осуществлять семантику транзакции совместно с манипулированием данными. Компонента 208 внедрения может осуществлять следующие семантики транзакций: (1) если нет активных транзакций, может быть возвращен код ошибки, и команда не обрабатывается; и (2) производится попытка проверить и применить операцию. Если проверка и применение операции выполняются успешно, управление может быть возвращено вызывающему абоненту, так как операция не была совершена в транзакции, поддерживаемой абонентом. Если проверка или применение операции были неуспешны, транзакция не выполняется, появляется ошибка, и управление может быть возвращено вызывающему абоненту. Невыполненная транзакция означает, что абонент может осуществлять запросы по транзакции, но не может завершить транзакцию (например, вызов для завершения может привести к ошибке). Должно быть оценено, что запрос ППИ может либо быть полностью успешным, либо целиком неуспешным. Комплексный ППИ может сделать по меньшей мере одно изменение в основополагающую таблицу хранения и может осуществлять комплексный набор проверок согласованности и (или) целостности. Кроме того, должно быть оценено, что система 200 никогда не останется в несогласованном и (или) неверном состоянии.
Фиг.3 показывает систему 300, которая облегчает осуществление целостности и безопасности данных с помощью манипулирования данными, связанного с системой хранения данных. Система 302 хранения данных может быть системой хранения файлов, основанной на базах данных, основанной, по меньшей мере, частично на модели данных, где данные представлены в виде экземпляров сложных типов. Компонента 304 манипулирования данными может обеспечить манипулирование данными, связанное с системой 302 хранения данных. Компонента 304 манипулирования данными может включать в себя компоненту 306 процедур, которая может обеспечить по меньшей мере одну функцию и (или) технологию, вовлеченные в манипулирование данными в системе 302 хранения данных. Кроме того, компонента 304 манипулирования данными может включать в себя компоненту 308 внедрения, которая устанавливает по меньшей мере одну характеристику и (или) указание относительно системы 302 хранения данных, где такая характеристика гарантирует, что ограничение модели данных будет осуществлено при манипулировании данными. Должно быть оценено и понято, что система 302 хранения данных, компонента 304 манипулирования данными, компонента 306 процедур, компонента 308 внедрения могут быть практически сходными с системой 202 хранения данных, компонентой 204 манипулирования данными, компонентой 206 процедур и компонентой 208 внедрения, показанными на фиг.2.
Компонента 304 манипулирования данными может включать в себя накопитель 310 данных для облегчения хранения и (или) доступа по меньшей мере к одной процедуре, связанной с манипулированием данных в системе 302 хранения данных. Например, накопитель 310 данных может хранить процедуру (например, код), которая может быть использована ППИ, а манипулирование данными может быть получено пользователем и активизировано, поддерживая по меньшей мере одну характеристику, связанную с системой 302 хранения данных. В другом примере накопитель 310 данных может хранить различные характеристики, связанные с системой 302 хранения данных и (или) различными данными ППИ (например, подпрограммами и т.д.). В одном примере накопитель 310 данных может быть жестким диском. Накопитель 310 данных может быть, например, либо энергозависимой, либо энергонезависимой памятью, либо может включать в себя как энергозависимую, так и энергонезависимую память. Для иллюстрации, не для ограничения, энергонезависимая память может включать в себя постоянное запоминающее устройство (ПЗУ), программируемое ПЗУ (ППЗУ), электрически программируемое ПЗУ (ЭППЗУ), электрически стираемое программируемое ПЗУ (ЭСППЗУ) или флэш-память. Энергозависимая память может включать в себя оперативное запоминающее устройство (ОЗУ), которое действует как внешняя кэш-память. Для иллюстрации, не для ограничения, ОЗУ доступно во множестве форм, таких как статическое ОЗУ (СОЗУ), динамическое ОЗУ (ДОЗУ), синхронное ДОЗУ (СДОЗУ), СДОЗУ с удвоенной частотой передачи данных (УЧПД СДОЗУ), усиленное СДОЗУ (УСДОЗУ), ДОЗУ типа Synchlink (СЛДОЗУ), ОЗУ прямого доступа типа Rambus (РПДОЗУ), динамическое ОЗУ прямого доступа типа Rambus (ДРПДОЗУ) и динамическое ОЗУ типа Rambus (РПДОЗУ). Предполагается, что накопителем 310 данных в настоящих системах и способах являются эти и любые другие пригодные типы памяти, но не ограничиваются ими. Кроме того, должно быть оценено, что накопителем 310 данных может быть сервер и (или) база данных.
Компонента 304 манипулирования данными может далее включать в себя компоненту 312 безопасности, чтобы обеспечить по меньшей мере один атрибут безопасности в системе 300. Например, компонента 312 безопасности может использовать профиль пользователя так, чтобы с ним были связаны конкретные функции и (или) технологии манипулирования данными. Кроме того, составляющая 312 безопасности может использовать различные меры безопасности, такие как имя пользователя, пароль, биометрические признаки (например, отпечатки пальцев, сканирование сетчатки глаза, индуктивность, …), распознавание голоса и т.п., но не ограничивается ими, чтобы гарантировать целостность и дозволенность манипулирования данными конкретного объекта. Составляющая 312 безопасности может далее использовать любой приемлемый атрибут безопасности, связанный с системой 302 хранения данных. Другими словами, составляющая 312 безопасности может осуществлять регулировки безопасности так, что внедряются ограничения безопасности системы 302 хранения данных.
Фиг.4 показывает систему 400, которая облегчает осуществление ППИ, который манипулирует данными, связанными с системой хранения данных. Система 402 хранения данных может быть системой хранения файлов, основанной на базах данных, имеющей по меньшей мере одну характеристику, связанную с ней, где система 402 хранения данных может быть представлена моделью данных (не показана). Компонента 404 манипулирования данными может позволить манипулирование данными, включающее в себя следующие действия (но не ограничиваясь ими): копирование, перемещение, замена, установка, удаление, создание, получение, обновление данных, соответствующих системе 402 хранения данных. Должно быть оценено, что система 402 и компонента 404 манипулирования данными могут использовать практически ту же самую функциональность, что и система 302 хранения данных, система 202 хранения данных, компонента 304 манипулирования данными и компонента 204 манипулирования данными, показанные на фиг.3 и 2 соответственно.
Компонента 404 манипулирования данными может далее включать в себя составляющую 406 ППИ (далее обозначаемую как ППИ 406), которая позволяет объекту манипулировать данными в системе 402 хранения данных. Объектом может быть (но не ограничиваться ими) пользователь, компьютер, база данных, … ППИ 406 может принимать, по меньшей мере, входной сигнал от пользователя, где входным сигналом от пользователя является команда и (или) функция, содержащая манипулирование данными в системе 402 хранения данных. Хотя ППИ 406 изображен как встроенный в компоненту 404 манипулирования данными, должно быть оценено, что ППИ 406 может быть отдельной составляющей, может быть встроен в систему 402 хранения данных и (или) может быть их сочетанием. Кроме того, ППИ 406 может использовать различные составляющие, обсужденные ранее, чтобы обеспечить манипулирование данными с использованием конкретных процедур, внедряя характеристики, соответствующие системе 402 хранения данных.
Фиг.5 показывает систему 500, которая облегчает активизацию прикладного программного интерфейса (ППИ), который манипулирует данными в характеристиках системы хранения данных. Система 502 хранения данных может быть системой хранения файлов, основанной на базах данных, имеющей по меньшей мере одну определяющую характеристику, где система 502 хранения данных может быть основана, по меньшей мере, частично на модели данных (не показана). Составляющая 504 манипулирования данными может позволить манипулирование данными, включающее в себя следующие действия (но не ограничиваясь ими): копирование, перемещение, замена, установка, удаление, создание, получение, обновление данных, соответствующих системе 502 хранения данных. Должно быть оценено, что система 502 и составляющая 504 манипулирования данными могут использовать практически ту же самую функциональность, что и система 402 хранения данных, система 302 хранения данных, система 202 хранения данных, компонента 404 манипулирования данными, компонента 304 манипулирования данными и компонента 204 манипулирования данными, показанные на фиг.4, 3 и 2 соответственно.
Компонента 504 манипулирования данными может далее включать в себя компоненту 506 ППИ (далее обозначаемую как ППИ 506). ППИ 506 может обеспечить манипуляции данными (например, создание, обновление и удаление данных в накопителе) путем исполнения хранящихся процедур. ППИ 506 может позволить, например, пользователю осуществлять манипулирование данными, гарантируя при этом целостность и (или) доброкачественность характеристик, связанных с системой 502 хранения данных. Манипулирование данными может быть основано, по меньшей мере, частично на входных сигналах от пользователя, путем использования, например, ППИ 506. Используя ППИ 506, взаимодействия и (или) манипуляции, содержащие систему 502 хранения данных, могут быть осуществлены при поддержке/внедрении любой приемлемой характеристики, связанной с ней. Должно быть оценено и понято, что ППИ 506 может быть активизирован компонентой 504 манипулирования данными, отдельной компонентой, встроенной в компоненту 504 манипулирования данными, и (или) любым их сочетанием.
Компонента 504 манипулирования данными может далее включать в себя компоненту 508 блокировки, которая облегчает одновременный доступ к данным одним или несколькими приложениями путем использования подходящих стратегий блокировки, которые гарантируют целостность. Для примера представим сценарий, где имеется множество вызывающих абонентов, которые запрашивают монопольное использование общего набора ресурсов таким образом, что ни один отдельный запрос не может быть удовлетворен, так как каждый абонент ожидает другого (например, может появиться зависание). В таком случае компонента 508 блокировки может позволить заблокировать вызывающих абонентов (например, блокировкой), и единственным выходом из этого случая будет исключение одного из вызывающих абонентов. Чтобы избежать этой ситуации, компонента 508 блокировки может поддерживать множество одновременно вызывающих абонентов так, что комплексная логика блокировки может гарантировать автоматическое выполнение или невыполнение отдельных запросов. Кроме того, компонента 508 блокировки может обнаруживать и реагировать на зависания. Компонента 508 блокировки может поддерживать данные согласованными путем использования доступа, преобразованного в последовательный, к конкретным частям системы хранения данных (например, накопителю) через блокировку. Блокировка может быть выполнена на детальном уровне, где ресурсы в системе хранения данных (например, накопителе), подвергаемые воздействию данной манипуляции и (или) операции, могут быть заблокированы на время этой манипуляции и (или) операции. Должно быть оценено, что различные операции и (или) практически сходные операции могут попадать под блокировку в различном порядке, и может появиться зависание. Например, компонента 508 блокировки может избежать зависания со значительной потерей в производительности. Кроме того, компонента 508 блокировки может обеспечить ППИ 506 кодом ошибки зависания, чтобы проинформировать о такой ситуации.
Компонента 504 манипулирования данными может включать в себя компоненту 510 оптимистического параллелизма. ППИ 506 может использовать оптимистический параллелизм, чтобы применить манипуляцию и (или) изменения к данным в системе 502 хранения данных. Параллелизм появляется, когда по меньшей мере два процесса пытаются обновить практически одинаковые данные в практически то же самое время. Компонента 510 оптимистического параллелизма использует оптимистический параллелизм, при этом оптимистический параллелизм предполагает низкую вероятность того, что другой процесс выполняет изменение в практически то же самое время, таким образом, блокировка не используется до тех пор, пока изменение не готово к внесению в систему хранения данных (например, в накопитель). Путем использования такой технологии компонента 510 оптимистического параллелизма сокращает время блокировки и предлагает более высокую производительность базы данных. Когда одновременный доступ множества вызывающих абонентов вызывает к жизни предположения конкретного абонента о том, что состояние накопителя неверно, то предположения о неверности могут быть обнаружены, а запросы на изменения данных отвергаются системой до тех пор, пока вызывающий абонент не выполнит повторную синхронизацию понимания состояния системы и не выполнит запрос повторно.
Например, компонента 510 оптимистического параллелизма может поддерживать маркер, связанный с элементом, который меняется при каждой модификации элемента. Маркер передается вызывающему абоненту, когда данные считываются в память. Вызывающий абонент может передавать маркер обратно в накопитель как параметр для операции обновления. Накопитель может сравнивать переданный ему маркер с текущим значением маркера в накопителе. Если маркеры равны, то запись будет успешной и будет воплощена. При этом если версия маркера вызывающего абонента в памяти отличается от того, что хранится в накопителе, это означает, что элемент был изменен другим приложением, и запись будет неуспешной.
В другом примере изучается неудача, проявляющаяся из-за одновременного доступа двух приложений. В таблице ниже два приложения одновременно выполняются в системе 502 хранения данных, которые будут пытаться модифицировать элемент.
Время
Приложение 1
Значение маркера элемента в накопителе
Приложение 2
1
Ожидание
1
Ожидание
2
Элемент считывается в памятьМаркер элемента = 1
1
Ожидание
3
Ожидание
1
Элемент считывается в памятьМаркер элемента = 1
4
Ожидание
1
Элемент модифицируется в памятиМаркер элемента = 1
5
Ожидание
1
Элемент передается обратно в накопитель. Запись проходит успешно, так как значение маркера в памяти совпадает со значением маркера в накопителе. Теперь маркер элемента =2
6
Элемент модифицируется в памятиМаркер элемента = 1
2
Ожидание
7
Элемент передается обратно в накопитель. ОШИБКА! Маркер элемента в памяти (значение 1) не совпадает со значением маркера в накопителе (значение 2)
2
Ожидание
ППИ 506 может поддерживать эту технологию путем возвращения информации о маркере при каждой операции создания и (или) обновления. Например, параметр выходного маркера из функций создания может быть назван «маркер одновременности». ППИ 506 также может брать информацию маркера в качестве входного параметра при операциях обновления и (или) удаления. Информация маркера, попавшая в операции обновления и (или) удаления, также может быть названа «маркером одновременности». Должно быть оценено, что параметр может быть как входным, так и выходным параметром. На входе «маркер одновременности» является значением, которое поступает при считывании объекта в кэш, при создании и (или) обновлении. Это может быть «ожидаемым значением» в накопителе, если в объект не производится запись. На выходе накопитель может вернуть новый «маркер одновременности» объекта после успешного завершения операции.
Параметр «маркера одновременности» может быть выражен как тип данных BIGINT (например, 64-битное целое число). Должно быть оценено, что параметр может быть меткой времени базы данных и при этом его значение может не увеличиваться. Восстановление элемента из резервного хранения может вызвать появление статуса, который уже в прошлом по отношению ко времени. Единственная поддерживаемая операция между двумя «маркерами одновременности» - это выяснение тождества и (или) расхождения. Это значение также может быть доступно в различных видах, поддерживаемых накопителем. Название столбца в этих видах для элементов, расширений элементов, связей и фрагментов элементов будет «LastUpdateLocalTS». Для дескрипторов безопасности название столбцов будет «SDLastUpdateLocalTS».
Фиг.6 показывает систему 600, которая облегчает активизацию ППИ, манипулирующего данными в характеристиках системы хранения данных. Система 602 хранения данных может быть системой хранения файлов, основанной на базах данных, основанной, по меньшей мере, частично на модели данных, где данные представлены как экземпляры сложного типа. Компонента 604 манипулирования данными может обеспечить манипулирование данными, связанными с системой 602 хранения данных. Компонента 604 манипулирования данными может активизировать компоненту 606 ППИ (далее обозначаемую как ППИ 606). ППИ 606 может обеспечить манипуляции данными (например, создание, обновление и удаление данных в накопителе) путем исполнения хранящихся процедур. ППИ 606 может позволить, например, пользователю осуществить манипулирование данными, гарантируя при этом целостность и (или) доброкачественность характеристик, связанных с системой 602 хранения данных. Система 602 хранения данных, компонента 604 манипулирования данными и ППИ 606 могут быть практически подобными с системой 502, 402, 302 и 202 хранения данных, компонентой 504, 404, 304 и 204 манипулирования данными, ППИ 506, 406, показанными на фиг.5, 4, 3 и 2 соответственно.
Компонента 604 манипулирования данными может включать в себя компоненту 608 структуры данных, которая может использовать по меньшей мере одну структуру данных, используемую ППИ 606. Например, компонента 608 структуры данных может использовать различные синонимы и (или) типы списков обобщений. В одном примере нижеследующие таблицы могут определить синоним и тип языка структурированных запросов (SQL) и тип списка и соответствующую общеязыковую среду исполнения (CLR). Должно быть оценено, что нижеследующие таблицы являются примерами, и настоящее изобретение не ограничено ими.
Синоним
Тип SQL
[System.Storage.Store].ItemId
UNIQUEIDENTIFIER
[System.Storage.Store].LinkId
UNIQUEIDENTIFIER
[System.Storage.Store].TypeId
UNIQUEIDENTIFIER
[System.Storage.Store]. CompiledChangeDefinition
VARBINARY(MAX)
[System.Storage.Store].FragmentId
UNIQUEIDENTIFIER
[System.Storage.Store].Usage
UNIQUEIDENTIFIER
[System.Storage.Store].SecurityDescriptor
VARBINARY(MAX)
Тип списка
Соответствующий эквивалент CLR
[System.Storage.Store]. AssignmentValueList
SqlList<[System.Storage.Store]. AssignmentValue>
[System.Storage.Store]. ComplexItemList
SqlList<[System.Storage.Store].ComplexItem>
[System.Storage.Store]. ItemIdList
SqlList<[System.Storage.Store].ItemId>
Компонента 608 структуры данных может использовать тип определения изменения. ППИ 606 и компонента 604 манипулирования данными могут обеспечивать операции обновления и (или) модификации на детальном уровне свойств. Путем использования такой технологии вызывающий абонент может передавать измененные данные в способ обновления, поддерживая размер операции пропорциональным размеру измененных данных. Детальные обновления могут быть описаны с использованием типа ИзмененияОпределения. В системе 602 хранения данных объекты продолжают оставаться в накопителе, а конкретная ячейка таблицы, сохраненный экземпляр контакта и некоторые другие сложные типы имеют свойства, которые могут оказаться комплексными. Должно быть оценено и понято, что тип ИзмененияОпределения может моделировать набор изменений, который может быть применен к структурированному объекту.
Например, чтоб обновить поле имени контакта, вызывающий абонент может создать экземпляр объекта Изменения Определения, наделить объект двумя узлами (например, один из которых описывает тип элемента, а второй содержит имя поля). Клиент может затем пропустить по меньшей мере одну скомпилированную версию ИзмененияОпределения и список соответствующих значений способа ОбновитьЭлемент, которые производят модификации в накопителе. Должно быть оценено, что практически такой же шаблон может быть применен для модификации поля в расширении элемента и (или) в связи.
Экземпляр ИзмененияОпределения моделирует каждое изменение свойства, используя древовидную структуру, где каждый уровень на дереве может соответствовать вложенному уровню свойств в типе объекта. Изменение значения свойства представлено узлом в виде листа, который называется узлом назначения. Типом узла назначения может быть назначение. Эти узлы могут представлять назначение для свойства и содержать название свойства. Узлы не в виде листьев (за исключением «корня») представляют вложенный тип, который является участником либо свойства верхнего уровня, либо свойства другого вложенного типа. Это далее можно обозначать как узел пересечения. Узлы пересечения содержат списки узлов (назначения или пересечения) и выборочно тип, используемый накопителем, для осуществления подходящего приведения типов. Тип узла пересечения - PathComponent.
Компонента 608 структуры данных может создать ИзменениеОпределения путем создания узлов пересечения и назначения. Например, узлы могут добавлять ИзменениемОпределения, где класс ИзмененияОпределения имеет способы создания узлов и прохода по дереву. В одном примере класс ИзмененияОпределения не является пользовательским типом (UDT). В другом примере ниже определяются типы назначения: (1) назначить скалярное значение на емкости; (2) назначить вложенный тип экземпляра на емкости; и (3) назначить коллекцию (например, мультимножество и (или) список SQL) на емкости. Должно быть оценено и понято, что скалярные свойства (например, свойства XML и FileStream) могут быть заменены. В другом примере такие скалярные свойства частично обновлены. Когда дерево завершено, компонента 608 структуры данных может использовать способ Компиляции, который может вернуть описание свойств, которые могли быть изменены в двоичном формате (например, также может упоминаться как определение изменения компиляции). В одном примере значение могло быть передано как параметр ИзмененияОпределения в способе Обновления.
Ниже описан пример осуществления компоненты 608 структуры данных, но он не предназначен для ограничения настоящего изобретения. Вызывающий абонент может быть ответственен за создание списка значений, которые соответствуют свойствам, описанным в дереве ИзмененияОпределения. Когда вызывающий абонент добавляет узел назначения в дерево ИзмененияОпределения, узлу назначения может быть присвоен индекс. Индекс может быть равен n-1 (где n - число вводов в дерево до этого момента). Например, первый узел назначения получает индекс ноль, второй узел назначения получает индекс один, и т.п. Индекс также может быть возвращен к вызывающему абоненту как ДобавлениеНазначения. Вызывающий абонент затем конструирует объект НазначениеЗначения, который содержит значение свойства, добавленного в дерево ИзмененияОпределения. НазначениеЗначения затем добавляется в СписокНазначенияЗначения, так что его положение в СпискеНазначенияЗначения может указать на индекс в узле назначения в дереве ИзмененияОпределения. Узел назначения может быть добавлен в ИзменениеОпределения, а соответствующий объект НазначенияЗначения может быть добавлен в СписокНазначенияЗначения, чтобы добавить способ, который присоединяет объект НазначенияЗначения к концу списка. Полученный СписокНазначенияЗначения является значением, которое передается для параметра СписокЗначений в способе Обновления.
Компонента 604 манипулирования данными может далее включать в себя компоненту 610 ошибки, чтобы обращаться с ошибкой, связанной с операцией и (или) манипулированием данными, которая конфликтует с характеристикой системы 602 хранения данных. Например, ППИ 606 гарантирует домен текущего элемента, где домен элемента является логической областью, которую определяет элемент, и (или) включает в себя связанные с ним свойства, объекты и подобъекты. Если на элемент есть ссылка (например, либо через элемент, либо через связь, расширение элемента или фрагмент элемента) извне домена элемента, элемент как будто не будет существовать. Другими словами, может быть использован код ошибки «элемент не существует».
Компонента 610 ошибки может внедрять коды ошибки. Код ошибки может быть осуществлен, чтобы отметить незавершенность манипулирования данными, где код ошибки может соответствовать тексту, описывающему ошибку. Процедуры и (или) операции, относящиеся к манипулированию данными в системе 602 манипулирования данными, могут возвращать целочисленное значение, которое может быть кодом завершения функции (например, удаление, копирование, перемещение, получение, установка, обновление, …). В одном примере значение будет нулевым, если операция завершена успешно, либо ненулевым, если операция завершится неудачно. Каждая соответствующая процедура/операция манипулирования и (или) функция могут быть связаны с кодом ошибки. Например, ППИ 606 может возвращать код ошибки, вместо того чтобы отображать текст. Код ошибки затем будет связан с соответствующим текстовым сообщением, а текстовые сообщения будут извлекаться, если необходимо, из таблицы в базе данных.
Фиг.7 показывает систему 700, которая облегчает манипулирование данными в системе хранения данных, использующей компоненту ППИ. Система 702 хранения данных может быть системой хранения файлов, основанной на базах данных, основанной, по меньшей мере, частично на модели данных, где данные представлены как экземпляры сложного типа. Компонента 704 манипулирования данными может обеспечить манипулирование данными, связанными с системой 702 хранения данных, гарантируя внедрение по меньшей мере одной характеристики, связанной с системой 702 хранения данных. Компонента 704 манипулирования данными может активизировать компоненту 706 ППИ (далее обозначаемую как ППИ 706). ППИ 706 может обеспечить манипуляции данными (например, копирование, обновление, замену, получение, установку, создание, удаление, перемещение, …) путем исполнения хранящихся процедур в соответствии с полученными входными сигналами от пользователя. ППИ 706 может принимать входящие сигналы пользователя в соответствии с запросом/командой манипулирования данными, где такие входные сигналы пользователя исполняются, а при этом гарантируется целостность и (или) доброкачественность характеристик, связанных с системой 702 хранения данных. Должно быть оценено, что система 702 хранения данных, компонента 704 манипулирования данными и ППИ 706 могут быть практически подобными с системой 602, 502, 402, 302 и 202 хранения данных, компонентой 604, 504, 404, 304 и 204 манипулирования данными, ППИ 606, 506, 406, показанными на фиг.6, 5, 4, 3 и 2 соответственно.
Компонента 704 манипулирования данными может включать в себя компоненту 708 определения ППИ, которая определяет процедуры и (или) операции, которые позволяют пользователю манипулировать данными, связанными с системой 702 хранения данных без аннулирования любых ограничений модели данных (используемой для разработки системы 702 хранения данных). Компонента 708 определения ППИ может осуществить любую приемлемую функцию и (или) процедуру в отношении к манипулированию данными в системе 702 хранения данных. Должно быть оценено, что нижеследующее описание процедур является примером и никак не ограничивает настоящее изобретение. Кроме того, следующие ниже названия, функциональность, свойства и описания процедур не должны ограничивать настоящее изобретение.
Компонента 708 определения ППИ может использовать процедуру для создания элемента в системе 702 хранения данных и, в частности, создавать элемент в накопителе в системе 702 хранения данных. Например, нижеследующая таблица обеспечивает параметры, связанные с процедурой создания элемента.
Название
Направление
Тип
Описание
Элемент
Внутрь
[System.Storage.Store].Item
Элемент, подлежащий хранению
namespaceName(НазваниеОбластиИмен)
Внутрь
NVARchar(255)
НазваниеОбластиИмен хранится и используется в области имен системы хранения данных. Это название должно быть ненулевой и непустой строкой, иначе будет возвращена ошибка
securityDescriptor(Дескрипторбезопасности)
Внутрь
[System.Storage.Store].SecurityDescriptor
Дескриптор безопасности, который немедленно применяется к только что созданному элементу. Это двоичная форма дескриптора безопасности. Этот параметр не обязателен и может быть нулевым. В этом случае безопасность наследуется от содержащего элемента. Значение по умолчанию равно нулю
promotionStatus(СтатусПродвижения)
Внутрь
INTEGER
Значение продвижения, которое надо хранить для элемента. Если значение ненулевое, а элемент не является корневым элементом с файлом-образом файла (например, isFileBacked != TRUE), то выдается ошибка. Значение STALE устанавливается, если параметр установлен на нуль, а элемент являетсякорневым элементом с файлом-образом. Значение по умолчанию равно нулю
isFileBacked(Является файл-образом)
Внутрь
BIT
Определяет, является элемент корневым элементом с файлом-образом. Если isFileBacked установлен на TRUE, то бит, связанный с элементом, устанавливается на TRUE, создается поток файла нулевой длины и связывается с этим элементом. Ошибка возвращается, если хотя бы один из предшественников элемента является элементом с файлом-образом. Значение по умолчанию равно нулю
concurrencyToken(МаркерОдновременности)
Вовне
BIGINT
Когда процедура возвращается, эта переменная содержит concurrencyToken, связанный с созданием этого элемента. Значение по умолчанию равно нулю
isGhost(Является дублем)
Внутрь
BIT
Определяет, должен ли элемент быть продублирован. Этот параметр должен быть равен нулю для вызывающих абонентов, не имеющих прав на использование этого параметра. Если isGhost установлен на TRUE, а элемент не является корневым элементом с файлом-образом, возвращается ошибка. Значение по умолчанию равно нулю
itemSyncInfo(ИнформацияСинхронизацииЭлемента)
Внутрь
[System.Storage.Store].SyncEntityVersion
Должен быть равен нулю, если вызывающий абонент не синхронизирован. Значение по умолчанию равно нулю
itemSyncMetadata(МетаданныеСинхронизацииЭлемента)
Внутрь
[System.Storage.Store].itemSyncMetadata
Должен быть равен нулю, если вызывающий абонентне синхронизирован. Значение по умолчанию равно нулю
Как описано выше, процедура создания элемента может иметь различные коды ошибок, связанные с ней, основанные, по меньшей мере, частично на гарантии ограничений, относящихся к системе 702 хранения данных. Такие коды ошибок могут иметь любой приемлемый формат, а код может представлять текстовое сообщение, описывающее соответствующую ошибку. Например, код ошибки может быть выработан, когда пользователь пытается создать папку с файлом-образом. В другом примере код ошибки может быть выработан, если элемент файла обобщения типов не имеет файла-образа.
Ниже описана примерная процедура создания элемента, когда элемент имеет свойство, названное ИдентификаторКонтейнера, которое является ИдентификаторомЭлемента Элемента-контейнера. Элемент-контейнер должен уже существовать в накопителе и быть доступным из точки подключения клиента. Если вызывающий абонент не обеспечил для элемента ВремяСоздания (например, обеспечил значение нуль), накопитель установит ВремяСоздания на текущее время. Если вызывающий абонент не обеспечил для элемента ВремяПоследнейМодификации (например, обеспечил значение нуль), накопитель установит ВремяПоследнейМодификации на текущее время. Если оба значения не обеспечены, накопитель обеспечит элементу ВремяСоздания и ВремяПоследнейМодификации, выработанные практически одинаковым образом.
В другом примере компонента 708 определения ППИ может использовать ДескрипторБезопасности. Включение необязательного ДескриптораБезопасности удовлетворяет требованию к клиенту быть способным автоматически создать новый элемент и точно установить параметры безопасности и проверки. Должно быть понято, что ДескрипторБезопасности может работать вместе с компонентой безопасности (не показана), как описано выше. Кроме того, компонента 708 описания ППИ может определить осуществления элемента-заместителя. Если элемент-заместитель существует в накопителе и имеет точно такой же идентификатор элемента, как и отправленный в процедуру, то процедура не завершится неудачно. Элемент-заместитель будет восстановлен, а новые данные, прошедшие в этот вызов в СозданиеЭлемента, будут помещены в восстановленный элемент.
Как обсуждается выше, МаркерОдновременности возвращается, чтобы дать возможность клиентам использовать обнаружение оптимистического параллелизма при последующих обновлениях элемента. Возвращенный МаркерОдновременности является маркером такого элемента. В другом примере, когда агент файловой системы вызывает СозданиеЭлемента, компонента 706 ППИ не будет проводить проверку. Вызов будет выполнен в контексте пользователя (например exec_as_htoken), а проверка доступа будет выполняться в ППИ 706. Проверка файловой системы (например, традиционной системы хранения файлов, в которой система, основанная на битах, использует ППИ сходного размера битов вместе с операционной системой) для этого события будет вырабатываться агентом файловой системы. Кроме того, компонента 708 определения ППИ может обеспечить различные внедрения относительно элемента с файлом-образом. Например, если элемент является элементом с файлом-образом (например, флаг isFileBacked установлен как истинный), то может быть применено следующее: 1) ЭлементФайлаОбраза не может содержаться в другом дереве элемента с файлом-образом (например, для родительского элемента EntityState.RootFileBackedItemId должен быть NULL); и 2) файлы-образы могут создаваться только для тех элементов, которые объявлены CompoundItem типа.
Компонента 708 определения ППИ может осуществить процедуру создания по меньшей мере одного комплексного элемента. Процедура может создать множество элементов в накопителе, связанном с системой 702 хранения данных. Должно быть оценено, что компонента 708 определения ППИ может создавать набор расширений элементов и набор связей с каждым элементом. Тип ComplexItem является неизменяемым UDT. Необходим контейнер, чтобы передать данные, связанные с операцией/процедурой. Ниже приводится пример описания ComplexItem.
public class ComplexItem
{
Public ComplexItem(Item item,
SqlInt32promotionStatus,
SqlBoolean isFileBacked,
SqlString namespaceName,
SqlBoolean isGhost,
SyncEntityVersion syncInfo,
ItemSyncMetadata syncMetadata);
public void AddLink(Link link,
SyncEntityInformation syncInfo,
LinkSyncMetadata syncMetadata);
public void AddItemExtension(ItemExtension itemExtension,
SyncEntityVersion syncInfo);
public void AddItemFragment(ItemFragment itemFragment,
SyncEntityVersion syncInfo);
}
Кроме того, нижеследующая таблица обеспечивает пример параметров, связанных с процедурой создания комплексного элемента.
Название
Направ-ление
Тип
Описание
КомплексныеЭлементы
Внутрь
[System.Storage.Store].ComplexItemList
Список одного или более экземпляров ComplexItem
securityDescriptor(ДескрипторБезопасности)
Внутрь
[System.Storage.Store].securityDescriptor
Дескриптор безопасности, который немедленно применяется к только что созданному элементу. Строка является двоичной формой дескриптора безопасности. Этот параметр не обязателен и может быть нулевым. В этом случае безопасность всех элементов наследуется от источника элемента-контейнера. Значение по умолчанию равно нулю
concurrencyToken(МаркерОдновременности)
Вовне
BIGINT
Когда процедура повторяется, concurrencyToken содержит значение, связанное с созданием всех созданных элементов, связей и расширений элементов. Значение по умолчанию - нуль
Должно быть оценено, что компонента 708 определения ППИ может обеспечить следующую функциональность. Семантики транзакции таковы, что все элементы добавляются полностью. Если имеются какие-либо ошибки во время функции, ни один из комплексных элементов не помещается в накопитель. Если список КомплексныхЭлементов пуст, то затем операция становится пустой и успешно выполняется. Если элемент-заместитель существует в накопителе и имеет тот же идентификатор, что и любой из тех, что отправлены в процедуру, то процедура завершится неудачно. Список расширений элементов может быть нулевым или ненулевым с количеством записей от нуля и более. Список связей может быть нулевым или ненулевым с количеством записей от нуля и более. Список фрагментов элементов может быть нулевым или ненулевым с количеством записей от нуля и более МаркерОдновременности возвращается, чтобы дать возможность клиентам использовать обнаружение оптимистического параллелизма при последующих обновлениях. Значение МаркераОдновременности будет применено ко всем элементам, связям и расширениям элементов, созданных как результат этой операции. Относительно элемента с файлом-образом может быть применено следующее: 1) ЭлементФайлаОбраза не может содержаться в другом дереве элемента с файлом-образом (например, для родительского элемента EntityState.RootFileBackedItemId должен быть NULL); и 2) файлы-образы могут создаваться только для тех элементов, которые объявлены CompoundItem типа.
Компонента 708 определения ППИ может осуществить процедуру создания связи в накопителе в системе 702 хранения данных. Например, нижеследующая таблица может показать различные параметры, связанные с процедурой, используемой для создания связи.
Должно быть оценено, что компонента 708 определения ППИ гарантирует различные характеристики, связанные с системой 702 хранения данных. Например, идентификатор намеченного элемента может либо указывать на действительный элемент корректного типа (как обозначено в схеме для этого типа связи), и (или) идентификатор намеченного элемента должен быть нулевым. СозданиеСвязи может использоваться для создания одной связи между существующими элементами системы 702 хранения данных. Должно быть оценено, что если в накопителе существует связь-заместитель, которая имеет практически те же самые идентификатор связи и идентификатор исходного элемента, отправленного в процедуру, процедура не завершится ошибкой. Связь-заместитель может быть восстановлена, а новые данные, прошедшие в этот вызов в СозданиеСвязи, будут помещены в восстановленную связь. Кроме того, МаркерОдновременности может быть возвращен, чтобы дать возможность клиентам использовать обнаружение оптимистического параллелизма при последующих обновлениях этой связи.
Компонента 708 определения ППИ может использовать процедуру создания расширения элемента в накопителе. Например, нижеследующая таблица может показать различные параметры, связанные с процедурой, используемой для создания расширения элемента.
МаркерОдновременности, используемый выше, может быть возвращен, чтобы дать возможность клиентам использовать обнаружение оптимистического параллелизма при последующих обновлениях этого расширения элемента.
Компонента 708 определения ППИ может активизировать процедуру изменения элемента в накопителе, где накопитель хранит данные, относящиеся к системе 702 хранения данных. Таблица ниже является примером параметров и описаний, соответствующих модификации процедуры элемента.
Компонента 708 определения ППИ может активизировать процедуру изменения связи в накопителе. Таблица ниже является примером параметров и описаний, соответствующих модификации процедуры связи.
Название
Направление
Тип
Описание
sourceItenId(ИдентификаторИсточника)
Внутрь
[System.Storage.Store].ItemId
Идентификатор исходного элемента связи
linkId(ИдентификаторСвязи)
Внутрь
[System.Storage.Store].LinkId
Идентификатор элемента, подлежащего обновлению
compiledChangeDefinition(СкомпилированноеИзменениеОпределения)
Внутрь
[System.Storage.Store].CompiledChangeDefinition
Описание свойств элемента, который будет модифицирован
valueList(СписокЗначений)
Внутрь
[System.Storage.Store].AssignmentValueList
Набор значений, которые будут применены к свойствам в ChangeDefinition
concurrencyToken(МаркерОдновременности)
Вовне, внутрь
BIGINT
При подаче concurrencyToken является ожидаемым значением расширения.Когда процедура возвращает concurrencyToken, он содержит значение, связанное с обновлением связи. Если входное значение нулевое, проверка не проводится. Новый concurrencyToken тоже возвращается. Значение по умолчанию равно нулю
syncInfo(ИнформацияСинхронизации)
Внутрь
[System.Storage.Store].SyncEntityVersion
Должен быть равен нулю, если вызывающий абонент не синхронизирован. Значение по умолчанию равно нулю
syncMetadata(МетаданныеСинхронизации)
Внутрь
[System.Storage.Store].LinkSyncMetadata
Должен быть равен нулю,если вызывающий абонент не синхронизирован. Значение по умолчанию равно нулю
Источник связи неизменим и не может быть изменен с использованием этой хранимой процедуры. Цель связи изменима и может быть изменена путем вызова ОбновленияСвязи. Тип идентификатора намеченного элемента может быть нулевым или ненулевым. Если он ненулевой, он может указывать на элемент, который существует в накопителе, и может совпадать с типом, объявленным для связи.
Кроме того, компонента 708 определения ППИ может модифицировать РасширениеЭлемента в накопителе. Таблица ниже является примером процедуры, используемой компоненты 708 определения ППИ, и показывает различные свойства и описания, связанные с ней.
Кроме того, компонента 708 определения ППИ может активизировать процедуру с ППИ 706, которая позволяет элементу быть удаленным в накопителе. Таблица ниже с примерными параметрами и описаниями процедуры удаления элемента из накопителя.
В случае, если элемент не будет найден, процедура завершается успешно. Любые связи в накопителе, которые указывают на элемент, могут иметь свойство ИдентификаторЦелевогоЭлемента, установленное на нуль. Установка ИдентификатораЦелевогоЭлемента на нуль может быть успешной независимо от эффективных разрешений, которые вызывающий абонент имеет для связей. При удалении элемента связи, ведущие от элемента как от источника, РасширенияЭлементов и ФрагментыЭлементов, связанные с этим элементом, могут быть удалены. Удаление может быть успешным, если у элемента не осталось наследников (например, не должно существовать элементов с идентификатором контейнера, равным идентификатору элемента). В одном примере не существует способа запустить каскадное удаление дерева элементов. Это может быть осуществлено только вызывающим абонентом. Если идентификатор элемента имеет заместителя, успех получается независимо от состояния значения МаркераОдновременности/ ПоследнегоОбновленияTS. Если МаркерОдновременности не совпадает, а элемент не имеет заместителя, может быть возвращен код ошибки. Агент файловой системы может вызвать УдалениеЭлемента в своем собственном контексте. В ППИ 706 не будет проводиться никакой проверки доступа.
Компонента 708 определения ППИ может активизировать процедуру удаления связи в накопителе. Таблица ниже является примером параметров и описаний, соответствующих процедуре удаления связи.
Название
Направление
Тип
Описание
sourceItemId(ИдентификаторИсходногоЭлемента)
Внутрь
[System.Storage.Store].ItemId
Идентификатор исходного элемента для связи, подлежащей удалению
linkId(ИдентификаторСвязи)
Внутрь
[System.Storage.Store].LinkId
Идентификатор связи, подлежащей удалению
concurrencyToken(МаркерОдновременности)
Внутрь
BIGINT
Ожидаемое значение concurrencyToken для этой связи. Если значение нулевое, проверка не проводится. Значение по умолчанию равно нулю
deletionUtc(УдалениеUtc)
Внутрь
DATETIME
Должен быть равен нулю, если вызывающий абонент не синхронизирован. Значение по умолчанию равно нулю
syncVersion(ВерсияСинхронизации)
Внутрь
[System.Storage.Store].SyncEntityVersion
Должен быть равен нулю, если вызывающий абонент не синхронизирован. Значение по умолчанию равно нулю
Компонента 708 определения ППИ может использовать процедуру удаления расширения элемента в накопителе в системе 702 хранения данных. Таблица ниже является примером параметров и описаний процедуры, относящихся к удалению процедуры расширения элемента, используемого в настоящем изобретении.
Название
Направление
Тип
Описание
itemId(ИдентификаторЭлемента)
Внутрь
[System.Storage.Store].ItemId
Идентификатор элемента, с которым связано расширение намеченного элемента
typeId(ИдентификаторТипа)
Внутрь
[System.Storage.Store].TypeId
Идентификатор типа расширения элемента
concurrencyToken(МаркерОдновременности)
Внутрь
BIGINT
Ожидаемое значение concurrencyToken для этого расширения элемента. Если значение нулевое, проверка не проводится. Значение по умолчанию равно нулю
deletionUtc(УдалениеUtc)
Внутрь
DATETIME
Должен быть равен нулю, если вызывающий абонент не синхронизирован. Значение по умолчанию равно нулю
syncVersion(ВерсияСинхронизации)
Внутрь
[System.Storage.Store].SyncEntityVersion
Должен быть равен нулю, если вызывающий абонент не синхронизирован. Значение по умолчанию равно нулю
Кроме того, компонента 708 определения ППИ может использовать процедуру создания ФрагментаЭлемента в накопителе. Таблица ниже является примером параметров и описаний, соответствующих процедуре, которая позволяет пользователю создать ФрагментЭлемента.
Название
Направление
Тип
Описание
itemFragment(ФрагментЭлемента)
Внутрь
[System.Storage.Store].ItemFragment
Фрагмент элемента, подлежащий созданию ИдентификаторФрагмента ФрагментаЭлемента хранится в UDT
concurrencyToken(МаркерОдновременности)
Вовне
BIGINT
Когда процедура возвращаетconcurrencyToken, он содержит значение, связанное с созданием этого ФрагментаЭлемента. Значение по умолчанию равно нулю
syncInfo(ИнформацияСинхронизации)
Внутрь
[System.Storage.Store].SyncEntityVersion
Должен быть равен нулю, если вызывающий абонент не синхронизирован. Значение по умолчанию равно нулю
Компонента 708 определения ППИ может вызывать процедуру изменения ФрагментаЭлемента в накопителе. Эта хранимая процедура может быть выработана для каждого типа так, что название типа и название свойства ФрагментаЭлемента будут содержаться в имени сохраненной процедуры. Для большей ясности: ссылка на «СоздатьФрагментЭлемента» была обсуждена выше. Таблица ниже является примером параметров и описаний, соответствующих модификации ФрагментаЭлемента в накопителе.
Компонента 708 определения ППИ может определять и (или) осуществлять процедуру удаления ФрагментаЭлемента в накопителе. Таблица ниже показывает различные параметры в качестве примера процедуры по удалению ФрагментаЭлемента в системе 702 хранения данных.
Название
Направление
Тип
Описание
itemId(ИдентификаторЭлемента)
Внутрь
[System.Storage.Store].ItemId
Идентификатор исходного элемента для ФрагментаЭлемента, подлежащего удалению
setId(ИдентификаторУстановки)
Внутрь
[System.Storage.Store].SetId
Идентификатор свойства фрагмента элемента, подлежащего удалению
fragmentId(ИдентификаторФрагмента)
Внутрь
[System.Storage.Store].FragmentId
Идентификатор фрагмента, подлежащего удалению
concurrencyToken(МаркерОдновременности)
Внутрь
BIGINT
Ожидаемое значение concurrencyToken для этого ФрагментаЭлемента. Если значение нулевое, проверка не проводится. Значение по умолчанию равно нулю
deletionUtc(УдалениеUtc)
Внутрь
DATETIME
Должен быть равен нулю, если вызывающий абонент не синхронизирован. Значение по умолчанию равно нулю
syncInfo(ИнформацияСинхронизации)
Внутрь
[System.Storage.Store].SyncEntityVersion
Должен быть равен нулю, если вызывающий абонент не синхронизирован. Значение по умолчанию равно нулю
Кроме того, компонента 708 определения ППИ может использовать процедуру получения дескриптора безопасности элемента. Таблица ниже является примером различных параметров, связанных с процедурой получения дескриптора безопасности элемента в системе 702 хранения данных.
Название
Направление
Тип
Описание
itemId(ИдентификаторЭлемента)
Внутрь
[System.Storage.Store].ItemId
Идентификатор элемента, дескриптор безопасности которого подлежит извлечению
securityInfoFlags(МеткиИнформацииБезопасности)
Внутрь
INTEGER
Набор меток, показывающих, какие части дескриптора безопасности должны быть возвращены
securityDescriptor(ДескрипторБезопасности)
Вовне
[System.Storage.Store].SecurityDescriptor
Дескриптор безопасности
concurrencyToken(МаркерОдновременности)
Вовне
BIGINT
Когда процедура возвращает эту переменную, она содержит значение concurrencyToken, связанное с этим обновлением дескриптора безопасности. Значение по умолчанию равно нулю
МаркерОдновременности возвращается, чтобы дать возможность клиентам использовать обнаружение оптимистического параллелизма при последующих обновлениях дескриптора безопасности. МаркерОдновременности может быть связан с дескриптором безопасности. В одном примере МаркерОдновременности для дескриптора безопасности не связан со значением МаркераОдновременности элемента, которое соответствует ИдентификаторуЭлемента. Агент файловой системы может вызвать ПолучениеБезопасностиЭлемента в своем собственном контексте.
Компонента 708 определения ППИ может установить дескриптор безопасности элемента в накопителе. Таблица ниже является примером процедуры установки дескриптора безопасности, используемой ППИ 706, и показывает различные свойства и (или) описания, связанные с ним.
Название
Направление
Тип
Описание
itemId(ИдентификаторЭлемента)
Внутрь
[System.Storage.Store].ItemId
Идентификатор элемента, дескриптор безопасности которого подлежит извлечению
securityInfoFlags(МеткиИнформацииБезопасности)
Внутрь
INTEGER
Набор меток, показывающих, какие части дескриптора безопасности должны быть обновлены
securityDescriptor(ДескрипторБезопасности)
Вовне
[System.Storage.Store].SecurityDescriptor
Дескриптор безопасности
concurrencyToken(МаркерОдновременности)
Вовне
BIGINT
При вводе получают ожидаемое значение concurrencyToken дескриптора безопасности. Когда процедура возвращает эту переменную, она содержит concurrencyToken, связанный с этим обновлением дескриптора безопасности. Если входное значение нулевое, проверка не проводится. Новый concurrencyToken тоже возвращается. Значение по умолчанию равно нулю
Компонента 708 определения ППИ может использовать процедуру, которая перемещает элемент из одного контейнера в другой и (или) меняет НазваниеОбластиИмен элемента. Таблица ниже является примером различных параметров, связанных с такой процедурой.
Название
Направление
Тип
Описание
ItemId(ИдентификаторЭлемента)
Внутрь
[System.Storage.Store].ItemId
ИдентификаторЭлемента элемента, подлежащего перемещению
newContainerId(ИдентификаторНовогоКонтейнера)
Внутрь
[System.Storage.Store].ItemId
Идентификатор контейнера, куда будет перемещен элемент. Если передается нуль, идентификатор контейнера остается неизмененным
namespaceName(НазваниеОбластиИмен)
Внутрь
NVARchar(255)
Значение названия namespaceName. Если передается нуль, название остается неизмененным. Передача пустой строки является ошибкой. См. примечания для подробностей по действительной заявленной длине типа
concurrencyToken(МаркерОдновременности)
Вовне, внутрь
BIGINT
Ожидаемое значение concurrencyToken для этого элемента. Если значение нулевое, проверка не проводится. Значение по умолчанию равно нулю
Если элемент подлежит перемещению или новый контейнер недоступен из текущей точки соединения, процедура может возвратить ошибку. Эта операция может завершиться неудачно, если элемент с тем же именем уже существует в намеченном контейнере. Существует три действительных способа использовать эту функцию. Эти использования показаны в таблице ниже.
НазваниеОбластиИмен
ИдентификаторНовогоКонтейнера
Результат
Нулевое
Нулевое
Ошибка
Нулевое
Ненулевое
Перемещает элемент, но сохраняет то же самое НазваниеОбластиИмен
Ненулевое
Нулевое
Не перемещает элемент и меняет НазваниеОбластиИмен
Ненулевое
Ненулевое
Перемещает элемент в новый контейнер и меняет НазваниеОбластиИмен
Независимо от того, как вызвано ПеремещениеЭлемента (например, для перемещения элемента и (или) для переименования элемента), значение ПоследнегоОбновленияTS (возвращенного в МаркереОдновременности) для элемента может быть обновлено. Агент файловой системы может вызвать ПеремещениеЭлемента в контексте пользователя. Для переименовываемых файла/директории не проводятся проверки доступа. Проверка доступа, выполненная над новым родителем, определяет, имеет ли пользователь доступ к перемещению элемента на новое место назначения.
Компонента 708 определения ППИ может использовать процедуру, которая заменяет элемент новым элементом, который может быть отличного типа. Таблица ниже является примером различных параметров, связанных с такой процедурой.
Название
Направление
Тип
Описание
newItem(НовыйЭлемент)
Внутрь
[System.Storage.Store].ItemId Item
Элемент для замены существующего элемента в накопителе
deleteItemOwnedContent(УдалитьСодержимоеПринадлежащееЭлементу)
Внутрь
BIT
Если этот параметр установлен на TRUE, то все содержание, принадлежащее элементу (связи, идущие от элемента, расширения элемента, потоки файлов, прикрепленных к элементу) будут удалены
concurrencyToken(МаркерОдновременности)
Вовне, внутрь
BIGINT
При вводе concurrencyToken является ожидаемым значением элемента. Когда процедура возвращает concurrencyToken, он содержит значение, связанное с этим обновлением элемента. Если входное значение нулевое, проверка не проводится. Новый concurrencyToken тоже возвращается. Значение по умолчанию равно нулю
syncInfo(ИнформацияСинхронизации)
Внутрь
[System.Storage.Store].SyncEntityVersion
Должен быть равен нулю, если вызывающий абонент не синхронизирован. Значение поумолчанию равно нулю
Операция ЗаменыЭлемента может быть использована для замены объекта элемента другим объектом элемента. Эти объекты могут называться СтарымЭлементом и НовымЭлементом. СтарыйЭлемент и НовыйЭлемент могут иметь одинаковый ИдентификаторЭлемента, но могут иметь различные типы. Вот, например, одно приложение, где эта операция будет использована для продвижения Свойства. Нижеследующее описание может быть связано с операцией ЗаменыЭлемента: 1) идентификатор контейнера не может меняться (чтобы получить такую функциональность, вызывающий абонент должен вызвать ПеремещениеЭлемента); 2) существующее НазваниеОбластиИмен не будет меняться; 3) всегда удалять все элементы, которые происходят от заменяемого элемента, если это элемент с файлом-образом; 4) если операция замены элемента сделает направленную на элемент связь неверной (поскольку ограничение намеченного типа более недействительно), ЗаменаЭлемента завершится неудачно; 5) если операция замены элемента сделает происходящую от элемента связь неверной (поскольку ограничение исходного типа более недействительно), ЗаменаЭлемента завершится неудачно; 6) блоки замены нового элемента установлены на значения по умолчанию. Существует по меньшей мере два исключения. Если элемент участвует в синхронизации, то он затем проводит значение ИзменениеИнформации.СинхронизацияИнформации.СозданиеСинхронизированнойВерсии из старого элемента в новый элемент. Кроме того, если элемент принимает участие в синхронизации и имеет файл-образ, блок изменения для потока файлов проводится из старого элемента в новый элемент; 7) все свойства, основанные на файлах, должны быть определены. В отличие от СозданияЭлемента не существует наследование свойств файлов из исходной папки, если они не установлены пользователем; 8) для элементов с файлами-образами любой поток данных не модифицируется, в противном случае определяется метка УдалитьСодержимоеПринадлежащееЭлементу (см. таблицу ниже);
Тип старого элемента
Тип нового элемента
Поведение
Элемент без файла-образа
Элемент с файлом-образом
Не допускается; ЗаменаЭлемента заканчивается неудачно (возвращается код ошибки)
Элемент с файлом-образом
Элемент с файлом-образом
Оставляет старые потоки файлов (если это не преодолено меткой УдалитьСодержимоеПринадлежащееЭлементу). Если элемент участвует в синхронизации, то значение блока изменения, соответствующее потоку файлов, передается из старого элемента в новый элемент
Элемент с файлом-образом
Элемент без файла-образа
Не допускается; ЗаменаЭлемента заканчивается неудачно (возвращается код ошибки)
Элемент без файла-образа
Элемент без файла-образа
Нет специального поведения
и 9) ЗаменаЭлемента не позволяет элементу переключаться из типа обобщенных элементов в тип составных элементов и наоборот (см. таблицу ниже).
Тип старого элемента
Тип нового элемента
Поведение
Обобщенный
Обобщенный
Допускается
Составной
Составной
Допускается
Обобщенный
Составной
Не допускается (возвращает код ошибки)
Составной
Обобщенный
Не допускается (возвращает код ошибки)
Фиг.8 показывает систему 800, которая использует сбор информации, чтобы облегчить манипулирование данными, основанное, по меньшей мере, частично на модели данных с соответствующими характеристиками. Система 800 может включать в себя систему 802 хранения данных (которая может быть представлена с помощью представления модели данных), компоненту 804 манипулирования данными и интерфейс 106, причем все они могут быть практически одинаковыми с соответствующими составляющими, описанными на предыдущих чертежах. Система 800 далее включает в себя компоненту 806 сбора информации. Компонента 806 сбора информации может быть использована компонентой 804 манипулирования данными, чтобы облегчить манипулирование данными (например, копирование, обновление, замену, получение, установку, создание, удаление, перемещение, …) в соответствии с по меньшей мере одной характеристикой, связанной с системой 802 хранения данных. Например, компонента 806 сбора информации может быть использована для анализа характеристик, связанных с системой 802 хранения данных и/или гарантирования целостности характеристик в отношении к системе 802 хранения данных.
Должно быть понятно, что компонента 806 сбора информации может обеспечить аргументацию или сделать выводы о состоянии системы, рабочей среды и (или) пользователе из набора наблюдений, собираемых с помощью событий, и (или) данных. Выводы могут быть использованы для идентификации определенного контекста, или действия, или могут генерировать вероятность распределения среды состояний. Выводы могут быть вероятностными, то есть вычисление распределения вероятности по состояниям интереса на основе рассмотрения данных и событий. Выводы также могут относиться к технологиям, используемым для сравнения событий более высокого уровня с набором событий и (или) данных. Такие выводы выражаются в создании новых событий или действий из набора наблюдаемых событий и (или) хранимых данных о событиях, действительно ли события коррелируют в большой близости по времени, и действительно ли события и данные происходят от одного или более события и источников данных. Различные схемы и (или) системы классификации (разработанные в явном или неявном виде) (например поддержка векторных машин, нейронные сети, экспертные системы, байесовы доверенные сети, нечеткая логика, механизмы слияния данных…) могут быть использованы в связи с происходящими автоматическими и (или) выведенными действиями в связи с настоящим изобретением.
Классификатор является функцией, которая составляет вектор входных признаков, х = (х1, х2, х3, xn) для уверенности в том, что входные сигналы принадлежат классу, то есть f(x) = уверенность(класс). Такая классификация может использовать вероятностный анализ и/или основанный на статистике анализ (например, факторизацию на выгоды и расходы), чтобы спрогнозировать или сделать выводы о действии, которое пользователь желает видеть исполняющимся автоматически. Машина поддержки вектора (МПВ) (SVM) является примером классификатора, который может быть использован. МПВ работает путем нахождения гиперповерхности в пространстве возможных входных сигналов, которые гиперповерхность пытается разделить на инициирующие критерии и неинициирующие события. Интуитивно это делает классификацию корректной для тестирования данных, находящихся поблизости, но не идентичных обследуемым данным. Другие подходы направленных и ненаправленных классификаций включают в себя, например, простой алгоритм Байеса, байесовы сети, деревья решений, нейронные сети, модели с нечеткой логикой и модели вероятностной классификации, обеспечивающие различные шаблоны независимости, которые могут использоваться. Классификация, как она используется здесь, также включает в себя статистическую регрессию, которая используется для разработки моделей приоритета.
Фиг.9-10 показывают методологии в соответствии с настоящим изобретением. Для простоты изложения методологии показаны и описаны в виде последовательности действий. Должно быть понято и оценено, что настоящее изобретение не ограничено проиллюстрированными действиями и (или) порядком действий, например действия могут совершаться в различных последовательностях и (или) одновременно, а также вместе с другими действиями, не представленными и не описанными здесь. Далее, не все показанные действия могут потребоваться для воплощения методологий в соответствии с настоящим изобретением. Помимо этого специалисты в данной области техники поймут и оценят, что методологии могут быть альтернативно представлены в виде последовательности взаимосвязанных состояний с помощью диаграммы состояний или событий.
Фиг.9 показывает методологию 900, которая облегчает активизацию манипулирования данными в системе, основанной на базах данных, внедряя по меньшей мере одно ограничение модели. В ссылочной позиции 902 для представления системы хранения данных может быть использована модель данных. Модель данных может быть комплексной моделью, основанной, по меньшей мере, частично на структуре базы данных, где элемент, подэлемент, свойство и отношения определены, чтобы позволить представление информации в системе хранения данных в виде экземпляров сложных типов. Модель данных может использовать набор базовых строительных блоков для создания и управления расширенных существующих объектов и связей между объектами. Должно быть оценено, что модель данных может включать по меньшей мере одну характеристику, которая отражается на структуре и (или) функциональности представленной системы хранения данных. Другими словами, модель данных может содержать ограничения, которые могут быть внедрены, чтобы гарантировать целостность модели данных, системы хранения данных и данных, связанных с ними.
В ссылочной позиции 904 может быть определена характеристика, связанная с системой хранения данных (основанной на модели данных). Характеристика, например, может состоять из указаний, ограничений, проектов и т.п., чтобы обеспечить систему хранения данных в соответствии с такими характеристиками. За счет использования таких характеристик может быть гарантирована целостность и точность соответствующей модели данных. В ссылочной позиции 906 манипулирование данными может быть активизировано путем осуществления по меньшей мере одной процедуры. При обеспечении любого пригодного манипулирования данными в отношении системы хранения данных характеристика такой системы хранения данных внедряется, чтобы обеспечить стабильную рабочую среду. В одном примере ППИ может быть использован, чтобы позволить любое приемлемое манипулирование данными совместно с системой хранения данных. Например, ППИ может использоваться пользователем, при этом пользователь может модифицировать данные. Должно быть оценено, что манипулирование данными может включать в себя копирование, обновление, замену, получение, установку, создание, удаление, перемещение и т.д., но не ограничивается ими. Например, система хранения данных может включать в себя иерархическую систему контейнеров, в которой такая характеристика внедряется во время любой процедуры, используемой для манипулирования данными в системе хранения данных.
Фиг.10 показывает методологию 1000 манипулирования данными, основанную, по меньшей мере, частично на модели данных с соответствующими внедренными характеристиками. В ссылочной позиции 1002 для представления системы хранения данных может быть использована модель данных. Система хранения данных может быть файловой системой, основанной на базах данных, где информация представляется в виде экземпляров сложного типа. В ссылочной позиции 1004 определяется характеристика, связанная с представленной системой хранения данных. Характеристика, например, может включать в себя, но без ограничения, сужения, указания, правила, цели, проекты и (или) любые другие приемлемые элементы, связанные с системой хранения данных, которые способствуют точному осуществлению.
В ссылочной позиции 1006 манипулирование данными может быть активизировано путем использования по меньшей мере одной процедуры. Манипулирование данными может быть обеспечено ППИ, где пользователь может вызывать по меньшей мере одну процедуру, а процедура может соответствовать по меньшей мере одной манипуляции данными. Должно быть оценено, что манипуляции данными активизируются при поддержке и (или) внедрении характеристик(и), связанных с системой хранения данных. В ссылочной позиции 1008 может быть использован код ошибки и может быть использована безопасность. Код ошибки может быть выработан и использован, например, когда манипулирование данными нарушает характеристики системы хранения данных. Должно быть оценено, что код ошибки может быть показан пользователю через ППИ, где код может соответствовать справочной таблице, которая соотносит код и текстовое сообщение. Безопасность, связанная с манипулированием данными и (или) ППИ, может включать в себя различные уровни авторизации и (или) имена и (или) пароли пользователей. Другими словами, каждая манипуляция данными может быть связана с уровнем безопасности, где только конкретный уровень безопасности может осуществлять такие процедуры, и (или) потребуются имя и пароль пользователя.
В ссылочной позиции 1010 оптимистический параллелизм и (или) зависания могут быть осуществлены в связи с манипулированием данными в системе хранения данных. Оптимистический параллелизм предполагает низкую вероятность сходства другого процесса, выполняющего изменение в практически одинаковое время, так что он не производит блокировки до тех пор, пока изменение не готово к внесению в систему хранения данных (например, накопитель). За счет использования такой технологии время блокировки уменьшается и способствует большей производительности базы данных. Например, маркер может сохраняться для того, чтобы связать с элементом изменения от каждой модификации элемента. Другими словами, оптимистический параллелизм может облегчать доступ к данным между двумя одновременными приложениями. Кроме того, блокировка может облегчить поддержку множества одновременно вызывающих абонентов. Для примера представим сценарий, где имеется множество одновременно вызывающих абонентов, которые запрашивают монопольное использование общего набора ресурсов таким образом, что ни один из запросов не может быть удовлетворен, так как каждый абонент ожидает другого. В таком случае система может заблокировать вызывающих абонентов (заблокировать абонентов), и единственным выходом из этого случая будет исключение одного из абонентов. Чтобы избежать такой ситуации блокировка может поддерживать множество одновременно вызывающих абонентов так, что комплексная логика блокировки может гарантировать автоматическое выполнение или невыполнение отдельных запросов. Кроме того, множество одновременно вызывающих абонентов может быть поддержано так, что комплексная логика блокировки сможет гарантировать атомарное выполнение или невыполнение отдельных запросов.
Для того чтобы обеспечить дополнительный контекст для осуществления различных аспектов настоящего изобретения, фиг.11-12 и нижеследующее обсуждение направлены на обеспечение краткого общего описания приемлемой компьютерной среды, в которой может быть осуществлено множество аспектов настоящего изобретения. Хотя изобретение было описано выше в общем контексте компьютерно-исполняемых инструкций для компьютерной программы, которая исполняется на локальном компьютере и (или) на удаленном компьютере, специалисты в данной области техники поймут, что изобретение может быть осуществлено также и при сочетании с другими программными модулями. В общем случае программные модули включают в себя подпрограммы, программы, компоненты, структуры данных и т.п., которые выполняют конкретные задания и (или) осуществляют конкретные типы абстрактных данных.
Кроме того, специалисты в данной области техники оценят то, что изобретенные способы могут выполняться и при других конфигурациях компьютерной системы, включая компьютерные системы с одним процессором или множеством процессоров, миникомпьютеры, обычные компьютеры, равно как и персональные компьютеры, карманные персональные компьютеры, основанные на микропроцессорах, и (или) программируемые предметы бытовой электроники и т.п., каждый из которых может оперативно связываться с одним или несколькими связанными с ним устройствами. Проиллюстрированные аспекты изобретения также могут практиковаться в распределенных компьютерных средах, где определенные задачи выполняются удаленными устройствами обработки, которые подключены через сеть связи. Однако некоторые, если не все, аспекты настоящего изобретения могут быть выполнены на отдельном компьютере. В распределенной компьютерной среде программные модули могут быть расположены в местных и (или) удаленных устройствах хранения.
Фиг.11 является условной блок-схемой модельной вычислительной среды 1100, с которой может взаимодействовать настоящее изобретение. Система 1100 включает в себя один или несколько клиентов 1110. Клиент(ы) 1100 могут быть аппаратными и (или) программными (например, потоки, процессы, вычислительные устройства). Система 1100 также включает в себя один или несколько серверов 1120. Сервер(ы) 1120 могут быть аппаратными и (или) программными (например, потоки, процессы, вычислительные устройства). Серверы 1120 могут вмещать потоки, например, для выполнения преобразований путем использования настоящего изобретения.
Одна возможная связь между клиентом 1110 и сервером 1120 может происходить в форме пакета данных, адаптированного к передаче между двумя или более компьютерными процессами. Система 1100 включает в себя сеть 1140 связи, которая может быть использована, чтобы облегчить связь между клиентом(ами) 1110 и сервером(ами) 1120. Клиент(ы) 1110 операбельно соединены с одним или более хранилищами 1150 клиентских данных, которые могут быть использованы для хранения информации, местной для клиента(ов) 1110. Аналогично, сервер(ы) 1120 операбельно соединены с одним или более хранилищами 1130 серверных данных, которые могут быть использованы для хранения информации, местной для сервера(ов) 1140.
На фиг.12 показано, что примерная среда 1200 для осуществления различных аспектов настоящего изобретения включает в себя компьютер 1212. Компьютер 1212 включает в себя блок 1214 обработки, системную память 1216 и системную шину 1218. Системная шина 1218 соединяет компоненты системы, включая системную память 1216 и блок 1214 обработки, но не ограничиваясь ими. Блок 1214 обработки может быть любым из множества пригодных процессоров. Сдвоенные микропроцессоры и другие многопроцессорные архитектуры также могут быть использованы в качестве блока 1214 обработки.
Системная шина 1218 может быть любой из нескольких типов структуры шин, включая шину памяти или контроллер памяти, внешнюю шину и внутреннюю шину и (или) локальную шину, используя любое множество пригодных архитектур шин, в том числе следующие типы шин, но не ограничиваясь ими: стандартная промышленная архитектура (ISA), микроканальная архитектура (MSA), расширенная промышленная стандартная архитектура (EISA), интеллектуальное дисковое оборудование (IDE), локальная шина VESA (VLB), взаимодействие периферийных компонентов (PCI), шина Card Bus, универсальная последовательная шина (USB), усовершенствованный графический порт (AGP), интерфейс PCMCIA, шина Firewire (IEEE 1394) и интерфейс малых вычислительных систем (SCSI).
Системная память 1216 включает в себя энергонезависимую память 1220 и энергозависимую память 1222. Базовая система ввода-вывода (BIOS), содержащая базовые программы для передачи информации между элементами компьютера 1212, такие как при запуске компьютера, хранится в энергонезависимой памяти 1222. Для целей иллюстрации, но не ограничения, энергонезависимая память 1222 может включать в себя постоянное запоминающее устройство (ПЗУ), программируемое ПЗУ (ППЗУ), электрически программируемое ПЗУ (ЭППЗУ), электрически стираемое программируемое ПЗУ (ЭСППЗУ) или флэш-память. Энергозависимая память 1220 включает в себя оперативно запоминающее устройство (ОЗУ), которое действует как внешняя кэш-память. Для иллюстрации, не для ограничения, ОЗУ доступно во множестве форм, таких как статическое ОЗУ (СОЗУ), динамическое ОЗУ (ДОЗУ), синхронное ДОЗУ (СДОЗУ), СДОЗУ с удвоенной частотой передачи данных (УЧПД СДОЗУ), усиленное СДОЗУ (УСДОЗУ), ДОЗУ типа Synchlink (СЛДОЗУ), ОЗУ прямого доступа типа Rambus (РПДОЗУ), динамическое ОЗУ прямого доступа типа Rambus (ДРПДОЗУ) и динамическое ОЗУ типа Rambus (РПДОЗУ).
Компьютер 1212 также включает в себя компьютерные носители - съемные/несъемные, энергонезависимые/энергозависимые. Фиг.12 показывает, например, дисковое хранение 1224. Диск 1224 включает в себя (но не ограничивается ими) такие устройства как привод магнитных дисков, привод гибких дисков, ленточный привод, Jaz-привод, привод ZIP, привод LS-100, карта флэш-памяти. Помимо этого дисковое хранение 1224 может включать в себя носители отдельно или в сочетании с другими носителями, в том числе (но не ограничивается ими): привод оптических дисков, таких как ПЗУ на компакт-диске (CD-ROM), записываемый компакт-диск (CD-R Drive), перезаписываемый компакт-диск (CD-RW Drive) или ПЗУ на диске высокой емкости (DVD-ROM). Чтобы облегчить подсоединение устройств 1224 дискового хранения к системной шине 1218, обычно используются съемный или несъемный интерфейс, такой как интерфейс 1226.
Должно быть оценено, что фиг.12 описывает программное обеспечение, которое действует как посредник между пользователями и основными ресурсами компьютера, описанными в приемлемой рабочей среде 1200. Такое программное обеспечение включает в себя операционную систему 1228. Операционная система 1228, которая может храниться в дисковом хранении 1224, действует так, чтобы управлять и размещать ресурсы компьютерной системы 1212. Системные приложения 1230 пользуются преимуществом управления ресурсами посредством операционной системы 1228 через программные модули 1232 и данные 1234 программ, хранящихся либо в системной памяти 1216, либо в дисковом хранении 1224. Должно быть оценено, что настоящее изобретение может быть осуществлено в различных операционных системах или сочетаниях операционных систем.
Пользователь вводит команды или информацию в компьютер 1212 через устройство(а) 1236 ввода. Устройства 1236 ввода включают в себя (но не ограничивается ими) позиционирующее устройство, такое как мышь, трэкбол, стилус, тачпад, клавиатура, микрофон, джойстик, игровая приставка, спутниковая антенна, сканер, карта ТВ-тюнера, цифровая камера, цифровая видеокамера, веб-камера и т.д. Эти и другие устройства ввода соединены с блок 1214 обработки по системной шине 1218 через порт(ы) 1238 интерфейса. Порт(ы) 1238 интерфейса включают в себя, но не ограничиваются ими, последовательный порт, параллельный порт, игровой порт и универсальную последовательную шину (USB). Устройство(а) 1240 вывода используют некоторые из тех же типов портов, используемых как входные устройства 1236. Так, например, порт USB может быть использован для обеспечения ввода данных в компьютер 1212 и вывода информации из компьютера 1212 на устройство 1240 вывода. Выходной адаптер 1242 предусмотрен, чтобы проиллюстрировать, что существуют еще выходные устройства 1240, такие как мониторы, колонки, принтеры среди прочих выходных устройств 1240, которым требуются специальные адаптеры. Выходные адаптеры 1242 включают в себя в качестве примера и без ограничения видеокарту и звуковую карту, которые обеспечивают средство подключения между выходным устройством 1240 и системной шиной 1218. Следует отметить, что как входные, так и выходные пропускные способности обеспечиваются другими устройствами и (или) системами устройств, такими как удаленные компьютер(ы) 1244.
Компьютер 1212 может работать в сетевой рабочей среде, используя логические соединения с одним или несколькими удаленными компьютерами, такими как удаленный(е) компьютер(ы) 1244. Удаленным компьютером 1244 может быть персональный компьютер, сервер, маршрутизатор, сетевой компьютер, рабочая станция, основанное на микропроцессе приспособление и другие общие сетевые узлы и т.п., и обычно включает в себя многие или все элементы, описанные для компьютера 1212. Для простоты на удаленном компьютере 1244 показано только устройство 1246 хранения памяти. Удаленный(ые) компьютер(ы) 1244 логически подключен к компьютеру 1212 через сетевой интерфейс 1248, а затем физически подключен через коммуникационное соединение 1250. Сетевой интерфейс 1248 осуществляет проводные и (или) беспроводные сети связи, такие как локальная сеть (LAN) и крупномасштабная сеть (WAN). Технологии LAN включают в себя интерфейс волоконно-оптической системы передачи данных (FDDI), распределенный интерфейс передачи данных по кабельным линиям (CDDI), сети Ethernet, сеть Token Ring и т.п. Технологии WAN включают в себя (но не ограничиваются ими) магистральные линии, сети с коммутацией каналов типа цифровой сети интегрального обслуживания (ISDN) и ее вариаций, сеть с коммутацией пакетов и цифровые абонентские линии (DSL).
Соединения 1250 связи относятся к аппаратному/программному обеспечению, используемому для соединения сетевых интерфейсов 1248 с шиной 1218. Хотя соединение 1250 связи для ясности описания показано внутри компьютера 1212, оно может быть и вне компьютера 1212. Аппаратное/программное обеспечение, необходимое для соединения сетевого интерфейса 1248, исключительно в иллюстративных целях включает в себя внутренние и внешние технологии, такие как модемы, включающие в себя обычные телефонные модемы, кабельные модемы и DSL модемы, ISDN адаптеры и карты Ethernet.
Выше были описаны примеры настоящего изобретения. Разумеется, невозможно описать все мыслимые сочетания компонент или методологий, чтобы описать настоящее изобретение, но специалист в данной области техники может распознать, что возможно множество дальнейших сочетаний и преобразований настоящего изобретения. Соответственно, настоящее изобретение охватывает все возможные изменения, модификации и варианты, которые попадают в сущность и объем прилагаемой формулы изобретения.
В частности, относительно различных функций, выполняемых описанными выше компонентами, устройствами, схемами, системами и т.п., эти термины (включая ссылку на «средство»), использовавшиеся для описания таких компонент, соответствуют, если иное не обозначено специально, любой компоненте, которая выполняет конкретную функцию описанной компоненты (например, функционального эквивалента), даже если и не эквивалентной структурно раскрытой структуре, которая выполняет функцию в описанных выше примерных аспектах настоящего изобретения. В этом отношении также должно быть понятно, что настоящее изобретение включает в себя систему, равно как и машиночитаемый носитель, имеющий исполняемые компьютером команды для выполнения действий и (или) событий различных способов изобретения.
Кроме того, хотя конкретные признаки изобретения могли быть раскрыты в отношении лишь некоторых из осуществлений, такие признаки могут сочетаться с одним или несколькими признаками других осуществлений, что может быть желательно и выгодно для любого заданного или конкретного приложения. Далее, относительно использования терминов «включает в себя», «в том числе» и их вариантов как в подробном описании, так и в формуле изобретения, предполагается, что эти термины имеют тот же охват, что и термин «содержащий».