RU2412475C2 - Systems and methods for extensions and inheritance for units of information managed by hardware/software interface system - Google Patents
Systems and methods for extensions and inheritance for units of information managed by hardware/software interface system Download PDFInfo
- Publication number
- RU2412475C2 RU2412475C2 RU2005119974/07A RU2005119974A RU2412475C2 RU 2412475 C2 RU2412475 C2 RU 2412475C2 RU 2005119974/07 A RU2005119974/07 A RU 2005119974/07A RU 2005119974 A RU2005119974 A RU 2005119974A RU 2412475 C2 RU2412475 C2 RU 2412475C2
- Authority
- RU
- Russia
- Prior art keywords
- article
- extension
- type
- articles
- information
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 76
- 238000003860 storage Methods 0.000 claims description 281
- 238000013499 data model Methods 0.000 claims description 30
- 238000005516 engineering process Methods 0.000 abstract description 11
- 230000000694 effects Effects 0.000 abstract description 2
- 239000000126 substance Substances 0.000 abstract 1
- 230000008859 change Effects 0.000 description 98
- 238000010586 diagram Methods 0.000 description 50
- 238000012423 maintenance Methods 0.000 description 44
- 230000006870 function Effects 0.000 description 43
- 230000007246 mechanism Effects 0.000 description 40
- 238000013507 mapping Methods 0.000 description 29
- 230000008520 organization Effects 0.000 description 20
- 238000012545 processing Methods 0.000 description 20
- 238000009933 burial Methods 0.000 description 18
- 230000015654 memory Effects 0.000 description 16
- 238000004891 communication Methods 0.000 description 15
- 238000007726 management method Methods 0.000 description 15
- 230000008569 process Effects 0.000 description 15
- 230000006399 behavior Effects 0.000 description 14
- 230000003287 optical effect Effects 0.000 description 9
- 238000012546 transfer Methods 0.000 description 9
- 238000013459 approach Methods 0.000 description 8
- 238000013500 data storage Methods 0.000 description 7
- 238000001514 detection method Methods 0.000 description 7
- 239000002609 medium Substances 0.000 description 7
- 239000000243 solution Substances 0.000 description 7
- 230000001360 synchronised effect Effects 0.000 description 7
- 230000003993 interaction Effects 0.000 description 6
- 230000009471 action Effects 0.000 description 5
- 210000001072 colon Anatomy 0.000 description 5
- 238000007689 inspection Methods 0.000 description 5
- 238000006243 chemical reaction Methods 0.000 description 4
- 238000000354 decomposition reaction Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 150000001875 compounds Chemical class 0.000 description 3
- 238000010276 construction Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 230000000977 initiatory effect Effects 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 238000006467 substitution reaction Methods 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- 238000000844 transformation Methods 0.000 description 3
- 238000004140 cleaning Methods 0.000 description 2
- 239000002131 composite material Substances 0.000 description 2
- 239000000470 constituent Substances 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 239000003999 initiator Substances 0.000 description 2
- 238000002347 injection Methods 0.000 description 2
- 239000007924 injection Substances 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 238000007639 printing Methods 0.000 description 2
- 238000011112 process operation Methods 0.000 description 2
- 238000007493 shaping process Methods 0.000 description 2
- AZFKQCNGMSSWDS-UHFFFAOYSA-N MCPA-thioethyl Chemical compound CCSC(=O)COC1=CC=C(Cl)C=C1C AZFKQCNGMSSWDS-UHFFFAOYSA-N 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 125000002015 acyclic group Chemical group 0.000 description 1
- 230000002730 additional effect Effects 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 238000007630 basic procedure Methods 0.000 description 1
- 238000005266 casting Methods 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 230000001276 controlling effect Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 238000004353 relayed correlation spectroscopy Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000005549 size reduction Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000007480 spreading Effects 0.000 description 1
- 238000003892 spreading Methods 0.000 description 1
- 238000010408 sweeping Methods 0.000 description 1
- 239000006163 transport media Substances 0.000 description 1
- 238000011282 treatment Methods 0.000 description 1
Images
Landscapes
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Description
Перекрестные ссылки на родственные заявкиCross references to related applications
Данная заявка испрашивает приоритет патентной заявки США № 10/693,574 (реестр поверенного № MSFT-2847), поданной 24 октября 2003 г., на «СИСТЕМЫ И СПОСОБЫ РАСШИРЕНИЙ И НАСЛЕДОВАНИЯ ДЛЯ БЛОКОВ ИНФОРМАЦИИ, УПРАВЛЯЕМЫХ СИСТЕМОЙ АППАРАТНО-ПРОГРАММНОГО ИНТЕРФЕЙСА»; патентной заявки США № 10/646,580 (реестр поверенного № MSFT-2735), поданной 21 августа 2003 г., на «СИСТЕМЫ И СПОСОБЫ ДЛЯ МОДЕЛИРОВАНИЯ ДАННЫХ В ПЛАТФОРМЕ ХРАНЕНИЯ НА ОСНОВЕ ЭЛЕМЕНТОВ ДАННЫХ»; и Международной патентной заявки № PCT/US 03/26144 (реестр поверенного № MSFT-2779), поданной 21 августа 2003 г., на «СИСТЕМЫ И СПОСОБЫ ДЛЯ МОДЕЛИРОВАНИЯ ДАННЫХ В ПЛАТФОРМЕ ХРАНЕНИЯ НА ОСНОВЕ ЭЛЕМЕНТОВ ДАННЫХ»; содержание которых включено в данное описание изобретения посредством ссылки.This application claims the priority of US patent application No. 10 / 693,574 (attorney registry No. MSFT-2847), filed October 24, 2003, on “SYSTEMS AND METHODS FOR EXTENSIONS AND INHERITIES FOR INFORMATION UNITS CONTROLLED BY A HARDWARE-SOFTWARE SYSTEM”; US patent application No. 10 / 646,580 (attorney registry No. MSFT-2735), filed August 21, 2003, for “SYSTEMS AND METHODS FOR MODELING DATA IN A STORAGE PLATFORM BASED ON DATA ELEMENTS”; and International Patent Application No. PCT / US 03/26144 (Attorney Register No. MSFT-2779), filed August 21, 2003, for “SYSTEMS AND METHODS FOR MODELING DATA IN A STORAGE PLATFORM BASED ON DATA ELEMENTS”; the contents of which are incorporated into this description by reference.
Заявка относится к сущности изобретений, раскрытых в следующих совместно переуступленных заявках, содержание которых включено посредством ссылки в настоящую заявку во всей полноте (и частично суммировано здесь для удобства): патентная заявка США № 10/647,058 (реестр поверенного № MSFT-1748), поданная 21 августа 2003 г., на «СИСТЕМЫ И СПОСОБЫ ДЛЯ ПРЕДСТАВЛЕНИЯ БЛОКОВ ИНФОРМАЦИИ ПОД УПРАВЛЕНИЕМ СИСТЕМЫ АППАРАТНО/ПРОГРАММНОГО ИНТЕРФЕЙСА, НО НЕЗАВИСИМО ОТ ФИЗИЧЕСКОГО ПРЕДСТАВЛЕНИЯ»; патентная заявка США № 10/646,941 (реестр поверенного № MSFT-1749), поданная 21 августа 2003 г., на «СИСТЕМЫ И СПОСОБЫ ДЛЯ ОТДЕЛЕНИЯ БЛОКОВ ИНФОРМАЦИИ, УПРАВЛЯЕМЫХ СИСТЕМОЙ АППАРАТНО/ПРОГРАММНОГО ИНТЕРФЕЙСА, ОТ ИХ ФИЗИЧЕСКОЙ ОРГАНИЗАЦИИ»; патентная заявка США № 10/646,940 (реестр поверенного № MSFT-1750), поданная 21 августа 2003 г., на «СИСТЕМЫ И СПОСОБЫ ДЛЯ РЕАЛИЗАЦИИ БАЗОВОЙ СХЕМЫ ДЛЯ ОРГАНИЗАЦИИ БЛОКОВ ИНФОРМАЦИИ, УПРАВЛЯЕМЫХ СИСТЕМОЙ АППАРАТНО/ПРОГРАММНОГО ИНТЕРФЕЙСА»; патентная заявка США № 10/646,632 (реестр поверенного № MSFT-1751), поданная 21 августа 2003 г., на «СИСТЕМЫ И СПОСОБЫ ДЛЯ РЕАЛИЗАЦИИ СХЕМЫ ЯДРА ДЛЯ ОБЕСПЕЧЕНИЯ СТРУКТУРЫ ВЕРХНЕГО УРОВНЯ ДЛЯ ОРГАНИЗАЦИИ БЛОКОВ ИНФОРМАЦИИ, УПРАВЛЯЕМЫХ СИСТЕМОЙ АППАРАТНО/ПРОГРАММНОГО ИНТЕРФЕЙСА»; патентная заявка США № 10/646,645 (реестр поверенного № MSFT-1752), поданная 21 августа 2003 г., на «СИСТЕМЫ И СПОСОБ ДЛЯ ПРЕДСТАВЛЕНИЯ ОТНОШЕНИЙ МЕЖДУ БЛОКАМИ ИНФОРМАЦИИ, УПРАВЛЯЕМЫМИ СИСТЕМОЙ АППАРАТНО/ПРОГРАММНОГО ИНТЕРФЕЙСА»; патентная заявка США № 10/646,575 (реестр поверенного № MSFT-2733), поданная 21 августа 2003 г., на «СИСТЕМЫ И СПОСОБЫ ДЛЯ ВЗАИМОДЕЙСТВИЯ ПРИКЛАДНЫХ ПРОГРАММ С ПЛАТФОРМОЙ ХРАНЕНИЯ НА ОСНОВЕ ЭЛЕМЕНТОВ ДАННЫХ»; патентная заявка США № 10/646,646 (реестр поверенного № MSFT-2734), поданная 21 августа 2003 г., на «ПЛАТФОРМУ ХРАНЕНИЯ ДЛЯ ОРГАНИЗАЦИИ, ПОИСКА И СОВМЕСТНОГО ИСПОЛЬЗОВАНИЯ ДАННЫХ»; патентная заявка США № 10/692,779 (реестр поверенного № MSFT-2829), поданная 24 октября 2003 г., на «СИСТЕМЫ И СПОСОБЫ ДЛЯ РЕАЛИЗАЦИИ СХЕМЫ ЦИФРОВЫХ ИЗОБРАЖЕНИЙ ДЛЯ ОРГАНИЗАЦИИ БЛОКОВ ИНФОРМАЦИИ, УПРАВЛЯЕМЫХ СИСТЕМОЙ АППАРАТНО/ПРОГРАММНОГО ИНТЕРФЕЙСА»; патентная заявка США № 10/692,515 (реестр поверенного № MSFT-2844), поданная 24 октября 2003 г., на «СИСТЕМЫ И СПОСОБЫ ДЛЯ ОБЕСПЕЧЕНИЯ УСЛУГ СИНХРОНИЗАЦИИ ДЛЯ БЛОКОВ ИНФОРМАЦИИ, УПРАВЛЯЕМЫХ СИСТЕМОЙ АППАРАТНО/ПРОГРАММНОГО ИНТЕРФЕЙСА»); патентная заявка США № 10/692,508 (реестр поверенного № MSFT-2845), поданная одновременно с данной на «СИСТЕМЫ И СПОСОБЫ ДЛЯ ОБЕСПЕЧЕНИЯ РЕЛЯЦИОННЫХ И ИЕРАРХИЧЕСКИХ УСЛУГ СИНХРОНИЗАЦИИ ДЛЯ БЛОКОВ ИНФОРМАЦИИ, УПРАВЛЯЕМЫХ СИСТЕМОЙ АППАРАТНО/ПРОГРАММНОГО ИНТЕРФЕЙСА»; и патентная заявка США № 10/693,362 (реестр поверенного № MSFT-2846), поданная 24 октября 2003 г., на «СИСТЕМЫ И СПОСОБЫ ДЛЯ РЕАЛИЗАЦИИ СХЕМ СИНХРОНИЗАЦИИ ДЛЯ БЛОКОВ ИНФОРМАЦИИ, УПРАВЛЯЕМЫХ СИСТЕМОЙ АППАРАТНО/ПРОГРАММНОГО ИНТЕРФЕЙСА».The application relates to the essence of the inventions disclosed in the following jointly assigned applications, the contents of which are incorporated by reference into this application in its entirety (and partially summarized here for convenience): US patent application No. 10 / 647,058 (attorney registry No. MSFT-1748), filed August 21, 2003, on “SYSTEMS AND METHODS FOR PRESENTING INFORMATION UNITS UNDER CONTROL OF THE HARDWARE / SOFTWARE INTERFACE, BUT INDEPENDENTLY ON THE PHYSICAL PRESENTATION”; US patent application No. 10 / 646,941 (attorney registry No. MSFT-1749), filed August 21, 2003, for “SYSTEMS AND METHODS FOR SEPARATING INFORMATION UNITS MANAGED BY THE HARDWARE / SOFTWARE INTERFACE FROM THEIR PHYSICAL ORGANIZATION”; US patent application No. 10 / 646,940 (attorney registry No. MSFT-1750), filed August 21, 2003, for “SYSTEMS AND METHODS FOR IMPLEMENTING A BASIC SCHEME FOR ORGANIZING INFORMATION UNITS CONTROLLED BY A HARDWARE / SOFTWARE INTERFACE”; US patent application No. 10 / 646,632 (attorney registry No. MSFT-1751), filed August 21, 2003, for “SYSTEMS AND METHODS FOR IMPLEMENTING A KEY SCHEME FOR SUPPORTING A TOP-LEVEL STRUCTURE FOR ORGANIZING AN OPERATING CHART; US patent application No. 10 / 646,645 (attorney registry No. MSFT-1752), filed August 21, 2003, for “SYSTEMS AND METHOD FOR SUBMITTING RELATIONSHIP BETWEEN INFORMATION UNITS MANAGED BY THE HARDWARE / SOFTWARE INTERFACE”; US patent application No. 10 / 646,575 (attorney registry No. MSFT-2733), filed August 21, 2003, for “SYSTEMS AND METHODS FOR INTERACTION OF APPLIED PROGRAMS WITH A STORAGE PLATFORM BASED ON DATA ELEMENTS”; US Patent Application No. 10 / 646,646 (Attorney Register No. MSFT-2734), filed August 21, 2003, for “STORAGE PLATFORM FOR ORGANIZING, SEARCHING AND JOINT USE OF DATA”; US patent application No. 10 / 692,779 (attorney registry No. MSFT-2829), filed October 24, 2003, for “SYSTEMS AND METHODS FOR IMPLEMENTING DIGITAL IMAGES FOR ORGANIZING INFORMATION UNITS MANAGED BY THE APPARAMETO SYSTEM; US Patent Application No. 10 / 692,515 (Attorney Register No. MSFT-2844), filed October 24, 2003, for “SYSTEMS AND METHODS FOR PROVIDING SYNCHRONIZATION SERVICES FOR INFORMATION UNITS MANAGED BY THE HARDWARE / SOFTWARE SYSTEM” INTERFACE); US patent application No. 10 / 692,508 (attorney register No. MSFT-2845), filed simultaneously with this on “SYSTEMS AND METHODS FOR PROVIDING RELAY AND HIERARCHICAL SERVICES FOR INFORMATION UNITS MANAGED BY THE APPARAMETO SYSTEM /; and US Patent Application No. 10 / 693,362 (Attorney Register No. MSFT-2846), filed October 24, 2003, for “SYSTEMS AND METHODS FOR IMPLEMENTING SYNCHRONOUS SCHEMES FOR INFORMATION UNITS MANAGED BY THE HARDWARE / SOFTWARE INTERFACE.”
Область техникиTechnical field
Настоящее изобретение относится к области хранения и извлечения информации и, в частности, к активной платформе хранения для организации, поиска и совместного использования различных типов данных в компьютеризованной системе. Различные варианты осуществления настоящего изобретения направлены на использование способов расширения и наследования, используемых системой аппаратно-программного интерфейса для управления данными.The present invention relates to the field of storage and retrieval of information and, in particular, to an active storage platform for organizing, searching and sharing various types of data in a computerized system. Various embodiments of the present invention are directed to the use of extension and inheritance methods used by a hardware-software interface system for managing data.
Предшествующий уровень техникиState of the art
В течение последнего десятилетия емкость отдельного диска росла примерно на семьдесят процентов (70%) в год. Закон Мура точно предсказал значительный рост мощности центральных процессоров (ЦП), произошедший в последние годы. Проводные и беспроводные технологии обеспечили значительные возможности связности и расширения полосы. Если предположить, что современные тенденции сохранятся, то через несколько лет средний портативный компьютер будет обладать емкостью хранения около одного терабайта и содержать миллионы файлов, и жесткие диски емкостью 500 гигабайт будут в порядке вещей.Over the past decade, the capacity of an individual disk has grown by about seventy percent (70%) per year. Moore's law accurately predicted a significant increase in the power of central processing units (CPUs) that has occurred in recent years. Wired and wireless technologies have provided significant connectivity and bandwidth capabilities. Assuming that current trends continue, in a few years the average portable computer will have a storage capacity of about one terabyte and contain millions of files, and 500 gigabyte hard drives will be in order.
Потребители используют свои компьютеры главным образом для передачи и организации личной информации, будь то данные в формате электронной записной книжки (ЭЗК) или мультимедийные данные, например цифровая музыка или фотографии. Объем цифрового содержимого и возможность хранения необработанных байтов существенно возросли; однако доступные потребителям способы организации и унификации этих данных не получили должного развития. Специалисты в сфере информационных технологий тратят очень много времени на управление и совместное использование информации и по оценкам ряда исследований специалисты в сфере информационных технологий тратят 15-25% своего времени на непродуктивную деятельность, связанную с информацией. Согласно оценкам других исследований, специалист в сфере информационных технологий тратит около 2,5 часов в день на поиск информации.Consumers use their computers mainly for the transfer and organization of personal information, whether it be electronic note book (EZK) data or multimedia data such as digital music or photographs. The volume of digital content and the ability to store raw bytes have increased significantly; however, ways to organize and unify this data that are accessible to consumers have not been properly developed. Information technology specialists spend a lot of time managing and sharing information and, according to a number of studies, information technology experts spend 15-25% of their time on non-productive activities related to information. According to other studies, an IT specialist spends about 2.5 hours a day searching for information.
Разработчики и подразделения информационных технологий (ИТ) затрачивают много времени и денег на построение собственных хранилищ данных для обычных абстракций хранения для представления людей, мест, времен и событий. Это не только приводит к двойной работе, но и создает островки общих данных без каких-либо механизмов общего поиска или совместного использования этих данных. Посмотрите, сколько адресных книжек может сегодня существовать на компьютере, где установлена операционная система Microsoft Windows. Многие приложения, например клиенты электронной почты и персональные финансовые программы, поддерживают индивидуальные адресные книжки, и немногие из приложений совместно используют данные адресной книжки, которые индивидуально поддерживает каждая такая программа, вследствие чего финансовая программа (например, Microsoft Money) не пользуется адресами получателей платежей совместно с адресами, поддерживаемыми в папке контактов электронной почты (например, в Microsoft Outlook). Действительно, многие пользователи имеют множество устройств и по логике должны синхронизировать свои личные данные между ними и по большому количеству дополнительных источников, включая сотовые телефоны с коммерческими службами, например MSN и AOL; тем не менее, взаимодействие совместно используемых документов в основном достигается за счет присоединения документов к сообщениям электронной почты, т.е. вручную и неэффективно.Developers and departments of information technology (IT) spend a lot of time and money building their own data warehouses for ordinary storage abstractions to represent people, places, times and events. This not only leads to double work, but also creates islands of common data without any mechanisms for a common search or sharing of this data. See how many address books can exist today on the computer where the Microsoft Windows operating system is installed. Many applications, such as email clients and personal financial programs, support individual address books, and few applications share the address book data that each such program individually supports, so a financial program (for example, Microsoft Money) does not share recipient addresses with the addresses supported in the email contacts folder (for example, in Microsoft Outlook). Indeed, many users have many devices and logically must synchronize their personal data between them and for a large number of additional sources, including cell phones with commercial services, such as MSN and AOL; however, the interaction of shared documents is mainly achieved by attaching documents to e-mail messages, i.e. manually and inefficiently.
Одна из причин этого недостатка взаимодействия состоит в том, что традиционные подходы к организации информации в компьютерных системах сосредоточены на использовании систем на основе файлов/папок и директорий (“файловых систем”) для организации множества файлов в иерархии директорий папок на основе абстрагирования от физической организации среды хранения, используемой для хранения файлов. Операционная система Multics, разработанная в 1960-х годах, может по праву считаться пионером в использовании файлов, папок и директорий для управления сохраняемыми блоками данных на уровне операционной системы. В частности, Multics использовала символические адреса в иерархии файлов (тем самым представляя идею пути к файлу), где физические адреса файлов были непрозрачны для пользователя (приложений и конечных пользователей). Эта файловая система полностью не учитывала формат файла для любого отдельного файла, и отношения между файлами не рассматривались на уровне операционной системы (т.е. иные, чем место файла в иерархии). С появлением Multics сохраняемые данные были организованы в файлы, папки и директории на уровне операционной системы. Эти файлы, в общем случае, включают в себя саму иерархию файлов («директорию»), воплощенную в особом файле, поддерживаемом файловой системой. Эта директория, в свою очередь, поддерживает список элементов, соответствующих всем остальным файлам в директории, и узловой точке таких файлов в директории (ниже именуемых папками). Данный уровень техники имеет место уже примерно сорок лет.One of the reasons for this lack of interaction is that traditional approaches to organizing information in computer systems focus on the use of file / folder based systems and directories (“file systems”) to organize multiple files in a folder directory hierarchy based on abstracting from physical organization storage medium used to store files. The Multics operating system, developed in the 1960s, can rightfully be considered a pioneer in the use of files, folders, and directories for managing stored data blocks at the operating system level. In particular, Multics used symbolic addresses in the file hierarchy (thereby representing the idea of a file path), where the physical addresses of the files were opaque to the user (applications and end users). This file system did not fully take into account the file format for any single file, and the relationship between the files was not considered at the operating system level (i.e., other than the place of the file in the hierarchy). With the advent of Multics, the stored data was organized into files, folders and directories at the operating system level. These files, in general, include the file hierarchy itself (the “directory”) embodied in a special file supported by the file system. This directory, in turn, maintains a list of elements corresponding to all other files in the directory and the nodal point of such files in the directory (hereinafter referred to as folders). This level of technology has been around for about forty years.
Однако обеспечивая рациональное представление информации, размещенной в физической системе хранения файловая система тем не менее является абстракцией этой физической системы хранения, и потому использование файлов требует уровня преобразования логических адресов в физические (интерпретации) между тем, чем манипулирует пользователь (блоками, имеющими контекст, признаки и отношения с другими блоками), и тем, что обеспечивает операционная система (файлами, папками и директориями). Поэтому пользователям (приложениям и/или конечным пользователям) ничего не остается как размещать блоки информации в структуре файловой системы, даже если это неэффективно, неудобно или по какой-либо другой причине нежелательно. Кроме того, существующие файловые системы мало знают о структуре данных, хранящихся в отдельных файлах, и поэтому большая часть информации остается запертой в файлах, которые могут быть доступны (и понятны) только для приложений, которые их записали. Следовательно, этот недостаток схематического описания информации и механизмов управления информацией приводит к созданию «силосных ям» данных с малым совместным использованием данных между отдельными «силосными ямами». Например, многие пользователи персональных компьютеров (ПК) имеют более пяти различных хранилищ, в которых содержится информация о людях, с которыми они взаимодействуют, на некотором уровне, например список контактов программы Outlook (Outlook Contacts), адреса онлайновых учетных записей, адресная книжка Windows (Windows Address Book), Quicken Payees и списки друзей в службе мгновенного обмена сообщениями (IM), поскольку организация файлов представляет существенную проблему этим пользователям ПК. Поскольку большинство существующих файловых систем используют модельное представление вложенных папок для организации файлов и папок, по мере возрастания количества файлов усилия, необходимые для поддержания гибкой и эффективной организационной схемы, становятся просто устрашающими. В таких ситуациях было бы очень полезно иметь несколько классификаций одного файла; однако, использование аппаратных или программных связей в существующих файловых системах является громоздким и трудно поддерживаемым.However, providing a rational presentation of the information placed in the physical storage system, the file system is nevertheless an abstraction of this physical storage system, and therefore the use of files requires a level of conversion of logical addresses into physical (interpretations) between what the user manipulates (blocks that have context, signs and relations with other blocks), and what the operating system provides (files, folders, and directories). Therefore, users (applications and / or end users) have no choice but to place blocks of information in the structure of the file system, even if it is inefficient, inconvenient, or for some other reason undesirable. In addition, existing file systems know little about the structure of data stored in separate files, and therefore most of the information remains locked in files that can be accessed (and understood) only for applications that recorded them. Therefore, this drawback of the schematic description of information and information management mechanisms leads to the creation of “silos” of data with little data sharing between the individual “silos”. For example, many users of personal computers (PCs) have more than five different repositories that contain information about the people with whom they interact, at some level, for example, Outlook contacts list (Outlook Contacts), addresses of online accounts, Windows address book ( Windows Address Book), Quicken Payees, and Instant Messaging (IM) friend lists, as file organization poses a significant problem to these PC users. Since most existing file systems use the model of subfolders to organize files and folders, as the number of files increases, the effort required to maintain a flexible and efficient organizational structure becomes just awesome. In such situations, it would be very useful to have several classifications of a single file; however, using hardware or software links in existing file systems is cumbersome and difficult to maintain.
Ранее было предпринято несколько безуспешных попыток преодолеть недостатки файловых систем. В некоторых из этих предыдущих попыток предусматривалось использование памяти с адресацией по содержимому для обеспечения механизма, который позволяет обращаться к данным по содержимому, а не по физическому адресу. Однако эти попытки оказались безуспешными, потому что хотя память с адресацией по содержимому продемонстрировала свою полезность для маломасштабного использования такими устройствами, как блоками кэш-памяти и блоками управления памятью, крупномасштабное использование для таких устройств, как физические носители данных, по разным причинам пока невозможно и поэтому такого решения просто не существует. Были предприняты другие попытки с использованием систем объектно-ориентированной базы данных (ООБД), но эти попытки хотя и проявляли сильные стороны базы данных и хорошие нефайловые представления, не были эффективными в обработке файловых представлений и не могли соперничать в скорости, эффективности и простоте с иерархической структурой на основе файлов и папок на уровне системы аппаратно-программного интерфейса. Другие попытки, например с использованием SmallTalk (и других производных), оказались весьма эффективными в обработке файловых и нефайловых представлений, однако не имели характеристик базы данных, необходимых для эффективной организации и использования отношений, существующих между различными файлами данных, и потому общая эффективность таких систем была неприемлема. Другие попытки, связанные с использованием BeOS, и другие подобные исследования операционных систем оказались неадекватными в обработке нефайловых представлений, что является ключевым недостатком традиционных файловых систем, несмотря на способность адекватно представлять файлы, одновременно обеспечивая некоторые необходимые особенности базы данных.Earlier, several unsuccessful attempts were made to overcome the shortcomings of file systems. Some of these previous attempts included the use of memory addressing by content to provide a mechanism that allows access to data by content rather than by physical address. However, these attempts were unsuccessful, because although content-addressing memory has been shown to be useful for small-scale use by devices such as cache blocks and memory management blocks, large-scale use for devices such as physical storage media is not possible for various reasons and therefore, such a solution simply does not exist. Other attempts were made using object-oriented database systems (OBD), but these attempts, although showing the strengths of the database and good non-file representations, were not effective in processing file representations and could not compete in speed, efficiency and simplicity with hierarchical structure based on files and folders at the system-level hardware-software interface. Other attempts, for example using SmallTalk (and other derivatives), proved to be very effective in processing file and non-file representations, however, they did not have the database characteristics necessary for the efficient organization and use of relationships existing between different data files, and therefore the overall efficiency of such systems was unacceptable. Other attempts related to the use of BeOS and other similar studies of operating systems have proven inadequate in processing non-file representations, which is a key drawback of traditional file systems, despite the ability to adequately represent files, while providing some necessary database features.
Технология баз данных - это еще одна область техники, в которой существуют аналогичные проблемы. Например, хотя модель реляционной базы данных получила большой коммерческий успех, истинные независимые продавцы программных продуктов (НПП) обычно используют малую толику функциональных возможностей программных продуктов реляционной базы данных (например, Microsoft SQL Server). Вместо этого взаимодействие приложения с таким продуктом происходит в виде простых операций «взять» и «положить». Несмотря на ряд очевидных причин для этого, например скептическое отношение к платформе или базе данных, важнейшая причина, которая часто остается без внимания, состоит в том, что база данных не всегда обеспечивает именно те абстракции, в которых действительно нуждается большинство продавцов бизнес-приложений. Например, реальный мир обозначается такими «элементами данных», как «клиенты» или «заказы» (совместно с внедренными в заказ «линейными элементами данных» в качестве элементов данных в них или их самих), реляционные базы данных говорят только на языке таблиц и строк. Следовательно, хотя приложению могут быть желательны аспекты, подобные согласованности, блокировке, безопасности и/или запускам на уровне элементов данных, в общем случае базы данных обеспечивают эти особенности только на уровне таблиц/строк. Хотя это может хорошо работать, если каждый элемент данных отображается в единичную строку в некоторой таблице в базе данных, в случае заказа с множеством линейных элементов данных могут быть причины, по которым элемент данных фактически отображается на множество таблиц, и в этом случае простая система реляционной базы данных просто не обеспечивает правильных абстракций. Следовательно, приложение должно строить логику поверх базы данных для обеспечения своих базовых абстракций. Другими словами, базовая реляционная модель не обеспечивает достаточной платформы для хранения данных, на которой можно легко разрабатывать приложения более высокого уровня, поскольку базовая реляционная модель требует уровень преобразования логических адресов в физические между приложением и системой хранения, где семантическая структура данных может быть видимой в приложении только в определенных случаях. Хотя некоторые продавцы баз данных встраивают в свои продукты функциональные возможности более высокого уровня, например обеспечивают объектные реляционные возможности, новые организационные модели и т.п., ни один еще не обеспечил некоторого необходимого универсального решения, где истинно универсальное решение это то, которое обеспечивает как полезные абстракции модели данных (например, «элементы данных», «расширения», «отношения» и пр.) для полезных абстракций области (например, «лица», «местоположения», «события» и т.д.).Database technology is another area of technology in which similar problems exist. For example, although the relational database model has gained great commercial success, true independent software vendors (NPPs) typically use a small fraction of the functionality of relational database software products (such as Microsoft SQL Server). Instead, the application interacts with such a product in the form of simple “take” and “put” operations. Despite a number of obvious reasons for this, such as a skepticism about the platform or the database, the most important reason that is often ignored is that the database does not always provide the abstractions that most business application vendors really need. For example, the real world is designated by such “data elements” as “customers” or “orders” (together with “linear data elements” embedded in the order as data elements in them or themselves), relational databases speak only the language of tables and lines. Therefore, although aspects like consistency, locking, security, and / or triggering at the data element level may be desirable, in the general case, databases provide these features only at the table / row level. Although this may work well if each data item is displayed in a single row in some table in the database, in the case of an order with many linear data items there may be reasons why the data item is actually mapped to many tables, in which case a simple relational system databases simply do not provide the correct abstractions. Therefore, the application must build logic on top of the database to provide its basic abstractions. In other words, the basic relational model does not provide a sufficient platform for storing data on which higher-level applications can be easily developed, since the basic relational model requires a level of conversion of logical addresses to physical between the application and the storage system, where the semantic data structure can be visible in the application only in certain cases. Although some database vendors integrate higher-level functionality into their products, for example, provide object relational capabilities, new organizational models, etc., none have yet provided some necessary universal solution, where a truly universal solution is one that provides both useful abstractions of the data model (for example, “data elements”, “extensions”, “relationships”, etc.) for useful abstractions of a region (for example, “faces”, “locations”, “events”, etc.).
Ввиду вышеизложенных недостатков существующих технологий хранения данных и баз данных необходима новая платформа хранения, которая обеспечивает повышенную возможность организации, поиска и совместного использования всех типов данных в компьютерной системе - платформа хранения, которая продлевает и расширяет платформу данных за пределы существующих файловых систем и систем баз данных, и которая предназначена для хранения всех типов данных. Настоящее изобретение совместно с родственными изобретениями, ранее включенными сюда посредством ссылки, удовлетворяет эту потребность. В частности, настоящее изобретение обеспечивает способы расширения и наследования объектов, манипулируемых системой аппаратно-программного интерфейса.In view of the aforementioned shortcomings of existing technologies for storing data and databases, a new storage platform is needed that provides increased ability to organize, search and share all types of data in a computer system - a storage platform that extends and extends the data platform beyond existing file systems and database systems , and which is designed to store all types of data. The present invention, together with related inventions previously incorporated herein by reference, satisfies this need. In particular, the present invention provides methods for expanding and inheriting objects manipulated by a hardware-software interface system.
Сущность изобретенияSUMMARY OF THE INVENTION
Нижеследующая сущность обеспечивает обзор различных аспектов изобретения, описанных в связи с родственными изобретениями, ранее включенными сюда посредством ссылки. Эта сущность не призвана ни обеспечивать исчерпывающее описание всех важных аспектов изобретения, ни задавать объем изобретения. Напротив, эта сущность призвана служить введением к нижеследующему подробному описанию и чертежам.The following summary provides an overview of various aspects of the invention described in connection with related inventions previously incorporated herein by reference. This essence is not intended to provide an exhaustive description of all important aspects of the invention, nor to specify the scope of the invention. On the contrary, this entity is intended to serve as an introduction to the following detailed description and drawings.
Настоящее изобретение, равно как и родственные изобретения, относятся к платформе хранения для организации, поиска и совместного использования данных. Платформа хранения, отвечающая настоящему изобретению, распространяет и расширяет концепцию хранения данных за пределы существующих файловых систем и систем баз данных и предназначена для хранения всех типов данных, включая структурированные, неструктурированные или частично структурированные данные.The present invention, as well as related inventions, relates to a storage platform for organizing, retrieving and sharing data. The storage platform of the present invention extends and extends the concept of storing data beyond existing file systems and database systems and is designed to store all types of data, including structured, unstructured or partially structured data.
Платформа хранения, отвечающая настоящему изобретению, содержит хранилище данных, реализованное в виде машины базы данных. Машина базы данных содержит машину реляционной базы данных с объектными реляционными расширениями. Хранилище данных реализует модель данных, которая поддерживает организацию, поиск, совместное использование, синхронизацию и безопасность данных. Конкретные типы данных описаны в схемах, и платформа обеспечивает механизм расширения множества схем для определения новых типов данных (в особенности подтипов базовых типов, обеспечиваемых схемами). Функция синхронизации облегчает совместное использование данных среди пользователей или систем. Предусмотрены функции наподобие файловой системы, которые обеспечивают возможность взаимодействия хранилища данных с существующими файловыми системами, но не ограничиваются такими традиционными файловыми системами. Механизм отслеживания изменений обеспечивает возможность отслеживать изменения хранилища данных. Платформа хранения дополнительно содержит множество программных интерфейсов приложения, которые позволяют приложениям обращаться ко всем вышеперечисленным возможностям платформы хранения и обращаться к данным, описанным в схемах.The storage platform of the present invention comprises a data warehouse implemented as a database machine. The database engine contains a relational database engine with object relational extensions. The data warehouse implements a data model that supports the organization, search, sharing, synchronization and data security. Specific data types are described in the diagrams, and the platform provides a mechanism for expanding a plurality of diagrams to define new data types (especially the subtypes of the basic types provided by the diagrams). The synchronization feature facilitates the sharing of data among users or systems. Functions such as a file system are provided that provide the ability of a data warehouse to interact with existing file systems, but are not limited to such traditional file systems. The change tracking mechanism provides the ability to track changes to the data warehouse. The storage platform additionally contains many application programming interfaces that allow applications to access all of the above features of the storage platform and access the data described in the diagrams.
Модель данных, реализованная хранилищем данных, задает блоки хранения данных в терминах элементов данных (статей), элементов и отношений. Статья - это блок данных, сохраняемый в хранилище данных, который может содержать один или несколько элементов и отношений. Элемент является экземпляром типа, содержащим одно или несколько полей (также именуемое здесь свойством). Отношение - это связь между двумя статьями. (Используемые здесь эти и другие конкретные термины могут быть написаны с заглавной буквы для выделения их среди других терминов, используемых рядом; однако это не значит, что существует какое-либо различие между термином, написанным с заглавной буквы, например «Статья», и тем же термином, написанным строчными буквами, например «статья», и не следует предполагать или подразумевать никакого различия между ними.)The data model implemented by the data warehouse defines the data storage blocks in terms of data elements (articles), elements and relationships. An article is a block of data stored in a data warehouse that can contain one or more elements and relationships. An element is an instance of a type containing one or more fields (also referred to as a property here). A relationship is a connection between two articles. (These and other specific terms used here may be capitalized to distinguish them from other terms used side by side; however, this does not mean that there is any difference between a capitalized term such as “Article” and the same term in lowercase letters, such as “article”, and no distinction should be made or implied between them.)
Компьютерная система дополнительно содержит совокупность Статей, где каждая Статья образует дискретный сохраняемый блок информации, которым может манипулировать система аппаратно-программного интерфейса; совокупность Папок статей, которые образуют организационную структуру упомянутых Статей; и систему аппаратно-программного интерфейса для манипулирования совокупностью Статей, причем каждая Статья принадлежит, по меньшей мере, одной Папке статей и может принадлежать более одной Папке статей.The computer system additionally contains a set of Articles, where each Article forms a discrete stored block of information that can be manipulated by a hardware-software interface system; the totality of the Folders of articles that form the organizational structure of the said Articles; and a hardware-software interface system for manipulating a collection of Articles, each Article belonging to at least one Article Folder and may belong to more than one Article Folder.
Статью или некоторые значения свойств Статьи можно вычислять динамически вместо того, чтобы извлекать из постоянного хранилища. Другими словами, система аппаратно-программного интерфейса не требует хранения Статьи, и поддерживаются определенные операции, например возможность перечисления текущего множества Статей или возможность извлечения Статьи по ее идентификатору (которая более подробно описана в разделах, описывающих программный интерфейс приложения или API) платформы хранения, например Статья может представлять собой текущее местоположение сотового телефона или показание температуры на датчике температуры. Система аппаратно-программного интерфейса может манипулировать множеством Статей и может дополнительно содержать Статьи, взаимосвязанные посредством множества Отношений, находящихся под управлением системы аппаратно-программного интерфейса.An article or some property values Articles can be calculated dynamically instead of being retrieved from persistent storage. In other words, the hardware-software interface system does not require storing the Article, and certain operations are supported, for example, the ability to list the current set of Articles or the ability to retrieve the Article by its identifier (which is described in more detail in the sections describing the application programming interface or API) of the storage platform, for example An article can be the current location of a cell phone or a temperature reading on a temperature sensor. A hardware-software interface system may manipulate a variety of Articles and may additionally contain Articles interconnected through a variety of Relations under the control of a hardware-software interface system.
Система аппаратно-программного интерфейса для компьютерной системы дополнительно содержит схему ядра для определения множества Статей ядра, которые система аппаратно-программного интерфейса понимает и может непосредственно обрабатывать заранее определенным и прогнозируемым способом. Чтобы манипулировать множеством Статей, компьютерная система связывает Статьи посредством множество Отношений и управляет Отношениями на уровне системы аппаратно-программного интерфейса.The hardware-software interface system for a computer system further comprises a kernel circuit for defining a plurality of Core Articles that the hardware-software interface system understands and can directly process in a predetermined and predicted manner. To manipulate multiple Articles, a computer system links Articles through multiple Relations and manages Relations at the system-level hardware-software interface.
API платформы хранения обеспечивает классы данных для каждой статьи, расширение статьи и отношение, заданное в наборе схем платформы хранения. Кроме того, программный интерфейс приложения обеспечивает набор классов конструкции, которые задают общий набор поведений для классов данных и которые совместно с классами данных обеспечивают базовую модель программирования для API платформы хранения. API платформы хранения обеспечивает упрощенную модель запросов, которая позволяет разработчикам прикладных программ формировать запросы на основании различных свойств статей в хранилище данных таким образом, что разработчику прикладных программ не требуется вникать в детали языка запросов соответствующей машины базы данных. API платформы хранения также собирает изменения в статье, произведенные прикладной программой, и затем организует их в правильные обновления, необходимые машине базы данных (или машине хранения любого рода), на которой реализовано хранилище данных. Это позволяет разработчикам прикладных программ производить изменения статьи в памяти, оставляя при этом сложную работу по изменениям хранилища данных на долю API.The storage platform API provides the data classes for each article, the extension of the article, and the relation defined in the storage platform schema set. In addition, the application programming interface provides a set of construction classes that define a common set of behaviors for data classes and which, together with data classes, provide a basic programming model for the storage platform API. The storage platform API provides a simplified query model that allows application developers to generate queries based on various properties of articles in the data warehouse so that the application developer does not need to delve into the details of the query language of the corresponding database machine. The storage platform API also collects the changes to the article made by the application program and then organizes them into the correct updates needed by the database machine (or storage machine of any kind) on which the data warehouse is implemented. This allows application developers to make changes to the article in memory, while leaving the complex work of changing the data warehouse to the share of the API.
Посредством своей общей основы хранения и схематизированных данных платформа хранения, отвечающая настоящему изобретению, обеспечивает более эффективную разработку приложений для потребителей, специалистов в сфере информационных технологий и предприятий. Она обеспечивает обогащенный и расширяемый программный интерфейс приложения, который не только делает доступными возможности, присущие ее модели данных, но также охватывает и расширяет существующую файловую систему и способы доступа к базе данных.Through its common storage framework and schematized data, the storage platform of the present invention provides more efficient application development for consumers, IT professionals and enterprises. It provides an enriched and extensible application programming interface that not only makes available the capabilities inherent in its data model, but also extends and extends the existing file system and database access methods.
В соответствии с этой объединяющей структурой взаимосвязанных изобретений (подробно описанной в Разделе II Подробного описания), настоящее изобретение, в частности, ориентировано на использование Расширений для расширения функциональных возможностей типов Статей и Свойств, а также для использования Наследования для облегчения эффективного поиска и организации среди родственных Статей (подробно описанного в Разделе III Подробного описания). Другие признаки и преимущества изобретения явствуют из нижеследующего подробного описания изобретения и прилагаемых чертежей.In accordance with this unifying structure of related inventions (described in detail in Section II of the Detailed Description), the present invention, in particular, is focused on the use of Extensions to expand the functionality of the types of Articles and Properties, as well as on the use of Inheritance to facilitate the efficient search and organization among related Articles (described in detail in Section III of the Detailed Description). Other features and advantages of the invention will be apparent from the following detailed description of the invention and the accompanying drawings.
Краткое описание чертежейBrief Description of the Drawings
Вышеизложенную сущность, а также нижеследующее подробное описание изобретения легче понять, рассматривая их в сочетании с прилагаемыми чертежами. В целях иллюстрации изобретения на чертежах показаны иллюстративные варианты осуществления различных аспектов изобретения; однако, изобретение не ограничивается конкретными раскрытыми способами и средствами.The foregoing summary, as well as the following detailed description of the invention, is easier to understand by considering them in conjunction with the accompanying drawings. To illustrate the invention, illustrative embodiments of various aspects of the invention are shown in the drawings; however, the invention is not limited to the specific methods and means disclosed.
На чертежахIn the drawings
фиг.1 - блок-схема, представляющая компьютерную систему, в которой могут быть реализованы аспекты настоящего изобретения;figure 1 is a block diagram representing a computer system in which aspects of the present invention can be implemented;
фиг.2 - блок-схема, иллюстрирующая компьютерную систему, разделенную на три группы компонентов: компонент аппаратных средств, компонент системы аппаратно-программного интерфейса и компонент прикладных программ;2 is a block diagram illustrating a computer system divided into three groups of components: a hardware component, a component of a hardware-software interface system, and an application program component;
фиг.2А - иллюстрирует традиционную древовидную иерархическую структуру файлов, сгруппированных в папки в директории в файловой операционной системе;figa - illustrates a traditional tree-like hierarchical structure of files grouped into folders in a directory in a file operating system;
фиг.3 - блок-схема, иллюстрирующая платформу хранения;3 is a block diagram illustrating a storage platform;
фиг.4 - иллюстрирует структурное отношение между Статьями, Папками статей и Категориями;4 illustrates the structural relationship between Articles, Article Folders, and Categories;
фиг.5А - блок-схема, иллюстрирующая структуру Статьи;figa is a block diagram illustrating the structure of the Article;
фиг.5В - блок-схема, иллюстрирующая сложные типы свойств Статьи, показанной на фиг.5А;5B is a block diagram illustrating complex types of properties of the Article shown in FIG. 5A;
фиг.5С - блок-схема, иллюстрирующая Статью «Местоположение», в которой дополнительно описаны ее сложные типы (перечислены в явном виде);figs is a block diagram illustrating the Article "Location", which further describes its complex types (listed explicitly);
фиг.6А - иллюстрирует Статью как подтип Статьи, найденной в Базовой схеме;figa - illustrates the Article as a subtype of the Article found in the Basic scheme;
фиг.6В - блок-схема, иллюстрирующая подтип Статья, показанный на фиг.6А, в котором его унаследованные типы перечислены в явном виде (помимо его непосредственных свойств);FIG. 6B is a block diagram illustrating a subtype of the Article shown in FIG. 6A, in which its inherited types are listed explicitly (in addition to its immediate properties);
фиг.7 - блок-схема, иллюстрирующая Базовую схему, включающую в себя два ее типа классов верхнего уровня, Item и PropertyBase, и дополнительные типы Базовой схемы, выводимые из них;7 is a block diagram illustrating the Basic scheme, including its two types of top-level classes, Item and PropertyBase, and additional types of the Basic scheme derived from them;
фиг.8А - блок-схема, иллюстрирующая Статьи в Схеме ядра;figa is a block diagram illustrating Articles in the kernel;
фиг.8В - блок-схема, иллюстрирующая типы свойств в Схеме ядра;Fig. 8B is a block diagram illustrating property types in a kernel diagram;
фиг.9 - блок-схема, иллюстрирующая Папку статей, входящие в нее Статьи и Отношения взаимосвязи между Папкой статей и входящими в нее Статьями;Fig.9 is a block diagram illustrating the Folder of articles, its constituent Articles and Relationships between the Folder of articles and its constituent Articles;
фиг.10 - блок-схема, иллюстрирующая Категорию (которая опять же сама является Статьей), входящие в нее Статьи и Отношения взаимосвязи между Категорией и входящими в нее Статьями;10 is a block diagram illustrating a Category (which, again, is an Article itself), the Articles included in it, and the Relationship relationship between the Category and Articles included in it;
фиг.11 - схема, иллюстрирующая иерархию типов ссылки в модели данных платформы хранения;11 is a diagram illustrating a hierarchy of link types in a data model of a storage platform;
фиг.12 - схема, иллюстрирующая классификацию отношений;12 is a diagram illustrating a classification of relationships;
фиг.13 - схема, иллюстрирующая механизм уведомления;13 is a diagram illustrating a notification mechanism;
фиг.14 - схема, иллюстрирующая пример, в котором две транзакции вставляют новую запись в одно и то же Б-дерево;Fig. 14 is a diagram illustrating an example in which two transactions insert a new record into the same B-tree;
фиг.15 - иллюстрирует процесс обнаружения изменения данных;Fig. 15 illustrates a data change detection process;
фиг.16 - иллюстрирует иллюстративное дерево директории;Fig. 16 illustrates an illustrative directory tree;
фиг.17 - показывает пример, в котором существующая папка файловой системы на основе директорий перемещается в хранилище данных платформы хранения;FIG. 17 shows an example in which an existing directory-based file system folder is moved to a storage platform data store; FIG.
фиг.18 - иллюстрирует концепцию папок Включения;Fig. 18 illustrates the concept of Include folders;
фиг.19 - иллюстрирует базовую архитектуру API платформы хранения;FIG. 19 illustrates a basic architecture of a storage platform API; FIG.
фиг.20 - схематически представляет различные компоненты стека API платформы хранения;FIG. 20 schematically represents various components of a storage platform API stack;
фиг.21А - графическое представление иллюстративной схемы Статьи «Контакты»;figa is a graphical representation of an illustrative diagram of the Article "Contacts";
фиг.21В - графическое представление Элементов для иллюстративной схемы Статьи «Контакты», показанной на фиг.21А;figv is a graphical representation of the Elements for an illustrative diagram of the Article "Contacts" shown in figa;
фиг.22 - иллюстрирует конструкцию среды выполнения API платформы хранения;FIG. 22 illustrates the design of a storage platform API runtime;
фиг.23 - иллюстрирует выполнение операции «найти все»;Fig.23 illustrates the execution of the operation "find all";
фиг.24 - иллюстрирует процесс, посредством которого классы API платформы хранения генерируются из схемы платформы хранения;24 illustrates a process by which storage platform API classes are generated from a storage platform diagram;
фиг.25 - иллюстрирует схему, на которой основан API «Файл»;Fig. 25 illustrates a diagram on which the File API is based;
фиг.26 - схема, иллюстрирующая формат маски доступа, используемый в целях защиты данных;26 is a diagram illustrating an access mask format used to protect data;
фиг.27 - (части a, b, и c) обозначают новую идентично защищенную область безопасности, вырезанную из существующей области безопасности;Fig. 27 - (parts a, b, and c) denote a new identically protected security area cut from an existing security area;
фиг.28 - схема, иллюстрирующая концепцию поискового вида Статьи;28 is a diagram illustrating a concept of a search view of an Article;
фиг.29 - схема, иллюстрирующая иллюстративную иерархию Статьи;29 is a diagram illustrating an illustrative hierarchy of an Article;
фиг.30А - иллюстрирует интерфейс Интерфейс1 как канал связи между первым и вторым сегментами кода;figa - illustrates the interface Interface1 as a communication channel between the first and second code segments;
фиг.30В - иллюстрирует интерфейс как содержащий объекты интерфейса I1 и I2, которые обеспечивают связь между первым и вторым сегментами кода системы через среду М;figv - illustrates the interface as containing interface objects I1 and I2, which provide communication between the first and second segments of the system code through the medium M;
фиг.31А - иллюстрирует, как функцию, обеспеченную интерфейсом Интерфейс1, можно разделить для преобразования связей интерфейса на множество интерфейсов Интерфейс1A, Интерфейс 1B, Интерфейс 1C;figa - illustrates how the function provided by the
фиг.31В - иллюстрирует, как функцию, обеспеченную интерфейсом I1, можно разделить на множество интерфейсов I1a, I1b, I1c;figv - illustrates how the function provided by the interface I1 can be divided into many interfaces I1a, I1b, I1c;
фиг.32А - иллюстрирует сценарий, где точность несущественного параметра можно игнорировать или заменить произвольным параметром;figa - illustrates a scenario where the accuracy of a non-essential parameter can be ignored or replaced with an arbitrary parameter;
фиг.32В - иллюстрирует сценарий, где интерфейс заменяется подстановочным интерфейсом, который задан для игнорирования или добавления параметров к интерфейсу;figv - illustrates a scenario where the interface is replaced by a wildcard interface, which is set to ignore or add parameters to the interface;
фиг.33А - иллюстрирует сценарий, где 1-й и 2-й Сегменты кода объединяются в модуль, содержащий их обоих;figa - illustrates a scenario where the 1st and 2nd code segments are combined into a module containing both of them;
фиг.33В - иллюстрирует сценарий, где интерфейс полностью или частично может быть записан в одну строку в другой интерфейс для формирования объединенного интерфейса;figv - illustrates a scenario where the interface can be fully or partially written in one line to another interface to form a unified interface;
фиг.34А - иллюстрирует как один или несколько фрагментов промежуточного программного обеспечения могут преобразовывать связи на первом интерфейсе для согласования их с одним или несколькими другими интерфейсами;FIG. 34A illustrates how one or more pieces of middleware can transform communications on a first interface to align them with one or more other interfaces; FIG.
фиг.34В - иллюстрирует как можно ввести сегмент кода с помощью интерфейса, чтобы принимать передачи от одного интерфейса, но передавать функциональные возможности второму и третьему интерфейсам;figv - illustrates how you can enter a code segment using the interface to receive transmissions from one interface, but to transmit functionality to the second and third interfaces;
фиг.35А - иллюстрирует как компилятор своевременной активизации (JIT) может преобразовывать передачи от одного сегмента кода к другому сегменту кода;figa - illustrates how the timely activation compiler (JIT) can convert transfers from one code segment to another code segment;
фиг.35В - иллюстрирует как JIT-метод динамического переписывания одного или нескольких интерфейсов можно применять для динамической факторизации или иного изменения интерфейса;Fig. 35B illustrates how the JIT method for dynamically rewriting one or more interfaces can be used to dynamically factorize or otherwise change an interface;
фиг.36 - иллюстрирует ряд взаимосвязанных Статей и подмножества их Отношений;Fig. 36 illustrates a number of interrelated Articles and a subset of their Relations;
фиг.37А - иллюстрирует недостатки стандартного выделения подтипов Статей в целях конкретного приложения;figa - illustrates the disadvantages of the standard allocation of subtypes of Articles for a specific application;
фиг.37В - иллюстрирует частичное решение проблем стандартного выделения подтипов; иfigv - illustrates a partial solution to the problems of standard allocation of subtypes; and
фиг.37С - иллюстрирует один вариант осуществления настоящего изобретения для расширения Статьи с помощью Расширения, которое отличается и отделено от самого Контакта, и таким образом обеспечивает функцию выделения множества типов.FIG. 37C illustrates one embodiment of the present invention for expanding an Article using an Extension that is different and separate from the Contact itself, and thus provides a multi-type highlighting function.
Подробное описаниеDetailed description
и совместного использования данныхII.WINFS storage platform for organizing, searching
and data sharing
поисковых видах(1) Tracking changes to the “Principal”
search types
поисковых видах(2) Tracking changes in typed
search types
разрешений конфликтов(d) Duplicate Convergence and Distribution
без хранения2. Synchronization with platform data warehouses
without storage
Системой)J. Interoperability (with traditional file
System)
I. ВведениеI. Introduction
Предмет настоящего изобретения описан с той степенью конкретизации, которая отвечает установленным требованиям. Однако описание само по себе не призвано ограничивать объем этого патента. Напротив, изобретателями предполагалось, что сущность заявленного изобретения может быть воплощена и другими способами, включающими различные этапы или комбинации этапов, аналогичные описанным в этом документе, в сочетании с другими современными или будущими технологиями. Кроме того, хотя термин «этап» можно использовать здесь для обозначения различных элементов применяемого способа, термин не следует интерпретировать как предусматривающий какой-либо конкретный порядок среди различных раскрытых здесь этапов, за исключением тех случаев, когда порядок отдельных этапов описан в явном виде.The subject of the present invention is described with the degree of specification that meets the established requirements. However, the description itself is not intended to limit the scope of this patent. On the contrary, the inventors assumed that the essence of the claimed invention can be embodied in other ways, including various steps or combinations of steps, similar to those described in this document, in combination with other current or future technologies. In addition, although the term “step” can be used here to refer to the various elements of the method used, the term should not be interpreted as providing any particular order among the various steps disclosed herein, unless the order of the individual steps is explicitly described.
А. Иллюстративная вычислительная средаA. Illustrative computing environment
Многочисленные варианты осуществления настоящего изобретения могут выполняться на компьютере. Фиг.1 и нижеследующее рассмотрение призвано обеспечивать общее описание подходящей вычислительной среды, в которой может быть реализовано изобретение. Хотя это и не требуется, различные аспекты изобретения можно описать в общем контексте компьютерно-выполняемых команд, например программных модулей, выполняемых компьютером, например, клиентской рабочей станцией или сервером. В общем случае, программные модули включают в себя процедуры, программы, объекты, компоненты, структуры данных и т.п., которые выполняют определенные задачи или реализуют определенные абстрактные типы данных. Кроме того, изобретение можно осуществлять на практике с применением других конфигураций компьютерной системы, включая карманные устройства, многопроцессорные системы, программируемую бытовую электронику на основе микропроцессора, сетевые ПК, мини-компьютеры, универсальные компьютеры и т.д. Изобретение также можно осуществлять на практике в распределенных вычислительных средах, где задачи выполняются удаленными устройствами обработки, связанными друг с другом посредством вычислительной сети. В распределенной вычислительной среде программные модули могут размещаться как в локальных, так и в удаленных запоминающих устройствах.Numerous embodiments of the present invention can be performed on a computer. Figure 1 and the following discussion are intended to provide a general description of a suitable computing environment in which the invention may be implemented. Although not required, various aspects of the invention can be described in the general context of computer-executable instructions, such as program modules, executed by a computer, such as a client workstation or server. In general, program modules include procedures, programs, objects, components, data structures, and the like that perform specific tasks or implement certain abstract data types. In addition, the invention can be practiced using other computer system configurations, including handheld devices, multiprocessor systems, microprocessor-based programmable consumer electronics, network PCs, mini-computers, universal computers, etc. The invention can also be practiced in distributed computing environments where tasks are performed by remote processing devices connected to each other via a computer network. In a distributed computing environment, program modules may be located in both local and remote memory storage devices.
Согласно фиг.1, иллюстративная вычислительная система общего назначения включает в себя традиционный персональный компьютер 20 и т.п., включающий в себя блок 21 обработки, системную память 22 и системную шину 23, которая соединяет различные компоненты системы, включая системную память, с блоком 21 обработки. Системная шина 23 может представлять собой любой из нескольких типов шинных структур, включая шину памяти или контроллер памяти, периферийную шину и локальную шину, использующих любую из разнообразных шинных архитектур. Системная память включает в себя постоянную память (ПЗУ) 24 и оперативную память (ОЗУ) 25. Базовая система ввода/вывода 26 (BIOS), содержащая базовые процедуры, которые помогают переносить информацию между элементами персонального компьютера 20, например при запуске, хранится в ПЗУ 24. Персональный компьютер 20 может дополнительно включать дисковод 27 жестких дисков для считывания с жесткого диска и записи на жесткий диск, который не показан, дисковод 28 магнитных дисков для считывания со сменного магнитного диска или записи на сменный магнитный диск 29 и дисковод 30 оптических дисков для считывания со сменного оптического диска или записи на сменный оптический диск, например CD-ROM или другие оптические носители. Дисковод 27 жестких дисков, дисковод 28 магнитных дисков и дисковод 30 оптических дисков связаны с системной шиной 23 посредством интерфейса 32 дисковода жестких дисков, интерфейса 33 дисковода магнитных дисков и интерфейса 34 дисковода оптических дисков соответственно. Дисководы и связанные с ними компьютерно-считываемые носители обеспечивают энергонезависимое хранение компьютерно-считываемых команд, структур данных, программных модулей и других данных для персонального компьютера 20. Хотя в описанной здесь иллюстративной среде используется жесткий диск, сменный магнитный диск 29 и сменный оптический диск 31, специалистам в данной области очевидно, что в иллюстративной операционной среде можно использовать и другие типы компьютерно-считываемых носителей, в которых могут храниться данные, доступные компьютеру, например, магнитные кассеты, карты флэш-памяти, цифровые видео-диски, картриджи Бернулли, блоки оперативной памяти (ОЗУ), блоки постоянной памяти (ПЗУ) и т.п. Аналогично иллюстративная среда может также включать в себя многие типы устройств слежения, например тепловые датчики и охранные и противопожарные системы и другие источники информации.1, an exemplary general-purpose computing system includes a traditional
На жестком диске, магнитном диске 29, оптическом диске 31, в ПЗУ 24 или ОЗУ 25 может храниться ряд программных модулей, включая операционную систему 35, одну или несколько прикладных программ 36, другие программные модули 37 и программные данные 38. Пользователь может вводить команды и информацию в персональный компьютер 20 через устройства ввода, например клавиатуру 40 и указательное устройство 42. Другие устройства ввода (не показаны) могут включать в себя микрофон, джойстик, спутниковую антенну, сканер и т.п. Эти и другие устройства ввода часто соединяются с блоком обработки 21 через интерфейс 46 последовательного порта, который подключен к системной шине, но может соединяться посредством других интерфейсов, например параллельного порта, игрового порта или универсальной последовательной шины (USB). Монитор 47 или устройство отображения другого типа также подключено к системной шине 23 через интерфейс, например видеоадаптер 48. Помимо монитора 47 персональные компьютеры обычно включают в себя другие периферийные устройства вывода (не показаны), например громкоговорители и принтеры. Иллюстративная система, показанная на фиг.1, также включает в себя хост-адаптер 55, шину «интерфейса малых компьютерных систем» (SCSI) и внешнее запоминающее устройство 62, подключенное к шине 56 SCSI.A number of program modules may be stored on a hard disk,
Персональный компьютер 20 может работать в сетевой среде, используя локальные соединения с одним или несколькими удаленными компьютерами, например удаленным компьютером 49. Удаленный компьютер 49 может представлять собой другой персональный компьютер, сервер, маршрутизатор, сетевой ПК, одноранговое устройство или другой общий сетевой узел и обычно включает в себя многие или все элементы, описанные выше применительно к персональному компьютеру 20, хотя на фиг.1 проиллюстрировано только запоминающее устройство 50. Логические соединения, обозначенные на фиг.1, включают в себя локальную сеть (ЛС) 51 и глобальную сеть (ГС) 52. Такие сетевые среды обычно имеют место в офисных сетях, компьютерных сетях в масштабе предприятия, интранетах и в Интернете.The
При использовании в сетевой среде ЛС персональный компьютер 20 подключен к ЛС 51 через сетевой интерфейс или адаптер 53. При использовании в сетевой среде ГС персональный компьютер 20 обычно включает в себя модем 54 или другое средство установления каналов связи по глобальной сети 52, например Интернету. Модем 54, который может быть внутренним или внешним, подключен к системной шине 23 через интерфейс 46 последовательного порта. В сетевой среде программные модули, описанные применительно к персональному компьютеру 20, или часть из них могут храниться в удаленном запоминающем устройстве. Очевидно, что показанные сетевые соединения являются иллюстративными, и можно использовать другие средства установления каналов связи между компьютерами.When used in a LAN network environment, the
Согласно блок-схеме, изображенной на фиг.2, компьютерную систему 200 можно грубо разделить на три группы компонентов: компонент 202 оборудования, компонент 204 системы аппаратно-программного интерфейса и компонент 206 прикладных программ (также именуемый в некоторых контекстах «пользовательским компонентом» или «компонентом программного обеспечения»).2, the
В различных вариантах осуществления компьютерной системы 200, согласно фиг.1, компонент 202 оборудования может содержать центральный процессор (ЦП) 21, память (ПЗУ 24 и ОЗУ 25), базовую систему ввода/вывода (BIOS) 26 и различные устройства ввода/вывода, например клавиатуру 40, мышь 42, монитор 47 и/или принтер (не показан) и пр. Компонент 202 оборудования содержит базовую физическую инфраструктуру компьютерной системы 200.In various embodiments of the
Компонент 206 прикладных программ содержит различные программы, в том числе, но без ограничения, системы баз данных, текстовые редакторы, бизнес-программы, видеоигры и т.п. Прикладные программы обеспечивают средства для использования компьютерных ресурсов для решения задач, обеспечения решений и обработки данных для различных пользователей (машин, других компьютерных систем и/или конечных пользователей).The
Компонент 204 системы аппаратно-программного интерфейса содержит и в некоторых вариантах осуществления может состоять исключительно из операционной системы, которая сама содержит в большинстве случаев оболочку и ядро. «Операционная система» (ОС) это особая программа, которая действует как посредник между прикладными программами и оборудованием компьютера. Компонент системы 204 аппаратно-программного интерфейса также может содержать администратор виртуальных машин (АВМ), среду выполнения общего языка (CLR) или ее функциональный эквивалент, виртуальную машину Java (JVM) или ее функциональный эквивалент или другие подобные компоненты программного обеспечения вместо или дополнительно к операционной системе в компьютерной системе. Целью системы аппаратно-программного интерфейса является обеспечение среды, в которой пользователь может выполнять прикладные программы. Цель любой системы аппаратно-программного интерфейса состоит в том, чтобы сделать компьютерную систему удобной в использовании, а также эффективно использовать оборудование компьютера.
Система аппаратно-программного интерфейса, в общем случае, загружается в компьютерную систему при запуске, после чего управляет всеми прикладными программами в компьютерной системе. Прикладные программы взаимодействуют с системой аппаратно-программного интерфейса, запрашивая службы через программный интерфейс приложения (API). Некоторые прикладные программы позволяют конечным пользователям взаимодействовать с системой аппаратно-программного интерфейса через пользовательский интерфейс, например командный язык или графический интерфейс пользователя (ГИП).The hardware-software interface system, in general, is loaded into the computer system at startup, after which it controls all application programs in the computer system. Application programs interact with the system hardware-software interface, requesting services through the application programming interface (API). Some applications allow end users to interact with a hardware-software interface system through a user interface, such as a command language or graphical user interface (GUI).
Система аппаратно-программного интерфейса традиционно осуществляет различные сервисы для приложений. В многозадачной системе аппаратно-программного интерфейса, где одновременно может выполняться множество программ, система аппаратно-программного интерфейса определяет, в каком порядке должны действовать приложения, и сколько времени нужно выделить каждому приложению, прежде чем переключиться на другое приложение. Система аппаратно-программного интерфейса также управляет совместным использованием внутренней памяти среди множества приложений и обрабатывает ввод и вывод в присоединенные аппаратные устройства, например жесткие диски, принтеры и коммутируемые порты, и из них. Система аппаратно-программного интерфейса также посылает сообщения каждому приложению (и в определенном случае конечному пользователю), касающиеся состояния операций и любых ошибок, которые могут возникнуть. Система аппаратно-программного интерфейса также может брать на себя управление пакетными заданиями (например, печати), в результате чего инициирующее приложение освобождается от этой работы и может возобновить другую обработку и/или операции. На компьютерах, которые могут обеспечивать параллельную обработку, система аппаратно-программного интерфейса также управляет разделением программы, чтобы она одновременно выполнялась на более чем одном процессоре.The hardware-software interface system traditionally provides various services for applications. In a multi-tasking system of a hardware-software interface, where many programs can be executed simultaneously, the system of a hardware-software interface determines in which order the applications should operate and how much time should be allocated to each application before switching to another application. A hardware-software interface system also manages the sharing of internal memory among multiple applications and processes input and output to and from attached hardware devices, such as hard drives, printers, and switched ports. The hardware-software interface system also sends messages to each application (and in a specific case to the end user) regarding the status of operations and any errors that may occur. The hardware-software interface system can also take control of batch jobs (for example, printing), as a result of which the initiating application is freed from this work and can resume other processing and / or operations. On computers that can provide parallel processing, the hardware-software interface system also controls the separation of the program so that it runs simultaneously on more than one processor.
Оболочка системы аппаратно-программного интерфейса (далее именуемая просто «оболочкой») - это интерактивный интерфейс конечного пользователя к системе аппаратно-программного интерфейса. (Оболочку также можно называть «интерпретатором команд» или в операционной системе «оболочкой операционной системы»). Оболочка является внешним слоем системы аппаратно-программного интерфейса, к которому прикладные программы и/или конечные пользователи могут непосредственно осуществлять доступ.A shell of a hardware-software interface system (hereinafter referred to simply as a “shell”) is an interactive end-user interface to a hardware-software interface system. (A shell can also be called a “command interpreter” or, in an operating system, a “shell of an operating system”). A shell is an external layer of a hardware-software interface system to which application programs and / or end users can directly access.
Хотя предполагается, что многочисленные варианты осуществления настоящего изобретения особенно хорошо подходят для компьютеризованных систем, ничто в этом документе не предусматривает ограничения изобретения такими вариантами осуществления. Напротив, используемый здесь термин «компьютерная система» призван охватывать любые и все устройства, способные хранить и обрабатывать информацию и/или способные использовать сохраненную информацию для управления поведением самого устройства, независимо от того, является ли это устройство по своей природе электронным, механическим, логическим или виртуальным.Although it is contemplated that numerous embodiments of the present invention are particularly well suited for computerized systems, nothing in this document is intended to limit the invention to such embodiments. On the contrary, the term “computer system” used here is intended to encompass any and all devices capable of storing and processing information and / or capable of using stored information to control the behavior of the device itself, regardless of whether this device is electronic, mechanical, logical in nature or virtual.
В. Традиционное хранение на основе файловB. Traditional file-based storage
В большинстве современных компьютерных систем «файлы» представляют собой блоки сохраняемой информации, которые могут включать в себя систему аппаратно-программного интерфейса, а также прикладные программы, наборы данных и т.д. Во всех современных системах аппаратно-программного интерфейса (Windows, Unix, Linux, Mac OS, системах виртуальной машины и т.д.) файлы являются базовыми дискретными (сохраняемыми и извлекаемыми) блоками информации (например, данных, программ и т.п.), которыми может манипулировать система аппаратно-программного интерфейса. Группы файлов обычно организуются в «папки». В Microsoft Windows, Macintosh OS и других системах аппаратно-программного интерфейса, папка является собранием файлов, которые можно извлекать, перемещать и иначе манипулировать как единичными блоками информации. Эти папки, в свою очередь, организуются в древовидную иерархическую структуру, именуемую «директорией» (более подробно рассмотрена ниже). В некоторых других системах аппаратно-программного интерфейса, например DOS, z/OS и в большинстве операционных систем на основе Unix, термины «директория» и/или «папка» являются взаимозаменяемыми, и ранние компьютерные системы Apple (например, Apple IIe) использовали термин «каталог» вместо директории; однако при использовании здесь все эти термины считаются синонимами и взаимозаменяемыми и призваны дополнительно включать в себя все остальные эквивалентные термины, обозначающие и ссылающиеся на иерархические структуры хранения информации и их компоненты папок и файлов.In most modern computer systems, “files” are blocks of stored information that may include a hardware-software interface system, as well as application programs, data sets, etc. In all modern systems of hardware-software interface (Windows, Unix, Linux, Mac OS, virtual machine systems, etc.) files are basic discrete (stored and retrieved) blocks of information (for example, data, programs, etc.) which can be manipulated by a system of a hardware-software interface. File groups are usually organized in “folders”. In Microsoft Windows, Macintosh OS, and other hardware-software interface systems, a folder is a collection of files that can be retrieved, moved, and otherwise manipulated as single blocks of information. These folders, in turn, are organized into a tree-like hierarchical structure called the “directory” (discussed in more detail below). On some other hardware-software interface systems, such as DOS, z / OS, and on most Unix-based operating systems, the terms “directory” and / or “folder” are used interchangeably, and earlier Apple computer systems (such as Apple IIe) used the term "Directory" instead of a directory; however, when used here, all these terms are considered synonymous and interchangeable and are intended to additionally include all other equivalent terms that denote and refer to hierarchical structures of information storage and their components of folders and files.
Традиционно директория (также именуемая директорией папок) представляет собой древовидную иерархическую структуру, в которой файлы сгруппированы в папки, и папки, в свою очередь, организованы в соответствии с относительными узловыми точками, которые образуют дерево директории. Например, согласно фиг.2А, базовая папка файловой системы на основе DOS (или «корневая директория») 212 может содержать совокупность папок 214, каждая из которых может дополнительно содержать дополнительные папки (как «подпапки» этой конкретной папки) 216, и каждая из них также может содержать дополнительные папки 218 до бесконечности. Каждая из этих папок может иметь один или несколько файлов 220, хотя на уровне системы аппаратно-программного интерфейса отдельные файлы в папке не имеют между собой ничего общего, кроме их положения в древовидной иерархии. Неудивительно, что этот подход к организации файлов в иерархии папок опосредованно отражает физическую организацию типичных сред хранения, используемых для хранения этих файлов (например, жестких дисков, флоппи-дисков, CD-ROM и т.д.).Traditionally, a directory (also called a directory of folders) is a tree-like hierarchical structure in which files are grouped into folders, and folders, in turn, are organized according to the relative nodal points that make up the directory tree. For example, according to FIG. 2A, the base folder of a DOS-based file system (or “root directory”) 212 may comprise a plurality of
В дополнение к вышеизложенному каждая папка является контейнером для своих подпапок и их файлов, т.е. каждая папка владеет своими подпапками и файлами. Например, когда система аппаратно-программного интерфейса удаляет папку, подпапки и файлы этой папки также удаляются (что рекурсивно в случае каждой подпапки дополнительно относится к ее собственным подпапкам и файлам). Аналогично каждый файл, в общем случае, принадлежит только одной папке, и хотя можно скопировать файл и поместить копию в другую папку, копия файла сама по себе является отличным и отдельным блоком, который не имеет прямой связи с оригиналом (например, изменения файла-оригинала не отражаются на файле-копии на уровне системы аппаратно-программного интерфейса). Отсюда следует, что файлы и папки являются типично «физическими» по своей природе, поскольку папки рассматриваются как физические контейнеры, и файлы рассматриваются как дискретные и отдельные физические элементы в этих контейнерах.In addition to the above, each folder is a container for its subfolders and their files, i.e. each folder owns its subfolders and files. For example, when the firmware system deletes a folder, the subfolders and files of this folder are also deleted (which is recursive in the case of each subfolder, additionally refers to its own subfolders and files). Similarly, each file generally belongs to only one folder, and although you can copy the file and put the copy in another folder, the copy of the file itself is a distinct and separate unit that does not have a direct connection with the original (for example, changing the original file do not affect the copy file at the system-level hardware-software interface). It follows that files and folders are typically “physical” in nature, since folders are considered as physical containers, and files are considered as discrete and separate physical elements in these containers.
II. Платформа хранения WINFS для организации,II. WINFS storage platform for organization,
поиска и совместного использования данныхdata search and sharing
Настоящее изобретение совместно с родственными изобретениями, включенными посредством ссылки, согласно описанному выше, посвящено платформе хранения для организации, поиска и совместного использования данных. Платформа хранения, отвечающая настоящему изобретению, распространяет и расширяет платформу данных за пределы видов существующих файловых систем и систем баз данных, рассмотренных выше, и предназначена для хранения всех типов данных, включая новую форму данных, именуемую Статьями.The present invention, together with related inventions, incorporated by reference, as described above, is devoted to a storage platform for organizing, searching and sharing data. The storage platform of the present invention extends and extends the data platform beyond the types of existing file systems and database systems discussed above, and is intended to store all types of data, including a new form of data called the Articles.
С. ГлоссарийC. Glossary
Нижеследующие термины, используемые здесь и в формуле изобретения, имеют следующее значение:The following terms used here and in the claims have the following meanings:
- «Статья» - это блок сохраняемой информации, доступный системе аппаратно-программного интерфейса, который в отличие от простого файла является объектом, имеющим базовое множество свойств, которые в общем порядке поддерживаются по всем объектам, представляемых конечному пользователю оболочкой системы аппаратно-программного интерфейса. Статьи также имеют свойства и отношения, которые в общем порядке поддерживаются по всем типам Статьи, включая признаки, которые позволяют вводить новые свойства и отношения (что более подробно описано ниже).“An“ article ”is a block of stored information available to a system of a hardware-software interface, which, unlike a simple file, is an object that has a basic set of properties that are generally supported for all objects presented to the end user by a shell of a system of a hardware-software interface. Articles also have properties and relationships, which are generally maintained for all types of Articles, including features that allow you to enter new properties and relationships (which is described in more detail below).
- «Операционная система» (ОС) - это особая программа, которая действует как посредник между прикладными программами и аппаратными средствами компьютера. Операционная система содержит в большинстве случаев оболочку и ядро.- “Operating System” (OS) is a special program that acts as an intermediary between application programs and computer hardware. The operating system contains in most cases a shell and a kernel.
- «Система аппаратно-программного интерфейса» - это программное обеспечение или сочетание аппаратных средств и программного обеспечения, которое служит в качестве интерфейса между соответствующими компонентами аппаратных средств компьютерной системы и приложениями, выполняющимися в компьютерной системе. Система аппаратно-программного интерфейса обычно содержит (и в некоторых вариантах осуществления может исключительно содержать) операционную систему. Система аппаратно-программного интерфейса может также содержать администратор виртуальных машин (АВМ), среду выполнения общего языка (CLR) или ее функциональный эквивалент, виртуальную машину Java (JVM) или ее функциональный эквивалент, или любые подобные компоненты программного обеспечения вместо или в дополнение к операционной системе в компьютерной системе. Целью системы аппаратно-программного интерфейса является обеспечение среды, в которой пользователь может выполнять прикладные программы. Цель любой системы аппаратно-программного интерфейса состоит в том, чтобы сделать компьютерную систему удобной в использовании, а также эффективно использовать аппаратные средства компьютера.“A hardware-software interface system” is software or a combination of hardware and software that serves as an interface between the respective hardware components of a computer system and applications running on a computer system. A hardware-software interface system typically comprises (and in some embodiments may solely comprise) an operating system. The hardware-software interface system may also comprise a virtual machine administrator (AVM), a common language runtime (CLR) or its functional equivalent, a Java virtual machine (JVM) or its functional equivalent, or any similar software components instead of or in addition to the operating system in a computer system. The purpose of a hardware-software interface system is to provide an environment in which a user can execute application programs. The purpose of any system hardware-software interface is to make the computer system easy to use, as well as to effectively use the hardware of the computer.
D. Обзор платформы храненияD. Storage Platform Overview
Согласно фиг.3, платформа 300 хранения содержит хранилище 302 данных, реализованное в машине 314 базы данных. Согласно одному варианту осуществления, машина базы данных содержит машину реляционной базы данных с объектными реляционными расширениями. Согласно одному варианту осуществления, машина 314 реляционной базы данных содержит машину реляционной базы данных Microsoft SQL Server. Хранилище 302 данных реализует модель 304 данных, которая поддерживает организацию, поиск, совместное использование, синхронизацию и защиту данных. Конкретные типы данных описаны в схемах, например схемах 340, и платформа 300 хранения обеспечивает инструменты 346 для развертывания этих схем, а также для расширения этих схем, что более подробно описано ниже.3,
Механизм 306 отслеживания изменений, реализованный в хранилище 302 данных, обеспечивает возможность отслеживать изменения в хранилище данных. Хранилище 302 данных также обеспечивает функции 308 защиты и функцию 310 продвижения/отмены продвижения, которые более подробно рассмотрены ниже. Хранилище 302 данных также обеспечивает множество программных интерфейсов 312 приложения для представления возможностей хранилища 302 данных другим компонентам платформы хранения и прикладным программам (например, прикладным программам 350a, 350b и 350c), которые используют платформу хранения. Платформа хранения, отвечающая настоящему изобретению, содержит также программные интерфейсы приложения (API) 322, которые позволяют прикладным программам, например прикладным программам 350a, 350b и 350c, осуществлять доступ ко всем вышеперечисленным возможностям платформы хранения и осуществлять доступ к данным, описанным в схемах. API 322 платформы хранения могут использоваться прикладными программами совместно с другими API, например API 324 БД OLE и API 326 Win32 Microsoft Windows.The change tracking engine 306 implemented in the data warehouse 302 provides the ability to track changes in the data warehouse. Data storage 302 also provides
Платформа хранения 300, отвечающая настоящему изобретению, может обеспечивать различные сервисы 328 для прикладных программ, включая сервис 330 синхронизации, который облегчает совместное использование данных среди пользователей или систем. Например, сервис 330 синхронизации может обеспечивать возможность взаимодействия с другими хранилищами 340 данных, имеющими такой же формат, что и хранилище 302 данных, а также доступ к хранилищам 342 данных, имеющим другие форматы. Платформа 300 хранения также обеспечивает функции файловой системы, которые допускают возможность взаимодействия хранилища 302 данных с существующими файловыми системами, например файловой системой 318 NTFS Windows. Согласно, по меньшей мере, некоторым вариантам осуществления, платформа 320 хранения может также обеспечивать прикладные программы дополнительными возможностями, позволяющими воздействовать на данные и обеспечивающими взаимодействие с другими системами. Эти возможности могут быть воплощены в виде дополнительных сервисов 328, например сервиса 334 Info Agent и сервиса 332 уведомления, а также в виде других утилит 336.The
Согласно, по меньшей мере, некоторым вариантам осуществления, платформа хранения воплощена в системе аппаратно-программного интерфейса компьютерной системы или образует его неотъемлемую часть. Например, и без ограничения, платформа хранения, отвечающая настоящему изобретению, может быть воплощена в операционной системе, администраторе виртуальных машин (АВМ), среде выполнения общего языка (CLR) или ее функционального эквивалента, или виртуальной машине Java (JVM), или ее функционального эквивалента или может образовывать их неотъемлемую часть. Посредством своего общего фундамента хранения и схематизированных данных платформа хранения, отвечающая настоящему изобретению, позволяет более эффективно разрабатывать приложения для потребителей, специалистов в сфере информационных технологий и предприятий. Она обеспечивает обширную и расширяемую область программирования, которая не только делает доступными возможности, присущие ее модели данных, но также охватывает и расширяет существующую файловую систему и методы доступа к базе данных.According to at least some embodiments, the storage platform is embodied in or forms an integral part of the hardware-software interface of a computer system. For example, and without limitation, the storage platform of the present invention can be implemented in the operating system, virtual machine administrator (AVM), common language runtime (CLR) or its functional equivalent, or Java virtual machine (JVM), or its functional equivalent or may form an integral part thereof. Through its common storage foundation and schematized data, the storage platform of the present invention allows more efficient development of applications for consumers, information technology professionals and enterprises. It provides an extensive and expandable programming area that not only makes available the capabilities inherent in its data model, but also extends and extends the existing file system and database access methods.
В нижеследующем описании и на различных чертежах платформа хранения 300, отвечающая настоящему изобретению, может именоваться “WinFS”. Однако это название используется для обозначения платформы хранения исключительно для удобства описания и не предполагает никаких ограничений.In the following description and various drawings, the
Е. Модель данныхE. Data Model
Хранилище 302 данных платформы 300 хранения, отвечающей настоящему изобретению, реализует модель данных, которая поддерживает организацию, поиск, совместное использование и защиту данных, находящихся в хранилище. В модели данных, отвечающей настоящему изобретению, «Статья» - это основной блок сохраняемой информации. Модель данных обеспечивает механизм объявления Статей и Расширений статей и установления отношений между Статьями и организации Статей в Папках статей и в Категориях, что описано более подробно ниже.The data store 302 of the
Модель данных опирается на два примитивных механизма - Типы и Отношения. Типы - это структуры, обеспечивающие формат, который управляет формой экземпляра Типа. Формат выражается в виде упорядоченного множества Свойств. Свойство - это имя значения или множества значений данного Типа. Например, тип «почтовый адрес США» может иметь свойства «улица», «город», «индекс», «штат», в которых «улица», «город» «штат» имеют тип String (строка), а индекс имеет тип Int32 (32-разрядное целое). «Улица» может быть многозначным свойством (т.е. иметь множество значений), что позволяет адресу иметь более одного значения для свойства «улица». Система задает определенные примитивные типы, которые можно использовать при построении других типов: они включают в себя String, Binary, Boolean, Int16, Int32, Int64, Single, Double, Byte, DateTime, Decimal and GUID. Свойства Типа можно задавать с использованием любых примитивных типов или (с некоторыми ограничениями, указанными ниже) любых построенных типов. Например, можно задать Тип «местоположение», имеющий Свойства «координата» и «адрес», где Свойство «адрес» имеет вышеописанный тип «почтовый адрес США». Свойства также могут быть обязательными или необязательными.The data model relies on two primitive mechanisms - Types and Relations. Types are structures that provide a format that controls the shape of an instance of a Type. The format is expressed as an ordered set of Properties. A property is the name of a value or set of values of a given Type. For example, the type "US mailing address" can have the properties "street", "city", "zip code", "state", in which "street", "city" "state" are of type String (string), and the index is of type Int32 (32-bit integer). A “street” can be a multi-valued property (that is, have multiple values), which allows the address to have more than one value for the “street” property. The system defines certain primitive types that can be used to build other types: they include String, Binary, Boolean, Int16, Int32, Int64, Single, Double, Byte, DateTime, Decimal and GUID. Type properties can be set using any primitive types or (with some restrictions listed below) any constructed types. For example, you can specify the Type “location”, which has the “Coordinate” and “Address” properties, where the “Address” property has the above-described type “US mailing address”. Properties may also be required or optional.
Отношения могут быть декларированы и представляют отображение между множествами экземпляров двух типов. Например, можно декларировать Отношение между Типом «лицо» и Типом «местонахождение», именуемое «проживает в», которое определяет, кто где проживает. Отношение имеет имя, две конечных точки, а именно исходную конечную точку и целевую конечную точку. Отношения также имеют упорядоченное множество свойств. Исходная и целевая конечные точки имеют Имя и Тип. Например, Отношение «проживает в» имеет исходную конечную точку, именуемую «жилец» типа «лицо» и целевую конечную точку, именуемую «местожительство» типа «местонахождение» и, кроме того, имеет свойства «начальная дата» и «конечная дата», указывающие период времени, в течение которого жилец проживал по данному местожительству. Заметим, что «лицо» может проживать по нескольким местожительствам в течение некоторого времени, и местожительство может иметь несколько жильцов, поэтому наиболее вероятно, что информация «начальная дата» и «конечная дата» будет помещена в само отношение.Relationships can be declared and represent a mapping between sets of instances of two types. For example, you can declare the Relationship between the Type “person” and the Type “location”, called “resides in”, which determines who lives where. The relationship has a name, two endpoints, namely, the source endpoint and the target endpoint. Relations also have an ordered set of properties. Source and destination endpoints have a Name and a Type. For example, the “lives in” relationship has a source endpoint called a “tenant” of type “face” and a target endpoint called a “place of residence” of type “location” and, in addition, has the properties “start date” and “end date”, indicating the period of time during which the tenant lived in the place of residence. Note that a “person” can reside in several places for some time, and a place of residence can have several residents, so it is most likely that the information “start date” and “end date” will be placed in the relation itself.
Отношения задают отображение между экземплярами, которое ограничено типами, заданными как типы конечной точки. Например, отношение «проживает в» не может быть отношением, в котором «жильцом» является «автомобиль», поскольку «автомобиль» не является «лицом».Relationships define a mapping between instances that is limited to types defined as endpoint types. For example, the relationship “resides in” cannot be a relationship in which the “tenant” is “vehicle”, since “vehicle” is not “person”.
Модель данных позволяет задавать отношение подтип-супертип между типами. Отношение подтип-супертип, также именуемое отношением «базовый тип», задано таким образом, что если Тип А является Базовым типом для Типа В, должно быть справедливо утверждение, что каждый экземпляр В всегда является экземпляром А. Это отношение можно выразить иначе, а именно: каждый экземпляр, соответствующий В, должен также соответствовать А. Если, например, А имеет свойство «имя» Типа «строка», а В имеет свойство «возраст» Типа Int16, то В должен иметь как «имя», так и «возраст». Иерархию типов можно представить в виде дерева с единичным супертипом в качестве корня. Ветви от корня обеспечивают подтипы первого уровня, ветви на этом уровне обеспечивают подтипы второго уровня и т.д. до концевых подтипов, которые сами не имеют подтипов. Дерево не ограничивается однородной глубиной, но не может содержать циклов. Данный Тип может иметь нуль или много подтипов и нуль один супертип(ов). Данный экземпляр может соответствовать максимум одному типу совместно с супертипами этого типа. Иными словами, для данного экземпляра на любом уровне дерева экземпляр может соответствовать максимум одному подтипу на этом уровне. Тип называется абстрактным, если экземпляры типа должны также быть экземплярами подтипа этого типа.The data model allows you to specify a subtype-supertype relationship between types. The subtype-supertype relationship, also called the "base type" relationship, is defined in such a way that if Type A is the Base type for Type B, it must be true that each instance of B is always an instance of A. This relationship can be expressed differently, namely : each instance corresponding to B must also correspond to A. If, for example, A has the property “name” of the Type “string” and B has the property “age” of the Type Int16, then B must have both “name” and “age” ". The type hierarchy can be represented as a tree with a single supertype as the root. Branches from the root provide subtypes of the first level, branches at this level provide subtypes of the second level, etc. to end subtypes that themselves do not have subtypes. A tree is not limited to uniform depth, but cannot contain cycles. This Type may have zero or many subtypes and zero one supertype (s). This instance can correspond to a maximum of one type together with supertypes of this type. In other words, for a given instance at any level of the tree, an instance can correspond to a maximum of one subtype at that level. A type is called abstract if instances of the type must also be instances of a subtype of that type.
1. Статьи1. Articles
Статья - это блок сохраняемой информации, который в отличие от простого файла является объектом, имеющим базовое множество свойств, которые в общем порядке поддерживаются по всем объектам, представляемых конечному пользователю оболочкой системы аппаратно-программного интерфейса. Статьи также имеют свойства и отношения, которые в общем порядке поддерживаются по всем типам Статьи, включая признаки, которые позволяют вводить новые свойства и отношения, что рассмотрено ниже.An article is a block of information that is stored, which, unlike a simple file, is an object that has a basic set of properties that are generally supported for all objects presented to the end user by the shell of the hardware-software interface system. Articles also have properties and relationships that are generally maintained across all types of Articles, including features that allow you to introduce new properties and relationships, which are discussed below.
Статьи являются объектами общих операций, таких как копирование, удаление, перемещение, открытие, печать, резервирование, восстановление, дублирование и т.д. Статьи являются блоками, которые можно сохранять и извлекать, и все формы сохраняемой информации, которой манипулирует платформа хранения, существуют в виде Статей, свойств статей или отношений между статьями, каждое из которых более подробно рассмотрено ниже.Articles are objects of common operations, such as copying, deleting, moving, opening, printing, backing up, restoring, duplicating, etc. Articles are blocks that can be saved and retrieved, and all forms of stored information that the storage platform manipulates exist in the form of Articles, article properties, or relations between articles, each of which is discussed in more detail below.
Статьи призваны представлять относящиеся к реальному миру и интуитивно понятные блоки данных, например Контакты, Люди, Услуги, Места, Документы (разнообразных видов) и т.д. На фиг.5А показана блок-схема, иллюстрирующая структуру Статьи. Неквалифицированное имя Статьи - «местожительство». Квалифицированное имя Статьи - “Core.Location”, которое указывает, что эта структура Статьи задана как конкретный тип Статьи в Схеме ядра. (Схема ядра более подробно рассмотрена ниже.)Articles are designed to represent real-world and intuitive data blocks, such as Contacts, People, Services, Places, Documents (of various types), etc. 5A is a block diagram illustrating the structure of an Article. The unqualified name of the Article is “domicile”. The qualified name of the Article is “Core.Location”, which indicates that this Article structure is specified as a specific type of Article in the Kernel Scheme. (The kernel layout is discussed in more detail below.)
Статья «местожительство» имеет совокупность свойств, включая EAddresses, MetropolitanRegion, Neighborhood и PostalAddresses. Конкретный тип каждого свойства указан непосредственно после имени свойства и отделен от имени свойства двоеточием (:). Справа от имени типа, количество значений, допустимое для этого типа свойства, указано в квадратных скобках ([ ]), где звездочка (*) справа от двоеточия (:) указывает неуказанное и/или неограниченное количество («много»). Цифра «1» справа от двоеточия указывает, что может быть максимум одно значение. Нуль (0) слева от двоеточия указывает, что свойство является необязательным (может вовсе не быть значений). «1» слева от двоеточия указывает, что должно быть, по меньшей мере, одно значение (свойство является обязательным). Оба свойства Neighborhood и MetropolitanRegion имеют тип “nvarchar” (или эквивалентный), который является заранее заданным типом данных или «простым типом» (и обозначен без заглавной буквы). Однако EAddresses и PostalAddresses являются свойствами заданных типов или «сложных типов» (что обозначено заглавной буквой) EAddress и PostalAddress соответственно. Сложный тип - это тип, который выводится из одного или нескольких простых типов данных и/или из других сложных типов. Сложные типы для свойств Статьи также образуют “вложенные элементы”, поскольку детали сложного типа вложены в непосредственную Статью для задания ее свойств, и информация, касающаяся этих сложных типов, поддерживается в Статье, которая имеет эти свойства (в границе Статьи, которая рассмотрена ниже). Эти концепции типизации общеизвестны и очевидны специалистам в данной области.The “domicile” article has a combination of properties, including EAddresses, Metropolitan Region, Neighborhood, and PostalAddresses. The specific type of each property is indicated immediately after the property name and separated by a colon (:) from the property name. To the right of the type name, the number of values allowed for this type of property is indicated in square brackets ([]), where the asterisk (*) to the right of the colon (:) indicates an unspecified and / or unlimited number ("many"). The number “1” to the right of the colon indicates that there can be a maximum of one value. A zero (0) to the left of the colon indicates that the property is optional (there may be no values at all). A “1” to the left of the colon indicates that there must be at least one value (the property is required). Both Neighborhood and MetropolitanRegion properties are of type “nvarchar” (or equivalent), which is a predefined data type or “simple type” (and is indicated without a capital letter). However, EAddresses and PostalAddresses are properties of the specified types or “complex types” (indicated by the capital letter) of EAddress and PostalAddress, respectively. A complex type is a type that is inferred from one or more simple data types and / or from other complex types. Complex types for properties of Articles also form “nested elements”, since details of a complex type are embedded in the immediate Article to specify its properties, and information regarding these complex types is supported in the Article that has these properties (in the border of the Article, which is discussed below) . These typing concepts are well known and obvious to those skilled in the art.
На фиг.5В показана блок-схема, иллюстрирующая сложные типы свойств PostalAddress и EAddress. Тип свойства PostalAddress определяет, что, предположительно Статья, имеющая свойство типа PostalAddress, имеет нуль или одно значение City, нуль или одно значение CountryCode, нуль или одно значение MailStop и любое количество (от нуля до много) значений PostalAddressType и т.д. и т.п. Таким образом, задается форма данных для конкретного свойства в Статье. Тип свойства EAddress задан аналогично, как показано. Хотя в данной заявке это используется в необязательном порядке, другой способ представления сложных типов в Статье «местожительство» состоит в том, чтобы изобразить статью с отдельными свойствами каждого из перечисленных здесь сложных типов. На фиг.5С показан блок-схема, иллюстрирующая Статью «местожительство», где дополнительно описаны ее сложные типы. Следует, однако, понимать, что это альтернативное представление Статьи «местожительство» на этой фиг.5С в точности соответствует Статье, проиллюстрированной на фиг.5А. Платформа хранения, отвечающая настоящему изобретению, также допускает выделение подтипов, благодаря чему один тип свойства может быть подтипом другого (где один тип свойства наследует свойства другого, родительского типа свойства).5B is a block diagram illustrating the complex property types PostalAddress and EAddress. The property type of PostalAddress determines that, presumably, an Article having a property of type PostalAddress has zero or one City value, zero or one CountryCode value, zero or one MailStop value, and any number (from zero to many) PostalAddressType values, etc. etc. Thus, the data form for a particular property is specified in the Article. The property type EAddress is set in the same way as shown. Although this application is optionally used in this application, another way of representing complex types in the “Residence” Article is to depict an article with the individual properties of each of the complex types listed here. On figs shows a block diagram illustrating the Article "residence", which further describes its complex types. It should be understood, however, that this is an alternative representation of the “Residence” Article in this FIG. 5C exactly corresponds to the Article illustrated in FIG. 5A. The storage platform of the present invention also allows subtypes to be distinguished, so that one type of property can be a subtype of another (where one type of property inherits the properties of another, parent type of property).
Аналогично, но не идентично свойствам и их типам свойств, Статьи по природе своей представляют свои собственные Типы статьи, которые также могут подлежать выделению подтипов. Другими словами, платформа хранения в нескольких вариантах осуществления настоящего изобретения допускает, чтобы Статья была подтипом другой Статьи (благодаря чему одна Статья наследует свойства другой, родительской Статьи). Кроме того, для различных вариантов осуществления настоящего изобретения каждая Статья является подтипом типа Статьи «Статья», который является первым и основным типом Статьи, найденным в Базовой схеме. (Базовая схема также будет рассмотрена ниже более подробно.) На фиг.6А проиллюстрирована Статья, в данном примере Статья «местожительство», как подтип типа Статьи «Статья», найденный в Базовой схеме. На этом чертеже стрелка указывает, что Статья «местожительство» (наподобие всех остальных Статей) является подтипом типа Статьи «Статья». Тип Статьи «Статья», как основная Статья, из которой выводятся все остальные Статьи, имеет ряд важных свойств, например ItemId и различные метки времени, и таким образом задает стандартные свойства всех Статей в операционной системе. На этом чертеже данные свойства типа Статьи «Статья» наследуются «местожительством» и таким образом становятся свойствами «местожительства».Similarly, but not identical to properties and their types of properties, Articles by their nature present their own Types of articles, which can also be subtyped. In other words, the storage platform in several embodiments of the present invention allows the Article to be a subtype of another Article (so that one Article inherits the properties of the other, parent Article). In addition, for various embodiments of the present invention, each Article is a subtype of the type of Article "Article", which is the first and main type of Article found in the Basic Scheme. (The Basic Scheme will also be discussed in more detail below.) Fig. 6A illustrates the Article, in this example the Article “place of residence”, as a subtype of the type of the Article “Article” found in the Basic scheme. In this drawing, the arrow indicates that the Article "place of residence" (like all other Articles) is a subtype of the type of Article "Article". The type of Article “Article”, as the main Article, from which all other Articles are derived, has a number of important properties, for example, ItemId and various timestamps, and thus sets the standard properties of all Articles in the operating system. In this drawing, these properties of the type of the “Article” Article are inherited by “domicile” and thus become the properties of “domicile”.
Другой способ представления свойств в Статье «местожительство», унаследованных от типа Статьи «Статья», состоит в том, чтобы изобразить «местожительство» с отдельными свойствами каждого типа свойства из перечисленной здесь родительской Статьи. На фиг.6В показана блок-схема, иллюстрирующая Статью «местожительство», в которой помимо ее непосредственных свойств описаны ее унаследованные типы. Следует заметить и понять, что эта Статья идентична Статье, показанной на фиг.5А, хотя на этом чертеже «местожительство» проиллюстрировано со всеми его свойствами, как непосредственными, показанными на этом чертеже и на фиг.5А, так и унаследованными, показанными на этом чертеже, но не на фиг.5А (тогда как на фиг.5А эти свойства указаны посредством ссылки с помощью стрелки, показывающей, что Статья «местожительство» является подтипом типа Статьи «Статья»).Another way of representing properties in the “Residence” Article inherited from the type of the “Article” Article is to depict the “residence” with the individual properties of each property type from the parent Article listed here. FIG. 6B is a block diagram illustrating the “Residence” Article, in which, in addition to its immediate properties, its inherited types are described. It should be noted and understood that this Article is identical to the Article shown in FIG. 5A, although in this drawing the “place of residence” is illustrated with all its properties, both direct, shown in this drawing and in FIG. 5A, and inherited, shown in this in the drawing, but not in FIG. 5A (whereas in FIG. 5A, these properties are indicated by reference with an arrow indicating that the “Residence” Article is a subtype of the “Article” type).
Статьи являются самостоятельными объектами, таким образом, если удаляется Статья, то все непосредственные и унаследованные свойства Статьи также удаляются. Аналогично при извлечении Статьи получают Статью и все ее непосредственные и унаследованные свойства (включая информацию, касающуюся ее сложных типов свойств). Определенные варианты осуществления настоящего изобретения могут предусматривать запрашивание подмножества свойств при извлечении конкретной Статьи; однако по умолчанию во многих таких вариантах осуществления, при извлечении Статья обеспечивается со всеми ее непосредственными и унаследованными свойствами. Кроме того, свойства Статьи можно также расширять путем добавления новых свойств к существующим свойствам типа этой Статьи. Поэтому эти «расширения» являются истинными свойствами Статьи, и подтипы этого типа Статьи могут автоматически включать в себя свойства расширения.Articles are independent objects, so if an Article is deleted, then all the immediate and inherited properties of the Article are also deleted. Similarly, when retrieving Articles, they receive the Article and all its immediate and inherited properties (including information regarding its complex property types). Certain embodiments of the present invention may include requesting a subset of the properties when retrieving a particular Article; however, by default, in many such embodiments, upon retrieval, the Article is provided with all its immediate and inherited properties. In addition, Article properties can also be expanded by adding new properties to existing properties such as this Article. Therefore, these “extensions” are the true properties of the Article, and subtypes of this type of Article can automatically include the properties of the extension.
«Граница» Статьи представлена ее свойствами (включая сложные типы свойств, расширения и т.п.). Граница Статьи также представляет предел операций, осуществляемых в отношении Статьи, таких как копирование, удаление, перемещение, создание и пр. Например, в нескольких вариантах осуществления настоящего изобретения, при копировании Статьи копируется также все, что находится внутри этой границы Статьи. Для каждой Статьи граница охватывает следующее:The “border” of an Article is represented by its properties (including complex types of properties, extensions, etc.). The border of the Article also represents the limit of operations carried out in relation to the Article, such as copying, deleting, moving, creating, etc. For example, in several embodiments of the present invention, when copying the Article, everything that is inside this border of the Article is also copied. For each Article, the boundary covers the following:
- Тип Статьи для Статьи и, если Статья является подтипом другой Статьи (что имеет место в нескольких вариантах осуществления настоящего изобретения, когда все Статьи выводятся из одной Статьи и Типа Статьи в Базовой схеме), любую применимую информацию подтипов (т.е. информацию, касающуюся родительского Типа Статьи). Если копируемая исходная Статья является подтипом другой Статьи, копия также может быть подтипом той же Статьи;- The Article Type for the Article and, if the Article is a subtype of another Article (which occurs in several embodiments of the present invention, when all Articles are derived from the same Article and Article Type in the Basic Scheme), any applicable subtype information (i.e. information, regarding parent Article Type). If the original source Article is a subtype of another Article, the copy may also be a subtype of the same Article;
- Свойства и расширения сложного типа Статьи, если таковые существуют. Если исходная Статья имеет свойства сложных типов (собственные или расширенные), копия также может иметь те же сложные типы;- Properties and extensions of a complex type Articles, if any. If the original Article has properties of complex types (native or advanced), the copy may also have the same complex types;
- Записи Статьи на «отношениях принадлежности», т.е. собственный список Статьи, в котором перечислено, какие другие Статьи («целевые статьи») принадлежат данной Статье («владеющей Статье»). Это особенно важно в связи с Папками статей, более подробно рассмотренными ниже, и установленным ниже правилом, согласно которому все статьи должны принадлежать, по меньшей мере, одной Папке статей. Кроме того, что касается внедренных статей, рассмотренных более подробно ниже, внедренная статья считается частью Статьи, в которую она внедрена, для таких операций, как копирование, удаление и т.п.- Entries of the Article on the “relationship of ownership”, i.e. own list of Articles, which lists which other Articles (“target articles”) belong to this Article (“owning Article”). This is especially important in connection with the Article Folders discussed in more detail below and the rule set out below that all articles must belong to at least one Article Folder. In addition, with regard to embedded articles, discussed in more detail below, an embedded article is considered part of the Article in which it is embedded for operations such as copying, deleting, etc.
2. Идентификация статьи2. Article identification
Статьи уникальным образом идентифицируются в пространстве глобальных статей посредством ItemID. Тип Base.Item определяет поле ItemID типа GUID, в котором хранится идентификация Статьи. Статья должна иметь одну и только одну идентификацию в хранилище 302 данных.Articles are uniquely identified in the global article space through the ItemID. The Base.Item type defines the ItemID field of the GUID type in which the identification of the Article is stored. An article must have one and only one identification in the data warehouse 302.
Ссылка на статью - это структура данных, содержащая информацию для определения местоположения и идентификации Статьи. В модели данных определен абстрактный тип, именуемый ItemReference, из которого выводятся все типы ссылки на статью. Тип ItemReference определяет виртуальный метод, именуемый Resolve. Метод Resolve разрешает ItemReference и возвращает Статью. Этот метод подменяется конкретными подтипами ItemReference, которые реализуют функцию, извлекающую Статью по ссылке. Метод Resolve используется как часть API 322 платформы хранения.An article link is a data structure that contains information for locating and identifying an Article. The data model defines an abstract type called ItemReference, from which all types of article links are derived. The ItemReference type defines a virtual method called Resolve. The Resolve method resolves the ItemReference and returns the Article. This method is replaced by specific subtypes of ItemReference, which implement a function that retrieves an Article by reference. The Resolve method is used as part of the storage platform API 322.
ItemIDReference является подтипом ItemReference. Он задает поля Locator и ItemID. Поле Locator присваивает имя (т.е. идентифицирует) область статей. Оно обрабатывается методом разрешения локаторов, который может разрешать значение Локатора в область статей. Поле ItemID имеет тип ItemID.ItemIDReference is a subtype of ItemReference. It sets the Locator and ItemID fields. The Locator field assigns the name (i.e., identifies) the article area. It is processed by the locator resolution method, which can resolve the Locator value to the article area. The ItemID field is of type ItemID.
ItemPathReference - это частный случай ItemReference, который определяет поля Locator и Path (Путь). Поле Locator идентифицирует область статей. Оно обрабатывается методом разрешения локаторов, который может разрешать значение Локатора на область статей. Поле Path содержит (относительный) путь в пространстве имен платформы хранения с корнем в области статей, обеспеченной Локатором.ItemPathReference is a special case of ItemReference, which defines the Locator and Path fields. The Locator field identifies the article area. It is processed by the locator resolution method, which can resolve the Locator value to the article area. The Path field contains the (relative) path in the storage platform namespace with the root in the article area provided by Latitude.
Этот тип ссылки может быть использован в множественной операции. В общем случае, ссылка должна разрешаться посредством процесса разрешения пути. Метод Resolve API 322 платформы хранения обеспечивает эту функцию.This type of link can be used in multiple operations. In general, a link should be resolved through a path resolution process. The Resolve API 322 method of the storage platform provides this feature.
Рассмотренные выше формы ссылок представлены посредством иерархии типов ссылки, проиллюстрированной на фиг.11. Дополнительные типы ссылки, которые наследуют от этих типов, можно определить в схемах. Их можно использовать в декларации отношения как тип целевого поля.The link forms discussed above are represented by the link type hierarchy illustrated in FIG. Additional link types that inherit from these types can be defined in schemas. They can be used in the relationship declaration as a type of target field.
3. Папки статей и категории3. Article folders and categories
Как рассмотрено более подробно ниже, группы Статей можно организовать в особые Статьи, именуемые Папками статей (которые не надо путать с папками файлов). Однако в отличие от большинства файловых систем Статья может принадлежать более одной Папке статей, так что при обращении к Статье и ее пересмотре в одной Папке статей, к этой пересмотренной Статье затем можно обращаться непосредственно из другой Папки статей. В сущности, хотя доступ к статье может осуществляться из разных Папок статей, доступ фактически осуществляется к одной и той же Статье. Однако Папка статей не обязана владеть всеми входящими в нее Статьями или может просто совладеть Статьями наряду с другими папками, так что удаление Папки статей не обязательно приводит к удалению Статьи. Тем не менее, в нескольких вариантах осуществления настоящего изобретения Статья должна принадлежать, по меньшей мере, одной Папке статей, так что при удалении единичной Папки статей для конкретной Статьи в некоторых вариантах осуществления Статья автоматически удаляется или в альтернативных вариантах осуществления Статья автоматически становится членом Папки статей, принятой по умолчанию (например, Папки статей «корзина», концептуально аналогична папкам с аналогичными именами, используемым в различных системах на основе файлов и папок).As discussed in more detail below, Article groups can be organized into special Articles called Article Folders (which should not be confused with file folders). However, unlike most file systems, an Article can belong to more than one Article Folder, so when accessing an Article and revising it in one Article Folder, this revised Article can then be accessed directly from another Article Folder. In essence, although access to an article may be from different Article Folders, access is actually made to the same Article. However, the Article Folder is not required to own all the Articles included in it, or may simply own the Articles along with other folders, so deleting the Article Folder does not necessarily delete the Article. However, in several embodiments of the present invention, the Article must belong to at least one Article Folder, so if you delete a single Article Folder for a specific Article in some embodiments, the Article is automatically deleted or in alternative embodiments, the Article automatically becomes a member of the Article Folder the default (for example, Article Folders "recycle bin", is conceptually similar to folders with similar names used in various file-based systems pok).
Как рассмотрено более подробно ниже, Статьи могут также принадлежать Категориям на основании общих описанных характеристик, например (а) типа (или типов) статьи, (b) конкретного непосредственного или унаследованного свойства (или свойств), или (с) конкретного значения (или значений), соответствующего свойству Статьи. Например, Статья, содержащая конкретные свойства для личной контактной информации, может автоматически принадлежать Категории «контакт», и любая статья, имеющая свойства контактной информации, будет аналогично автоматически принадлежать этой Категории. Аналогично любая Статья, имеющая свойство местожительства со значением «город Нью-Йорк», может автоматически принадлежать Категории «город Нью-Йорк».As discussed in more detail below, Articles may also belong to Categories based on common characteristics described, for example (a) the type (or types) of an article, (b) a specific immediate or inherited property (or properties), or (c) a specific value (or values) ) corresponding to the property of the Article. For example, an Article containing specific properties for personal contact information may automatically belong to the Contact category, and any article having contact information properties will likewise automatically belong to this Category. Similarly, any Article that has a domicile with the value “New York City” may automatically belong to the “New York City” Category.
Категории принципиально отличаются от Папок статей тем, что Папки статей могут содержать Статьи, не связанные между собой (т.е. без общей описанной характеристики), а каждая Статья в Категории имеет общий тип, общее свойство или значение («общность»), описанный/ое для этой Категории, и это та общность, которая образует основание для его отношения к и между другими Статьями в Категории. Кроме того, членство Статьи в конкретной Папке не обязательно основано на каком-либо конкретном аспекте этой Статьи, для определенных вариантов осуществления все Статьи, имеющие общность, категорически связанную с категорией, могут автоматически становиться членами Категории на уровне системы аппаратно-программного интерфейса. В принципе, Категории можно также рассматривать как виртуальные Папки статей, членство которых основано на результатах особого запроса (например, в контексте базы данных), и Статьи, отвечающие условиям этого запроса (заданным общностями Категории) будут содержать членство в Категории.Categories are fundamentally different from Article Folders in that Article Folders can contain Articles that are not related to each other (that is, without a common characteristic described), and each Article in the Category has a common type, common property or value (“community”) described / th for this Category, and this is the community that forms the basis for its relationship to and between other Articles in the Category. In addition, the membership of an Article in a particular Folder is not necessarily based on any particular aspect of this Article; for certain embodiments, all Articles that have a community categorically associated with a category can automatically become members of the Category at the system-hardware interface level. In principle, Categories can also be considered as virtual Article Folders, the membership of which is based on the results of a particular request (for example, in the context of a database), and Articles that meet the conditions of this request (specified by the Community of Categories) will contain membership in the Category.
Фиг.4 иллюстрирует структурное отношение между Статьями, Папками статей и Категориями. Совокупность Статей 402, 404, 406, 408, 410, 412, 414, 416, 418 и 420 являются членами различных Папок статей 422, 424, 426, 428 и 430. Некоторые Статьи могут принадлежать более одной Папке статей, например Статья 402 принадлежит Папкам статей 422 и 424. Некоторые Статьи, например Статьи 402, 404, 406, 408, 410 и 412 также являются членами одной или более Категорий 432, 434 и 436, тогда как другие статьи, например Статьи 414, 416, 418 и 420, могут не принадлежать ни одной из Категорий (хотя это весьма маловероятно в определенных вариантах осуществления, где обладание любым свойством автоматически влечет членство в Категории, и, таким образом, в таком варианте осуществления Статья не должна иметь никаких признаков, чтобы не быть членом ни одной из категорий). В отличие от иерархической структуры папок Категории и Папки статей имеют структуры более похожие на ориентированные графы, как показано. В любом случае Статьи, Папки статей и Категории являются Статьями (хотя и относятся к разным типам статей).Figure 4 illustrates the structural relationship between Articles, Article Folders, and Categories. The set of
В отличие от файлов, папок и директорий Статьи, Папки статей и Категории, отвечающие настоящему изобретению, не являются по природе своей типично «физическими», поскольку они не имеют концептуальных эквивалентов физических контейнеров, и потому Статьи могут существовать в более чем одном таком месте. Возможность существования Статей в более чем одной Папке статей, а также возможность их организации в Категории обеспечивает расширенную и обогащенную степень манипуляции данными и возможности структуры хранения на уровне аппаратно-программного интерфейса, сверх того, что доступно в уровне техники.Unlike files, folders, and directories, Articles, Article Folders, and Categories that meet the present invention are not typically “physical” in nature, since they do not have conceptual equivalents of physical containers, and therefore Articles can exist in more than one such place. The possibility of the existence of Articles in more than one Article Folder, as well as the possibility of organizing them in the Category, provides an expanded and enriched degree of data manipulation and storage structure capabilities at the level of the hardware-software interface, beyond what is available in the prior art.
4. Схемы4. Schemes
а) Базовая схемаa) Basic scheme
Для обеспечения универсального основания для построения и использования Статей различные варианты осуществления платформы хранения, отвечающей настоящему изобретению, содержат базовую схему, которая устанавливает концептуальную конструкцию для создания и организации Статей и свойств. Базовая схема задает определенные особые типы Статей и свойств и признаки этих особых основных типов, из которых можно дополнительно выводить подтипы. Использование этой базовой схемы позволяет программисту концептуально отличать статьи (и их соответствующие типы) от свойств (и их соответствующих типов). Кроме того, базовая схема задает основное множество свойств, которыми могут обладать все Статьи, поскольку все Статьи (и их соответствующие Типы статьи) выводятся из этой основной статьи в базовой схеме (и ее соответствующего Типа статьи).To provide a universal basis for the construction and use of Articles, various embodiments of a storage platform in accordance with the present invention contain a basic scheme that establishes a conceptual design for creating and organizing Articles and properties. The basic schema defines certain special types of Articles and properties and features of these special basic types from which subtypes can be additionally derived. Using this basic scheme allows a programmer to conceptually distinguish between articles (and their respective types) from properties (and their respective types). In addition, the basic scheme defines the basic set of properties that all Articles may possess, since all Articles (and their respective Article Types) are derived from this basic article in the basic scheme (and its corresponding Article Type).
Согласно фиг.7 и в связи с несколькими вариантами осуществления настоящего изобретения базовая схема задает три типа верхнего уровня: Item (статья), Extension (расширение) и PropertyBase (базовое свойство). Показано, что тип Статьи задается свойствами этого основного типа Статьи “Item”. Напротив, тип свойства “PropertyBase” верхнего уровня не имеет заранее определенных свойств и является всего лишь указателем, из которого выводятся все остальные типы свойств и посредством которого все производные типы свойств связаны между собой (будучи, в общем порядке, выводимы из единичного типа свойства). Свойства типа расширения задают, какую Статью расширяет расширение, а также идентификацию для отличения одного расширения от другого, поскольку Статья может иметь множественные расширения.7, and in connection with several embodiments of the present invention, the base schema defines three types of top-level: Item (article), Extension (extension) and PropertyBase (base property). It is shown that the type of an Article is defined by the properties of this main type of Article “Item”. In contrast, the top-level PropertyBase property type does not have predefined properties and is just a pointer from which all other property types are derived and through which all derived property types are related (being, in general order, derived from a single property type) . Extension type properties specify which Article extends the extension, as well as identification to distinguish one extension from another, since the Article may have multiple extensions.
ItemFolder - это подтип типа Статьи Item, который помимо свойств, унаследованных от «статьи», характеризует «отношение» для установления связей со своими членами (если имеются), тогда как IdentityKey и Property являются подтипами PropertyBase. В свою очередь, CategoryRef является подтипом IdentityKey. An ItemFolder is a subtype of the type of an Item Item that, in addition to properties inherited from an “article,” characterizes a “relationship” for establishing links with its members (if any), while IdentityKey and Property are subtypes of PropertyBase. CategoryRef, in turn, is a subtype of IdentityKey.
b) Схема ядраb) Kernel layout
Различные варианты осуществления платформы хранения, отвечающей настоящему изобретению, также содержат схему ядра, которая обеспечивает концептуальную конструкцию для структур типов Статьи верхнего уровня. На фиг.8А показана блок-схема, иллюстрирующая статьи в схеме ядра, а на фиг.8В показана блок-схема, иллюстрирующая типы свойства в схеме ядра. Различия, проводимые между файлами на основании разных расширений (*.com, *.exe, *.bat, *.sys, и т.д.) и других критериев в системах на основе файлов и папок аналогичны функции схемы ядра. В системе аппаратно-программного интерфейса на основе статей схема ядра задает множество типов статей ядра, которые непосредственно (по типу Статьи) или опосредованно (по подтипу Статьи) характеризуют все статьи в одном или нескольких типах Статьи схемы ядра, которые система аппаратно-программного интерфейса на основе статей понимает и может непосредственно обрабатывать заранее определенным и прогнозируемым способом. Заранее определенные типы Статьи отражают наиболее общие Статьи в системе аппаратно-программного интерфейса на основе статей и таким образом система аппаратно-программного интерфейса на основе статей, понимающая эти заранее определенные типы Статьи, которые образуют схему ядра, повышает уровень эффективности.Various embodiments of the storage platform of the present invention also comprise a kernel circuitry that provides a conceptual design for the top-level Article type structures. FIG. 8A is a block diagram illustrating articles in a kernel diagram, and FIG. 8B is a block diagram illustrating property types in a kernel diagram. Differences between files based on different extensions (* .com, * .exe, * .bat, * .sys, etc.) and other criteria in file and folder based systems are similar to the kernel circuit function. In a system of hardware-software interface based on articles, the kernel scheme defines many types of kernel articles that directly (by the type of Articles) or indirectly (by the subtype of the Article) characterize all articles in one or more types of Articles of the kernel scheme, which are the system of the hardware-software interface on the basis of the articles understands and can directly process in a predetermined and predictable way. The predefined types of Articles reflect the most common Articles in the article-based hardware-software interface system, and thus the article-based hardware-software interface system, which understands these predefined types of Articles that form the core scheme, increases the level of efficiency.
В определенных вариантах осуществления схема ядра не является расширяемой, т.е. никакие дополнительные типы Статьи нельзя выделить как подтипы из типа Статьи в базовой схеме, за исключением особых заранее определенных производных типов Статьи, которые являются частью схемы ядра. Препятствуя расширениям схемы ядра (т.е. препятствуя добавлению новых статей к схеме ядра), платформа хранения дает исключительное право использовать типы статьи схемы ядра, поскольку каждый последующий тип Статьи с необходимостью является подтипом типа статьи схемы ядра. Эта структура обеспечивает разумную степень гибкости при определении дополнительных типов Статьи, в то же время пользуясь преимуществами наличия заранее определенного множества типов статей ядра.In certain embodiments, the core design is not extensible, i.e. no additional types of Articles can be distinguished as subtypes from the type of Articles in the basic scheme, with the exception of special predetermined derived types of Articles that are part of the kernel scheme. By preventing extensions to the kernel schema (i.e., preventing the addition of new entries to the kernel schema), the storage platform gives the exclusive right to use the types of the kernel schema articles, since each subsequent type of the Article is a subtype of the type of the kernel schema type. This structure provides a reasonable degree of flexibility in determining additional types of Articles, while taking advantage of the presence of a predefined set of types of core articles.
Для различных вариантов осуществления настоящего изобретения и согласно фиг.8А, особые типы Статьи, поддерживаемые схемой ядра, могут включать в себя одно или более из следующего:For various embodiments of the present invention, and as shown in FIG. 8A, specific types of Articles supported by a kernel framework may include one or more of the following:
- Категории: Статьи этого типа Статьи (и выводимых из него подтипов) представляют действительные Категории в системе аппаратно-программного интерфейса на основе статей;- Categories: Articles of this type. Articles (and subtypes derived from it) represent valid Categories in the hardware-software interface system based on the articles;
- Предметы потребления: Статьи, которые являются идентифицируемыми ценностями;- Commodities: Articles that are identifiable values;
- Устройства: Статьи, имеющие логическую структуру, которая поддерживает возможности обработки информации;- Devices: Articles that have a logical structure that supports the processing of information;
- Документы: Статьи, содержимое которых не интерпретируется системой аппаратно-программного интерфейса на основе статей, но интерпретируется прикладной программой, соответствующей типу документа;- Documents: Articles whose contents are not interpreted by the system of hardware-software interface based on articles, but are interpreted by an application program corresponding to the type of document;
- События: Статьи, в которых записаны определенные происшествия в среде;- Events: Articles in which certain incidents in the environment are recorded;
- Положения: Статьи, представляющие физические положения (например, географические положения);- Provisions: Articles representing physical locations (e.g., geographical locations);
- Сообщения: Статьи обмена информацией между двумя принципалами (описаны ниже);- Messages: Articles of information exchange between two principals (described below);
- Принципалы: Статьи, имеющие, по меньшей мере, одну окончательно доказанную идентификацию помимо ItemId (например, идентификацию личности, организации, группы, семьи, учреждения, службы и пр.);- Principals: Articles with at least one definitively proven identification other than ItemId (for example, identification of an individual, organization, group, family, institution, service, etc.);
- Утверждения: Статьи, имеющие особую информацию, касающуюся среды, в том числе без ограничения полисы, подписки, мандаты и т.п.- Affirmations: Articles with specific information regarding the environment, including without limitation policies, subscriptions, mandates, etc.
Аналогично и согласно фиг.8В особые типы свойства, поддерживаемые схемой ядра, могут включать в себя одно или более из следующего:Similarly, as shown in FIG. 8B, the specific property types supported by the kernel circuitry may include one or more of the following:
- Сертификаты (производные от основного типа PropertyBase в базовой схеме);- Certificates (derived from the main type PropertyBase in the base scheme);
- Идентификационные ключи принципалов (производные от типа IdentityKey в базовой схеме);- Identification keys of principals (derived from the type IdentityKey in the base scheme);
- Почтовый адрес (производный от Типа свойства в базовой схеме);- Mailing address (derived from the Property Type in the base scheme);
- Обогащенный текст (производный от Типа свойства в базовой схеме);- Rich text (derived from the Property Type in the base schema);
- EAddress (производный от Типа свойства в базовой схеме);- EAddress (derived from the Property Type in the base schema);
- IdentitySecurityPackage (производный от Типа отношения в базовой схеме);- IdentitySecurityPackage (derived from the Relationship Type in the base schema);
- RoleOccupancy (производный от Типа отношения в базовой схеме);- RoleOccupancy (derived from the Relationship Type in the base schema);
- BasicPresence (производный от Типа отношения в базовой схеме).- BasicPresence (derived from Relation Type in the base schema).
Эти Статьи и Свойства дополнительно описаны в отношении их соответствующих свойств, указанных на фиг.8А и фиг.8В.These Articles and Properties are further described with respect to their respective properties shown in FIGS. 8A and 8B.
5. Отношения5. Relations
Отношения являются бинарными отношениями, где одна Статья выступает в качестве источника, а другая Статья в качестве цели. Исходная статья и целевая статья связаны отношением. Исходная статья, в общем случае, управляет временем жизни отношения. Т.е. при удалении исходной статьи отношение между статьями также удаляется.Relations are binary relations, where one Article acts as a source and another Article as a target. The source article and the target article are related. The original article, in the general case, controls the relationship's lifetime. Those. when you delete the original article, the relationship between the articles is also deleted.
Отношения делятся на отношения включения и отношения ссылки. Отношения включения управляют временем жизни целевых статей, а отношения ссылки не обеспечивают никакой семантики управления временем жизни. Фиг.12 иллюстрирует классификацию отношений.Relationships are divided into inclusion relationships and link relationships. Inclusion relationships control the lifetime of targeted articles, and linking relationships do not provide any semantics for managing lifetimes. 12 illustrates a classification of relationships.
Типы отношений включения дополнительно подразделяются на отношения поддержания и внедрения. При удалении всех отношений поддержания для статьи статья удаляется. Отношение поддержания управляет временем жизни цели посредством механизма отсчета ссылок. Отношения внедрения позволяют моделировать составные статьи и могут рассматриваться как исключительные отношения поддержания. Статья, являющаяся целью отношения внедрения, может не быть целью никакого другого отношения поддержания или внедрения.The types of inclusion relationships are further subdivided into maintenance and implementation relationships. If you delete all maintenance relationships for an article, the article is deleted. The maintenance relation controls the lifetime of the target through a link-counting mechanism. Embedding relationships allow you to model compound articles and can be considered as exceptional maintenance relationships. An article that is the goal of an implementation relationship may not be the goal of any other maintenance or implementation relationship.
Отношения ссылки не управляют временем жизни целевой статьи. Они могут быть висящими - целевой статьи может не существовать. Отношения ссылки можно использовать для моделирования ссылок на Статьи в другом месте пространства глобальных имен статьи (т.е. включая удаленные хранилища данных).Link relationships do not control the lifetime of the target article. They may be hanging - the target article may not exist. Link relationships can be used to model links to Articles elsewhere in the article’s global namespace (that is, including remote data stores).
Извлечение статьи не приводит к автоматическому извлечению ее отношений. Приложения должны в явном виде запрашивать отношения Статьи. Кроме того, изменение отношения не приводит к изменению исходной или целевой статьи; аналогично добавление отношения не влияет на исходную/целевую статью.Extracting an article does not automatically retrieve its relationship. Applications must explicitly request Article relations. In addition, a change in attitude does not change the source or target article; likewise, adding a relationship does not affect the source / target article.
а) Объявление отношенияa) Declaration of relationship
Явные типы отношений определены следующими элементами:Explicit relationship types are defined by the following elements:
- Имя отношения определено в атрибуте Имя;- The name of the relationship is defined in the Name attribute;
- Тип отношения, один из следующих: поддержание, внедрение, ссылка. Это определено в атрибуте Тип;- Type of relationship, one of the following: maintenance, implementation, link. This is defined in the Type attribute;
- Исходная и целевая конечные точки. Каждая конечная точка определяет имя и тип упоминаемой статьи;- Source and target endpoints. Each endpoint defines the name and type of article referred to;
- Поле «исходная конечная точка» в общем случае имеет тип ItemID (не декларируется) и оно должно ссылаться на Статью в том же хранилище данных, что и экземпляр отношения;- The field "source endpoint" in the general case is of the type ItemID (not declared) and it should refer to the Article in the same data warehouse as the instance of the relationship;
- Для отношений поддержания и внедрения поле «целевая конечная точка» должно иметь тип ItemIDReference и оно должно ссылаться на Статью в том же хранилище, что и экземпляр отношения. Для отношений ссылки целевая конечная точка может иметь любой тип ItemReference и может ссылаться на Статьи в других хранилищах данных платформы хранения;- For the maintenance and implementation relationship, the “target endpoint” field must be of the type ItemIDReference and it must refer to the Article in the same store as the instance of the relationship. For link relationships, the target endpoint can be of any type of ItemReference and can link to Articles in other storage platforms data warehouses;
- В необязательном порядке можно объявить одно или несколько полей скалярного типа или типа PropertyBase. Эти поля могут содержать данные, связанные с отношением;- Optionally, you can declare one or more fields of a scalar type or PropertyBase type. These fields may contain data related to the relation;
- Экземпляры отношения хранятся в таблице глобальных отношений;- Relationship instances are stored in the global relationship table;
- Каждый экземпляр отношения уникальным образом идентифицируется комбинацией (ИД исходной статьи, ИД отношения). ИД отношения уникален в данном ИД исходной статьи для всех отношений, источником которых является данная Статья, независимо от их типов.- Each instance of a relationship is uniquely identified by a combination (ID of the source article, ID of the relationship). Relationship ID is unique in this ID of the source article for all relationships the source of this Article is, regardless of their types.
Исходная статья является владельцем отношения. Хотя статья, обозначенная как владелец, управляет временем жизни отношения, само отношение существует отдельно от Статей, которые оно связывает. API 322 платформы хранения обеспечивает механизм представления отношений, связанных со статьей.The original article is the owner of the relationship. Although the article, designated as the owner, controls the life time of the relationship, the relationship itself exists separately from the Articles that it links. Storage platform API 322 provides a mechanism for representing the relationship of an article.
Ниже приведен пример декларирования отношения:The following is an example of declaring a relationship:
<Relationship Name="Employment" BaseType="Reference"><Relationship Name = "Employment" BaseType = "Reference">
<Source Name="Employee" ItemType="Contact.Person"/><Source Name = "Employee" ItemType = "Contact.Person" />
<Target Name="Employer" ItemType="Contact.Organization"<Target Name = "Employer" ItemType = "Contact.Organization"
ReferenceType="ItemIDReference"/>ReferenceType = "ItemIDReference" />
<Property Name="StartDate" Type="the storage<Property Name = "StartDate" Type = "the storage
platformTypes.DateTime"/>platformTypes.DateTime "/>
<Property Name="EndDate" Type="the storage<Property Name = "EndDate" Type = "the storage
platformTypes.DateTime"/>platformTypes.DateTime "/>
<Property Name="Office" Type="the storage<Property Name = "Office" Type = "the storage
platformTypes.DateTime"/>platformTypes.DateTime "/>
</Relationship></Relationship>
Это пример отношения ссылки. Отношение не может быть создано, если Статья «лицо» (person), на которое ссылается исходная ссылка, не существует. Кроме того, при удалении Статьи «лицо» экземпляры отношения между лицом и организацией удаляются. Однако при удалении Статьи «организация» (Organization) отношение не удаляется, а подвисает.This is an example of a link relationship. A relationship cannot be created if the Article “person” to which the source link refers does not exist. In addition, when deleting the “Person” Article, copies of the relationship between the person and the organization are deleted. However, when deleting the Article “Organization”, the relationship is not deleted, but freezes.
b) Отношение поддержанияb) Maintenance ratio
Отношения поддержания используются для моделирования счетчика ссылок на основании управления временем жизни целевых статей.Maintenance relationships are used to model the reference count based on the life time management of the targeted articles.
Статья может быть исходной конечной точкой для нуля или более отношений для Статей. Статья, которая не является внедренной статьей, может быть целью одного или более отношений поддержания.An article can be a starting endpoint for zero or more relationships for Articles. An article that is not an embedded article may be the goal of one or more maintenance relationships.
Ссылка на целевую конечную точку должна иметь тип ItemIDReference и должна указывать Статью в том же хранилище, что и экземпляр отношения.The reference to the target endpoint must be of the type ItemIDReference and must indicate the Article in the same store as the instance of the relationship.
Отношения поддержания реализуют управление временем жизни целевой конечной точки. Создание экземпляра отношения поддержания и статьи, для которого она является целью, является атомарной операцией. Можно создавать дополнительные экземпляры отношения поддержания, нацеленные на ту же статью. При удалении последнего экземпляра отношения поддержания, для которого данная Статья является целевой конечной точкой, целевая статья также удаляется.Maintenance relationships implement life-time management of the target endpoint. Creating an instance of the maintenance relationship and the article for which it is the goal is an atomic operation. You can create additional instances of a maintenance relationship that target the same article. When you delete the last instance of a maintenance relationship for which this Article is the target endpoint, the target article is also deleted.
Типы статей-конечных точек, определенные в декларации отношения, в общем случае реализуются при создании экземпляра отношения. Типы статей-конечных точек нельзя изменять после установления отношения.The types of endpoint entries defined in the relationship declaration are generally implemented when the relationship instance is created. The types of endpoint articles cannot be changed after the relationship is established.
Отношения поддержания играют ключевую роль в формировании пространства имен статей. Они содержат свойство «имя», которое определяет имя целевой статьи по отношению к исходной статье. Это относительное имя является уникальным для всех отношений поддержания, для которых данная Статья является источником. Упорядоченный список этих относительных имен, начиная с корневой Статьи и до данной Статьи, образует полное имя Статьи.Maintaining relationships play a key role in shaping the article namespace. They contain a “name” property that defines the name of the target article in relation to the original article. This relative name is unique to all maintenance relationships for which this Article is a source. An ordered list of these relative names, from the root Article to this Article, forms the full name of the Article.
Отношения поддержания образуют ориентированный ациклический граф (ОАГ). При создании отношения поддержания система гарантирует, что цикл не создается, тем самым гарантируя, что пространство имен статей образует ОАГ.Maintenance relationships form an oriented acyclic graph (OAS). When creating a maintenance relationship, the system ensures that the loop is not created, thereby ensuring that the article namespace forms the OAS.
Хотя отношение поддержания управляет временем жизни целевой статьи, оно не управляет операционной согласованностью Статьи-целевой конечной точки. Целевая статья операционно независима от Статьи, которая ей владеет, посредством отношения поддержания. Копирование, перемещение, резервирование и другие операции над Статьей, которая является источником отношения поддержания, не влияет на Статью, которая является целью того же отношения, например резервирование Статьи «папка» не приводит к автоматическому резервированию всех Статей в папке (целей отношения FolderMember (член папки)).Although the maintenance relation controls the lifetime of the target article, it does not control the operational consistency of the Article-target endpoint. The target Article is operationally independent of the Article that owns it through a maintenance relationship. Copying, moving, reserving and other operations on an Article that is the source of the maintenance relationship does not affect the Article that is the goal of the same relationship, for example, backing up a Folder Article does not automatically backup all Articles in a folder (goals of the FolderMember relation (member folders)).
Ниже приведен пример отношения поддержания:The following is an example of a maintenance relationship:
<Relationship Name="FolderMembers" BaseType="Holding”><Relationship Name = "FolderMembers" BaseType = "Holding”>
<Source Name="Folder" ItemType="Base.Folder"/><Source Name = "Folder" ItemType = "Base.Folder" />
<Target Name="Item" ItemType="Base.Item"<Target Name = "Item" ItemType = "Base.Item"
ReferenceType="ItemIDReference" />ReferenceType = "ItemIDReference" />
</Relationship></Relationship>
Отношение FolderMembers (члены папки) обеспечивает концепцию Папки как общего собрания Статей.The FolderMembers relationship (folder members) provides the concept of Folders as a general collection of Articles.
с) Отношения внедренияc) Implementation Relations
Отношения внедрения моделируют концепцию исключительного управления временем жизни целевой статьи. Они обеспечивают концепцию составных статей.Implementation relationships model the concept of exceptional time management of the target article. They provide the concept of composite articles.
Создание экземпляра отношения внедрения и Статьи, которая является ее целью, является атомарной операцией. Статья может быть источником нуля или более отношений внедрения. Однако Статья может быть целью одного и только одного отношения внедрения. Статья, которая является целью отношения внедрения, не может быть целью отношения поддержания.Creating an instance of the implementation relationship and the Article, which is its purpose, is an atomic operation. An article can be a source of zero or more embedding relationships. However, an Article may be the goal of one and only one implementation relationship. An article that is the goal of an implementation relationship cannot be the goal of a maintenance relationship.
Ссылка на целевую конечную точку должна иметь тип ItemIDReference и должна указывать Статью в том же хранилище данных, что и экземпляр отношения.The reference to the target endpoint must be of the type ItemIDReference and must indicate the Article in the same data store as the instance of the relationship.
Типы Статей-конечных точек, определенные в декларировании отношения, в общем случае реализуются при создании экземпляра отношения. Типы Статей-конечных точек нельзя изменять после установления отношения.The types of Endpoint Articles defined in the declaration of a relationship are generally implemented when an instance of the relationship is created. The types of Endpoint Articles cannot be changed after the relationship is established.
Отношения внедрения управляют операционной согласованностью целевой конечной точки. Например, операция сериализации Статьи может включать в себя сериализацию всех отношений внедрения, для которых Статья является источником, а также всех их целей; копирование Статей также приведет к копированию всех ее внедренных статей.Deployment relationships drive the operational consistency of the target endpoint. For example, the operation of serializing an Article may include the serialization of all implementation relationships for which the Article is the source, as well as all their goals; copying Articles will also lead to copying all its embedded articles.
Ниже приведен пример декларирования:The following is an example declaration:
<Relationship Name="ArchiveMembers" BaseType="Embedding”><Relationship Name = "ArchiveMembers" BaseType = "Embedding”>
<Source Name="Archive" ItemType="Zip.Archive"/><Source Name = "Archive" ItemType = "Zip.Archive" />
<Target Name="Member" ItemType="Base.Item "<Target Name = "Member" ItemType = "Base.Item"
ReferenceType="ItemIDReference"/>ReferenceType = "ItemIDReference" />
<Property Name="ZipSize" Type="the storage<Property Name = "ZipSize" Type = "the storage
platformTypes.bigint"/>platformTypes.bigint "/>
<Property Name="SizeReduction" Type="the storage<Property Name = "SizeReduction" Type = "the storage
platformTypes.float"/>platformTypes.float "/>
</Relationship></Relationship>
d) Отношения ссылкиd) Link relationships
Отношение ссылки не управляют временем жизни Статьи, на которую оно ссылается. Кроме того, отношения ссылки не гарантируют существование цели, а также не гарантируют тип цели, как определено в декларации отношения. Это значит, что отношения ссылки могут подвисать. Кроме того, отношение ссылки может указывать Статьи в других хранилищах данных. Отношения ссылки можно рассматривать как концепцию, аналогичную ссылкам на веб-страницах.The link relation does not control the lifetime of the Article to which it refers. In addition, the relationship of the link does not guarantee the existence of the goal, nor does it guarantee the type of goal, as defined in the declaration of relationship. This means that link relationships can freeze. In addition, Articles in other data warehouses may indicate a link relationship. Link relationships can be thought of as a concept similar to links on web pages.
Ниже приведен пример декларирования отношения ссылки:The following is an example of declaring a link relationship:
<Relationship Name="DocumentAuthor" BaseType="Reference"><Relationship Name = "DocumentAuthor" BaseType = "Reference">
<Source ItemType="Document" ItemType="Base.Document"/><Source ItemType = "Document" ItemType = "Base.Document" />
<Target ItemType="Author" ItemType="Base.Author"<Target ItemType = "Author" ItemType = "Base.Author"
ReferenceType="ItemIDReference"/>ReferenceType = "ItemIDReference" />
<Тип свойства="Role" Type="Core.CategoryRef"/><Property Type = "Role" Type = "Core.CategoryRef" />
<Тип свойства="DisplayName" Type="the storage<Property Type = "DisplayName" Type = "the storage
platformTypes.nvarchar(256)"/>platformTypes.nvarchar (256) "/>
</Relationship></Relationship>
В целевой конечной точке допустимы любые типы ссылки. Статьи, участвующие в отношении ссылки, могут относиться к любому типу Статьи.Any type of link is allowed at the target endpoint. Articles involved in a link may be of any type of Article.
Отношения ссылки используются для моделирования большинства отношений между Статьями без управления временем жизни. Поскольку существование цели не обязательно, отношение ссылки удобно для моделирования слабосвязанных отношений. Отношение ссылки можно использовать для указания Статей в других хранилищах данных, включая хранилища на других компьютерах.Link relationships are used to model most of the relationships between Articles without life time management. Since the existence of a goal is not necessary, a link relationship is convenient for modeling loosely coupled relationships. The link relationship can be used to specify Articles in other data warehouses, including storages on other computers.
е) Правила и ограниченияe) Rules and restrictions
К отношениям применяются следующие дополнительные правила и ограничения:The following additional rules and restrictions apply to relationships:
- Статья должна быть целью (строго одного отношения внедрения) или (одного или более отношений поддержания). Одним исключением является корневая Статья. Статья может быть целью нуля или более отношений ссылки;- The article should be the goal of (strictly one implementation relationship) or (one or more maintenance relationships). One exception is the root Article. An article may be the goal of zero or more link relationships;
- Статья, которая является целью отношения внедрения, не может быть источником отношений поддержания. Она может быть источником отношений ссылки;- An article that is the goal of an implementation relationship cannot be the source of a maintenance relationship. It can be a source of link relationships;
- Статья не может быть источником отношений поддержания, если она продвинута из файла. Она может быть источником отношений внедрения и отношений ссылки;- An article cannot be a source of a maintenance relationship if it is promoted from a file. It can be a source of embedding relationships and link relationships;
- Статья, которая продвинута из файла, не может быть целью отношения внедрения.- An article that is promoted from a file cannot be the target of an embedding relationship.
f) Упорядочение отношенийf) Streamlining relationships
Согласно, по меньшей мере, одному варианту осуществления, платформа хранения, отвечающая настоящему изобретению, поддерживает упорядочение отношений. Упорядочение достигается с помощью свойства под именем «порядок» (“Order”) в определении базового отношения. Не существует ограничения уникальности по полю Order. Порядок отношений с одним и тем же значением свойства «порядок» не гарантируется, однако гарантируется, что они могут быть упорядочены после отношений с более низким значением «порядка» и перед отношениями с более высоким значением поля «порядок».According to at least one embodiment, the storage platform of the present invention supports ordering of relationships. Ordering is achieved using a property called “Order” in the definition of the base relationship. There is no uniqueness constraint on the Order field. The order of relations with the same value of the property “order” is not guaranteed, however, it is guaranteed that they can be ordered after relations with a lower value of “order” and before relations with a higher value of the field “order”.
Приложения могут получать отношения в порядке, принятом по умолчанию, путем упорядочения по комбинации (SourceItemID, RelationshipID, Order). Все экземпляры отношения, для которых данная Статья является источником, упорядочены как единичная коллекция независимо от типа отношений в коллекции. Это, однако, гарантирует, что все отношения данного типа (например, «члены папки») являются упорядоченным подмножеством коллекции отношений для данной Статьи.Applications can receive relationships in the default order by ordering by combination (SourceItemID, RelationshipID, Order). All instances of the relationship for which this Article is the source are ordered as a single collection, regardless of the type of relationship in the collection. This, however, ensures that all relationships of a given type (for example, “folder members”) are an ordered subset of the relationship collection for this Article.
API 312 хранилища данных для манипулирования отношениями реализуют множество операций, которые поддерживают упорядочение отношений. Чтобы лучше объяснить операции, введем следующие термины:Relationship manipulation
- RelFirst - первое отношение в упорядоченной коллекции с порядковым значением OrdFirst;- RelFirst - the first relation in an ordered collection with an ordinal value of OrdFirst;
- RelLast - последнее отношение в упорядоченной коллекции с порядковым значением OrdLast;- RelLast - the last relation in an ordered collection with an ordinal value of OrdLast;
- RelX - данное отношение в коллекции с порядковым значением OrdX;- RelX - this relation in the collection with ordinal value OrdX;
- RelPrev - ближайшее к RelX отношение в коллекции с порядковым значением OrdPrev, меньшим чем OrdX;- RelPrev - the closest relation to RelX in the collection with an ordinal value of OrdPrev less than OrdX;
- RelNext - ближайшее к RelX отношение в коллекции с порядковым значением OrdPrev, большим чем OrdX.- RelNext - the closest relation to RelX in the collection with an ordinal value of OrdPrev greater than OrdX.
Операции включают в себя, но без ограничения:Operations include, but are not limited to:
- InsertBeforeFirst(SourceItemID, Relationship) - вставляет отношение как первое отношение в коллекции. Значение свойства «порядок» нового отношения может быть меньше, чем OrdFirst;- InsertBeforeFirst (SourceItemID, Relationship) - inserts a relation as the first relation in the collection. The value of the “order” property of the new relationship may be less than OrdFirst;
- InsertAfterLast(SourceItemID, Relationship) - вставляет отношение как последнее отношение в коллекции. Значение свойства «порядок» нового отношения может быть больше, чем OrdLast;- InsertAfterLast (SourceItemID, Relationship) - inserts a relation as the last relation in the collection. The value of the “order” property of the new relationship may be greater than OrdLast;
- InsertAt(SourceItemID, ord, Relationship) - вставляет отношение с определенным значением для свойства «порядок»;- InsertAt (SourceItemID, ord, Relationship) - inserts a relation with a specific value for the "order" property;
- InsertBefore(SourceItemID, ord, Relationship) - вставляет отношение перед отношением с данным порядковым значением. Новому отношению может быть присвоено значение «порядок», находящееся между OrdPrev и ord, неисключительно;- InsertBefore (SourceItemID, ord, Relationship) - inserts a relation before a relation with a given ordinal value. The new relation may be assigned the value “order” between OrdPrev and ord, non-exclusive;
- InsertAfter(SourceItemID, ord, Relationship) - вставляет отношение после отношения с данным порядковым значением. Новому отношению может быть присвоено значение «порядок», находящееся между ord и OrdNext, неисключительно;- InsertAfter (SourceItemID, ord, Relationship) - inserts a relation after a relationship with a given ordinal value. The new relation may be assigned the value "order" between ord and OrdNext, non-exclusively;
- MoveBefore(SourceItemID, ord, RelationshipID) - перемещает отношение с данным ИД отношения перед отношением с указанным значением «порядок». Отношению может быть присвоено новое значение «порядок», находящееся между OrdPrev и ord, неисключительно;- MoveBefore (SourceItemID, ord, RelationshipID) - moves the relationship with the given relationship ID before the relationship with the specified order value. A relationship can be assigned a new value, “order,” between OrdPrev and ord, non-exclusively;
- MoveAfter(SourceItemID, ord, RelationshipID) - перемещает отношение с данным ИД отношения после отношения с указанным значением «порядок». Отношению может быть присвоено новое значение «порядок», находящееся между ord и OrdNext, неисключительно.- MoveAfter (SourceItemID, ord, RelationshipID) - moves the relationship with the given relationship ID after the relationship with the specified order value. A relationship can be assigned a new value, “order,” between ord and OrdNext, non-exclusively.
Согласно отмеченному выше, каждая Статья должна быть членом Папки статей. Применительно к Отношениям, каждая Статья должна иметь отношение в Папке статей. В нескольких вариантах осуществления настоящего изобретения, определенные отношения представлены Отношениями, существующими между Статьями.As noted above, each Article must be a member of the Article Folder. In relation to Relations, each Article should be related in the Article Folder. In several embodiments of the present invention, certain relationships are represented by Relationships Existing Between Articles.
В реализациях, предусмотренных различными вариантами осуществления настоящего изобретения, Отношение обеспечивает направленное бинарное отношение, которое «проходит» от одной Статьи (источника) к другой Статье (цели). Отношение является собственностью исходной статьи (статьи, от которой оно проходит) и таким образом удаляется при удалении источника (например, Отношение удаляется при удалении исходной статьи). Кроме того, в некоторых случаях Отношением может одновременно владеть (совладеющая) целевая статья, и такое владение может быть отражено в свойстве IsOwned («владение») (или эквивалентном ему) Отношения (как показано на фиг.7 для типа свойства Отношения). В этих вариантах осуществления создание нового Отношения IsOwned автоматически увеличивает отсчет ссылок на целевой статье, и удаление такого Отношения может уменьшить отсчет ссылок на целевой статье. Для этих конкретных вариантов осуществления Статьи продолжают существовать, если они имеют отсчет ссылок больший нуля, и автоматически удаляются, если отсчет достигает нуля. Опять же Папка статей является Статьей, которая имеет (или способна иметь) множество Отношений с другими Статьями, причем эти другие Статьи имеют членство в Папке статей. Другие фактические реализации Отношений возможны и предусмотрены настоящим изобретением для обеспечения описанных здесь функций.In the implementations contemplated by various embodiments of the present invention, the Relationship provides a directional binary relation that “passes” from one Article (source) to another Article (purpose). The relation is the property of the original article (the article from which it passes) and thus is deleted when the source is deleted (for example, the Relationship is deleted when the original article is deleted). In addition, in some cases, the Relationship can simultaneously be owned by the (co-owned) target article, and such ownership can be reflected in the IsOwned property (or equivalent) of the Relationship (as shown in Fig. 7 for the type of the Relationship property). In these embodiments, creating a new IsOwned Relationship automatically increases the reference count of the target article, and deleting such a Relationship may decrease the reference count of the target article. For these specific embodiments, Articles continue to exist if they have a reference count greater than zero, and are automatically deleted if the count reaches zero. Again, the Article Folder is an Article that has (or is able to have) many Relations with other Articles, and these other Articles have membership in the Article Folder. Other actual implementations of the Relationships are possible and contemplated by the present invention to provide the functions described herein.
Вне зависимости от фактической реализации Отношение является избирательным соединением от одного объекта к другому. Способность Статьи принадлежать более чем одной Папке статей, а также одной или более Категориям, независимо от того, являются ли эти Статьи, Папки и Категории общедоступными или приватными, определяется смысловыми значениями существования (или отсутствия) в структуре на основе Статей. Эти логические Отношения являются смысловыми значениями, присвоенными множеству Отношений, независимо от физической реализации, которые конкретно применяются для достижения описанных здесь функциональных возможностей. Логические Отношения устанавливаются между Статьей и ее Папкой(ами) статей или Категориями (и наоборот), поскольку, в сущности, Папки статей и Категории являются особым типом Статьи. Следовательно, над Папками статей и Категориями можно совершать такие же действия, как над любыми другими Статьями, - копирование, добавление к сообщению электронной почты, внедрение в документ и т.д. без ограничения, и Папки статей и Категории можно сериализовать и десериализовать (импортировать и экспортировать) с использованием тех же механизмов, что и для других Статей. (Например, в XML все Статьи могут иметь формат сериализации, и этот формат применяется в равной степени к Папкам статей, Категориям и Статьям.)Regardless of actual implementation, a Relationship is a selective connection from one object to another. The ability of an Article to belong to more than one Article Folder, as well as one or more Categories, regardless of whether these Articles, Folders and Categories are public or private, is determined by the semantic values of the existence (or absence) in the structure based on Articles. These logical Relations are semantic values assigned to a variety of Relations, regardless of physical implementation, which are specifically used to achieve the functionality described here. Logical Relationships are established between the Article and its Folder (s) of articles or Categories (and vice versa), because, in essence, Folders of articles and Categories are a special type of Article. Consequently, you can perform the same actions on Article Folders and Categories as on any other Articles - copying, adding to an e-mail message, embedding in a document, etc. without limitation, both Article Folders and Categories can be serialized and deserialized (imported and exported) using the same mechanisms as for other Articles. (For example, in XML, all Articles may have a serialization format, and this format applies equally to Article Folders, Categories, and Articles.)
Вышеупомянутые Отношения, которые представляют отношение между Статьей и ее Папкой(ами) статей, могут логически продолжаться от Статьи к Папке статей, от Папки статей к Статье или в обоих направлениях. Отношение, которое логически продолжается от статьи к Папке статей, указывает, что Папка статей является общедоступной по отношению к этой Статье и совместно с этой Статьей использует свою информацию членства; напротив, отсутствие логического Отношения от Статьи к Папке статей указывает, что Папка статей является приватной по отношению к этой Статье и не использует совместно с этой Статьей свою информацию членства. Аналогично отношение, которое логически продолжается от Папки статей к Статье, указывает, что статья является общедоступной и совместно используемой по отношению к этой Папке статей, тогда как отсутствие логического Отношения от Папки статей к статье указывает, что Статья является приватной и не совместно используемой. Следовательно, когда Папка статей экспортируется в другую систему, именно «общедоступные» Статьи совместно используются в новом контексте, и когда Статья осуществляет поиск в своих Папках статей других, совместно используемых Статей, именно «общедоступные» Папки статей предоставляют Статье информацию, касающуюся принадлежащих им совместно используемых Статей.The aforementioned Relationships, which represent the relationship between the Article and its Folder (s) of articles, may logically continue from Article to Folder of articles, from Folder of articles to Article or in both directions. The relationship, which logically continues from the article to the Article Folder, indicates that the Article Folder is publicly available in relation to this Article and, together with this Article, uses its membership information; on the contrary, the absence of a logical Relationship from an Article to an Article Folder indicates that the Article Folder is private with respect to this Article and does not share its membership information with this Article. Similarly, the relationship that logically continues from the Article Folder to the Article indicates that the article is publicly available and shared with respect to this Article Folder, while the absence of a logical Relationship from the Article Folder to the article indicates that the Article is private and not shared. Therefore, when the Article Folder is exported to another system, it is the “publicly available” Articles that are shared in a new context, and when the Article searches for articles of other shared Articles in its Mailboxes, it’s the “public” Article Folders that provide the Article with information related to their joint ownership Articles used.
На фиг.9 показана блок-схема, иллюстрирующая Папку статей (которая опять же сама является Статьей), входящие в нее Статьи и Отношения, связывающие между собой Папку статей и входящие в нее Статьи. Папка 900 статей имеет в качестве членов совокупность Статей 902, 904 и 906. Папка 900 статей имеет Отношение 912 от себя к Статье 902, которое указывает, что Статья 902 является публичной и совместно используемой по отношению к Папке 900 статей, ее членам 904 и 906 и любым другим Папкам статей, Категориям или Статьям (не показаны), которые могут обращаться к Папке 900 статей. Однако не существует Отношения от Статьи 902 к Папке 900 статей, и это указывает, что Папка 900 статей является приватной по отношению к Статье 902 и не использует совместно свою информацию членства со Статьей 902. С другой стороны, Статья 904 имеет Отношение 924 от себя к Папке 900 статей, и это указывает, что Папка 900 статей является общедоступной и совместно использует свою информацию членства со Статьей 904. Однако не существует Отношения от Папки 900 статей к Статье 904, и это указывает, что Статья 904 является приватной и не совместно используемой по отношению к Папке 900 статей, ее членам 902 и 906 и любым другим Папкам статей, Категориям или Статьям (не показаны), которые могут обращаться к Папке 900 статей. В отличие от Отношений (или их отсутствию) к Статьям 902 и 904 Папка 900 статей имеет Отношение 916 от себя к Статье 906, и Статья 906 имеет Отношение 926 обратно к Папке 900 статей, которые совместно указывают, что Статья 906 является общедоступной и совместно используемой по отношению к Папке 900 статей, ее членам 902 и 904 и любым другим Папкам статей, Категориям или Статьям (не показаны), которые могут обращаться к Папке 900 статей, и что Папка 900 статей является общедоступной и совместно использует свою информацию членства со Статьей 906.Fig. 9 is a block diagram illustrating an Article Folder (which again is an Article itself), Articles included in it, and Relationships linking the Article Folder and Articles included in it. A folder of 900 articles has as members a set of
Согласно рассмотренному ранее, Статьи в Папке статей не обязаны совместно использовать общность, поскольку Папки статей не «описаны». С другой стороны, Категории описаны общностью, которая является общей по отношению ко всем входящим в нее Статьям. Поэтому членство в Категории внутренне ограничено Статьями, имеющими описанную общность, и в некоторых вариантах осуществления все Статьи, отвечающие описанию Категории автоматически становятся членами Категории. Таким образом, в то время как Папки статей допускают представление тривиальных структур типов посредством их членства, Категории допускают членство на основании определенной общности.As previously discussed, Articles in an Article Folder are not required to share a commonality, since Article Folders are not “described”. On the other hand, Categories are described by a commonality that is common to all Articles included in it. Therefore, membership in the Category is internally limited by Articles having the described generality, and in some embodiments, all Articles meeting the description of the Category automatically become members of the Category. Thus, while Article Folders allow the representation of trivial type structures through their membership, Categories allow membership based on a certain generality.
Конечно, описания Категорий являются по природе своей логическими и потому Категорию можно описывать с помощью любого логического представления типов, свойств и/или значений. Например, логическим представлением для Категории может служить условие членства в ней, согласно которому Статья должна иметь одно из двух свойств или оба. Если эти описанные свойства для Категории обозначить «А» и «В», то членами Категории могут быть Статьи, имеющие свойство А, но не В, Статьи, имеющие свойство В, но не А, и Статьи, имеющие оба свойства А и В. Это логическое представление свойств описывается логическим оператором ИЛИ, где множество членов, описанное Категорией, представляет собой Статьи, имеющие свойство А или В. Аналогичные логические операторы (в том числе без ограничения И, ИСКЛЮЧАЮЩЕЕ ИЛИ и НЕ по отдельности или в комбинации) также можно использовать для описания категории, что очевидно специалистам в данной области.Of course, the descriptions of the Categories are logical in nature and therefore the Category can be described using any logical representation of types, properties and / or values. For example, a logical representation for a Category can be a condition of membership in it, according to which an Article must have one of two properties or both. If these described properties for the Category are designated "A" and "B", then the members of the Category can be Articles that have property A, but not B, Articles that have property B, but not A, and Articles that have both properties A and B. This logical representation of properties is described by the logical operator OR, where the set of members described by the Category is Articles that have property A or B. Similar logical operators (including without limitation AND, EXCLUSIVE OR, and NOT individually or in combination) can also be used to describe the category, h it is obvious to experts in this field.
Несмотря на различие между Папками статей (неописанными) и Категориями (описанными), Отношение от Категорий к Статьям и Отношение от Статей к Категориям производится, по существу, такие же, как описано выше для Папок статей и Статей во многих вариантах осуществления настоящего изобретения.Despite the difference between Article Folders (undescribed) and Categories (described), the Attitude from Categories to Articles and the Attitude from Articles to Categories is essentially the same as described above for Folders of Articles and Articles in many embodiments of the present invention.
На фиг.10 показана блок-схема, иллюстрирующая Категорию (которая опять же сама является Статьей), входящие в нее Статьи и Отношения, связывающие между собой Категорию и входящие в нее Статьи. Категория 1000 имеет в качестве членов совокупность Статей 1002, 1004 и 1006, которые все совместно используют некоторую комбинацию общих свойств, значений или типов 1008, которые описаны (описание общности 1008') Категорией 1000. Категория 1000 имеет Отношение 1012 от себя к Статье 1002, которое указывает, что Статья 1002 является общедоступной и совместно используемой по отношению к Категории 1000, ее членам 1004 и 1006 и любым другим Категориям, Папкам статей или Статьям (не показаны), которые могут обращаться к Категории 1000. Однако не существует Отношения от Статьи 1002 к Категории 1000, и это указывает, что Категория 1000 является приватной по отношению к Статье 1002 и не использует совместно свою информацию членства со Статьей 1002. С другой стороны, Статья 1004 имеет Отношение 1024 от себя к Категории 1000, и это указывает, что Категория 1000 является общедоступной и совместно использует свою информацию членства со Статьей 1004. Однако не существует Отношения, продолжающегося от Категории 1000 к Статье 1004, и это указывает, что Статья 1004 является приватной и не совместно используемой по отношению к Категории 1000, другим ее членам 1002 и 1006 и любым другим Категориям, Папкам статей или Статьям (не показаны), которые могут обращаться к Категории 1000. В отличие от своих Отношений (или их отсутствия) со Статьями 1002 и 1004 Категория 1000 имеет Отношение 1016 от себя к Статье 1006, и Статья 1006 имеет Отношение 1026 обратно к Категории 1000, которые совместно указывают, что Статья 1006 является общедоступной и совместно используемой по отношению к Категории 1000, ее членам-Статьям и любым другим Категориям, Папкам статей или Статьям (не показаны), которые могут обращаться к Категории 1000, и что Категория 1000 является общедоступной и совместно использует свою информацию членства со Статьей 1006.Figure 10 shows a block diagram illustrating the Category (which, again, is an Article itself), the Articles included in it and the Relationships that link the Category and the Articles included in it.
Наконец, поскольку Категории и Папки статей сами являются Статьями, и Статьи могут иметь Отношения друг к другу, Категории могут иметь Отношения к Папкам статей и наоборот, и Категории, Папки статей и Статьи могут иметь Отношения с другими Категориями, Папками статей и Статьями соответственно в определенных альтернативных вариантах осуществления. Однако в различных вариантах осуществления в структурах Папок статей и/или в структурах Категорий запрещены циклы на уровне системы аппаратно-программного интерфейса. Когда структуры Папок статей и Категорий сродни ориентированным графам, варианты осуществления, которые запрещают циклы, сродни ориентированным ациклическим графам (ОАГ), которые согласно математическому определению в области теории графов являются ориентированными графами, в которых ни один путь не может начинаться и оканчиваться в одной и той же вершине.Finally, since Categories and Article Folders themselves are Articles, and Articles can have Relations to each other, Categories can have Relations to Article Folders and vice versa, and Categories, Article Folders and Articles can have Relations with other Categories, Article Folders and Articles respectively certain alternative embodiments. However, in various embodiments, loops at the system level of the hardware-software interface are prohibited in the structures of Article Folders and / or in the structures of Categories. When the structures of Article Folders and Categories are akin to oriented graphs, embodiments that prohibit cycles are akin to oriented acyclic graphs (OAS), which, according to a mathematical definition in the field of graph theory, are directed graphs in which no path can begin and end in one and the same peak.
6. Расширяемость6. Extensibility
Платформа хранения должна быть снабжена начальным множеством схем 340, которые описаны выше. Кроме того, согласно, по меньшей мере, некоторым вариантам осуществления, платформа хранения позволяет потребителям, в том числе независимым продавцам программных продуктов (НПП) создавать новые схемы 344 (т.е. новые типы Статей и Вложенных элементов). В этом разделе рассматривается механизм создания таких схем путем расширения типов Статьи и типов Вложенного элемента (или просто типов «элемента»), заданных в начальном множестве схем 340.The storage platform should be provided with an initial set of
Предпочтительно расширение начального множества типов Статей и Вложенных элементов ограничивается следующим образом:Preferably, the expansion of the initial set of types of Articles and Nested elements is limited as follows:
- НПП разрешается вводить новые типы Статьи, т.е. подтип Base.Item;- NPP is allowed to introduce new types of Articles, i.e. subtype of Base.Item;
- НПП разрешается вводить новые расширения, т.е. подтип Base.NestedElement; но- NPP is allowed to introduce new extensions, i.e. subtype of Base.NestedElement; but
- НПП не может выделять подтипы ни в каких типах (типах Статьи, Вложенного элемента или расширения), определенных начальным множеством схем 340 платформы хранения.- NPP cannot distinguish subtypes in any types (types of Articles, Nested element or extension) defined by the initial set of
Поскольку тип Статьи или тип Вложенного элемента, определенный начальным множеством схем платформы хранения, может не целиком отвечать потребности приложения НПП, необходимо чтобы НПП могли переделывать тип. Это возможно с помощью понятия Расширений. Расширения - это строго типизированные экземпляры, но (а) они не могут существовать независимо и (b) они должны быть присоединены к Статье или Вложенному элементу.Since the type of the Article or the type of the Nested element, defined by the initial set of storage platform schemes, may not fully meet the needs of the application of the NPP, it is necessary that the NPP can remodel the type. This is possible using the concept of Extensions. Extensions are strongly typed instances, but (a) they cannot exist independently and (b) they must be attached to an Article or Attached Element.
Помимо решения вопроса расширяемости схемы Расширения также призваны решать вопрос «многотипности». Поскольку в некоторых вариантах осуществления платформа хранения может не поддерживать множественное наследование или перекрытие подтипов, приложения могут использовать Расширения как способ моделирования перекрывающихся экземпляров типов (например, Документ является юридическим документом и одновременно защищенным документом).In addition to addressing the issue of extensibility, schemes Extensions are also designed to address the issue of “multiplicity”. Since in some embodiments, the storage platform may not support multiple inheritance or overlapping subtypes, applications can use Extensions as a way to model overlapping type instances (for example, a Document is a legal document and is at the same time a protected document).
а) Расширения статьиa) Extensions of the article
Для обеспечения расширяемости Статьи модель данных дополнительно задает абстрактный тип по имени Base.Extension. Это корневой тип для иерархии типов расширения. Приложения могут выделять подтипы в Base.Extension для создания особых типов расширения.To ensure the extensibility of the Article, the data model additionally defines an abstract type named Base.Extension. This is the root type for the extension type hierarchy. Applications can highlight subtypes in Base.Extension to create custom extension types.
Тип Base.Extension задан в Базовой схеме следующим образом:The Base.Extension type is defined in the Base schema as follows:
<Type Name="Base.Extension" IsAbstract="True"><Type Name = "Base.Extension" IsAbstract = "True">
<Propety Name="ItemID"<Propety Name = "ItemID"
Type="the storageType = "the storage
platformTypes.uniqueidentified"platformTypes.uniqueidentified "
Nullable="false"Nullable = "false"
MultiValued="false"/>MultiValued = "false" />
<Property Name="ExtensionID"<Property Name = "ExtensionID"
Type="the storageType = "the storage
platformTypes.uniqueidentified"platformTypes.uniqueidentified "
Nullable="false"Nullable = "false"
MultiValued="false"/>MultiValued = "false" />
</Type></Type>
Поле ItemID содержит ИД статьи для статьи, с которой связано расширение. Статья с этим ИД статьи должна существовать. Расширение нельзя создать, если статьи с данным ИД статьи не существует. При удалении Статьи все расширения с тем же ИД статьи удаляются. Кортеж (ItemID,ExtensionID) уникальным образом идентифицирует экземпляр расширения.The ItemID field contains the article ID for the article with which the extension is associated. An article with this article ID must exist. An extension cannot be created if an article with the given article ID does not exist. When you delete an Article, all extensions with the same article ID are deleted. A tuple (ItemID, ExtensionID) uniquely identifies an extension instance.
Структура типа расширения подобна структуре типов статьи:An extension type structure is similar to an article type structure:
- Типы расширения имеют поля;- Extension types have fields;
- Поля могут быть примитивными типами или типами вложенного элемента;- Fields can be primitive types or types of a nested element;
- Типы расширения можно подразделять на подтипы.- Extension types can be divided into subtypes.
К типам расширения применяются следующие ограничения:The following restrictions apply to extension types:
- Расширения не могут быть источниками и целями отношений;- Extensions cannot be sources and goals of relationships;
- Экземпляры типа расширения не могут существовать независимо от статьи;- Instances of the extension type cannot exist regardless of the article;
- Типы расширения нельзя использовать как типы полей в определениях типов платформы хранения.- Extension types cannot be used as field types in storage platform type definitions.
Не существует ограничений по типам расширений, которые можно связать с данным типом Статьи. Любой тип расширения может расширять любой тип статьи. Когда к статье присоединено несколько экземпляров расширения, они не зависят друг от друга по структуре и поведению.There are no restrictions on the types of extensions that can be associated with this type of Article. Any type of extension can expand any type of article. When several instances of an extension are attached to an article, they are independent of each other in structure and behavior.
Сохранение экземпляров расширения и доступ к ним осуществляется независимо от статьи. Все экземпляры типа расширения доступны из глобального вида расширения. Можно составить эффективный запрос, который будет возвращать все экземпляры данного типа расширения независимо от типа статьи, с которой они связаны. API платформы хранения обеспечивает программную модель, которая может сохранять, извлекать и изменять расширения на статьях.Saving instances of the extension and access to them is carried out regardless of the article. All instances of the extension type are accessible from the global extension view. You can create an effective query that will return all instances of this type of extension regardless of the type of article with which they are associated. The storage platform API provides a programming model that can save, retrieve, and modify extensions on articles.
Типы расширения могут быть получены выделением подтипов с использованием модели единичного наследования платформы хранения. Вывод из типа расширения создает новый тип расширения. Структура или поведение расширения не может подменять или заменять структуру или поведения иерархии типов статьи. По аналогии с типами Статьи, к Экземплярам типа расширения можно иметь непосредственный доступ через вид, связанный с типом расширения. ИД статьи для расширения указывает, какой статье они принадлежат и какую статью можно использовать для извлечения соответствующего объекта Статьи из глобального вида Статьи. Расширения рассматриваются как часть статьи в целях операционной согласованности. Копирование/перемещение, резервирование/восстановление и другие общие операции, которые задает платформа хранения, могут действовать на расширениях как на части статьи.Extension types can be obtained by distinguishing subtypes using a single platform inheritance model. Deriving an extension type creates a new extension type. The structure or behavior of an extension cannot replace or replace the structure or behavior of an article type hierarchy. By analogy with Article types, Instances of extension type can be directly accessed through the view associated with the extension type. The article ID for the extension indicates which article they belong to and which article can be used to retrieve the corresponding Article object from the global Article view. Extensions are considered part of the article for operational consistency. Copying / moving, backing up / restoring and other general operations that the storage platform defines can act on extensions as part of an article.
Рассмотрим следующий пример. В множестве типов Windows задан тип «контакт» (Contact).Consider the following example. Many types of Windows have a Contact type.
<Type Name="Contact" BaseType=“Base.Item”><Type Name = "Contact" BaseType = “Base.Item”>
<Property Name="Name" <Property Name = "Name"
Type="String"Type = "String"
Nullable="false"Nullable = "false"
MultiValued="false"/>MultiValued = "false" />
<Property Name="Address"<Property Name = "Address"
Type="Address"Type = "Address"
Nullable="true"Nullable = "true"
MultiValued="false"/>MultiValued = "false" />
</Type></Type>
Разработчику приложения CRM [управление взаимодействия с потребителями] может понадобиться присоединить расширение приложения CRM к контактам, хранящимся в платформе хранения. Разработчик приложения задает расширение CRM, которое содержит дополнительную структуру данных, которой может манипулировать приложение.A CRM application developer [customer interaction management] may need to attach a CRM application extension to contacts stored in the storage platform. The application developer defines a CRM extension that contains an additional data structure that the application can manipulate.
<Type Name="CRMExtension" BaseType="Base.Extension"><Type Name = "CRMExtension" BaseType = "Base.Extension">
<Property Name="CustomerID"<Property Name = "CustomerID"
Type="String"Type = "String"
Nullable="false"Nullable = "false"
MultiValued="false"/>MultiValued = "false" />
…...
</Type></Type>
Разработчик приложения HR может пожелать также присоединить к «контакту» дополнительные данные. Эти данные не зависят от данных приложения CRM. Разработчик приложения опять же может создать расширение.The HR application developer may also wish to add additional data to the “contact”. This data is independent of CRM application data. The application developer can again create the extension.
<Type Name="HRExtension" EBaseType="Base.Extension"><Type Name = "HRExtension" EBaseType = "Base.Extension">
<Property Name="EmployeeID"<Property Name = "EmployeeID"
Type="String"Type = "String"
Nullable="false"Nullable = "false"
MultiValued="false"/>MultiValued = "false" />
…...
</Type></Type>
CRMExtension и HRExtension представляют собой два независимых расширения, которые можно присоединять к статьям «контакт». Их создание и доступ к ним осуществляется независимо друг от друга.CRMExtension and HRExtension are two independent extensions that you can add to your contact articles. Their creation and access to them is carried out independently of each other.
В вышеприведенном примере поля и методы типа CRMExtension не могут подменять поля или методы иерархии «контактов». Следует отметить, что экземпляры типа CRMExtension можно присоединять к типам Статьи, отличным от «контакта».In the above example, fields and methods of the CRMExtension type cannot replace the fields or methods of the “contact” hierarchy. It should be noted that instances of type CRMExtension can be attached to Article types other than “contact”.
При извлечении статьи «контакт» автоматически извлекаются ее расширения статьи. Для данной статьи «контакт», к связанным с ней расширениям статьи можно осуществлять доступ, запрашивая глобальный вид расширения на предмет расширений с тем же ИД статьи.When you extract the article “contact”, its extension is automatically extracted. For this “contact” article, you can access the related article extensions by requesting a global extension type for extensions with the same article ID.
Ко всем расширениям CRMExtension в системе можно осуществлять доступ через вид типов CRMExtension, независимо от того, какой статье они принадлежат. Все расширения статьи для статьи совместно используют один и тот же ИД статьи. В вышеприведенном примере экземпляр статьи «контакт» и присоединенные CRMExtension и HRExtension ссылаются на один и тот же ИД статьи.All CRMExtension extensions in the system can be accessed through the type of CRMExtension types, regardless of which article they belong to. All article extensions for an article share the same article ID. In the above example, a copy of the contact article and the attached CRMExtension and HRExtension all refer to the same article ID.
В нижеприведенной таблице приведены сходства и различия между типами Статьи, Расширения и Вложенного элемента:The table below shows the similarities and differences between the types of Articles, Extensions and Nested Element:
b) Расширение типов Вложенного элементаb) Extension of Nested Element Types
Типы Вложенного элемента не расширяются с помощью того же механизма, что и типы Статьи. Сохранение расширений вложенных элементов и доступ к ним осуществляется с помощью тех же механизмов, что и для полей типов вложенного элемента.Nested item types are not expanded using the same mechanism as Article types. Saving extensions of nested elements and accessing them is carried out using the same mechanisms as for type fields of a nested element.
Модель данных определяет корень для типов вложенного элемента под именем Элемент:The data model defines the root for the types of the nested element named Element:
<Type Name="Element" <Type Name = "Element"
IsAbstract="True">IsAbstract = "True">
<Property Name="ElementID"<Property Name = "ElementID"
Type="the storageType = "the storage
platformTypes.uniqueidentifier"platformTypes.uniqueidentifier "
Nullable="false"Nullable = "false"
MultiValued="false"/>MultiValued = "false" />
</Type></Type>
Тип NestedElement наследует от этого типа. Тип элемента «вложенный элемент» дополнительно определяет поле, которое является мультимножеством Элементов.The type NestedElement inherits from this type. The element type “nested element” additionally defines a field, which is a multiset of Elements.
<Type Name="NestedElement" BaseType="Base.Element"<Type Name = "NestedElement" BaseType = "Base.Element"
IsAbstract="True">IsAbstract = "True">
<Property Name="Extensions" <Property Name = "Extensions"
Type="Base.Element" Type = "Base.Element"
Nullable="false"Nullable = "false"
MultiValued="true"/>MultiValued = "true" />
</Type></Type>
Расширения Вложенного элемента отличаются от расширений статьи по следующим признакам:Extensions of the Nested element differ from the extensions of the article in the following ways:
- Расширения вложенного элемента не являются типами расширения. Они не принадлежат иерархии типов расширения, корнем которой является тип Base.Extension;- Nested item extensions are not extension types. They do not belong to the extension type hierarchy whose root is the Base.Extension type;
- Расширения вложенного элемента хранятся совместно с другими полями статьи и не являются глобально доступными - нельзя составить запрос, извлекающий все экземпляры данного типа расширения;- Extensions of the embedded element are stored together with other fields of the article and are not globally accessible - you cannot create a query that retrieves all instances of this type of extension;
- Эти расширения сохраняются таким же образом, как и другие вложенные элементы (статьи). Как и другие вложенные множества, расширения NestedElement хранятся в ТОП. Они доступны через поле «Расширения» (Extensions) типа вложенного элемента.- These extensions are saved in the same way as other nested elements (articles). Like other nested sets, NestedElement extensions are stored in TOP. They are available through the Extensions field of the nested item type.
- Коллекция интерфейсов, используемая для доступа к многозначным свойствам, также используется для доступа и итерации по множеству расширений типов.- The collection of interfaces used to access multi-valued properties is also used to access and iterate over many type extensions.
В нижеследующей таблице приведены существенные характеристики и различия Расширений статьи и расширений Вложенного элемента.The following table summarizes the significant characteristics and differences of the Article Extensions and Nested Element Extensions.
F. Машина базы данныхF. Database Machine
Согласно отмеченному выше, хранилище данных реализуется на машине базы данных. В данном варианте осуществления машина базы данных содержит машину реляционной базы данных, которая реализует язык запросов SQL, например машину Microsoft SQL Server, с объектными реляционными расширениями. Этот раздел описывает отображение модели данных, которую реализует хранилище данных, в реляционное хранилище и предоставляет информацию о логическом API, потребляемом клиентами платформы хранения, согласно данному варианту осуществления. Однако понятно, что при использовании разных машин базы данных можно использовать разные отображения. Действительно, помимо реализации концептуальной модели данных платформы хранения на машине реляционной базы данных она также может быть реализована на других типах баз данных, например объектно-ориентированных базах данных или базах данных XML.As noted above, the data warehouse is implemented on a database machine. In this embodiment, the database engine comprises a relational database machine that implements an SQL query language, such as a Microsoft SQL Server machine, with object relational extensions. This section describes the mapping of the data model that the data warehouse implements into relational storage and provides information about the logical API consumed by the clients of the storage platform according to this embodiment. However, it is understood that when using different database machines, different mappings can be used. Indeed, in addition to implementing the conceptual data model of the storage platform on a relational database machine, it can also be implemented on other types of databases, such as object-oriented databases or XML databases.
Объектно-ориентированная (OO) система баз данных обеспечивает персистентность и транзакции для объектов языка программирования (например, C++, Java). Понятие «статья» платформы хранения хорошо отображается в «объект» в объектно-ориентированных системах, хотя внедренные коллекции придется добавлять к Объектам. Другие концепции типов платформы хранения, например наследование и типы вложенного элемента, также отображаются в объектно-ориентированные системы типов. Объектно-ориентированные системы обычно уже поддерживают идентификацию объектов. Поведения (операции) статей хорошо отображаются в объектные методы. Однако для объектно-ориентированных систем характерен недостаток организационных возможностей и слабые средства поиска. Кроме того, объектно-ориентированные системы не обеспечивают поддержку неструктурированных или частично структурированных данных. Для поддержки описанной здесь полной модели данных платформы хранения в объектную модель данных нужно добавить такие концепции, как отношения, папки и расширения. Кроме того, необходимо реализовать такие механизмы, как продвижения, синхронизации, уведомления и безопасности.An object-oriented (OO) database system provides persistence and transactions for objects in a programming language (for example, C ++, Java). The concept of an “article” of a storage platform is well displayed as an “object” in object-oriented systems, although embedded collections will have to be added to Objects. Other storage platform type concepts, such as inheritance and nested element types, also map to object-oriented type systems. Object-oriented systems usually already support object identification. Behaviors (operations) of articles are well mapped into object methods. However, object-oriented systems are characterized by a lack of organizational capabilities and poor search tools. In addition, object-oriented systems do not provide support for unstructured or partially structured data. To support the complete storage platform data model described here, concepts such as relationships, folders, and extensions must be added to the data object model. In addition, mechanisms such as promotion, synchronization, notification, and security must be implemented.
По аналогии с объектно-ориентированными системами базы данных XML, основанные на XSD (определение схемы XML), поддерживают систему типов на основе единичного наследования. Система типов статьи, отвечающая настоящему изобретению, может отображаться в модель типов XSD. XSD также не обеспечивают поддержку поведений. XSD для статей должны дополняться поведениями статей. Базы данных XML имеют дело с единичными документами XSD и испытывают недостаток возможностей организации и широкого поиска. Как и с объектно-ориентированной базой данных, для поддержки описанной здесь модели данных в такие базы данных XML нужно внедрить другие концепции, как-то отношения и папки; кроме того, должны быть реализованы такие механизмы, как синхронизации, уведомления и безопасности.By analogy with object-oriented systems, XML databases based on XSD (XML Schema Definition) support a single-inheritance type system. The article type system of the present invention can be mapped to an XSD type model. XSD also does not provide behavior support. XSD for articles should be complemented by article behaviors. XML databases deal with single XSD documents and lack organization and broad search capabilities. As with an object-oriented database, in order to support the data model described here, other concepts, such as relationships and folders, need to be embedded in such XML databases; In addition, mechanisms such as synchronization, notification and security should be implemented.
В отношении нижеследующих подразделов, предусмотрено несколько иллюстраций, облегчающих раскрытие общей информации: на фиг.13 показана схема, иллюстрирующая механизм уведомления. На фиг.14 показана схема, иллюстрирующая пример, в котором две транзакции вставляют новую запись в одно и то же Б-дерево. Фиг.15 иллюстрирует процесс обнаружения изменения данных. На фиг.16 показано иллюстративное дерево директории. На фиг.17 показан пример, в котором существующая папка файловой системы на основе директорий перемещается в хранилище данных платформы хранения.With respect to the following subsections, several illustrations are provided to facilitate the disclosure of general information: FIG. 13 is a diagram illustrating a notification mechanism. 14 is a diagram illustrating an example in which two transactions insert a new record into the same B-tree. Fig. 15 illustrates a data change detection process. On Fig shows an illustrative directory tree. 17 shows an example in which an existing directory-based file system folder is moved to a storage platform data store.
1. Реализация хранилища данных с использованием ТОП1. Implementation of data storage using TOP
В данном варианте осуществления машина 314 реляционной базы данных, которая согласно одному варианту осуществления содержит машину Microsoft SQL Server, поддерживает встроенные скалярные типы. Встроенные скалярные типы являются «собственными» и «простыми». Они являются собственными в том смысле, что пользователь не может задавать свои собственные типы, и простыми в том смысле, что они не могут инкапсулировать сложную структуру. Типы, определенные пользователем (ниже ТОП), обеспечивают механизм расширяемости типов за пределы системы собственных скалярных типов, позволяя пользователям расширять систему типов путем задания сложных, структурированных типов. Будучи заданы пользователем, ТОП могут использоваться где угодно в системе типов, где могут использоваться встроенные скалярные типы.In this embodiment, the relational database engine 314, which according to one embodiment comprises a Microsoft SQL Server machine, supports built-in scalar types. Built-in scalar types are "native" and "simple." They are proprietary in the sense that the user cannot set their own types, and simple in the sense that they cannot encapsulate a complex structure. User-defined types (below the TOP) provide a mechanism for expanding types beyond the scope of their own scalar type systems, allowing users to extend the type system by defining complex, structured types. Once defined by the user, TOPs can be used anywhere in the type system where built-in scalar types can be used.
Согласно аспекту настоящего изобретения, схемы платформы хранения отображаются в классы ТОП в хранилище машины базы данных. Статьи хранилища данных отображаются в классы ТОП, выводимые из типа Base.Item. Наподобие Статей, Расширения также отображаются в классы ТОП и используют наследование. Корневым типом расширения является Base.Extension, из которого выводятся все типы расширения.According to an aspect of the present invention, storage platform schemes are mapped to TOP classes in the storage of a database machine. Data warehouse articles are mapped to TOP classes inferred from the Base.Item type. Like Articles, Extensions are also mapped to TOP classes and use inheritance. The root type of extension is Base.Extension, from which all extension types are derived.
ТОП является классом CLR - он имеет состояние (т.е. поля данных) и поведение (т.е. процедуры). ТОП задаются с использованием любого управляемого языка - C#, VB.NET и пр. Методы и операторы ТОП можно вызывать в T-SQL в соответствии с экземпляром этого типа. ТОП может быть типом столбца в строке, типом параметра процедуры в T-SQL или типом переменной в T-SQL.TOP is a CLR class - it has state (i.e. data fields) and behavior (i.e. procedures). TOPs are specified using any managed language — C #, VB.NET, etc. The methods and operators of TOP can be invoked in T-SQL according to an instance of this type. A TOP can be a column type in a row, a procedure parameter type in T-SQL, or a variable type in T-SQL.
Отображение схем платформы хранения в классы ТОП довольно очевидно на высоком уровне. В общем случае, схема платформы хранения отображается в пространство имен CLR. Тип платформы хранения отображается в класс CLR. Наследование класса CLR отражает наследование типа платформы хранения, и Свойство платформы хранения отображается в свойство класса CLR.The mapping of storage platform schemas to TOP classes is pretty obvious at a high level. In general, a storage platform schema maps to the CLR namespace. The type of storage platform is mapped to the CLR class. Inheritance of the CLR class reflects the inheritance of the storage platform type, and the Storage Platform Property maps to the CLR class property.
2. Отображение статьи2. Article display
Если желательно иметь возможность осуществления глобального поиска Статей и поддержки в реляционной базе данных, отвечающей данному варианту осуществления, наследования и возможности подстановки типов, то возможная реализация хранилища статей в хранилище базы данных состоит в сохранении всех Статей в единой таблице со столбцом типа Base.Item. Используя возможность подстановки типов, можно сохранять статьи всех типов, и поиски можно фильтровать по типу и подтипу Статьи с использованием оператора Юкона «относится к (типу)».If it is desirable to be able to perform a global search for Articles and support in a relational database that meets this embodiment, inheritance, and type substitution, then a possible implementation of the article repository in the database repository is to store all the Articles in a single table with a column of type Base.Item. Using the option of type substitution, you can save articles of all types, and searches can be filtered by type and subtype of the Article using the Yukon operator "refers to (type)".
Однако в связи с проблемой избыточной нагрузки, сопряженной с таким подходом, в данном варианте осуществления, Статьи делятся по типу верхнего уровня, так что Статьи каждого «семейства» типов хранятся в отдельной таблице. В соответствии с такой схемой разбиения таблица создается для каждого типа Статьи, наследующего непосредственно от Base.Item. Типы, наследующие ниже них, сохраняются в соответствующей таблице семейства типов с использованием возможности подстановки типов, которая описана выше. Специально обрабатывается только первый уровень наследования от Base.Item.However, due to the problem of overload associated with this approach, in this embodiment, the Articles are divided by the top-level type, so that the Articles of each “family” of types are stored in a separate table. In accordance with such a partitioning scheme, a table is created for each type of Article that inherits directly from Base.Item. Types that inherit below them are stored in the corresponding table of the type family using the type substitution feature described above. Only the first level of inheritance from Base.Item is specially processed.
«Теневая» таблица используется для хранения копий глобально искомых свойств для всех Статей. Эта таблица может поддерживаться методом Update() API платформы хранения, посредством которого производятся все изменения данных. В отличие от таблицы семейства типов эта глобальная таблица Статьи содержит только скалярные свойства верхнего уровня Статьи, а не полный объект Статьи ТОП. Глобальная таблица Статьи допускает навигацию к объекту Статьи, хранящемуся в таблице семейства типов, представляя ИД Статьи и ИД Типа. ИД Статьи, в общем случае, уникальным образом идентифицирует Статью в хранилище данных. ИД Типа может отображаться с использованием метаданных, которые здесь не описаны, в имя типа и вид, содержащее Статью. Поскольку отыскание Статьи по ее ИД Статьи может быть общей операцией, как в контексте глобальной таблицы Статьи, так и в противном случае, функция GetItem() обеспечивается для извлечения объекта Статьи по данному ИД статьи для Статьи.The “shadow” table is used to store copies of globally sought properties for all Articles. This table can be supported by the Update () method of the storage platform API through which all data changes are made. Unlike the type family table, this global Article table contains only scalar properties of the top-level Articles, and not the full TOP Article object. The global Article table allows navigation to the Article object stored in the table of the type family, representing the Article ID and Type ID. An Article ID, in general, uniquely identifies an Article in a data warehouse. The Type ID may be displayed using metadata that is not described here, in the type name and view containing the Article. Since retrieving an Article by its Article ID can be a general operation, both in the context of the global Article table and otherwise, the GetItem () function is provided to retrieve the Article object for this Article ID for the Article.
Для удобства доступа и скрытия деталей реализации до возможной степени все запросы Статей можно делать с помощью видов, построенных на описанных здесь таблицах Статей. В частности, виды можно создавать для каждого типа Статьи с помощью соответствующей таблицы семейства типов. Эти виды типов могут выбирать все Статьи соответствующего типа, включая подтипы. Для удобства помимо объекта ТОП, виды могут представлять столбцы для всех полей верхнего уровня этого типа, включая унаследованные поля.For ease of access and hiding implementation details, to the extent possible, all requests for Articles can be made using views built on the Article tables described here. In particular, views can be created for each type of Article using the corresponding table of the type family. These types of types can be selected by all Articles of the corresponding type, including subtypes. For convenience, in addition to the TOP object, views can represent columns for all top-level fields of this type, including inherited fields.
3. Отображение расширений3. Display extensions
Расширения весьма похожи на Статьи и имеют некоторые из тех же требований. В качестве корневого типа, поддерживающего наследование, Расширениям свойственны многие из тех же соображений и компромиссов при хранении. Вследствие этого к Расширениям применяется аналогичное отображение семейства типов, а не подход единой таблицы. Конечно, в других вариантах осуществления можно использовать подход единой таблицы. В данном варианте осуществления Расширение связано строго с одной Статьей посредством ИД статьи и содержит ИД расширения, который является уникальным в контексте Статьи. Как и в случае статей, может быть обеспечена функция для извлечения Расширения по его идентификации, которая состоит из пары ИД статьи и ИД расширения. Вид создается для каждого Типа расширения, по аналогии с видами типов Статьи.Extensions are quite similar to Articles and have some of the same requirements. As the root type that supports inheritance, Extensions have many of the same considerations and trade-offs during storage. As a result, the Extensions apply a similar type family mapping, rather than a single table approach. Of course, in other embodiments, a single table approach can be used. In this embodiment, the Extension is associated strictly with one Article through an Article ID and contains an extension ID that is unique in the context of the Article. As with articles, a function can be provided to retrieve the Extension by its identification, which consists of a pair of article IDs and extension IDs. A view is created for each Extension Type, by analogy with the types of Article types.
4. Отображение вложенных элементов4. Display of nested elements
Вложенные элементы являются типами, которые могут быть внедрены в Статьи, Расширения, Отношения или другие Вложенные элементы для формирования структур с глубоким вложением. Наподобие Статей и Расширений Вложенные элементы реализованы как ТОП, но они хранятся внутри статей и расширений. Поэтому Вложенные элементы не имеют отображения хранения за пределы контейнеров их Статей и Расширений. Другими словами, в системе не существует таблиц, в которых непосредственно хранятся экземпляры типов Вложенных элементов, и нет видов, непосредственно предназначенных для Вложенных элементов.Nested elements are types that can be embedded in Articles, Extensions, Relations or other Nested elements to form structures with deep nesting. Like Articles and Extensions Nested elements are implemented as TOP, but they are stored inside articles and extensions. Therefore, Nested elements do not have a storage mapping outside the containers of their Articles and Extensions. In other words, there are no tables in the system that directly store instances of types of Nested elements, and there are no views directly intended for Nested elements.
5. Идентификация объектов5. Identification of objects
Каждая сущность в модели данных, т.е. каждая Статья, Расширение и Отношение имеет уникальное значение ключа. Статья уникальным образом идентифицируется своим ИД статьи. Расширение уникальным образом идентифицируется составным ключом (ИД статьи, ИД расширения). Отношение идентифицируется составным ключом (ИД статьи, ИД отношения). ИД статьи, ИД расширения и ИД отношения являются значениями GUID.Each entity in the data model, i.e. Each Article, Extension and Relationship has a unique key value. An article is uniquely identified by its article ID. An extension is uniquely identified by a compound key (article ID, extension ID). A relationship is identified by a compound key (article ID, relationship ID). Article ID, Extension ID, and Relationship ID are GUID values.
6. Присвоение имен объектам SQL6. Naming SQL Objects
Все объекты, созданные в хранилище данных, могут храниться в имени схемы SQL, выведенном из имени схемы платформы хранения. Например, Базовая схема платформа хранения (часто именуемая «базой») может создавать типы в схеме SQL “[System.Storage]”, например, “[System.Storage].Item”. Генерированные имена имеют в качестве префикса спецификатор для исключения конфликтов присвоения имен. При необходимости, восклицательный знак (!) используется в качестве разделителя для каждой логической части имени. В нижеследующей таблице описано соглашение по присвоению имен, используемое для объектов в хранилище данных. Каждый элемент схемы (Статья, Расширение, Отношение и Вид) перечислен совместно с соглашением по присвоению декорированных имен, используемым для доступа к экземплярам в хранилище данных.All objects created in the data warehouse can be stored in the SQL schema name derived from the storage platform schema name. For example, a Base Schema storage platform (often referred to as a “base”) can create types in the SQL schema “[System.Storage]”, for example, “[System.Storage] .Item”. Generated names have a qualifier as a prefix to exclude naming conflicts. If necessary, an exclamation mark (!) Is used as a separator for each logical part of the name. The following table describes the naming convention used for objects in the data warehouse. Each element of the schema (Article, Extension, Relationship, and View) is listed in conjunction with the decorated naming convention used to access instances in the data warehouse.
AuthorsFromDocument][AcmeCorp.Doc]. [Relationship!
AuthorsFromDocument]
7. Присвоение имен столбцам7. Naming Columns
При отображении любой объектной модели в хранилище возникает возможность конфликтов присвоения имен в связи с дополнительной информацией, сохраняемой совместно с объектом приложения. Во избежание конфликтов присвоения имен все столбцы, не зависящие от типа (столбцы, которые не отображаются напрямую в именованное Свойство в объявлении типа) должны снабжаться префиксом в виде символа подчеркивания (_). В данном варианте осуществления символы подчеркивания (_) запрещены в качестве начального символа любого свойства идентификатора. Кроме того, для унификации присвоения имен между CLR и хранилищем данных все свойства типов платформы хранения или элемента схемы (отношения и пр.) должны начинаться с заглавной буквы.When displaying any object model in the repository, the possibility of naming conflicts arises in connection with additional information stored in conjunction with the application object. To avoid naming conflicts, all columns that are independent of type (columns that do not map directly to the named Property in the type declaration) must be prefixed with an underscore (_). In this embodiment, the underscore (_) characters are not allowed as the starting character of any identifier property. In addition, to unify the naming between the CLR and the data warehouse, all properties of the types of the storage platform or schema element (relationships, etc.) must begin with a capital letter.
8. Поисковые виды 8. Search Views
Виды обеспечиваются платформой хранения для поиска сохраненного содержимого. Вид SQL предусмотрен для каждой Статьи и Типа расширения. Кроме того, виды предусмотрены для поддержки Отношений и Видов (заданных в Модели данных). Все виды SQL и нижележащие таблицы в платформе хранения доступны только для чтения. Данные можно сохранять или изменять с использованием метода Update() API платформы хранения, как описано более подробно ниже.Views are provided by the storage platform to search for stored content. An SQL view is provided for each Article and Extension Type. In addition, views are provided to support Relations and Views (defined in the Data Model). All kinds of SQL and underlying tables in the storage platform are read-only. Data can be saved or modified using the Update () method of the storage platform API, as described in more detail below.
Каждый вид, заданный в явном виде в схеме платформы хранения (заданный разработчиком схемы, а не генерированный автоматически платформой хранения), доступен посредством именованного вида SQL [<имя схемы>].[View!<имя вида>]. Например, вид, имеющий имя “BookSales” в схеме “AcmePublisher.Books” доступен с использованием имени “[AcmePublisher.Books].[View!BookSales]”. Поскольку выходной формат вида является настраиваемым для каждого вида (определяется посредством произвольного запроса, обеспеченного стороной, определяющей вид), столбцы непосредственно отображаются на основании определения вида схемы.Each view specified explicitly in the storage platform schema (specified by the developer of the schema and not generated automatically by the storage platform) is accessible through the named SQL view [<schema name>]. [View! <View name>]. For example, a view named “BookSales” in the “AcmePublisher.Books” schema is available using the name “[AcmePublisher.Books]. [View! BookSales]”. Since the output format of the view is customizable for each view (determined by an arbitrary request provided by the party determining the view), the columns are directly displayed based on the definition of the type of scheme.
Все поисковые виды SQL в хранилище данных платформы хранения используют следующее соглашение по упорядочению для столбцов:All SQL lookups in the storage platform data warehouse use the following collation for columns:
- Логический(е) «ключевой(ые)» столбец(цы) результата вида, как то ИД статьи, ИД элемента, ИД отношения, …;- Logical (e) “key (s)” column (s) of the result of the form, such as the article ID, element ID, relationship ID, ...;
- Информация метаданных о типе результата, например ИД типа;- Metadata information about the type of result, such as type ID;
- Столбцы отслеживания изменений, например, «создать версию», «обновить версию», …;- Columns of change tracking, for example, “create version”, “update version”, ...;
- Столбец(цы), зависящий(е) от типа (Свойства объявленного типа);- Column (s) depending (e) on the type (Properties of the declared type);
- Виды, зависящие от типа (виды семейства), также содержат столбец объектов, который возвращает объект.- Type-specific views (family views) also contain a column of objects that returns an object.
Члены каждого семейства типов можно искать с использованием последовательности видов Статьи, причем в хранилище данных на каждый тип Статьи приходится один вид. На фиг.28 показана схема, иллюстрирующая концепцию поискового вида Статьи.Members of each type family can be searched using a sequence of Article types, and there is one type for each type of Article in the data warehouse. On Fig shows a diagram illustrating the concept of a search view Articles.
а) Статьяa) Article
Каждый поисковый вид Статьи содержит строку для каждого экземпляра Статьи определенного типа или его подтипов. Например, вид для Документа может возвращать экземпляры Документа, Юридического документа и Обзорного Документа. Согласно этому примеру, виды Статьи можно концептуализировать, как показано на фиг.29.Each search type of an Article contains a line for each instance of an Article of a certain type or its subtypes. For example, a view for a Document may return instances of a Document, a Legal Document, and a Survey Document. According to this example, the types of Articles can be conceptualized, as shown in Fig. 29.
(1) Главный поисковый вид Статьи(1) Main search view Articles
Каждый экземпляр хранилища данных платформы хранения задает особый вид Статьи, именуемый Главным видом статьи. Этот вид обеспечивает основную информацию о каждой Статье в хранилище данных. Вид обеспечивает по одному столбцу для каждого свойства типа Статьи, столбец, описывающий тип Статьи, и несколько столбцов, которые используются для обеспечения информации отслеживания изменений и синхронизации. Главный вид статьи идентифицируется в хранилище данных с использованием имени “[System.Storage].[Master!Item]”.Each instance of the storage platform data warehouse defines a specific type of Article, referred to as the Main type of article. This view provides basic information about each Article in the data warehouse. The view provides one column for each property of the Article type, a column describing the Article type, and several columns that are used to provide change tracking and synchronization information. The main view of the article is identified in the data warehouse using the name “[System.Storage]. [Master! Item]”.
(2) Типизированные поисковые виды Статьи(2) Typed Search Types Articles
Каждый тип Статьи также имеет поисковый вид. Хотя он и аналогичен корневому виду Статьи, этот вид также обеспечивает доступ к объекту Статьи через столбец “_Item”. Каждый типизированный поисковый вид Статьи идентифицируется в хранилище данных с использованием имени [имя схемы].[имя типа статьи]. Например, [AcmeCorp.Doc].[OfficeDoc].Each type of Article also has a search view. Although it is similar to the root view of an Article, this view also provides access to the Article object through the “_Item” column. Each typed search type of an Article is identified in the data warehouse using the name [schema name]. [Article type name]. For example, [AcmeCorp.Doc]. [OfficeDoc].
b) Расширения статьиb) Article extensions
Все расширения статьи в хранилище WinFS также доступны с использованием поисковых видов.All article extensions in the WinFS repository are also available using search views.
(1) Главный поисковый вид расширения(1) Main search extension type
Каждый экземпляр хранилища данных определяет особый вид Расширения, именуемый Главным видом расширения. Этот вид обеспечивает основную информацию о каждом Расширении в хранилище данных. Вид имеет по одному столбцу на свойство Расширения, столбец, описывающий тип Расширения, и несколько столбцов, которые используются для обеспечения информации отслеживания изменений и синхронизации. Главный вид расширения идентифицируется в хранилище данных с использованием имени “[System.Storage].[Master!Extension]”.Each instance of the data warehouse defines a specific type of Extension called the Primary Type of Extension. This view provides basic information about each Extension in the data warehouse. The view has one column for the Extensions property, a column describing the type of the Extension, and several columns that are used to provide change tracking and synchronization information. The main type of extension is identified in the data warehouse using the name “[System.Storage]. [Master! Extension]”.
(2) Типизированные поисковые виды расширения(2) Typed Search Extensions
Каждый Тип расширения также имеет поисковый вид. Хотя он и аналогичен главному виду расширения, этот вид также обеспечивает доступ к объекту Статьи через столбец _Extension. Каждый типизированный поисковый вид расширения идентифицируется в хранилище данных с использованием имени [имя схемы].[Extension!имя типа расширения]. Например, [AcmeCorp.Doc].[Extension!OfficeDocExt].Each type of extension also has a search view. Although it is similar to the main type of extension, this view also provides access to the Article object through the _Extension column. Each typed search extension type is identified in the data store using the name [schema name]. [Extension! Name of extension type]. For example, [AcmeCorp.Doc]. [Extension! OfficeDocExt].
c) Вложенные элементыc) Nested elements
Все вложенные элементы хранятся в экземплярах Статей, Расширений или Отношений. Как таковые они доступны путем запрашивания поискового вида соответствующей Статьи, Расширения или Отношения.All nested elements are stored in instances of Articles, Extensions or Relations. As such, they are available by querying the search form of the corresponding Article, Extension or Relationship.
d) Отношенияd) Relationships
Согласно описанному выше, Отношения образуют основной блок связи между Статьями в хранилище данных платформы хранения.As described above, Relationships form the main unit of communication between Articles in the data warehouse of the storage platform.
(1) Главный поисковый вид отношения(1) Main search relationship type
Каждое хранилище данных обеспечивает Главный вид отношения. Этот вид обеспечивает информацию обо всех экземплярах отношения в хранилище данных. Главный вид отношения идентифицируется в хранилище данных с использованием имени “[System.Storage].[Master!Relationship]”.Each data warehouse provides the main view of the relationship. This view provides information about all instances of the relationship in the data warehouse. The main relationship type is identified in the data warehouse using the name “[System.Storage]. [Master! Relationship]”.
(2) Поисковые виды экземпляра отношения(2) Search types of relationship instance
Каждое декларированное Отношение также имеет поисковый вид, который возвращает все экземпляры конкретного отношения. Хотя он и аналогичен главному виду отношения, этот вид также обеспечивает именованные столбцы для каждого свойства данных отношения. Каждый поисковый вид экземпляра отношения идентифицируется в хранилище данных с использованием имени [имя схемы].[Relationship!имя отношения]. Например, [AcmeCorp.Doc].[Relationship!DocumentAuthor].Each declared Relationship also has a search form that returns all instances of a particular relationship. Although it is similar to the main relation type, this view also provides named columns for each property of the relation data. Each search type of relationship instance is identified in the data store using the name [schema name]. [Relationship! Relationship name]. For example, [AcmeCorp.Doc]. [Relationship! DocumentAuthor].
9. Обновления9. Updates
Все виды в хранилище данных платформы хранения предназначены только для чтения. Для создания нового экземпляра элемента модели данных (статьи, расширения или отношения) или для обновления существующего экземпляра следует использовать методы ProcessOperation или ProcessUpdategram API платформы хранения. Метод ProcessOperation - это одиночная сохраненная процедура, определенная хранилищем данных, которая потребляет «операцию», детализирующую действие, подлежащее выполнению. Метод ProcessUpdategram - это сохраненная процедура, которая берет упорядоченное множество операций, именуемое «апдейтграммой», которые совместно детализируют множество действий, подлежащих выполнению.All views in the data warehouse storage platform are read-only. To create a new instance of a data model element (article, extension or relationship) or to update an existing instance, use the ProcessOperation or ProcessUpdategram API of the storage platform. The ProcessOperation method is a single stored procedure defined by a data warehouse that consumes an “operation” that details the action to be performed. The ProcessUpdategram method is a stored procedure that takes an ordered set of operations called an “updategram” that together detail the set of actions to be performed.
Формат операции является расширяемым и обеспечивает различные операции над элементами схемы. Некоторые общие операции включают в себя:The operation format is extensible and provides various operations on circuit elements. Some common operations include:
1. Операции над статьями:1. Operations on articles:
а. CreateItem (создает новую статью в контексте отношения внедрения или поддержания);but. CreateItem (creates a new article in the context of an implementation or maintenance relationship);
b. UpdateItem (обновляет существующую статью).b. UpdateItem (updates an existing article).
2. Операции над отношениями:2. Relationship operations:
a. CreateRelationship (создает экземпляр отношения ссылки или поддержания);a. CreateRelationship (creates an instance of a reference or maintain relationship);
b. UpdateRelationship (обновляет экземпляр отношения);b. UpdateRelationship (updates an instance of a relationship);
c. DeleteRelationship (удаляет экземпляры отношения).c. DeleteRelationship (deletes relationship instances).
3. Операции над расширениями:3. Operations on extensions:
a. CreateExtension (добавляет расширение к существующей Статье);a. CreateExtension (adds an extension to an existing Article);
b. UpdateExtension (обновляет существующее расширение);b. UpdateExtension (updates an existing extension);
c. DeleteExtension (удаляет расширение).c. DeleteExtension (removes the extension).
10. Отслеживание изменений и Захоронения10. Change Tracking and Burial
Сервисы отслеживания изменений и захоронения обеспечиваются хранилищем данных, что будет рассмотрено ниже более подробно. В этом разделе кратко описана информация отслеживания изменений, представляемая в хранилище данных.Change tracking and disposal services are provided by the data warehouse, which will be discussed in more detail below. This section briefly describes the change tracking information provided in the data warehouse.
a) Отслеживание измененийa) Change tracking
Каждый поисковый вид, обеспеченный хранилищем данных, содержит столбцы, используемые для обеспечения информации отслеживания изменений; столбцы являются общими для всех видов Статьи, Расширения и Отношения. Виды схема платформы хранения, заданные в явном виде разработчиками схем, не обеспечивают автоматически информацию отслеживания изменений - такая информация обеспечивается опосредованно, через поисковые виды, на которых построен сам вид.Each search view provided by the data warehouse contains columns used to provide change tracking information; columns are common to all kinds of Articles, Extensions, and Relationships. Types of storage platform diagrams set explicitly by the developers of the schemas do not automatically provide change tracking information - such information is provided indirectly through the search views on which the view itself is built.
Для каждого элемента в хранилище данных информация отслеживания изменений доступна из двух мест - «главного» вида элемента и «типизированного» вида элемента. Например, информация отслеживания изменений по типу Статьи AcmeCorp.Document.Document доступна из Главного вида статьи “[System.Storage].[Master!Item]” и типизированного поискового вида Статьи [AcmeCorp.Document].[Document].For each item in the data warehouse, change tracking information is available from two places - the “main” view of the item and the “typed” view of the item. For example, change tracking information by type of AcmeCorp.Document.Document Article is available from the Main view of the article “[System.Storage]. [Master! Item]” and the typed search view of the Article [AcmeCorp.Document]. [Document].
(1) Отслеживание изменений в “Главных” поисковых видах(1) Track changes to the “Top” search types
Информация отслеживания изменений в главных поисковых видах обеспечивает информацию о создании и обновлении версий элемента, информацию о партнере по синхронизации, создавшем элемент, о партнере по синхронизации, последний раз обновившем элемент, и номера версий от каждого партнера для создания и обновления. Партнеры в отношениях синхронизации (описаны ниже) идентифицируются ключом партнера. Единичный объект ТОП, имеющий имя _ChangeTrackingInfo и тип [System.Storage.Store].ChangeTrackingInfo, содержит всю эту информацию. Тип задан в схеме System.Storage. _ChangeTrackingInfo доступен во всех глобальных поисковых видах для Статьи, Расширения и Отношения. Ниже приведено определение типа ChangeTrackingInfo:Change tracking information in the main search types provides information about creating and updating versions of an element, information about the synchronization partner that created the element, about the synchronization partner that last updated the element, and version numbers from each partner for creating and updating. Partners in a synchronization relationship (described below) are identified by the partner key. A single TOP object named _ChangeTrackingInfo and type [System.Storage.Store] .ChangeTrackingInfo contains all this information. The type is specified in the System.Storage schema. _ChangeTrackingInfo is available in all global search views for Articles, Extensions, and Relationships. The following is a definition of the type ChangeTrackingInfo:
<Type Name=”ChangeTrackingInfo” BaseType=”Base.NestedElement”><Type Name = ”ChangeTrackingInfo” BaseType = ”Base.NestedElement”>
<FieldProperty Name=”CreationLocalTS” Type=”SqlTypes.SqlInt64”<FieldProperty Name = ”CreationLocalTS” Type = ”SqlTypes.SqlInt64”
Nullable=”False”/>Nullable = ”False” />
<FieldProperty Name=”CreatingPartnerKey” Type=”SqlTypes.SqlInt32”<FieldProperty Name = ”CreatingPartnerKey” Type = ”SqlTypes.SqlInt32”
Nullable=”False”/>Nullable = ”False” />
<FieldProperty Name=”CreatingPartnerTS” Type=”SqlTypes.SqlInt64”<FieldProperty Name = ”CreatingPartnerTS” Type = ”SqlTypes.SqlInt64”
Nullable=”False”/>Nullable = ”False” />
<FieldProperty Name=”LastUpdateLocalTS” Type=”SqlTypes.SqlInt64”<FieldProperty Name = ”LastUpdateLocalTS” Type = ”SqlTypes.SqlInt64”
Nullable=”False”/>Nullable = ”False” />
<FieldProperty Name=”LastUpdatingPartnerKey” Type=”SqlTypes.SqlInt32”<FieldProperty Name = ”LastUpdatingPartnerKey” Type = ”SqlTypes.SqlInt32”
Nullable=”False”/>Nullable = ”False” />
<FieldProperty Name=”LastUpdatingPartnerTS” Type=”SqlTypes.SqlInt64”<FieldProperty Name = ”LastUpdatingPartnerTS” Type = ”SqlTypes.SqlInt64”
Nullable=”False” />Nullable = ”False” />
</Type></Type>
Эти свойства содержат следующую информацию:These properties contain the following information:
(2) Отслеживание изменений в «типизированных» поисковых видах(2) Tracking changes in typed search types
Помимо обеспечения той же информации, которую обеспечивает глобальный поисковый вид, каждый типизированный поисковый вид обеспечивает дополнительную информацию, касающуюся состояния синхронизации каждого элемента в топологии синхронизации.In addition to providing the same information that the global search view provides, each typed search view provides additional information regarding the synchronization status of each element in the synchronization topology.
b) Захороненияb) Burial
Хранилище данных обеспечивает информацию захоронения для Статей, Расширений и Отношений. Виды захоронения обеспечивают информацию как о живых, так и захороненных сущностях (статьях, расширениях и отношениях) в одном месте. Виды захоронения для статей и расширений не обеспечивают доступ к соответствующему объекту, тогда как вид захоронения для отношения обеспечивает доступ к объекту отношения (объект отношения равен NULL в случае «захороненного» отношения).The data warehouse provides burial information for Articles, Extensions and Relations. Types of burial provide information about both living and buried entities (articles, extensions and relationships) in one place. Burial types for articles and extensions do not provide access to the corresponding object, while a burial type for a relationship provides access to the relationship object (the relationship object is NULL in the case of a "buried" relationship).
(1) Захоронения Статей(1) Burial Articles
Захоронения Статей извлекаются из системы посредством вида [System.Storage].[Tombstone!Item].Tombstones of Articles are retrieved from the system using the [System.Storage]. [Tombstone! Item] view.
(2) Захоронения расширений(2) Burial extensions
Захоронения расширений извлекаются из системы с использованием вида [System.Storage].[Tombstone!Extension]. Информация отслеживания изменений расширения подобна той, которая обеспечивается для Статей, но дополнена свойством ИД расширения.Extension tombs are retrieved from the system using the [System.Storage]. [Tombstone! Extension] view. Extension change tracking information is similar to that provided for Articles, but supplemented by the extension ID property.
(3) Захоронения отношений(3) Burial relations
Захоронения расширений извлекаются из системы посредством вида [System.Storage].[Tombstone!Relationship]. Информация захоронения расширений подобна той, которая обеспечена для Расширений. Однако обеспечивается дополнительная информация ссылки на целевую статью для экземпляра отношения. Кроме того, выбирается объект отношения.Extension tombs are retrieved from the system using the [System.Storage]. [Tombstone! Relationship] view. Extension tombstone information is similar to that provided for Extensions. However, additional link information for the target article for the relationship instance is provided. In addition, a relationship object is selected.
(4) Очистка захоронения(4) Landfill cleaning
Во избежание неограниченного роста информации захоронения хранилище данных обеспечивает задание очистки захоронения. Это задание определяет, когда информацию захоронения можно аннулировать. Задание вычисляет границу локального создания/обновления версии, после чего усекает информацию захоронения, аннулируя все более ранние захороненные версии.To avoid unlimited growth of burial information, the data warehouse provides the task of clearing the burial. This task determines when burial information can be canceled. The job calculates the boundary of local version creation / update, and then truncates the burial information, invalidating all earlier buried versions.
11. API и функции помощника11. API and helper functions
Отображение Базы также обеспечивает ряд функций помощника. Эти функции обеспечиваются в помощь общим операциям над моделью данных.Base mapping also provides a number of assistant functions. These features are provided to aid general operations on the data model.
a) Функция [System.Storage].GetItema) Function [System.Storage] .GetItem
Возвращает объект Статьи при данном ИД статьиReturns the Article object for a given article ID
////
Item GetItem (ItemId ItemId)Item GetItem (ItemId ItemId)
b) Функция [System.Storage].GetExtensionb) Function [System.Storage] .GetExtension
// Возвращает объект расширения при данных ИД статьи и ИД расширения// Returns the extension object for the given article ID and extension ID
////
Extension GetExtension (ItemId ItemId, ExtensionId ExtensionId)Extension GetExtension (ItemId ItemId, ExtensionId ExtensionId)
c) Функция [System.Storage].GetRelationshipc) Function [System.Storage] .GetRelationship
// Возвращает объект отношения при данных ИД статьи и ИД отношения// Returns the relationship object for the given article ID and relationship ID
////
Relationship GetRelationship (ItemId ItemId, RelationshipId RelationshipId)Relationship GetRelationship (ItemId ItemId, RelationshipId RelationshipId)
12. Метаданные12. Metadata
В Хранилище представлены два типа метаданных: метаданные экземпляра (тип Статьи и пр.) и метаданные типа.The Repository contains two types of metadata: instance metadata (Article type, etc.) and type metadata.
a) Метаданные схемыa) Schema metadata
Метаданные схемы хранятся в хранилище данных как экземпляры типов Статьи из схемы метаданных.Schema metadata is stored in the data warehouse as instances of the types of Articles from the metadata schema.
b) Метаданные экземпляраb) Instance metadata
Метаданные экземпляра используются приложением для запрашивания типа Статьи и находят расширения, связанные со Статьей. При данном ИД статьи для Статьи, приложение может запросить, чтобы глобальный вид статьи возвратил тип статьи, и использовать это значение, чтобы запросить, чтобы вид Meta.Type возвратил информацию об объявленном типе Статьи. Например,Instance metadata is used by the application to query the type of the Article and find the extensions associated with the Article. Given this Article ID for the Article, the application can request that the global view of the article return the type of the article, and use this value to request the view Meta.Type to return information about the declared type of the Article. For example,
// Возвратить метаданные объекта Статьи для данного экземпляра Статьи// Return the metadata of the Article object for this instance of the Article
////
SELECT m._Item AS metadataInfoObjSELECT m._Item AS metadataInfoObj
FROM [System.Storage].[Item] i INNER JOIN [Meta].[Type] m ON i._TypeId=m.ItemId FROM [System.Storage]. [Item] i INNER JOIN [Meta]. [Type] m ON i._TypeId = m.ItemId
WHERE i.ItemId = @ItemIdWHERE i.ItemId = @ItemId
G. БезопасностьG. Security
В общем случае, все защищаемые объекты организуют свои права доступа с использованием формата маски доступа, показанного на фиг.26. В этом формате 16 младших битов предназначены для прав доступа, зависящих от объекта, следующие 7 битов предназначены для стандартных прав доступа, которые применяются к большинству типов объектов, и 4 старших бита используются для задания общих прав доступа, которые каждый тип объекта может отображать в множество стандартных и зависящих от объекта прав. Бит «доступ к системной безопасности» соответствует праву доступа к SACL объекта.In general, all protected objects organize their access rights using the access mask format shown in FIG. In this format, the 16 low-order bits are for object-specific access rights, the next 7 bits are for standard access rights that apply to most types of objects, and the 4 high-order bits are used to specify the general access rights that each type of object can map to multiple standard and object-specific rights. The “access to system security” bit corresponds to the access right to the SACL of the object.
В структуре маски доступа, изображенной на фиг.26, права, зависящие от статьи, размещены в секции «права, зависящие от статьи» (16 младших битов). Поскольку в данном варианте осуществления платформа хранения представляет два множества API для администрирования безопасности API Win32 и платформы хранения, права, зависящие от объекта, файловой системы следует рассматривать в порядке мотивации конструирования прав, зависящих от объекта, платформы хранения.In the structure of the access mask shown in FIG. 26, the rights dependent on the article are located in the section “rights dependent on the article” (16 least significant bits). Since in this embodiment, the storage platform represents two sets of APIs for administering the security of the Win32 API and the storage platform, object-specific rights of the file system should be considered in order to motivate the construction of object-specific rights, the storage platform.
Модель безопасности для платформы хранения, отвечающей настоящему изобретению, полностью описана в родственных заявках, включенных в настоящее описание посредством ссылки. В этой связи на фиг.27 (части a, b и c) изображена новая идентично защищенная область безопасности, вырезанная из существующей области безопасности, согласно одному варианту осуществления модели безопасности.The security model for the storage platform of the present invention is fully described in the related applications, incorporated herein by reference. In this regard, FIG. 27 (parts a, b, and c) depicts a new identically protected security region cut from an existing security region according to one embodiment of a security model.
Н. Уведомления и отслеживание измененийH. Notifications and change tracking
Согласно еще одному аспекту настоящего изобретения, платформа хранения обеспечивает функцию уведомлений, которая позволяет приложениям отслеживать изменения данных. Эта особенность главным образом предназначена для приложений, которые поддерживают временные состояния или выполняют бизнес-логику на событиях изменения данных. Приложения регистрируются для уведомлений на статьях, расширениях статьи и отношений статьи. Уведомления доставляются асинхронно после совершения изменений данных. Приложения могут фильтровать уведомления по статье, расширению и типу отношения, а также типу операции.According to another aspect of the present invention, the storage platform provides a notification function that allows applications to track data changes. This feature is mainly intended for applications that support temporary states or execute business logic on data change events. Applications are registered for notifications on articles, article extensions, and article relations. Notifications are delivered asynchronously after making data changes. Applications can filter notifications by article, extension and type of relationship, as well as type of operation.
Согласно одному варианту осуществления, API 322 платформы хранения обеспечивает два вида интерфейсов для уведомлений. Во-первых, приложения регистрируют простые события изменения данных, вызванные изменениями в статьях, расширениях статьи и отношений статьи. Во-вторых, приложения создают объекты «наблюдатель» для отслеживания множеств статей, расширений статей и отношений между статьями. Состояние объекта наблюдателя можно сохранять и повторно создавать после системной ошибки или после того, как система пребывала в автономном режиме в течение продолжительного периода времени. Одиночное уведомление может отражать множество обновлений.According to one embodiment, storage platform API 322 provides two kinds of notification interfaces. First, applications record simple data change events caused by changes in articles, article extensions, and article relationships. Secondly, applications create observer objects to track sets of articles, article extensions, and article relationships. The state of the observer object can be saved and re-created after a system error or after the system has been offline for an extended period of time. A single notification can reflect many updates.
Дополнительные подробности, касающиеся этой функции, описаны в родственных заявках, включенных в настоящее описание посредством ссылки.Further details regarding this feature are described in related applications, incorporated herein by reference.
I. СинхронизацияI. Sync
Согласно еще одному аспекту настоящего изобретения, платформа хранения обеспечивает сервис 330 синхронизации, который (i) позволяет множеству экземпляров платформы хранения (каждый имеет собственное хранилище 302 данных) синхронизировать части своего содержимого согласно гибкому множеству правил и (ii) предоставляет третьим сторонам инфраструктуру для синхронизации хранилища данных платформы хранения, отвечающей настоящему изобретению, с другими источниками данных, которые реализуют протоколы прав собственности.According to yet another aspect of the present invention, the storage platform provides a synchronization service 330 that (i) allows multiple instances of the storage platform (each has its own data store 302) to synchronize parts of its content according to a flexible set of rules and (ii) provides third-party infrastructure for synchronizing storage data of a storage platform of the present invention with other data sources that implement ownership protocols.
Синхронизация между платформами хранения происходит среди группы участвующих дубликатов. Например, согласно фиг.3, может понадобиться обеспечить синхронизацию между хранилищем 302 данных платформы 300 хранения и другим удаленным хранилищем 338 данных под управлением другого экземпляра платформы хранения, возможно, действующего в другой компьютерной системе. Полное членство этой группы не обязательно известно любому данному дубликату в любой данный момент времени.Synchronization between storage platforms occurs among a group of participating duplicates. For example, as shown in FIG. 3, it may be necessary to provide synchronization between the data store 302 of the
Разные дубликаты могут производить изменения независимо (т.е. параллельно). Этот процесс синхронизации по определению состоит в том, что каждому дубликату становятся известны изменения, произведенные другими дубликатами. Эта функция синхронизации по природе своей предусматривает множество задающих элементов.Different duplicates can make changes independently (i.e. in parallel). This synchronization process, by definition, is that each duplicate becomes aware of the changes made by other duplicates. This synchronization function, by its nature, provides many master elements.
Функция синхронизации согласно настоящему изобретению позволяет дубликатам:The synchronization function according to the present invention allows duplicates:
- Определять, о каких изменениях осведомлен другой дубликат;- Determine what changes another duplicate is aware of;
- Запрашивать информацию об изменениях, о которых этот дубликат не знает;- Request information about changes that this duplicate does not know about;
- Передавать информацию об изменениях, о которых не знает другой дубликат;- Transfer information about changes that another duplicate does not know about;
- Определять, когда два изменения конфликтуют друг с другом;- Determine when two changes conflict with each other;
- Применять изменения локально;- Apply changes locally;
- Передавать разрешения конфликтов другим дубликатам, чтобы гарантировать сходимость; и- Transfer conflict resolution to other duplicates to ensure convergence; and
- Разрешать конфликты на основании заданных политик для разрешения конфликтов.- Resolve conflicts based on predefined policies to resolve conflicts.
1. Синхронизация между платформами хранения1. Synchronization between storage platforms
Основное применение сервиса 330 синхронизации платформы хранения, отвечающей настоящему изобретению, состоит в синхронизации множества экземпляров платформы хранения (каждый из которых имеет собственное хранилище данных). Сервис синхронизации действует на уровне схем платформы хранения (а не на более низком уровне таблиц машины 314 базы данных). Так, например, «Границы» используются для определения множеств синхронизации, что рассмотрено ниже.The main application of the storage platform synchronization service 330 of the present invention is to synchronize multiple instances of the storage platform (each of which has its own data store). The synchronization service operates at the level of the storage platform schemas (and not at the lower level of the tables of the database engine 314). So, for example, “Boundaries” are used to define synchronization sets, which is discussed below.
Сервис синхронизации действует по принципу «чистых изменений». Вместо того, чтобы записывать и отправлять отдельные операции (например, с транзакционным дублированием), сервис синхронизации отправляет конечный результат этих операций, таким образом, зачастую объединяя результаты множества операций в единое результирующее изменение.The synchronization service operates on the basis of the “net change” principle. Instead of recording and sending individual operations (for example, with transactional duplication), the synchronization service sends the final result of these operations, thus often combining the results of many operations into a single resultant change.
Сервис синхронизации, в общем случае, не учитывает границы транзакции. Другими словами, если два изменения произведены в хранилище данных платформы хранения в одной транзакции, нет гарантии, что эти изменения применяются ко всем остальным дубликатам атомарно - одно может происходить без другого. Исключением из этого принципа является то, что если два изменения произведены над одной и той же Статьей в одной и той же транзакции, то эти изменения гарантированно направляются и применяются к другим дубликатам атомарно. Таким образом, Статьи являются блоками согласованности для сервиса синхронизации.The synchronization service, in general, does not take into account transaction boundaries. In other words, if two changes are made to the storage platform data warehouse in one transaction, there is no guarantee that these changes apply to all other duplicates atomically - one can happen without the other. An exception to this principle is that if two changes are made to the same Article in the same transaction, then these changes are guaranteed to be sent and applied to other duplicates atomically. Thus, Articles are consistency blocks for a synchronization service.
a) Приложения, управляющие синхронизациейa) Sync management applications
Любое приложение может соединяться с сервисом синхронизации и инициировать операцию синхронизации. Такое приложение обеспечивает все параметры, необходимые для осуществления синхронизации (см. профиль синхронизации ниже). Такие приложения будем называть приложениями, управляющими синхронизацией (ПУС).Any application can connect to a synchronization service and initiate a synchronization operation. Such an application provides all the parameters necessary for synchronization (see the synchronization profile below). Such applications will be referred to as synchronization management applications.
При синхронизации двух экземпляров платформы хранения синхронизация инициируется, с одной стороны, ПУС. Это ПУС предписывает локальной службе синхронизации синхронизироваться с удаленным партнером. С другой стороны, сервис синхронизации активизируется сообщениями, отправленными сервисом синхронизации с машины-отправителя. Он реагирует на основании устойчивой информации конфигурации (см. отображения ниже), имеющейся на машине-получателе. Сервис синхронизации может запускаться по расписанию или в ответ на события. В этих случаях сервис синхронизации, реализующий расписание, становится ПУС.When two instances of the storage platform are synchronized, synchronization is initiated, on the one hand, by the CCP. This CCP instructs the local synchronization service to synchronize with the remote partner. On the other hand, the synchronization service is activated by messages sent by the synchronization service from the sending machine. It responds based on persistent configuration information (see mappings below) available on the receiving machine. The synchronization service can be launched on schedule or in response to events. In these cases, the synchronization service that implements the schedule becomes the CCP.
Для обеспечения синхронизации нужно выполнить два этапа. Во-первых, разработчик схемы должен аннотировать схему платформы хранения надлежащей семантикой синхронизации (указывающей блоки изменения, согласно описанному ниже). Во-вторых, синхронизация должна быть правильно сконфигурирована на всех машинах, имеющих экземпляр платформы хранения, который должен участвовать в синхронизации (согласно описанному ниже).To ensure synchronization, you need to perform two steps. First, the schema designer must annotate the storage platform schema with the appropriate synchronization semantics (indicating change units, as described below). Secondly, synchronization must be correctly configured on all machines that have a storage platform instance that must participate in synchronization (as described below).
b) Аннотация схемыb) Annotation of the scheme
Основной концепцией службы синхронизации является концепция Блока изменения. Блок изменения - это мельчайший фрагмент схемы, который индивидуально отслеживается платформой хранения. Для каждого Блока изменения сервис синхронизации может иметь возможность определять, изменился ли он после последней синхронизации.The main concept of the synchronization service is the concept of the Change Block. A change block is the smallest fragment of a circuit that is individually monitored by the storage platform. For each Change Unit, the synchronization service may be able to determine whether it has changed since the last synchronization.
Указание Блоков изменения в схеме служит нескольким целям. Во-первых, оно определяет, в какой степени сервис синхронизации обменивается информацией. Когда в Блоке изменения производится изменение, Блок изменения целиком отправляется другим дубликатам, поскольку сервис синхронизации не знает, какая часть Блока изменения изменилась. Во-вторых, оно определяет степень дискретизации обнаружения конфликта. Когда два параллельных изменения (эти термины подробно определены в последующих разделах) производятся в одном и том же блоке изменения, сервис синхронизации создает конфликт; с другой стороны, если параллельные изменения производятся в разных блоках изменения, никакой конфликт не создается, и изменения автоматически сливаются. В-третьих, оно сильно влияет на объем метаданных, поддерживаемых системой. Большая часть метаданных сервиса синхронизации поддерживается для каждого Блока изменения; таким образом, чем мельче Блоки изменения, тем больше служебная нагрузка синхронизации.Indication of Change Blocks in a schema serves several purposes. Firstly, it determines the extent to which the synchronization service exchanges information. When a change is made in the Change Block, the entire Change Block is sent to other duplicates, because the synchronization service does not know which part of the Change Block has changed. Secondly, it determines the degree of discretization of conflict detection. When two parallel changes (these terms are described in detail in the following sections) are made in the same change block, the synchronization service creates a conflict; on the other hand, if parallel changes are made in different blocks of change, no conflict is created, and the changes are automatically merged. Thirdly, it greatly affects the amount of metadata supported by the system. Most of the synchronization service metadata is supported for each Change Block; thus, the smaller the blocks of change, the greater the synchronization overhead.
Определение Блоков изменения требует нахождения правильных компромиссов. По этой причине сервис синхронизации позволяет разработчикам схемы участвовать в этом процессе.Defining Change Blocks requires finding the right compromises. For this reason, the synchronization service allows circuit developers to participate in this process.
В одном варианте осуществления сервис синхронизации не поддерживает Блоки изменения, которые больше элемента. Однако, он поддерживает возможность для разработчиков схемы задавать блоки изменения более мелкие, чем элемент, а именно группировать множество атрибутов элемента в отдельный Блок изменения. В этом варианте это осуществляется с использованием следующего синтаксиса:In one embodiment, the synchronization service does not support Change Blocks that are larger than an element. However, it does support the ability for schema developers to specify change blocks that are smaller than the element, namely to group the set of element attributes into a separate Change Block. In this embodiment, this is done using the following syntax:
<Type Name="Appointment" MajorVersion="1" MinorVersion="0"ExtendsType="Base.Item"<Type Name = "Appointment" MajorVersion = "1" MinorVersion = "0" ExtendsType = "Base.Item"
ExtendsVersion="1">ExtendsVersion = "1">
<Field Name="MeetingStatus“ Type="the storageplatformTypes.uniqueidentifier Nullable="False"/><Field Name = "MeetingStatus“ Type = "the storageplatformTypes.uniqueidentifier Nullable =" False "/>
<Field Name="OrganizerName“ Type="the storageplatformTypes.nvarchar(512)" Nullable="False"/><Field Name = "OrganizerName“ Type = "the storageplatformTypes.nvarchar (512)" Nullable = "False" />
<Field Name="OrganizerEmail“ Type="the storageplatformTypes.nvarchar(512)"<Field Name = "OrganizerEmail“ Type = "the storageplatformTypes.nvarchar (512)"
TypeMajorVersion="1“ MultiValued="True"/>TypeMajorVersion = "1“ MultiValued = "True" />
…...
<ChangeUnit Name=”CU_Status”><ChangeUnit Name = ”CU_Status”>
<Field Name=”MeetingStatus”/><Field Name = ”MeetingStatus” />
</ChangeUnit></ChangeUnit>
<ChangeUnit Name=”CU_Organizer”/><ChangeUnit Name = ”CU_Organizer” />
<Field Name=”OrganizerName”/><Field Name = ”OrganizerName” />
<Field Name=”OrganizerEmail”/><Field Name = ”OrganizerEmail” />
</ChangeUnit></ChangeUnit>
…...
</Type></Type>
c) Конфигурация синхронизацииc) Sync configuration
Группа партнеров платформы хранения, которые желают поддерживать определенные части своих данных в синхронизме, называются сообществом синхронизации. Хотя члены сообщества хотят оставаться в синхронизме, им не обязательно представлять данные точно одинаковым образом; другими словами, партнеры по синхронизации могут преобразовывать данные, которые они синхронизируют.A group of storage platform partners who want to keep certain parts of their data in sync are called the synchronization community. Although community members want to stay in sync, they don't have to present the data in exactly the same way; in other words, synchronization partners can convert the data that they synchronize.
В сценарии взаимодействия равноправных сущностей для равноправных сущностей нецелесообразно поддерживать отображения преобразования для всех своих партнеров. Вместо этого сервис синхронизации пользуется подходом, предусматривающим определение “папок сообщества”. Папка сообщества - это абстракция, которая представляет гипотетическую “совместно используемую папку”, с которой синхронизируются все члены сообщества.In a peer entity interaction scenario, it is not practical for peer entities to support transform mappings for all their partners. Instead, the synchronization service takes the approach of defining “community folders”. A community folder is an abstraction that represents a hypothetical “shared folder” with which all community members synchronize.
Это понятие лучше всего проиллюстрировать на примере. Если Джо хочет поддерживать папки «My Documents» нескольких своих компьютеров в синхронизме, он задает папку сообщества под именем, например, «JoesDocuments». Затем на каждом компьютере Джо конфигурирует отображение между гипотетической папкой JoesDocuments и локальной папкой My Documents. После этого когда компьютеры Джо синхронизированы друг с другом, они взаимодействуют в терминах документов в папке JoesDocuments, а не своих локальных статей. Таким образом, все компьютеры Джо понимают друг друга без необходимости знать, кем являются другие - папка сообщества становится лингва-франка сообщества синхронизации.This concept is best illustrated by an example. If Joe wants to keep the My Documents folders of several of his computers in sync, he sets the community folder as, for example, JoesDocuments. Then, on each computer, Joe configures the mapping between the hypothetical JoesDocuments folder and the local My Documents folder. After that, when Joe's computers are synchronized with each other, they interact in terms of documents in the JoesDocuments folder, not their local articles. Thus, all of Joe’s computers understand each other without having to know who the others are — the community folder becomes the lingua franca community synchronization.
Конфигурирование сервиса синхронизации состоит из трех этапов: (1) задание отображений между локальными папками и папками сообщества; (2) задание профилей синхронизации, которые определяют, что синхронизируется (например, кто с кем синхронизируется и какие подмножества нужно передавать, а какие принимать); и (3) задание расписаний, по которым должен запускаться каждый из различных профилей синхронизации, или запуск их вручную.Configuring the synchronization service consists of three stages: (1) defining mappings between local folders and community folders; (2) setting synchronization profiles that determine what is synchronized (for example, who synchronizes with whom and which subsets need to be transmitted and which ones to receive); and (3) defining schedules by which each of the various synchronization profiles should be launched, or launching them manually.
(1) Отображения папки сообщества(1) Community Folder Mappings
Отображения папки сообщества хранятся в файлах конфигурации XML на отдельных машинах. Каждое отображение имеет следующую схему:Community folder mappings are stored in separate XML configuration files. Each mapping has the following scheme:
/mappings/communityFolder/ mappings / communityFolder
Этот элемент присваивает имя папке сообщества, для которой предназначено это отображение. Имя подчиняется правилам синтаксиса для Папок.This item names the community folder for which this mapping is intended. The name obeys the syntax rules for Mailboxes.
/mappings/localFolder/ mappings / localFolder
Этот элемент присваивает имя локальной папке, в которую преобразуется отображение. Имя подчиняется правилам синтаксиса для Папок. Чтобы отображение было действительным, папка уже должна существовать. Благодаря этому отображению статьи в этой паке считаются синхронизированными.This item names the local folder into which the mapping is converted. The name obeys the syntax rules for Mailboxes. For the display to be valid, the folder must already exist. Thanks to this mapping, articles in this pack are considered synchronized.
/mappings/transformations/ mappings / transformations
Этот элемент задает, как преобразовывать статьи из папки сообщества в локальную папку и обратно. Если папка отсутствует или пуста, никаких преобразований не осуществляется. В частности, это значит, что никакие ИД не отображаются. Эта конфигурация в основном полезна для создания кэша Папки.This element defines how to convert articles from the community folder to the local folder and vice versa. If the folder is missing or empty, no conversion is performed. In particular, this means that no IDs are displayed. This configuration is mainly useful for creating a Mailbox cache.
/mappings/transformations/mapIDs/ mappings / transformations / mapIDs
Этот элемент запрашивает, чтобы вновь генерированные локальные ИД были присвоены всем статьям, отображенным из папки сообщества, вместо повторного использования идентификаторов сообщества. Среда выполнения синхронизации будет поддерживать отображения ИД для преобразования статей в обоих направлениях.This element requests that the newly generated local IDs be assigned to all articles displayed from the community folder, instead of reusing community identifiers. The synchronization runtime will support ID mappings for converting articles in both directions.
/mappings/transformations/localRoot/ mappings / transformations / localRoot
Этот элемент запрашивает, чтобы все корневые статьи в папке сообщества были сделаны дочерними по отношению к указанному корню.This element requests that all root articles in the community folder be made child of the specified root.
/mappings/runAs/ mappings / runAs
Этот элемент контролирует, под чьим началом обрабатываются запросы относительно отображения. В случае отсутствия предполагается отправитель.This element controls the basis under which requests for display are processed. In case of absence, the sender is assumed.
/mappings/runAs/sender/ mappings / runAs / sender
Наличие этого элемента указывает, что отправитель сообщений для этого отображения должен быть неперсонифицированным и запросы обрабатываются под его ответственность.The presence of this element indicates that the sender of the messages for this display should be non-personalized and requests are processed under his responsibility.
(2) Профили(2) Profiles
Профиль синхронизации - это полное множество параметров, необходимых для запуска синхронизации. ПУС передает его в среду выполнения синхронизации, чтобы инициализировать синхронизацию. Профили синхронизации для синхронизации между платформами хранения содержат следующую информацию:A synchronization profile is the complete set of parameters needed to start synchronization. The CCP sends it to the synchronization runtime to initiate synchronization. Synchronization profiles for synchronization between storage platforms contain the following information:
- Локальную папку, служащую источником и пунктом назначения для изменений;- A local folder that serves as a source and destination for changes;
- Имя удаленной папки для синхронизации - эта Папка должна быть опубликована от удаленного партнера путем отображения согласно описанному выше;- Name of the remote folder for synchronization - this Folder should be published from the remote partner by displaying as described above;
- Направление - сервис синхронизации поддерживает синхронизацию с возможностью только отправки, только приема и отправки/приема;- Direction - the synchronization service supports synchronization with the ability to only send, only receive and send / receive;
- Локальный фильтр - выбирает, какую локальную информацию отправить удаленному партнеру. Выражается как запрос платформы хранения относительно локальной папки; - Local filter - selects what local information to send to the remote partner. Expressed as a storage platform request for a local folder;
- Удаленный фильтр - выбирает, какую удаленную информацию извлечь из уделенного партнера - выражается как запрос платформы хранения относительно папки сообщества;- Remote filter - selects what remote information to retrieve from the given partner - expressed as a request from the storage platform regarding the community folder;
- Преобразования - задает, как преобразовывать статьи в локальный формат и из локального формата;- Conversions - sets how to convert articles to a local format and from a local format;
- Локальная безопасность - указывает, подлежат ли изменения, извлеченные из удаленной конечной точки, применению по разрешению удаленной конечной точки (неперсонифицированной) или пользователя, инициирующего синхронизацию локально; и- Local security - indicates whether the changes extracted from the remote endpoint are subject to application by permission of the remote endpoint (non-personalized) or the user initiating synchronization locally; and
- Политика разрешения конфликтов - указывает, следует ли конфликты отбрасывать, регистрировать или автоматически разрешать - в последнем случае она указывает, какой механизм разрешения конфликтов использовать, а также параметры конфигурации для него.- Conflict resolution policy - indicates whether conflicts should be dropped, registered or automatically resolved - in the latter case, it indicates which conflict resolution mechanism to use, as well as configuration settings for it.
Сервис синхронизации обеспечивает класс среды выполнения CLR, который обеспечивает возможность простого построения Профилей синхронизации. Профили также можно сериализовать в файлы XML и из них для простого сохранения (часто совместно с расписаниями). Однако в платформе хранения нет стандартного места, где хранятся все профили; ПУС предоставляется возможность построения профиля на месте даже без постоянного его сохранения. Заметим, что для инициирования синхронизации не обязательно иметь локальное отображение. В профиле может быть задана вся информация синхронизации. Однако отображение требуется для ответа на запросы синхронизации, инициированные удаленной стороной.The synchronization service provides a CLR runtime class that provides the ability to easily build synchronization profiles. Profiles can also be serialized to and from XML files for easy storage (often with schedules). However, the storage platform does not have a standard place where all profiles are stored; CCP provides the opportunity to build a profile in place even without its constant conservation. Note that it is not necessary to have a local mapping to initiate synchronization. All synchronization information can be specified in the profile. However, mapping is required to respond to synchronization requests initiated by the remote side.
(3) Расписания(3) Schedules
В одном варианте осуществления сервис синхронизации не обеспечивает свою собственную инфраструктуру диспетчеризации. Вместо этого для осуществления этой задачи он опирается на другой компонент - Windows Scheduler, входящий в состав операционной системы Microsoft Windows. Сервис синхронизации включает в себя утилиту командной строки, которая действует как ПУС и запускает синхронизацию на основании профиля синхронизации, сохраненного в файле XML. Эта утилита весьма упрощает конфигурирование Windows Scheduler для запуска синхронизации либо по расписанию либо в ответ на события, например входа пользователя в систему или его выхода.In one embodiment, the synchronization service does not provide its own scheduling infrastructure. Instead, to accomplish this task, it relies on another component - the Windows Scheduler, which is part of the Microsoft Windows operating system. The synchronization service includes a command line utility that acts as a PCM and starts synchronization based on the synchronization profile stored in the XML file. This utility greatly simplifies the configuration of Windows Scheduler to start synchronization either on a schedule or in response to events, such as a user logging in or logging out.
d) Обработка конфликтовd) Conflict handling
Обработка конфликтов в сервисе синхронизации делится на три стадии: (1) обнаружение конфликта, которое происходит в момент применения изменения - этот этап определяет, можно ли безопасно применить изменение; (2) автоматическое разрешение и регистрация конфликта - на этом этапе (который осуществляется сразу после обнаружения конфликта) обращаются к автоматическим механизмам разрешения конфликтов, чтобы посмотреть, можно ли разрешить конфликт - если нет, конфликт, в необязательном порядке, можно зарегистрировать; и (3) инспектирование и разрешение конфликта - этот этап имеет место, если некоторые конфликты были зарегистрированы, и происходит вне контекста сеанса синхронизации - в это время зарегистрированные конфликты можно разрешить и удалить из журнала.Conflict handling in the synchronization service is divided into three stages: (1) conflict detection that occurs at the time the change is applied - this stage determines whether the change can be applied safely; (2) automatic conflict resolution and registration - at this stage (which is carried out immediately after the conflict is detected), they turn to automatic conflict resolution mechanisms to see if the conflict can be resolved - if not, the conflict can be registered optionally; and (3) inspection and resolution of the conflict - this stage takes place if some conflicts have been registered and occurs outside the context of the synchronization session - at this time the registered conflicts can be resolved and deleted from the log.
(1) Обнаружение конфликта(1) Conflict Detection
В данном вариант осуществления сервис синхронизации обнаруживает два типа конфликтов: на основе знания и на основе ограничения.In this embodiment, the synchronization service detects two types of conflicts: based on knowledge and based on restriction.
(а) Конфликты на основе знания(a) Knowledge-based conflicts
Конфликт на основе знания происходит, когда два дубликата производят независимые изменения в одном и том же Блоке изменения. Два изменения называются независимыми, если они осуществляются без знания друг о друге, иными словами, версия первого не покрывается знанием второго и наоборот. Сервис синхронизации автоматически обнаруживает все такие конфликты, основанные на знании дубликатов, что описано выше.A knowledge-based conflict occurs when two duplicates make independent changes in the same Change Unit. Two changes are called independent if they are made without knowledge of each other, in other words, the version of the first is not covered by knowledge of the second and vice versa. The synchronization service automatically detects all such conflicts based on knowledge of duplicates, as described above.
Иногда полезно рассматривать конфликты как вилки в истории версий для блоков изменения. Если за время жизни блоков изменения не происходит конфликтов, его история версий является простой цепью - каждое изменение происходит после предыдущего. В случае конфликта на основе знания два изменения происходят параллельно, приводя к расщеплению цепи и созданию дерева версий.It is sometimes useful to consider conflicts as forks in version history for change blocks. If during the life of the change blocks there are no conflicts, its version history is a simple chain - each change occurs after the previous one. In the event of a knowledge-based conflict, two changes occur in parallel, leading to a split chain and the creation of a version tree.
(b) Конфликты на основе ограничения(b) Conflict based conflicts
Имеются случаи, когда независимые изменения нарушают ограничение целостности при совместном применении. Например, два дубликата, создающие файл с одним и тем же именем в одной и той же директории, могут привести к возникновению такого конфликта.There are cases where independent changes violate integrity constraints when used together. For example, two duplicates creating a file with the same name in the same directory can cause this conflict.
Конфликт на основе ограничения предусматривает два независимых изменения (совсем как основанное на знании), но они не влияют на один и тот же блок изменения. Вместо этого они влияют на разные блоки изменения, но с ограничением, существующим между ними.A constraint-based conflict involves two independent changes (just like knowledge-based), but they do not affect the same block of change. Instead, they affect different blocks of change, but with the constraint that exists between them.
Сервис синхронизации обнаруживает нарушения ограничений в момент применения изменения и автоматически создает конфликты на основе ограничения. Разрешение конфликтов на основе ограничения обычно требует настроенного кода, который модифицирует изменения таким образом, чтобы не нарушать ограничения. Сервис синхронизации не обеспечивает механизм общего назначения, который осуществляет это.The synchronization service detects constraint violations at the time the change is applied and automatically creates conflicts based on the constraint. Constraint-based conflict resolution usually requires customized code that modifies the changes so as not to violate the constraints. The synchronization service does not provide a general purpose mechanism that implements this.
(2) Обработка конфликта(2) Conflict Handling
При обнаружении конфликта сервис синхронизации может совершать одно из трех действий (выбранных инициатором синхронизации в Профиле синхронизации): (1) отменить изменение, возвратить его отправителю; (2) зарегистрировать конфликт в журнале конфликтов; или (3) автоматически разрешить конфликт.If a conflict is detected, the synchronization service can perform one of three actions (selected by the initiator of synchronization in the Synchronization Profile): (1) cancel the change, return it to the sender; (2) register the conflict in the conflict log; or (3) automatically resolve the conflict.
В случае отмены изменения сервис синхронизации действует так, как если бы изменение не поступало на дубликат. Отправителю направляется отрицательное квитирование. Эта политика разрешения в основном полезна на заголовочных дубликатах (например, файловых серверах), где регистрация конфликтов невозможна. Вместо этого такие дубликаты вынуждают других иметь дело с конфликтами, отбрасывая их.If the change is canceled, the synchronization service acts as if the change did not arrive at the duplicate. A negative acknowledgment is sent to the sender. This resolution policy is mainly useful on header duplicates (for example, file servers) where conflict registration is not possible. Instead, such duplicates force others to deal with conflicts, discarding them.
Инициаторы синхронизации конфигурируют разрешение конфликтов в своих Профилях синхронизации. Сервис синхронизации поддерживает объединение множества механизмов разрешения конфликтов в едином профиле следующими способами: во-первых, определяя список механизмов разрешения конфликтов, которые нужно пробовать один за другим, пока один из них не приведет к успеху; и во-вторых, ассоциируя механизмы разрешения конфликтов с типами конфликтов, например, направляя конфликты на основе знания между обновлениями на один механизм разрешения конфликтов, а все остальные конфликты - в журнал регистрации.Synchronization initiators configure conflict resolution in their Synchronization Profiles. The synchronization service supports combining multiple conflict resolution mechanisms in a single profile in the following ways: firstly, by defining a list of conflict resolution mechanisms that you need to try one by one until one of them leads to success; and secondly, associating conflict resolution mechanisms with types of conflicts, for example, directing conflicts on the basis of knowledge between updates to one conflict resolution mechanism, and all other conflicts to the registration log.
(a) Автоматическое разрешение конфликтов(a) Automatic conflict resolution
Сервис синхронизации обеспечивает ряд принятых по умолчанию механизмов разрешения конфликтов. Этот список включает в себя:The synchronization service provides a number of default conflict resolution mechanisms. This list includes:
- Локальные выигрыши: игнорировать входящие изменения в случае конфликта с локально сохраненными данными;- Local wins: ignore incoming changes in case of conflict with locally stored data;
- Удаленные выигрыши: игнорировать локальные данные в случае конфликта с входящими изменениями;- Remote wins: ignore local data in case of conflict with incoming changes;
- Выигрыши последнего записывающего: выбрать либо локальные выигрыши либо удаленные выигрыши для каждого блока изменения на основании метки времени изменения (заметим, что сервис синхронизации, в общем случае, не опирается на значения часов; этот механизм разрешения конфликтов является единственным исключением из этого правила);- Wins of the last recording: select either local wins or remote wins for each change block based on the change timestamp (note that the synchronization service, in the general case, does not rely on the clock values; this conflict resolution mechanism is the only exception to this rule);
- Детерминистический: выбрать победителя таким образом, чтобы он гарантированно был одинаковым на всех дубликатах, а в противном случае не имел смысла - один вариант осуществления сервисов синхронизации использует лексикографические сравнения ИД партнеров для реализации этой особенности.- Deterministic: choose a winner so that it is guaranteed to be the same on all duplicates, and otherwise it makes no sense - one option for implementing synchronization services uses lexicographic comparisons of partner IDs to implement this feature.
Кроме того, НПП могут реализовывать и устанавливать свои собственные механизмы разрешения конфликтов. Специализированные механизмы разрешения конфликтов могут принимать параметры конфигурации; ПУС должно указывать такие параметры в разделе Разрешение конфликтов Профиля синхронизации.In addition, NPPs can implement and establish their own conflict resolution mechanisms. Specialized conflict resolution mechanisms can accept configuration parameters; The CCP must specify such parameters in the Conflict Resolution section of the Synchronization Profile.
Когда механизм разрешения конфликтов обрабатывает конфликт, он возвращает список операций, которые необходимо выполнить (вместо конфликтующего изменения) обратно в среду выполнения. Затем сервис синхронизации применяет эти операции, принадлежащей настройке удаленного знания, чтобы оно включало в себя то, что учитывается механизмом обработки конфликтов.When the conflict resolution engine processes the conflict, it returns the list of operations that need to be performed (instead of the conflicting change) back to the runtime. Then, the synchronization service applies these operations belonging to the remote knowledge setting so that it includes what is considered by the conflict processing mechanism.
Возможно, что во время применения этого разрешения будет обнаружен другой конфликт. В этом случае новый конфликт должен быть разрешен до возобновления первоначальной обработки.It is possible that another conflict will be detected during the application of this resolution. In this case, a new conflict must be resolved before resuming the initial processing.
При рассмотрении конфликтов как ответвлений в истории версий статьи разрешения конфликтов можно рассматривать как соединения - объединение двух ветвей для образования одной точки. Таким образом, разрешения конфликтов превращают истории версий в ОНГ.When considering conflicts as branches in the history of versions of an article, conflict resolution can be considered as connections — the union of two branches to form one point. In this way, conflict resolution turns version stories into ONG.
(b) Регистрация конфликтов(b) Conflict Records
Очень специфический вид механизма разрешения конфликтов представляет собой Регистратор конфликтов. Сервис синхронизации регистрирует конфликты как Статьи типа ConflictRecord. Эти записи связываются со статьями, находящимися в конфликте (если сами статьи не удалены). Каждая запись конфликта содержит: входящее изменение, вызвавшее конфликт; тип конфликта: обновление-обновление, обновление-удаление, удаление-обновление, вставка-вставка или ограничение; и версию входящего изменения и знание отправившего его дубликата. Зарегистрированные конфликты доступны для инспектирования и разрешения согласно описанному выше.A very specific type of conflict resolution mechanism is the Conflict Recorder. The synchronization service registers conflicts as Articles of type ConflictRecord. These entries are linked to articles in conflict (unless the articles themselves are deleted). Each conflict record contains: an incoming change that caused the conflict; type of conflict: update-update, update-delete, delete-update, insert-insert or restriction; and the version of the incoming change and the knowledge of the duplicate that sent it. Registered conflicts are available for inspection and resolution as described above.
(c) Инспектирование и разрешение конфликтов(c) Inspection and resolution of conflicts
Сервис синхронизации обеспечивает API для приложений, чтобы проверять журнал конфликтов и предлагать разрешения указанных в нем конфликтов. API позволяет приложению перечислять все конфликты или конфликты, относящиеся к данной Статье. Он также позволяет таким приложениям разрешать зарегистрированные конфликты одним из трех способов: (1) удаленные выигрыши - прием зарегистрированного изменения и переписывание конфликтующего локального изменения; (2) локальные выигрыши - игнорирование конфликтующих частей зарегистрированного изменения; и (3) предложение нового изменения - когда приложение предлагает слияние, которое, по его мнению, разрешает конфликт. После того как конфликты разрешены приложением, сервис синхронизации удаляет их из журнала.The synchronization service provides an API for applications to check the conflict log and offer resolutions to the conflicts specified in it. The API allows the application to list all conflicts or conflicts related to this Article. It also allows such applications to resolve recorded conflicts in one of three ways: (1) remote wins — receiving a registered change and rewriting a conflicting local change; (2) local wins - ignoring the conflicting parts of the registered change; and (3) proposing a new change - when the application proposes a merger, which, in its opinion, resolves the conflict. After the conflicts are resolved by the application, the synchronization service removes them from the log.
(d) Сходимость дубликатов и распространение разрешений конфликтов(d) Convergence of duplicates and distribution of conflict resolution
В сложных сценариях синхронизации один и тот же конфликт может быть обнаружен на множестве дубликатов. Если это происходит, может иметь место следующее: (1) конфликт может быть разрешен на одном дубликате, и разрешение направлено на другой; (2) конфликт автоматически разрешается на обоих дубликатах; или (3) конфликт разрешается на обоих дубликатах вручную (через API инспектирования конфликтов).In complex synchronization scenarios, the same conflict can be detected on multiple duplicates. If this occurs, the following may occur: (1) the conflict can be resolved on one duplicate, and the resolution is directed to another; (2) the conflict is automatically resolved on both duplicates; or (3) a conflict is resolved manually on both duplicates (via the Conflict Inspection API).
Чтобы гарантировать сходимость, сервис синхронизации пересылает разрешения конфликтов на другие дубликаты. Когда изменение, разрешающее конфликт, поступает на дубликат, сервис синхронизации автоматически находит в журнале записи любых конфликтов, которые разрешаются этим обновлением, и исключает их. В этом смысле разрешение конфликта на одном дубликате связано со всеми остальными дубликатами.To ensure convergence, the synchronization service forwards conflict resolution to other duplicates. When a change resolving the conflict arrives at a duplicate, the synchronization service automatically finds in the log records of any conflicts that are resolved by this update and excludes them. In this sense, conflict resolution on one duplicate is associated with all other duplicates.
Если для одного и того же конфликта разные дубликаты выбирают разных победителей, то сервис синхронизации применяет принцип связывания разрешений конфликта и выбирает одно из двух разрешений, которое автоматически выигрывает перед другим. Победитель выбирается детерминистически, что гарантированно приводит к одним и тем же результатам каждый раз (один вариант осуществления использует лексикографические сравнения ИД дубликатов).If different duplicates choose different winners for the same conflict, then the synchronization service applies the principle of linking conflict resolutions and selects one of two resolutions that automatically wins the other. The winner is determined deterministically, which is guaranteed to lead to the same results each time (one embodiment uses lexicographic comparisons of duplicate IDs).
Если для одного и того же конфликта разные дубликаты предлагают разные «новые изменения», то сервис синхронизации обрабатывает этот новый конфликт как особый конфликт и использует Регистратор конфликтов для предотвращения его распространения на другие дубликаты. Такая ситуация обычно возникает при разрешении конфликта вручную.If different duplicates offer different “new changes” for the same conflict, the synchronization service processes this new conflict as a special conflict and uses the Conflict Recorder to prevent it from spreading to other duplicates. This situation usually occurs when the conflict is resolved manually.
2. Синхронизация с хранилищами данных платформы без хранения2. Synchronization with platform data warehouses without storage
Согласно одному аспекту платформы хранения, отвечающей настоящему изобретению, платформа хранения обеспечивает архитектуру для НПП для реализации Адаптеров синхронизации, которые позволяют платформе хранения синхронизироваться такими известными системами, как Microsoft Exchange, AD, Hotmail и пр. Адаптеры синхронизации пользуются многими Услугами синхронизации, предоставляемыми сервисом синхронизации, как описано ниже.According to one aspect of the storage platform of the present invention, the storage platform provides an architecture for NPPs to implement Synchronization Adapters that allow the storage platform to synchronize with well-known systems such as Microsoft Exchange, AD, Hotmail, etc. Synchronization adapters use many of the Sync Services provided by the synchronization service. as described below.
Несмотря на название, Адаптеры синхронизации не обязательно реализовать как модули, внедряемые в некоторую архитектуру платформы хранения. При желании, “адаптером синхронизации” может быть просто любое приложение, которое использует интерфейсы среды выполнения сервиса синхронизации для получения таких услуг, как перечисление и применение изменений.Despite its name, Sync Adapters do not have to be implemented as modules that are embedded in some storage platform architecture. If desired, the “synchronization adapter” can simply be any application that uses the interfaces of the synchronization service runtime to receive services such as enumeration and application of changes.
Чтобы другим было проще конфигурировать и запускать синхронизацию с данной машиной базы данных, предпочтительно, чтобы создатели Адаптеров синхронизации представляли стандартный интерфейс Адаптера синхронизации, который запускает синхронизацию с учетом Профиля синхронизации, как описано выше. Профиль предоставляет адаптеру информацию конфигурации, часть которой адаптеры передают среде выполнения синхронизации для управления сервисами среды выполнения (например, Папка, подлежащая синхронизации).To make it easier for others to configure and start synchronization with this database machine, it is preferable that the creators of the Synchronization Adapters present the standard interface of the Synchronization Adapter, which starts synchronization based on the Synchronization Profile, as described above. The profile provides the adapter with configuration information, part of which the adapters pass to the synchronization runtime to manage the services of the runtime (for example, the folder to be synchronized).
a) Услуги синхронизацииa) Sync services
Сервис синхронизации предоставляет создателям адаптеров ряд услуг синхронизации. Для оставшейся части этого раздела удобно называть машину, на которой платформа хранения осуществляет синхронизацию, «клиентом», а машину базы данных платформы без хранения - «сервером».The synchronization service provides a number of synchronization services to the creators of adapters. For the remainder of this section, it is convenient to name the machine on which the storage platform synchronizes as “client”, and the platform database machine without storage as “server”.
(1) Перечисление изменений(1) Listing Changes
На основании данных отслеживания изменений, которыми манипулирует сервис синхронизации, Перечисление изменений позволяет адаптерам синхронизации легко перечислять изменения, произошедшие в Папке хранилища данных с того времени, как последний раз была предпринята попытка синхронизации с этим партнером.Based on the change tracking data that the synchronization service manipulates, Change enumeration allows synchronization adapters to easily list changes that have occurred in the Data Warehouse Folder since the last time an attempt was made to synchronize with this partner.
Изменения перечисляются на основании концепции «анкера» - непрозрачной структуры, которая представляет информацию о последней синхронизации. Анкер принимает форму Знания платформы хранения согласно описанному в следующих разделах. Адаптеры синхронизации, использующие услуги перечисления изменений, делятся на две обширные категории: те, которые используют «сохраненные анкеры», и те, которые используют «подаваемые анкеры».Changes are listed based on the concept of an “anchor” - an opaque structure that represents information about the latest synchronization. Anchor takes the form of Knowledge storage platform as described in the following sections. Sync adapters using change enumeration services fall into two broad categories: those that use “saved anchors” and those that use “feed anchors”.
Разница состоит в том, где хранится информация о последней синхронизации - на клиенте или на сервере. Адаптерам часто проще хранить эту информацию на клиенте - машина базы данных часто неспособна с удобством сохранять эту информацию. С другой стороны, если множество клиентов синхронизируются с одной и той же машиной базы данных, сохранение этой информации на клиенте неэффективно и в некоторых случаях некорректно - один клиент может не знать об изменениях, которые другой клиент уже протолкнул на сервер. Если адаптер хочет использовать анкер серверного хранения, то адаптеру нужно подать его обратно на платформу хранения во время перечисления изменений.The difference is where the information about the last synchronization is stored - on the client or on the server. Adapters are often easier to store this information on the client - the database machine is often unable to conveniently store this information. On the other hand, if many clients are synchronized with the same database machine, storing this information on the client is inefficient and in some cases incorrect - one client may not be aware of changes that another client has already pushed to the server. If the adapter wants to use the server storage anchor, then the adapter needs to submit it back to the storage platform during the transfer of changes.
Чтобы платформа хранения поддерживала анкер (либо для локального либо для удаленного хранения), платформе хранения должно быть известно об изменениях, успешно примененных на сервере. Эти и только эти изменения могут быть включены в анкер. В ходе перечисления изменений Адаптеры синхронизации используют интерфейс квитирования, чтобы сообщать, какие изменения успешно применены. В конце синхронизации адаптеры, использующие поданные анкеры, должны считывать новый анкер (который включает в себя все успешно примененные изменения) и передавать их своей машине базы данных.For the storage platform to support the anchor (either for local or remote storage), the storage platform must be aware of the changes that have been successfully applied to the server. These and only these changes can be included in the anchor. When enumerating changes, Sync Adapters use an acknowledgment interface to report which changes have been successfully applied. At the end of synchronization, adapters using submitted anchors must read a new anchor (which includes all successfully applied changes) and transfer them to their database machine.
Зачастую адаптерам приходится сохранять данные, относящиеся к адаптеру, совместно со статьями, которые представляют для них интерес, в хранилище данных платформы хранения. Общими примерами таких данных являются удаленные ИД и удаленные версии (метки времени). Служба синхронизации обеспечивает механизм хранения этих данных, и Перечисление изменений обеспечивает механизм приема этих дополнительных данных совместно с возвращаемыми изменениями. Это в большинстве случаев исключает необходимость для адаптеров в повторном запрашивании базы данных.Often, adapters have to store data related to the adapter, together with articles of interest to them, in the storage platform data warehouse. Common examples of such data are remote IDs and remote versions (timestamps). The synchronization service provides a mechanism for storing this data, and enumeration of changes provides a mechanism for receiving this additional data together with the returned changes. This in most cases eliminates the need for adapters to re-query the database.
(2) Применение изменений(2) Application of changes
Применение изменений позволяет Адаптерам синхронизации применять изменения, принятые от их машины базы данных, к локальным платформам хранения. Адаптеры выполняются для преобразования изменений в схему платформы хранения. На фиг.24 проиллюстрирован процесс, посредством которого из схемы платформы хранения генерируются классы API платформы хранения.Applying changes allows Sync Adapters to apply the changes received from their database machine to local storage platforms. Adapters are implemented to convert changes to the storage platform schema. 24 illustrates a process by which storage platform API classes are generated from a storage platform diagram.
Основная функция применения изменений состоит в автоматическом обнаружении конфликтов. Как и в случае синхронизации между Платформами хранения, конфликт определяется как два перекрывающихся изменения, произведенных без знания друг о друге. Когда адаптеры используют Применение изменений, они должны указывать анкер по отношению к которому осуществляется обнаружение конфликта. Применение изменений создает конфликт в случае обнаружения перекрывающегося локального изменения, не покрытого знанием адаптера. По аналогии с Перечислением изменений адаптеры могут использовать либо сохраненные либо подаваемые анкеры. Применение изменений поддерживает эффективное сохранение метаданных, относящихся к адаптеру. Такие данные могут присоединяться адаптером к применяемым изменениям и могут сохраняться сервисом синхронизации. Данные могут возвращаться при следующем перечислении изменений.The main function of applying changes is to automatically detect conflicts. As with synchronization between Storage Platforms, a conflict is defined as two overlapping changes made without knowledge of each other. When adapters use Apply Changes, they must indicate the anchor with respect to which conflict detection is being carried out. Applying changes creates a conflict if an overlapping local change is detected that is not covered by the knowledge of the adapter. By analogy with enumeration of changes, adapters can use either stored or supplied anchors. Applying changes supports the efficient storage of metadata related to the adapter. Such data can be attached by the adapter to the applied changes and can be saved by the synchronization service. Data may be returned the next time the change is listed.
(3) Разрешение конфликтов(3) Conflict Resolution
Описанные выше механизмы Разрешения конфликтов (опции регистрации и автоматического разрешения) доступны также и адаптерам синхронизации. Адаптеры синхронизации могут определять стратегию разрешения конфликтов при применении изменений. После определения конфликты могут передаваться указанному манипулятору конфликтов и разрешаться (если возможно). Конфликты также могут регистрироваться. Возможно, что адаптер может обнаруживать конфликт при попытке применения локального изменения к машине базы данных. В этом случае адаптер может по-прежнему передавать конфликт среде выполнения синхронизации для его разрешения в соответствии со стратегией. Кроме того, Адаптеры синхронизации могут запрашивать, чтобы любые конфликты, обнаруженные сервисом синхронизации, передавались им обратно для обработки. Это особенно удобно в случае, когда машина базы данных способна сохранять или разрешать конфликты.The conflict resolution mechanisms described above (registration and automatic resolution options) are also available for synchronization adapters. Sync adapters can define a conflict resolution strategy when applying changes. Once defined, conflicts can be transmitted to the specified conflict manipulator and resolved (if possible). Conflicts can also be logged. It is possible that the adapter might detect a conflict when trying to apply a local change to the database machine. In this case, the adapter may still transmit the conflict to the synchronization runtime to resolve it in accordance with the strategy. In addition, Synchronization Adapters may request that any conflicts detected by the synchronization service be sent back to them for processing. This is especially useful when the database engine is capable of storing or resolving conflicts.
b) Реализация адаптераb) adapter implementation
Хотя некоторые «адаптеры» являются просто приложениями, использующими интерфейсы среды выполнения, предпочтительно, чтобы адаптеры реализовали стандартные интерфейсы адаптера. Эти интерфейсы позволяют Приложениям, управляющим синхронизацией, запрашивать, чтобы адаптер осуществлял синхронизацию согласно данному Профилю синхронизации; отменял действующую синхронизацию; и принимал отчет о ходе выполнения (процент выполнения) для действующей синхронизации.Although some “adapters” are just applications that use runtime interfaces, it is preferable that the adapters implement standard adapter interfaces. These interfaces allow synchronization management applications to request that the adapter synchronize according to this synchronization profile; canceled the current synchronization; and received a progress report (percentage of completion) for the current synchronization.
3. Безопасность3. Security
Сервис синхронизации стремится как можно меньше изменять модель безопасности, реализованную платформой хранения. Вместо того чтобы определять новые права на синхронизацию, используются существующие права. В частности,The synchronization service seeks to change the security model implemented by the storage platform as little as possible. Instead of defining new synchronization rights, existing rights are used. In particular,
- Всякий, кто может читать Статью хранилища данных, может перечислять изменения для этой статьи;- Anyone who can read the Data Warehouse Article can list the changes for this article;
- Всякий, кто может записывать в Статью хранилища данных, может применять изменения к этой Статье; и- Anyone who may record in a Data Warehouse Article may apply changes to this Article; and
- Всякий, кто может расширять Статью хранилища данных, может ассоциировать с этой статьей метаданные синхронизации.- Anyone who can expand a Data Warehouse Article can associate synchronization metadata with this Article.
Сервис синхронизации не поддерживает защищенную информацию авторства. Когда изменения производятся на дубликате A пользователем U и пересылаются дубликату B, тот факт, что изменение первоначально произведено на А (или произведено U), утрачивается. Если В пересылает это изменение дубликату C, это производится от имени В, а не от имени А. Это приводит к следующему ограничению: если дубликату не доверено делать свои собственные изменения в статье, он не может пересылать изменения, сделанные другими.The synchronization service does not support protected authorship information. When changes are made to duplicate A by user U and sent to duplicate B, the fact that the change was originally made to A (or made U) is lost. If B forwards this change to duplicate C, this is done on behalf of B and not on behalf of A. This leads to the following restriction: if the duplicate is not trusted to make its own changes to the article, it cannot forward the changes made by others.
При инициировании сервиса синхронизации это делается Приложением, управляющим синхронизацией. Сервис синхронизации имитирует идентификацию ПУС и осуществляет все операции (как локально, так и удаленно) от его имени. Для примера заметим, что пользователь U не может заставить локальный сервис синхронизации извлечь изменения из удаленной платформы хранения для статей, к которым пользователь U не имеет доступа для чтения.When initiating the synchronization service, this is done by the Application that manages the synchronization. The synchronization service imitates the identification of the CCP and performs all operations (both locally and remotely) on its behalf. As an example, note that user U cannot force the local synchronization service to retrieve changes from the remote storage platform for articles to which user U does not have read access.
4. Управляемость4. Manageability
Контроль распределенной общности дубликатов является сложной проблемой. Сервис синхронизации может использовать алгоритм «заметания» для сбора и распределения информации о статусе дубликатов. Свойства алгоритма заметания гарантируют, что информация обо всех сконфигурированных дубликатах в конечном счете будет собрана и что сбойные (неотвечающие) дубликаты будут обнаружены.Controlling the distributed commonality of duplicates is a complex problem. The synchronization service can use the “sweep” algorithm to collect and distribute information about the status of duplicates. The properties of the sweeping algorithm ensure that information about all configured duplicates is ultimately collected and that bad (non-responding) duplicates are detected.
Эта информация контроля в масштабах сообщества делается доступной на каждом дубликате. Инструменты контроля можно запускать на произвольно выбранном дубликате, чтобы проверять эту информацию контроля и принимать административные решения. Любые изменения конфигурации должны производиться непосредственно на задействованных дубликатах.This community-wide control information is made available on every duplicate. Control tools can be run on a randomly selected duplicate to verify this control information and make administrative decisions. Any configuration changes must be made directly to the duplicates involved.
J. Возможность взаимодействия с традиционной файловой системойJ. Interoperability with a traditional file system
Согласно отмеченному выше платформа хранения, отвечающая настоящему изобретению, согласно, по меньшей мере, некоторым вариантам осуществления реализована как неотъемлемая часть системы аппаратно-программного интерфейса компьютерной системы. Например, платформа хранения, отвечающая настоящему изобретению, может быть реализована как неотъемлемая часть операционной системы, например, семейства операционных систем Microsoft Windows. В этом случае API платформы хранения становится частью API операционной системы, посредством которых прикладные программы взаимодействуют с операционной системой. Таким образом, платформа хранения становится средством, с помощью которого прикладные программы сохраняют информацию в операционной системе, и, следовательно, модель данных, основанная на статьях, платформы хранения заменяет традиционную файловую систему такой операционной системы. Например, будучи реализованной в семействе операционных систем Microsoft Windows, платформа хранения может заменить файловую систему NTFS, реализованную в этой операционной системе. В настоящее время прикладные программы обращаются к службам файловой системы NTFS через API Win32, представляемые семейством операционных систем Windows.According to the aforementioned storage platform of the present invention, according to at least some embodiments, is implemented as an integral part of a hardware-software interface system of a computer system. For example, a storage platform in accordance with the present invention can be implemented as an integral part of an operating system, for example, the Microsoft Windows family of operating systems. In this case, the storage platform API becomes part of the operating system API through which applications interact with the operating system. Thus, the storage platform becomes the means by which application programs store information in the operating system, and therefore, the data model based on the articles of the storage platform replaces the traditional file system of such an operating system. For example, being implemented in the Microsoft Windows family of operating systems, the storage platform can replace the NTFS file system implemented in this operating system. Currently, applications access NTFS file system services through the Win32 API, represented by the Windows operating system family.
Однако осознавая, что полная замена файловой системы NTFS платформой хранения, отвечающей настоящему изобретению, потребует записи существующих прикладных программ на основе Win32, и что такая запись может быть нежелательна, было бы предпочтительно, чтобы платформа хранения, отвечающая настоящему изобретению, обеспечивала некоторую возможность взаимодействия с существующими файловыми системами, например NTFS. Поэтому в одном варианте осуществления настоящего изобретения платформа хранения позволяет прикладным программам, которые опираются на программную модель Win32, обращаться к содержимому хранилища данных как платформы хранения, так и традиционной файловой системы NTFS. Для этого платформа хранения использует соглашение по присвоению имен, которое является супермножеством соглашений по присвоению имен Win32, для облегчения возможности взаимодействия. Кроме того, платформа хранения поддерживает доступ к файлам и директориям, хранящимся в томе платформы хранения, через API Win32.However, recognizing that a complete replacement of the NTFS file system by the storage platform of the present invention will require recording of existing Win32-based applications, and that such recording may be undesirable, it would be preferable that the storage platform of the present invention provides some interoperability with existing file systems, such as NTFS. Therefore, in one embodiment of the present invention, the storage platform allows applications that rely on the Win32 programming model to access the contents of the data storage of both the storage platform and the traditional NTFS file system. For this, the storage platform uses a naming convention, which is a superset of Win32 naming conventions, to facilitate interoperability. In addition, the storage platform supports access to files and directories stored in the volume of the storage platform through the Win32 API.
Дополнительные подробности, касающиеся этой функции, можно найти в родственных заявках, включенных в настоящее описание посредством ссылки.Further details regarding this feature can be found in related applications incorporated herein by reference.
К. API платформы храненияK. Storage Platform API
Платформа хранения содержит API, который позволяет прикладным программам обращаться к особенностям и возможностям платформы хранения, рассмотренным выше, и обращаться к статьям, хранящимся в хранилище данных. В этом разделе описан один вариант осуществления API платформы хранения для платформы хранения, отвечающей настоящему изобретению. Подробности, касающиеся этой функции, можно найти в родственных заявках, включенных в настоящее описание посредством ссылки, но для удобства часть этой информации кратко приведена ниже.The storage platform contains an API that allows applications to access the features and capabilities of the storage platform discussed above and access articles stored in the data warehouse. This section describes one embodiment of a storage platform API for a storage platform of the present invention. Details regarding this feature can be found in related applications incorporated herein by reference, but for convenience, some of this information is summarized below.
Согласно фиг.18 папка Включения является статьей, которая содержит отношения поддержания с другими Статьями, и является эквивалентом общего понятия папки файловой системы. Каждая Статья «содержится» в, по меньшей мере, одной папке включения.According to FIG. 18, the Inclusion folder is an article that contains maintaining relationships with other Articles, and is equivalent to the general concept of a file system folder. Each Article is “contained” in at least one inclusion folder.
Фиг.19 иллюстрирует базовую архитектуру API платформы хранения, согласно данному варианту осуществления. API платформы хранения использует SQLClient 1900 для общения с локальным хранилищем 302 данных и может также использовать SQLClient 1900 для общения с удаленными хранилищами данных (например, хранилищем данных 340). Локальное хранилище 302 также может общаться с удаленным хранилищем 340 данных либо с использованием РПЗ (распределенным процессором запросов) либо через вышеописанный сервис синхронизации платформы хранения. API 322 платформы хранения также действует как мостовой API для уведомлений хранилища данных, передавая подписки приложения машине 332 уведомлений и маршрутизируя уведомления к приложению (например, приложению 350a, 350b или 350c), что также описано выше. В одном варианте осуществления API 322 платформы хранения может также задавать ограниченную архитектуру «поставщика», что позволяет ему обращаться к данным в Microsoft Exchange и AD.FIG. 19 illustrates a basic architecture of a storage platform API according to this embodiment. The storage platform API uses the
На фиг.20 схематически представлены различные компоненты API платформы хранения. API платформы хранения состоит из следующих компонентов: (1) классов 2002 данных, которые представляют типы элементов и статей платформы хранения, (2) структуры 2004 среды выполнения, которая управляет сохранением объектов и обеспечивает поддержку классов 2006; и (3) инструменты 2008, которые используются для генерации классов CLR из схем платформы хранения.20 schematically illustrates various components of a storage platform API. The storage platform API consists of the following components: (1)
Иерархия классов, получающаяся из данной схемы, непосредственно отражает иерархию типов в этой схеме. Для примера рассмотрим типы Статьи, определенные в схеме «контакты», показанные на фиг.21А и фиг.21В.The class hierarchy resulting from this schema directly reflects the type hierarchy in this schema. As an example, consider the types of Articles defined in the "contacts" diagram shown in figa and figv.
Фиг.22 иллюстрирует структуру среды выполнения в действии. Структура среды выполнения действует следующим образом:Fig.22 illustrates the structure of the runtime in action. The runtime structure acts as follows:
1. Приложение 350a, 350b или 350c связывается со статьей в платформе хранения.1. The
2. Структура 2004 создает объект 2202 ItemContext, соответствующий статье границы и возвращает его приложению.2.
3. Приложение применяет Find к этому ItemContext, чтобы получить коллекцию Статей; возвращенная коллекция концептуально является графом 2204 объектов (в силу отношений).3. The application applies Find to this ItemContext to get a collection of Articles; the returned collection is conceptually a graph of 2204 objects (by virtue of relations).
4. Приложение изменяет, удаляет и вставляет данные.4. The application modifies, deletes and inserts data.
5. Приложение сохраняет изменения, вызывая метод Update().5. The application saves the changes by calling the Update () method.
Фиг.23 иллюстрирует выполнение операции “FindAll”.23 illustrates the execution of the “FindAll” operation.
Фиг.24 иллюстрирует процесс, посредством которого классы API платформы хранения генерируются из схемы платформы хранения.24 illustrates the process by which storage platform API classes are generated from a storage platform diagram.
Фиг.25 иллюстрирует схему, на которой базируется API файлов. API платформы хранения включает в себя пространство имен отработки объектов файлов. Это пространство имен называется System.Storage.Files. Данные - члены классов в System.Storage.Files непосредственно отражают информацию, хранящуюся в хранилище платформы хранения; эта информация «продвигается» из объектов файловой системы или может создаваться внутренне с использованием API Win32. Пространство имен System.Storage.Files имеет два класса: FileItem и DirectoryItem. Члены этих классов и их методы можно представить себе, взглянув на схему, изображенную на фиг.25. FileItem и DirectoryItem можно только считывать из API платформы хранения. Чтобы изменять их, нужно использовать API Win32 или классы в System.IO.25 illustrates a diagram on which the file API is based. The storage platform API includes a namespace for file processing objects. This namespace is called System.Storage.Files. Data - members of classes in System.Storage.Files directly reflect the information stored in the storage platform storage; this information is “pushed” from file system objects or can be created internally using the Win32 API. The System.Storage.Files namespace has two classes: FileItem and DirectoryItem. The members of these classes and their methods can be imagined by looking at the diagram depicted in Fig.25. FileItem and DirectoryItem can only be read from the storage platform API. To change them, you need to use the Win32 API or classes in System.IO.
Что касается API, программный интерфейс (или просто интерфейс) можно рассматривать как любой механизм, процесс, протокол, позволяющий одному или нескольким сегменту(ам) кода связываться или обращаться к функциям, обеспечиваемым одним или несколькими другим(и) сегментом(ами) кода. Альтернативно программный интерфейс можно рассматривать как один или несколько механизм(ов), метод(ов), функциональный(х) вызов(ов), модуль(ей), объект(ов) и т.д. компонента системы, способных общаться с одним или несколькими механизм(ами), метод(ами), функциональный(ыми) вызов(ами), модуль(ями), объект(ами) и т.д. другого(их) компонента(ов). Термин «сегмент кода» в предыдущем предложении призван включать в себя одну или несколько команд или строк кода и включает в себя, например, модули кода, объекты, подпрограммы, функции и т.д. независимо от применяемой терминологии или от того, компилированы ли сегменты кода по отдельности, или обеспечены ли сегменты кода как исходный, промежуточный или объектный код, используются ли сегменты кода в системе среды выполнения или в процессе, или размещены ли они на одной и той же или разных машинах или распределены по множеству машин, или являются ли функциональные возможности, представленные сегментами кода, реализованными полностью программными средствами, полностью аппаратными средствами или комбинацией аппаратных и программных средств.As for the API, a program interface (or just an interface) can be considered as any mechanism, process, protocol that allows one or more segments (s) of code to communicate or access functions provided by one or more other (s) segment (s) of code. Alternatively, a program interface can be considered as one or more mechanism (s), method (s), functional (x) call (s), module (s), object (s), etc. a component of a system capable of communicating with one or more mechanism (s), method (s), functional call (s), module (s), object (s), etc. other component (s). The term "code segment" in the previous sentence is intended to include one or more commands or lines of code and includes, for example, code modules, objects, subprograms, functions, etc. regardless of the terminology used or whether the code segments are separately compiled, or whether the code segments are provided as source, intermediate or object code, whether the code segments are used in the runtime system or in the process, or whether they are located on the same or different machines or distributed across multiple machines, or are the functionality represented by code segments implemented entirely in software, completely in hardware, or a combination of hardware and software mm means.
Примечательно, что программный интерфейс можно рассматривать в общем виде, как показано на фиг.30А или фиг.30В. Фиг.30А иллюстрирует интерфейс Интерфейс1 как канал, через который сообщаются первый и второй сегменты кода. Фиг.30В иллюстрирует интерфейс как содержащий объекты интерфейса I1 и I2 (которые могут быть или не быть частью первого и второго сегментов кода), что позволяет первому и второму сегментам кода системы сообщаться между собой через среду М. Согласно фиг.30В объекты интерфейса I1 и I2 можно рассматривать как отдельные интерфейсы одной и той же системы, и можно также считать, что объекты I1 и I2 плюс среда М образуют интерфейс. Хотя на фиг.30A и 30B показан двунаправленный поток и интерфейсы по обе стороны потока, определенные реализации могут иметь информационный поток только в одном направлении (или вообще не иметь информационного потока, как описано ниже) или могут иметь объект интерфейса только с одной стороны. В порядке примера, но не ограничения, такие термины, как программный интерфейс приложения (API), точка ввода, метод, функция, подпрограмма, вызов удаленной процедуры и интерфейс модели компонентных объектов (COM) подпадают под определение программного интерфейса.It is noteworthy that the program interface can be considered in general terms, as shown in figa or figv. Figa illustrates the interface Interface1 as a channel through which the first and second code segments are communicated. FIG. 30B illustrates an interface as containing interface objects I1 and I2 (which may or may not be part of the first and second code segments), which allows the first and second code segments of the system to communicate with each other through the medium M. FIG. 30B illustrates interface objects I1 and I2 can be considered as separate interfaces of the same system, and we can also assume that the objects I1 and I2 plus environment M form an interface. Although FIGS. 30A and 30B show a bi-directional stream and interfaces on both sides of a stream, certain implementations may have an information stream in only one direction (or may not have an information stream as described below) or may have an interface object on one side only. By way of example, but not limitation, terms such as the application programming interface (API), entry point, method, function, subroutine, remote procedure call, and component object model (COM) interface fall within the definition of a program interface.
Аспекты такого программного интерфейса могут включать в себя метод, посредством которого первый сегмент кода передает информацию (где «информация» используется в самом широком смысле и включает в себя данные, команды, запросы и пр.) второму сегменту кода; метод, посредством которого второй сегмент кода принимает информацию; и структуру, последовательность, синтаксис, организацию, схему, хронирование и содержимое информации. В этой связи сама по себе базовая транспортная среда может быть не важна для работы интерфейса, а именно, является ли среда проводной или беспроводной или комбинацией обеих, поскольку способ транспортировки информации определяется интерфейсом. В определенных ситуациях информация может не передаваться в одном или обоих направлениях в традиционном смысле, поскольку перенос информации может либо осуществляться через другой механизм (например, информация, помещенная в буфер, файл и т.д. отдельно от информационного потока между сегментами кода) либо не существовать, например, когда один сегмент кода просто обращается к функциям, осуществляемым вторым сегментом кода. Какие-либо или все из этих аспектов могут быть важны в данной ситуации, например, в зависимости от того, являются ли сегменты кода частью системы в свободно связанной или тесно связанной конфигурации, и потому этот список следует рассматривать в порядке иллюстрации, но не ограничения.Aspects of such a programming interface may include a method by which the first code segment transmits information (where “information” is used in its broadest sense and includes data, commands, queries, etc.) to the second code segment; a method by which a second code segment receives information; and the structure, sequence, syntax, organization, scheme, timing, and content of information. In this regard, the underlying transport medium itself may not be important for the operation of the interface, namely, whether the environment is wired or wireless or a combination of both, since the method of transporting information is determined by the interface. In certain situations, information may not be transmitted in one or both directions in the traditional sense, since information can be transferred through another mechanism (for example, information placed in a buffer, file, etc. separately from the information flow between code segments) or not exist, for example, when one code segment simply accesses the functions performed by the second code segment. Any or all of these aspects may be important in this situation, for example, depending on whether the code segments are part of the system in a loosely coupled or tightly coupled configuration, and therefore this list should be considered as an illustration, but not limitation.
Это понятие программного интерфейса известно специалистам в данной области и поясняется в вышеизложенном подробном описании изобретения. Однако возможны и другие способы реализации программного интерфейса, которые, если явно не исключены, охватываются формулой изобретения, приведенной в конце этого описания изобретения. Такие другие способы могут показаться более изощренными или сложными, чем упрощенный вид на фиг.30А и 30В, но они, тем не менее, осуществляют аналогичную функцию для достижения того же общего результата. Ниже кратко описаны некоторые альтернативные реализации программного интерфейса.This concept of a software interface is known to those skilled in the art and is explained in the foregoing detailed description of the invention. However, there are other possible ways of implementing the software interface, which, if not explicitly excluded, are covered by the claims at the end of this description of the invention. Such other methods may seem more sophisticated or complex than the simplified view of FIGS. 30A and 30B, but they nevertheless perform a similar function to achieve the same overall result. Some alternative implementations of the software interface are briefly described below.
Разложение: Связь от одного сегмента кода к другому может осуществляться косвенно, путем разбиения канала связи на несколько дискретных каналов связи. Это схематически изображено на фиг.31А и 31В. Показано, что некоторые интерфейсы можно описать в терминах делимых множеств функций. Таким образом, функции интерфейса, показанного на фиг.30А и 30В, можно разложить для достижения того же результата, наподобие разложения на множители числа 24 в виде 2 умножить на 2 умножить на 3 умножить на 2. Соответственно, как показано на фиг.31А, функцию, обеспечиваемую интерфейсом Интерфейс1, можно разложить для преобразования каналов связи интерфейса в множество интерфейсов Интерфейс1A, Интерфейс 1B, Интерфейс 1C и т.д. с получением того же результата. Как показано на фиг.31В, функцию, обеспечиваемую интерфейсом I1, можно разложить в множество интерфейсов I1a, I1b, I1c и т.д. с получением того же результата. Аналогично интерфейс I2 второго сегмента кода, который принимает информацию от первого сегмента кода, можно разложить в множество интерфейсов I2a, I2b, I2c и т.д. При разложении количество интерфейсов, включенных с 1-м сегментом кода, не совпадает с количеством интерфейсов, включенных со 2-м сегментом кода. В любом из случаев, представленных на фиг.31А и 31В, смысл разложения интерфейсов Интерфейс1 и I1 остается таким же, как для фиг.30А и 30В соответственно. Разложение интерфейсов может также подчиняться законам ассоциативности, коммутативности и другим математическим законам, так что разложение может быть трудно распознать. Например, порядок операций может быть не важен и, следовательно, функция, выполняемая интерфейсом, может выполняться до достижения интерфейса, другим участком кода или интерфейса или выполняться отдельным компонентом системы. Кроме того, специалисту в данной области очевидно, что существуют разные способы осуществления вызовов разных функций, которые приводят к одному и тому же результату.Decomposition: Communication from one code segment to another can be carried out indirectly, by splitting the communication channel into several discrete communication channels. This is shown schematically in FIGS. 31A and 31B. It is shown that some interfaces can be described in terms of divisible sets of functions. Thus, the functions of the interface shown in FIGS. 30A and 30B can be decomposed to achieve the same result, like factoring the
Переопределение: В некоторых случаях может представиться возможность игнорировать, добавлять или переопределять определенные аспекты (например, параметры) программного интерфейса, тем не менее, получая нужный результат. Это проиллюстрировано на фиг.32А и 32В. Например, пусть интерфейс Интерфейс1, показанный на фиг.30А, включает в себя функциональный вызов Square(input, precision, output), вызов, включающий в себя три параметра: input (вход), precision (точность) и output (выход), который выдается 1-м Сегментом кода на 2-й Сегмент кода. Если средний параметр «точность» не важен в данном сценарии, как показано на фиг.32А, его можно просто игнорировать или даже заменить бессмысленным (в этой ситуации) параметром. Можно также добавить дополнительный параметр, который ничего не значит. В любом случае функция square (квадрат) может быть реализована, если возвращается output (выход) после того, как input (вход) будет возведен в квадрат вторым сегментом кода. Precision (точность) может быть значимым параметром для некоторой последующей в цепи выполнения или другой части вычислительной системы; однако поскольку понятно, что для узкой цели вычисления квадрата точность не обязательна, ее можно заменить или игнорировать. Например, вместо передачи действительного значения точности можно передать бессмысленное значение, например дату рождения, и это не повлияет неблагоприятно на результат. Аналогично, как показано на фиг.32А, интерфейс I1 заменен интерфейсом I1', переопределенным на игнорирование или добавление параметров к интерфейсу. Интерфейс I2 можно аналогично переопределить как интерфейс I2', переопределенный на игнорирование необязательных параметров или параметров, которые можно обрабатывать в другом месте. Смысл в том, что в некоторых случаях программный интерфейс может включать в себя аспекты, например параметры, которые не нужны для некоторых целей, и поэтому их можно игнорировать или переопределять или обрабатывать в другом месте для других целей.Overriding: In some cases, it may be possible to ignore, add or redefine certain aspects (for example, parameters) of the program interface, however, getting the desired result. This is illustrated in FIGS. 32A and 32B. For example, let the interface Interface1 shown in Fig. 30A include a function call Square (input, precision, output), a call that includes three parameters: input (input), precision (precision) and output (output), which issued by the 1st Code Segment to the 2nd Code Segment. If the average “accuracy” parameter is not important in this scenario, as shown in FIG. 32A, it can simply be ignored or even replaced with a meaningless (in this situation) parameter. You can also add an additional parameter that does not mean anything. In any case, the square function can be implemented if output is returned after input is squared by the second code segment. Precision can be a significant parameter for some subsequent in the execution chain or other part of the computing system; however, since it is understood that accuracy is not required for the narrow purpose of calculating the square, it can be replaced or ignored. For example, instead of transmitting the actual accuracy value, you can transmit a meaningless value, such as a date of birth, and this will not adversely affect the result. Similarly, as shown in FIG. 32A, interface I1 is replaced by interface I1 ′, redefined to ignore or add parameters to the interface. Interface I2 can likewise be redefined as interface I2 ', redefined to ignore optional parameters or parameters that can be processed elsewhere. The point is that in some cases, the program interface may include aspects, for example, parameters that are not needed for some purposes, and therefore can be ignored or redefined or processed elsewhere for other purposes.
Встроенное кодирование: Также может представиться возможность слияния некоторых или всех функциональных возможностей двух отдельных модулей кода, в результате чего “интерфейс” между ними меняет форму. Например, функцию, изображенную на фиг.30А и 30В, можно преобразовать в функцию, изображенную на фиг.33А и 33В соответственно. На фиг.33А предыдущие 1-й и 2-й Сегменты кода, показанные на фиг.30А, сливаются в модуль, содержащий оба из них. В этом случае сегменты кода могут по-прежнему сообщаться друг с другом, но интерфейс может быть адаптирован к форме, которая больше подходит к одиночному модулю. Так, например, формальные операторы Call и Return могут быть уже не нужны, но аналогичная обработка или отклик(и) в соответствии с интерфейсом Интерфейс1 все еще могут действовать. Аналогично, как показано на фиг.33В, интерфейс I2, показанный на фиг.30В, частично (или полностью) можно записать внутри интерфейса I1, чтобы сформировать интерфейс I1”. Показано, что интерфейс I2 делится на I2a и I2b, и часть I2a интерфейса закодирована совместно с интерфейсом I1 для образования интерфейса I1”. В качестве конкретного примера предположим, что интерфейс I1, показанный на фиг.30В, осуществляет функциональный вызов square(input, output), который принимается интерфейсом I2, который после обработки значения, переданного с input (для возведения его в квадрат) вторым сегментом кода, передает результат возведения в квадрат обратно с output. В этом случае обработка, осуществляемая вторым сегментом кода (возведения input в квадрат), может осуществляться первым сегментом кода без вызова интерфейса.Embedded coding: It may also be possible to merge some or all of the functionality of two separate code modules, resulting in a “interface” between them changing shape. For example, the function depicted in FIGS. 30A and 30B can be converted to the function depicted in FIGS. 33A and 33B, respectively. In FIG. 33A, the previous 1st and 2nd Code Segments shown in FIG. 30A are merged into a module containing both of them. In this case, the code segments can still communicate with each other, but the interface can be adapted to a form that is more suitable for a single module. So, for example, the formal Call and Return operators may no longer be needed, but similar processing or response (s) in accordance with Interface1 can still work. Similarly, as shown in FIG. 33B, the I2 interface shown in FIG. 30B can partially (or completely) be written inside the I1 interface to form the I1 ”interface. It is shown that the I2 interface is divided into I2a and I2b, and the interface part I2a is encoded together with the I1 interface to form the I1 interface. ” As a specific example, suppose that the I1 interface shown in FIG. 30B makes a function call square (input, output), which is received by the I2 interface, which, after processing the value transmitted from input (to square it) with a second code segment, passes the result of squaring back with output. In this case, the processing performed by the second code segment (squaring input) can be performed by the first code segment without calling the interface.
Разъединение: Связь от одного сегмента кода к другому может осуществляться косвенно путем разбиения канала связи на несколько дискретных каналов связи. Это схематически изображено на фиг.34А и 34В. Как показано на фиг.34А, один или несколько фрагментов промежуточного программного обеспечения (Интерфейс(ы) разъединения, поскольку они отделяют функциональные возможности и/или функции интерфейса от исходного интерфейса), предусмотрены для преобразования каналов связи на первом интерфейсе, Интерфейс1, для согласования их с другим интерфейсом, в данном случае интерфейсами Интерфейс2A, Интерфейс2B и Интерфейс2C. Это может происходить, например, когда установлена база приложений, предназначенных для связи, скажем, с операционной системой в соответствии с протоколом Интерфейс1, но затем операционная система изменилась для использования другого интерфейса, в данном случае интерфейсов Интерфейс2A, Интерфейс2B и Интерфейс2C. Смысл в том, что первоначальный интерфейс, используемый 2-м Сегментом кода, изменился, в результате чего он перестал быть совместимым с интерфейсом, используемым 1-м Сегментом кода, и поэтому для обеспечения совместимости старого и нового интерфейсов используется посредник. Аналогично, как показано на фиг.34В, может быть введен третий сегмент кода с интерфейсом разъединения DI1 для приема информации от интерфейса I1 и с интерфейсом разъединения DI2 для передачи функций интерфейса, например интерфейсам I2a и I2b, перестроенными для работы с DI2, но обеспечивающими тот же функциональный результат. Аналогично, DI1 и DI2 могут действовать совместно, чтобы транслировать функциональные возможности интерфейсов I1 и I2, показанных на фиг.30В, в новую операционную систему, обеспечивая тот же или аналогичный функциональный результат.Disconnection: Communication from one code segment to another can be carried out indirectly by splitting the communication channel into several discrete communication channels. This is schematically depicted in FIGS. 34A and 34B. As shown in FIG. 34A, one or more pieces of middleware (Disconnect Interface (s) because they separate the functionality and / or functions of the interface from the original interface) are provided for converting communication channels on the first interface, Interface1, for matching them with another interface, in this case, interfaces Interface 2A, Interface 2B and Interface 2C. This can happen, for example, when the database of applications designed to communicate, say, with the operating system in accordance with the Interface1 protocol is installed, but then the operating system has changed to use a different interface, in this case, the Interface2A, Interface2B, and Interface2C interfaces. The point is that the original interface used by the 2nd Code Segment has changed, as a result of which it is no longer compatible with the interface used by the 1st Code Segment, and therefore, an intermediary is used to ensure compatibility of the old and new interfaces. Similarly, as shown in FIG. 34B, a third code segment can be entered with the DI1 disconnect interface to receive information from the I1 interface and with the DI2 disconnect interface to transfer the interface functions, for example, the I2a and I2b interfaces, tuned to work with DI2, but providing one same functional result. Similarly, DI1 and DI2 can work together to translate the functionality of the I1 and I2 interfaces shown in FIG. 30B into a new operating system, providing the same or similar functional result.
Переписывание: Еще один возможный вариант заключается в динамическом переписывании кода для замены функциональных возможностей интерфейса какими-то другими, дающими, тем не менее, тот же общий результат. Например, может существовать система, в которой сегмент кода, представленный на промежуточном языке (например, Microsoft IL, Java ByteCode и т.д.), поступает на оперативный компилятор (JIT) или интерпретатор в среде выполнения (например, обеспечиваемом структурой .Net, средой выполнения Java или другими с аналогичными типами среды выполнения). JIT-компилятор может быть написан так, чтобы динамически преобразовывать передачи от 1-го Сегмента кода на 2-й Сегмент кода, т.е. согласовывать их с другим интерфейсом, который может понадобиться 2-му Сегменту кода (либо исходному, либо другому 2-му Сегменту кода). Это изображено на фиг.35А и 35В. Согласно фиг.35А этот подход аналогичен вышеописанному сценарию разъединения. Это может происходить, например, когда установленная база приложений способна связываться с операционной системой в соответствии с протоколом Интерфейс 1, но затем операционная система изменяется для использования другого интерфейса. JIT-компилятор можно использовать для оперативного согласования каналов связи от установленных базовых приложений к новому интерфейсу операционной системы. Согласно фиг.35В этот подход динамического переписывания интерфейса(ов) можно применять для динамического разложения или иного изменения интерфейса(ов).Rewriting: Another possible option is to dynamically rewrite the code to replace the functionality of the interface with some other ones, which nevertheless give the same general result. For example, there may be a system in which a segment of code represented in an intermediate language (for example, Microsoft IL, Java ByteCode, etc.) is delivered to an operational compiler (JIT) or interpreter in a runtime environment (for example, provided by a .Net structure, Java runtime or others with similar types of runtime). The JIT compiler can be written to dynamically convert transfers from the 1st Code Segment to the 2nd Code Segment, i.e. coordinate them with another interface, which may be needed by the 2nd Code Segment (either the source or another 2nd Code Segment). This is shown in FIGS. 35A and 35B. 35A, this approach is similar to the above disconnect scenario. This can happen, for example, when the installed application base is able to communicate with the operating system in accordance with the
Заметим также, что вышеописанные сценарии для достижения того же или аналогичного результата, что и интерфейс, посредством альтернативных вариантов осуществления можно также объединять различными способами, последовательно и/или параллельно или с другими промежуточными кодами. Таким образом, представленные выше альтернативные варианты осуществления не являются взаимоисключающими и могут смешиваться, согласовываться и комбинироваться для создания сценариев, идентичных или аналогичных общим сценариям, представленным на фиг.30А и 30В. Следует также заметить, что в большинстве случаев конфликтов программирования существуют другие аналогичные способы достижения таких же или аналогичных функциональных возможностей интерфейса, которые здесь не описаны, но, тем не менее, представлены сущностью и объемом изобретения, т.е. по меньшей мере, частично, функциональные возможности, представленные интерфейсом, и преимущественные результаты, обеспеченные интерфейсом, составляют основу интерфейса. Note also that the above scenarios to achieve the same or similar result as the interface, through alternative embodiments, can also be combined in various ways, sequentially and / or in parallel or with other intermediate codes. Thus, the alternative embodiments presented above are not mutually exclusive and can be mixed, matched, and combined to create scenarios that are identical or similar to the common scenarios shown in FIGS. 30A and 30B. It should also be noted that in most cases of programming conflicts, there are other similar ways to achieve the same or similar interface functionality, which are not described here, but nevertheless are presented by the essence and scope of the invention, i.e. at least in part, the functionality provided by the interface and the advantageous results provided by the interface form the basis of the interface.
III. Расширения и наследованиеIII. Extensions and Inheritance
Основная идея настоящего изобретения состоит в использовании Статей, которые в определенной степени моделируют объекты практического применения со сложными структурой, поведениями и операциями, описываемыми схемами и воплощаемыми системой аппаратно-программного интерфейса. Для обеспечения богатых функциональных возможностей выделения подтипов и согласно различным вариантам осуществления настоящего изобретения система аппаратно-программного интерфейса (которую для удобства мы будем называть далее просто WinFS) может обеспечивать механизм, посредством которого можно расширять Статьи (и типы Статьи) с использованием «Расширений». Расширения обеспечивают дополнительные структуры данных (Свойства, Отношения и пр.) к уже существующим структурам типов Статей.The main idea of the present invention is to use Articles, which to some extent model objects of practical application with complex structures, behaviors and operations described by circuits and implemented by a hardware-software interface system. In order to provide rich functionality for distinguishing subtypes and according to various embodiments of the present invention, a hardware-software interface system (which we will refer to simply as WinFS for convenience) can provide a mechanism by which Articles (and types of Articles) can be expanded using "Extensions". Extensions provide additional data structures (Properties, Relations, etc.) to existing structures of Article types.
Согласно рассмотренному выше (и конкретно рассмотренному в Разделах II.E.6.(a) и II.F.3), хотя предполагается обеспечение платформы хранения с начальным набором схем, согласно, по меньшей мере, некоторым вариантам осуществления платформа хранения позволяет потребителям, включая независимых продавцов программных продуктов (НПП), создавать новые схемы (т.е. новые типы Статьи и Вложенного элемента). Поскольку тип Статьи или тип Вложенного элемента, заданный начальным набором схем платформы хранения, может не в точности отвечать нуждам приложения НПП, необходимо позволить НПП самим создавать нужные им типы. Такую возможность предоставляет понятие Расширений. Расширения являются строго типизированными экземплярами, но (а) они не могут существовать независимо и (b) они должны присоединяться к Статье или Вложенному элементу. Кроме того, помимо решения вопроса необходимости в расширяемости схем Расширения также призваны решать вопросы «многотипности». Поскольку в некоторых вариантах осуществления платформа хранения может не поддерживать множественного наследования или перекрывающихся подтипов, приложения могут использовать Расширения как способ моделирования экземпляров перекрывающихся типов (например, Документ может быть «юридическим документом» и одновременно «защищенным документом»).As discussed above (and specifically discussed in Sections II.E.6. (A) and II.F.3), although it is intended to provide a storage platform with an initial set of circuits, according to at least some embodiments, the storage platform allows consumers to including independent software vendors (NPPs), create new schemes (i.e. new types of Articles and Nested Element). Since the type of the Article or the type of the Nested element specified by the initial set of storage platform schemes may not exactly meet the needs of the NPP application, it is necessary to allow the NPP to create the types they need. This is provided by the concept of Extensions. Extensions are strongly typed instances, but (a) they cannot exist independently and (b) they must be attached to an Article or Attached Element. In addition, in addition to addressing the need for extensibility schemes, Extensions are also designed to address issues of “multiplicity”. Because in some embodiments, the storage platform may not support multiple inheritance or overlapping subtypes, applications can use Extensions as a way to model instances of overlapping types (for example, a Document can be a “legal document” and at the same time a “protected document”).
А. Система типовA. Type system
В различных вариантах осуществления настоящего изобретения система типов WinFS обеспечивает механизм для задания структур данных. Система типов используется для представления данных, хранящихся в WinFS. Тип WinFS декларируется в схеме WinFS. Схема WinFS задает пространство имен, которое служит для логического группирования множества типов и других элементов схемы WinFS. Схемы WinFS можно декларировать с использованием «языка определения схем» (SDL), который может использовать формат XML. Ниже приведен пример возможного определения схемы:In various embodiments of the present invention, the WinFS type system provides a mechanism for defining data structures. A type system is used to represent data stored in WinFS. The WinFS type is declared in the WinFS schema. The WinFS schema defines a namespace that logically groups many types and other elements of the WinFS schema. WinFS schemas can be declared using the "schema definition language" (SDL), which can use the XML format. The following is an example of a possible schema definition:
<Schema Namespace="System.Storage" ><Schema Namespace = "System.Storage">
Определения типовType definitions
</Schema></Schema>
Схемы WinFS также служат блоками для контроля версий типов. WinFS задает несколько системных схем, которые обеспечивают самонастройку системы. Имеется пространство имен схем System.Storage, которое содержит декларации типов для корневых типов в системе, и пространство имен схем System.Storage.WinFS, которое декларирует все примитивные скалярные типы в системе.WinFS schemas also serve as blocks for type checking. WinFS defines several system circuits that enable self-tuning of the system. There is a System.Storage schema namespace that contains type declarations for the root types in the system, and a System.Storage.WinFS schema namespace that declares all primitive scalar types in the system.
Система типов WinFS декларирует множество простых скалярных типов. Эти типы используются как наиболее примитивные строительные блоки для всех остальных типов в системе типов WinFS. Эти типы декларируются в пространстве имен схем System.Storage.WinFS. В нижеследующей таблице определено множество примитивных типов.The WinFS type system declares many simple scalar types. These types are used as the most primitive building blocks for all other types in the WinFS type system. These types are declared in the System.Storage.WinFS schema namespace. The following table defines many primitive types.
В хранилище точность всегда равна 28 цифр и масштаб равен 0.SQLDecimal has a wider range of values than the CLR Decimal type.
In storage, accuracy is always 28 digits and scale is 0.
Перечисление WinFS - это скалярный тип, который декларирует множество именованных констант, именуемое списком значений. Перечислительный тип можно использовать в любом месте, где можно использовать скалярный тип. Ниже приведен пример декларирования перечисления:The WinFS enumeration is a scalar type that declares a set of named constants, called a list of values. An enumeration type can be used anywhere where a scalar type can be used. The following is an example of a declaration of an enumeration:
<Enumeration Name="Gender"><Enumeration Name = "Gender">
<Value Name="Male"/><Value Name = "Male" />
<Value Name="Female"/><Value Name = "Female" />
</Enumeration></Enumeration>
Значения перечисления имеют базовое значение нуль. В вышеприведенном примере Gender.Male представляет значение 0, и Gender.Female представляет значение 1.Enum values have a base value of zero. In the above example, Gender.Male represents the
Сложный тип задается именем и множеством свойств. Свойство это поле члена типа и задается именем и типом. Тип Свойства может быть либо скалярным (включая перечислительный тип) либо другим сложным типом. Тип WinFS, который можно использовать как тип Свойства, называется вложенным типом. Экземпляр вложенного типа может существовать только как значение Свойства сложного типа WinFS - экземпляр вложен в экземпляр сложного типа. Вложенный тип декларируется с использованием элемента NestedType схемы. Ниже приведены примеры деклараций действительных типов:A complex type is defined by a name and many properties. The property is a field of the type member and is specified by the name and type. A Property type can be either a scalar (including an enumeration type) or another complex type. A WinFS type that can be used as a type of a Property is called a nested type. An instance of a nested type can exist only as a value of Properties of a complex type of WinFS — an instance is nested in an instance of a complex type. A nested type is declared using the NestedType element of the schema. The following are examples of valid type declarations:
<NestedType Name="Address"BaseType="System.Storage.NestedObject"><NestedType Name = "Address" BaseType = "System.Storage.NestedObject">
<Property Name="Street" Type="WinFS.String" Size="256"<Property Name = "Street" Type = "WinFS.String" Size = "256"
Nullable="false"/>Nullable = "false" />
<Property Name="City" Type=" WinFS.String" Size="256"<Property Name = "City" Type = "WinFS.String" Size = "256"
Nullable="false" />Nullable = "false" />
<Property Name="State" Type=" WinFS.String" Size="256"<Property Name = "State" Type = "WinFS.String" Size = "256"
Nullable="false" />Nullable = "false" />
<Property Name="Country" Type="WinFSString" Size="256"<Property Name = "Country" Type = "WinFSString" Size = "256"
Nullable="false" />Nullable = "false" />
</NestedType></NestedType>
<ItemType Name="Person" BaseType="System.Storage.Item"><ItemType Name = "Person" BaseType = "System.Storage.Item">
<Property Name="Name" Type="WinFS.String" Size="256"<Property Name = "Name" Type = "WinFS.String" Size = "256"
Nullable="false"/>Nullable = "false" />
<Property Name="Age" Type="WinFS.Int32" <Property Name = "Age" Type = "WinFS.Int32"
Nullable="false" Default="1"/>Nullable = "false" Default = "1" />
<Property Name="Picture" Type="WinFS.Binary" Size="max"/><Property Name = "Picture" Type = "WinFS.Binary" Size = "max" />
<Property Name="Addresses" Type="MultiSet"MultiSetOfType="Address"/><Property Name = "Addresses" Type = "MultiSet" MultiSetOfType = "Address" />
</ItemType></ItemType>
Для свойств типа String (строка) и Binary (двоичный) должен быть задан атрибут Size (размер). Этот атрибут определяет максимальный размер значений, содержащихся в Свойстве. Свойство может, в необязательном порядке, декларировать ограничение обнуляемости с использованием атрибута Nullable. Значение «ложно» для этого атрибута указывает, что приложение должно обеспечивать значение при создании экземпляра типа. Еще один необязательный атрибут Свойства представляет собой атрибут Default, который определяет значение по умолчанию для Свойства. Это значение будет присвоено Свойству в момент создания экземпляра, если приложение не обеспечило его.For properties of type String (string) and Binary (binary), the Size attribute must be set. This attribute defines the maximum size of the values contained in the Property. A property can optionally declare a nullability restriction using the Nullable attribute. A false value for this attribute indicates that the application should provide a value when instantiating the type. Another optional attribute of the Property is the Default attribute, which defines the default value for the Property. This value will be assigned to the Property at the time of instance creation, if the application did not provide it.
Свойство «адреса» в вышеприведенном примере относится к типу MultiSet. Свойство типа MultiSet также называют многозначным свойством. В примере MultiSet содержит множество экземпляра типа Address. MultiSet подобен коллекции. Он может содержать нуль или более экземпляров сложного типа. Тип экземпляра в MultiSet должен быть сложного вложенного типа. Тип MultiSet не поддерживает экземпляры скалярных типов WinFS (включая перечислительные типы). Свойства типа MultiSet не могут быть обнуляемыми и не могут иметь значения по умолчанию.The “address” property in the above example is of type MultiSet. A property of type MultiSet is also called a multi-valued property. In the example, MultiSet contains many instances of type Address. MultiSet is like a collection. It can contain zero or more instances of a complex type. The instance type in MultiSet must be a complex nested type. The MultiSet type does not support instances of scalar WinFS types (including enumerated types). Properties of type MultiSet cannot be nullable and cannot have default values.
WinFS поддерживает единичное наследование типов. Все типы WinFS должны наследовать от одного и только одного типа WinFS. Наследующий тип называется производным типом, а тип, из которого выведен этот тип, называется базовым типом. Базовый тип является атрибутом BaseType элементов декларации типа WinFS. Пусть тип А выводится из базового типа B, который, в свою очередь, выводится из типа С. Тип С является типом-предком для типов А и В. Тип А является типом-потомком для типов В и С. Экземпляр данных, хранящийся в WinFS, всегда является экземпляром единичного типа. Однако можно обрабатывать этот экземпляр данных как экземпляр множества типов, содержащего тип и все его типы-предки. Для экземпляра данных, который является экземпляром такого множества типов, тип, который не является предком любого другого типа в множестве, называется последним производным типом. Однотипный экземпляр данных является экземпляром в точности одного последнего производного типа. В общем случае, последний производный тип однотипного элемента будет называться его типом. Производный тип наследует все свойства, декларированные в его базовом типе. Производный тип может декларировать новые свойства, но не может подменять свойства, заданные в базовом типе. Свойство, декларированное в производном типе, не должно использовать то же имя, что и Свойство базового типа.WinFS supports single type inheritance. All types of WinFS must inherit from one and only one type of WinFS. The inherited type is called the derived type, and the type from which this type is derived is called the base type. The base type is the BaseType attribute of the WinFS type declaration elements. Let type A be derived from the base type B, which, in turn, is derived from type C. Type C is the ancestor type for types A and B. Type A is a descendant type for types B and C. The data instance stored in WinFS is always an instance of a unit type. However, you can treat this data instance as an instance of a plurality of types containing a type and all its ancestor types. For a data instance that is an instance of such a plurality of types, a type that is not the ancestor of any other type in the set is called the last derived type. A homogeneous data instance is an instance of exactly one of the last derived type. In general, the last derived type of the same type of element will be called its type. A derived type inherits all the properties declared in its base type. A derived type can declare new properties, but cannot override properties specified in the base type. A property declared in a derived type must not use the same name as a property of the base type.
Главное преимущество наследования в модели данных обусловлено возможностью подстановки унаследованных типов. Рассмотрим следующий пример:The main advantage of inheritance in a data model is due to the ability to substitute inherited types. Consider the following example:
<NestedType Name="Name" BaseType="System.Storage.NestedObject"><NestedType Name = "Name" BaseType = "System.Storage.NestedObject">
<Property Name="FirstName" Type="WinFS.String"/><Property Name = "FirstName" Type = "WinFS.String" />
<Property Name="LastName" Type="WinFS.String"/><Property Name = "LastName" Type = "WinFS.String" />
</Nestedype></Nestedype>
<NestedType Name="NameWithMiddleInitial" BaseType="Name"><NestedType Name = "NameWithMiddleInitial" BaseType = "Name">
<Property Name="MiddleInitial" Type=“WinFS.String"/><Property Name = "MiddleInitial" Type = “WinFS.String" />
</NestedType></NestedType>
<NestedType Name="Person" BaseType="System.Storage.Item"><NestedType Name = "Person" BaseType = "System.Storage.Item">
<Property Name="RealName" Type="Name"/><Property Name = "RealName" Type = "Name" />
<Property Name="OtherNames" Type="MultiSet"MultiSetOfType="Name"/><Property Name = "OtherNames" Type = "MultiSet" MultiSetOfType = "Name" />
</NestedType></NestedType>
В вышеприведенном примере тип Person имеет Свойство RealName типа Name и Свойство OtherNames, которое является множеством типов Name. Обычно требуется, чтобы Свойство RealName имело только экземпляры, типом которых является Name. Однако благодаря наследованию значением RealName могут быть однозначные значения, поскольку тип Name является одним из предков последнего производного типа этого элемента. Поэтому экземпляр NameWithMiddleInitial может быть значением Свойства RealName.In the above example, the Person type has a RealName Property of type Name and a OtherNames Property, which is a set of Name types. It is usually required that the RealName Property has only instances of the type Name. However, due to inheritance, the RealName value can be unambiguous, since the Name type is one of the ancestors of the last derived type of this element. Therefore, an instance of NameWithMiddleInitial may be the value of the RealName Property.
То же правило распространяется на множество свойств. Свойство OtherNames содержит множество элементов. Для каждого однотипного экземпляра, который является членом этого множества, последний производный тип этого экземпляра должен иметь Name в качестве одного из своих предков. Поэтому некоторые из экземпляров в множестве OtherNames могут быть экземплярами типа Name, тогда как другие могут быть экземплярами типа NameWithMiddleInitial.The same rule applies to many properties. The OtherNames property contains many elements. For each instance of the same type that is a member of this set, the last derived type of this instance must have Name as one of its ancestors. Therefore, some of the instances in the OtherNames set can be instances of the Name type, while others can be instances of the NameWithMiddleInitial type.
Наследование также позволяет удобно осуществлять запрашивание, поскольку в системе WinFS можно найти все экземпляры определенного типа. При поиске всех экземпляров типа машина запросов будет также возвращать все экземпляры, последние производные типы которых являются потомками этого типа. Однако эти операции поддерживаются только для Статьи, Расширения и Типов отношения (не Типов свойства). Для вложенных типов (например, Вложенных элементов, Свойства или сложных типов свойства) операция поддерживается только для экземпляров, содержащихся в единичном Свойстве «мультимножество».Inheritance also makes it easy to query, since all instances of a particular type can be found in WinFS. When searching for all instances of a type, the query engine will also return all instances whose last derived types are descendants of this type. However, these operations are only supported for Articles, Extensions, and Relationship Types (not Property Types). For nested types (for example, Nested elements, Properties, or complex property types), the operation is supported only for instances contained in the single property "multiset".
В. Семейства типовB. Type families
В сущности, система типов WinFS задает четыре различных семейства типов:In essence, the WinFS type system defines four different type families:
- Типы Вложенного элемента (например, Вложенные типы или Типы свойств);- Nested Element Types (for example, Nested Types or Property Types);
- Типы Статьи;- Types of Articles;
- Типы отношения;- Types of relationships;
- Типы расширения.- Types of extensions.
Каждое семейство типов имеет отдельное множество свойств и использование в системе типов WinFS. Пространство имен схемы System.Storage декларирует четыре типа, которые служат корневыми типами для каждого из семейств типов. В нижеследующих разделах подробно описаны семейства типов.Each type family has a separate set of properties and its use in the WinFS type system. The System.Storage schema namespace declares four types that serve as root types for each type family. The following sections detail type families.
1. Типы вложенного элемента1. Types of nested element
В отличие от других семейств типов WinFS вложенные типы можно использовать как типы свойств сложных типов WinFS. Экземпляры вложенного типа могут быть вложены только в экземпляр другого сложного типа. Однако экземпляры вложенных типов не могут запрашиваться глобально, т.е. приложения не могут составить простой запрос, который возвращает все экземпляры данного вложенного типа в хранилище WinFS.Unlike other WinFS type families, nested types can be used as property types of complex WinFS types. Instances of a nested type can only be nested in an instance of another complex type. However, instances of nested types cannot be queried globally, i.e. applications cannot compose a simple query that returns all instances of a given nested type in WinFS storage.
2. Типы статьи2. Article types
Статья WinFS является экземпляром типа, предком которого является тип System.Storage.Item. Этот тип является сложным типом, который является корнем семейства типов Статьи. System.Storage.Item декларирует Свойство имени ItemId типа Guid. Это особое свойство статьи, которое служит главным ключом Статьи. Значение этого Свойства гарантированно является уникальным для Статей в данном хранилище WinFS. Это свойство является необнуляемым и должно назначаться приложением при создании экземпляра типа Статьи. Свойство ItemId также является неизменяемым - оно никогда не должно изменяться и не подлежит повторному использованию.A WinFS article is an instance of a type whose ancestor is the System.Storage.Item type. This type is a complex type that is the root of the Article type family. System.Storage.Item declares a Property NameItemId of type Guid. This is a special property of the article, which serves as the main key of the Article. The value of this Property is guaranteed to be unique to Articles in this WinFS repository. This property is non-nullable and must be assigned by the application when creating an instance of the Article type. The ItemId property is also immutable - it should never be changed and should not be reused.
Машина запросов может возвращать экземпляры данного типа Статьи в хранилище WinFS. Этот запрос может возвращать все экземпляры типа и все типы-потомки этого типа. Ниже описана главная роль, которую статьи играют в семантике операций системы WinFS.The query engine can return instances of this type of Article in the WinFS repository. This query can return all instances of a type and all descendant types of this type. The following describes the main role that articles play in the semantics of WinFS system operations.
3. Типы отношения3. Relationship types
Типы отношения обеспечивают существование Отношений между Статьями. Типы отношения WinFS описывают бинарные отношения, где одна Статья играет роль источника, а другая Статья играет роль цели. Отношение является экземпляром типа, предком которого является тип System.Storage.Relationship. Этот тип является корнем иерархии Типов отношения.Types of Relationships ensure the existence of Relations between Articles. WinFS relationship types describe binary relationships, where one Article plays the role of the source and another Article plays the role of the goal. A relation is an instance of a type whose ancestor is the type System.Storage.Relationship. This type is the root of the relationship Type hierarchy.
Тип System.Storage.Relationship объявляет следующие свойства:The System.Storage.Relationship type declares the following properties:
- SourceItemId - ItemId Статьи, которая является источником Экземпляра отношения;- SourceItemId - ItemId of the Article, which is the source of the Instance of the relationship;
- RelationshipId - уникальный идентификатор Отношения по отношению к исходной статье; пара (SourceItemId, RelationshipId) образует главный ключ для Типов отношения в WinFS;- RelationshipId - unique identifier of the Relationship in relation to the original article; a pair (SourceItemId, RelationshipId) forms the master key for Relation Types in WinFS;
- TargetItemId - ItemId цели Отношения;- TargetItemId - ItemId of the relationship target;
- Mode - один из 3 возможных режимов Экземпляров отношения: поддержания (Holding), внедрения (Embedding) или ссылки (Reference);- Mode - one of the 3 possible modes of Relationship Instances: holding, embedding, or reference;
- Name - содержит имя Отношения для отношений поддержания;- Name - contains the name of the Relationship for maintenance relationships;
- IsHidden - булев атрибут, который приложения могут использовать в необязательном порядке для фильтрации Отношений, которые не нужно отображать;- IsHidden - a boolean attribute that applications can use optionally to filter Relations that do not need to be displayed;
Значения свойств SourceItemId, RelationshipId, TargetItemId и Mode являются неизменяемыми. Они назначаются в момент создания Экземпляра отношения и не подлежат изменению.The values of the SourceItemId, RelationshipId, TargetItemId, and Mode properties are immutable. They are assigned at the time of creating the Relationship Instance and are not subject to change.
Тип Отношения объявляется как сложный тип со следующими дополнительными ограничениями:A Relationship type is declared as a complex type with the following additional restrictions:
- Указанием исходной и целевой конечных точек: каждая конечная точка указывает имя и тип Статьи, к которой она относится;- An indication of the source and target endpoints: each endpoint indicates the name and type of the Article to which it relates;
- Допустимыми режимами экземпляров Типа отношения: Экземпляр отношения не может иметь значение для Свойства Mode, которое не является разрешенным в декларации Отношения.- The valid modes of instances of Relation Type: An instance of a relation cannot have a value for the Mode Property, which is not permitted in the Relationship declaration.
Ниже приведен пример декларации Отношения:The following is an example of a Relationship declaration:
<RelationshipType Name="DocumentAuthor" <RelationshipType Name = "DocumentAuthor"
BaseType="System.Storage.Relationship"BaseType = "System.Storage.Relationship"
AllowsHolding="true"AllowsHolding = "true"
AllowsEmbedding="false"AllowsEmbedding = "false"
AllowsReference="true">AllowsReference = "true">
<Source Name="Document" Type="Core.Document"/><Source Name = "Document" Type = "Core.Document" />
<Target Name="Author" Type="Core.Contact"/><Target Name = "Author" Type = "Core.Contact" />
<Property Name="Role" Type="WinFS.String"/><Property Name = "Role" Type = "WinFS.String" />
<Property Name="DisplayName" Type="WinFS.String"/><Property Name = "DisplayName" Type = "WinFS.String" />
</RelationshipType></RelationshipType>
Отношение DocumentAuthor («автор документа») декларируется с ограничениями экземпляров для режимов поддержания и ссылки. Это значит, что экземпляр Отношения DocumentAuthor может иметь экземпляры со значением Mode=”Reference” или Mode=”Holding”. Экземпляры со значением Mode=”Embedding” не разрешены.The DocumentAuthor relationship (“document author") is declared with instance restrictions for maintenance and reference modes. This means that an instance of a DocumentAuthor Relationship can have instances with a value of Mode = ”Reference” or Mode = ”Holding”. Instances with a value of Mode = ”Embedding” are not allowed.
Отношение декларирует исходную конечную точку под именем “Document” с типом Статьи “Core.Document” и целевую конечную точку типа “Core.Contact”. Отношение также декларирует два дополнительных свойства. Экземпляры отношения подлежат хранению и доступу отдельно от Статьи. Все экземпляры Типа отношения доступны из глобального вида расширения. Можно составить запрос, который будет возвращать все экземпляры данного типа Расширения.The relationship declares the source endpoint under the name “Document” with the type of the Article “Core.Document” and the target endpoint of the type “Core.Contact”. A relationship also declares two additional properties. Relationship instances are subject to storage and access separately from the Article. All instances of the Relationship Type are accessible from the global extension view. You can create a query that will return all instances of this type of Extension.
Для данной Статьи, все Отношения, для которой Статья является источником, можно перечислить на основании Свойства SourceItemId Отношения. Аналогично для данной Статьи, все Отношения в одном и том же хранилище, для которого Статья является целью, можно перечислить с использованием Свойства TargetItemId Отношения.For this Article, all Relations for which the Article is the source can be listed based on the Relationship SourceItemId Property. Similarly for this Article, all Relations in the same repository for which the Article is the target can be listed using the Relationship TargetItemId Property.
a) Семантика отношенияa) Semantics of relationships
В нижеследующих разделах описана семантика различных режимов Экземпляра отношения:The following sections describe the semantics of the various relationship instance modes:
Отношения поддержания: Отношения поддержания используются для моделирования управления временем жизни целевых статей на основании счетчика ссылок. Статья может быть исходной конечной точкой для нуля или более Отношений со Статьями. Статья, которая не является внедренной статьей, может быть целью одного или нескольких отношений поддержания. Целевая статья должна находиться в том же хранилище, что и Экземпляр отношения.Maintaining Relationships: Maintaining relationships are used to model the life time management of targeted articles based on reference counts. An Article may be a starting endpoint for zero or more Relations with Articles. An article that is not an embedded article may be the goal of one or more maintenance relationships. The target article must be in the same repository as the Relationship Instance.
Отношения поддержания реализуют управление временем жизни целевой конечной точки. Создание экземпляра отношения поддержания и Статьи, для которого она является целью, является атомарной операцией. Можно создавать дополнительные экземпляры отношения поддержания, для которых та же Статья является целью. При удалении последнего экземпляра отношения поддержания с данной Статьей в качестве целевой конечной точки, целевая статья также подлежит удалению.Maintenance relationships implement life-time management of the target endpoint. Creating an instance of the maintenance relationship and the Article for which it is the goal is an atomic operation. You can create additional instances of the maintenance relationship for which the same Article is the goal. When you delete the last instance of a maintenance relationship with this Article as the target endpoint, the target article is also subject to deletion.
Типы Статей-конечных точек, указанные в декларации Отношения, реализуются при создании экземпляра Отношения. Типы Статей-конечных точек не подлежат изменению после установления Отношения.The types of Endpoint Articles specified in the Relationship declaration are implemented when the Relationship is instantiated. The types of Endpoint Articles are not subject to change after the Relationship is established.
Отношения поддержания играют ключевую роль в формировании пространства имен Статей WinFS. Все отношения поддержания участвуют в декларации пространства имен. Свойство «имя» в декларации Отношения задает имя целевой статьи относительно исходной статьи. Это относительное имя уникально для всех отношений поддержания, для которых данная Статья является источником, и не может быть обнулено. Упорядоченный список этих относительных имен от корневой Статьи до данной Статьи образует полное имя Статьи.Maintaining relationships play a key role in shaping the WinFS Article namespace. All maintenance relationships are involved in the namespace declaration. The "name" property in the Relationship declaration sets the name of the target article relative to the original article. This relative name is unique to all maintenance relationships for which this Article is a source and cannot be reset. An ordered list of these relative names from the root Article to this Article forms the full name of the Article.
Отношения поддержания образуют ориентированный ациклический граф (ОАГ). При создании отношения поддержания система гарантирует, что цикл не создается, и таким образом гарантирует, что пространство имен Статей WinFS образует ОАГ. За дополнительной информацией о пространстве имен WinFS и путях статей следует обратиться к описанию «Пространство имен WinFS».Maintenance relationships form an oriented acyclic graph (OAS). When creating a maintenance relationship, the system ensures that the loop is not created, and thus ensures that the WinFS Article namespace forms an OAS. For more information on the WinFS namespace and article paths, see the “WinFS Namespace” description.
Отношения внедрения: Отношения внедрения моделируют концепцию исключительного управления временем жизни целевой статьи. Они реализуют концепцию составных статей. Создание экземпляра отношения внедрения и Статьи, которая является его целью, является атомарной операцией. Статья может быть источником нуля или более отношений внедрения. Однако Статья может быть целью одного и только одного отношения внедрения. Статья, которая является целью отношения внедрения, не может быть целью отношения поддержания. Целевая статья должна находиться в том же хранилище, что и Экземпляр отношения.Embedding Relationships: Embedding Relationships Model the Concept of Exceptional Time Management of the Target Article. They implement the concept of composite articles. Creating an instance of the implementation relationship and the Article, which is its purpose, is an atomic operation. An article can be a source of zero or more embedding relationships. However, an Article may be the goal of one and only one implementation relationship. An article that is the goal of an implementation relationship cannot be the goal of a maintenance relationship. The target article must be in the same repository as the Relationship Instance.
Типы Статей-конечных точек, указанные в декларации Отношения, реализуются при создании экземпляра Отношения. После установления Отношения типы Статей-конечных точек не подлежат изменению. Отношения внедрения не участвуют в пространстве имен WinFS. Значение Свойства «имя» отношения внедрения должно быть нулевым.The types of Endpoint Articles specified in the Relationship declaration are implemented when the Relationship is instantiated. Once a Relationship is established, the types of Article-endpoints are not subject to change. Deployment relationships do not participate in the WinFS namespace. The value of the Name property of the injection relationship must be null.
Отношения ссылки: Отношения ссылки не управляют временем жизни статьи, на которую они ссылаются. Отношения ссылки не гарантируют существование цели, а также не гарантируют тип цели, что указано в декларации Отношения. Это значит, что отношения ссылки могут повисать. Кроме того, отношение ссылки может ссылаться на Статьи в других хранилищах WinFS.Link relationships: Link relationships do not control the lifetime of the article to which they link. Link relationships do not guarantee the existence of a goal, nor do they guarantee the type of goal that is specified in the Relationship declaration. This means that the link relationship may hang. In addition, the link relationship may link to Articles in other WinFS repositories.
В WinFS отношения ссылки будут использоваться для моделирования большинства Отношений между Статьями без управления временем жизни. Поскольку существование цели не гарантировано, отношение ссылки удобно для моделирования слабосвязанных Отношений. Отношение ссылки можно использовать применительно к целевым статьям в других хранилищах WinFS, включая хранилища на других машинах. Отношения внедрения не участвуют в пространстве имен WinFS. Значение Свойства «имя» отношения внедрения должно быть нулевым.In WinFS, link relationships will be used to model most Relationships between Articles without life time management. Since the existence of the goal is not guaranteed, the link relation is convenient for modeling loosely coupled Relationships. The link relationship can be used for target articles in other WinFS repositories, including repositories on other machines. Deployment relationships do not participate in the WinFS namespace. The value of the Name property of the injection relationship must be null.
b) Правила и ограничения для отношенийb) Rules and restrictions for relations
К Отношениям применяются следующие дополнительные правила и ограничения:The following additional rules and restrictions apply to Relations:
- Статья должна быть целью (в точности одного отношения внедрения) или (одного или нескольких отношений поддержания). Единственным исключением является корневая Статья. Статья может быть целью нуля или более отношений ссылки;- The article should be the goal of (exactly one implementation relationship) or (one or more maintenance relationships). The one exception is the root Article. An article may be the goal of zero or more link relationships;
- Статья, которая является целью отношения внедрения, не может быть источником отношений поддержания. Она может быть источником отношений ссылки;- An article that is the goal of an implementation relationship cannot be the source of a maintenance relationship. It can be a source of link relationships;
- Статья не может быть источником отношения поддержания, если она продвинута из файла. Она может быть источником отношений внедрения и отношений ссылки;- An article cannot be the source of a maintenance relationship if it is promoted from a file. It can be a source of embedding relationships and link relationships;
- Статья, продвинутая из файла, не может быть целью отношения внедрения.- An article advanced from a file cannot be the goal of an embedding relationship.
Когда Тип отношения A является производным от базового Типа отношения B, применяются следующие правила:When Relation Type A is derived from the underlying Relation Type B, the following rules apply:
- Тип отношения A может дополнительно ограничивать типы конечной точки. Типы конечной точки должны быть подтипами соответствующего типа конечной точки в базовом отношении B. Если конечная точка дополнительно ограничена, должно декларироваться новое имя конечной точки. Если конечная точка не ограничена, то описание конечной точки является необязательным;- Relation type A may further limit endpoint types. Endpoint types must be subtypes of the corresponding endpoint type in base relation B. If the endpoint is further restricted, a new endpoint name must be declared. If the endpoint is not limited, then the description of the endpoint is optional;
- Тип отношения A может дополнительно ограничивать разрешенные режимы экземпляра, декларированные в базовом отношении. Ограниченное множество режимов экземпляра должно быть подмножеством множества базовых типов или разрешенных типов экземпляров;- Relation type A may further limit the allowed instance modes declared in the base relation. A limited set of instance modes must be a subset of the set of base types or permitted instance types;
- Имена конечных точек обрабатываются как имена Свойств: они не могут совпадать с именем Свойства или именем конечной точки типа или его базового типа;- Endpoint names are treated as Property names: they cannot match the name of the Property or the name of the endpoint of the type or its base type;
- Исходный и целевой элементы являются необязательными, если соответствующий тип конечной точки не ограничен дополнительно производным Отношением.- The source and target elements are optional if the corresponding type of endpoint is not additionally limited by the derived Relationship.
Ниже приведен пример декларирования Типа отношения, который является производным от Отношения DocumentAuthor, заданного выше:The following is an example of declaring a Relationship Type that is derived from the DocumentAuthor Relationship defined above:
<RelationshipType Name="LegalDocumentAuthor" <RelationshipType Name = "LegalDocumentAuthor"
BaseType="Core.DocumentAuthor"BaseType = "Core.DocumentAuthor"
AllowsHolding="false"AllowsHolding = "false"
AllowsEmbedding="false"AllowsEmbedding = "false"
AllowsReference="true" >AllowsReference = "true">
<Source Name="LegalDocument" Type="Legal.Document"/><Source Name = "LegalDocument" Type = "Legal.Document" />
<Property Name="CaseNumber" Type="WinFS.String"/><Property Name = "CaseNumber" Type = "WinFS.String" />
</RelationshipType></RelationshipType>
Отношение LegalDocumentAuthor дополнительно ограничивает исходную конечную точку, но не целевую конечную точку. Типом исходной конечной точки является Legal.Document, который выводится из Core.Document.The LegalDocumentAuthor relationship further restricts the source endpoint, but not the destination endpoint. The source endpoint type is Legal.Document, which derives from Core.Document.
В этом случае целевая конечная точка не подлежит дополнительному ограничению, поэтому целевой элемент опущен.In this case, the target endpoint is not subject to further restriction, therefore, the target element is omitted.
Отношение также накладывает дополнительные ограничения на режимы экземпляра. Оно запрещает режим поддержания, поэтому остается единственный разрешенный режим - ссылки.The relationship also imposes additional restrictions on instance modes. It prohibits maintenance mode, so the only allowed mode is links.
4. Типы расширения4. Extension types
Расширение WinFS является экземпляром типа, предком которого является тип System.Storage.Extension. Этот тип является сложным типом, который является корнем семейства Типов расширения.The WinFS extension is an instance of a type whose ancestor is the System.Storage.Extension type. This type is a complex type that is the root of the Extension Type family.
System.Storage.Extension определяет два свойства:System.Storage.Extension defines two properties:
- ItemId - ИД Статьи для статьи, с которой связано Расширение;- ItemId - Article ID for the article with which the Extension is associated;
- ExtensionId - уникальный идентификатор для Расширения по отношению к ИД статьи. Пара (ItemId, ExtensionId) уникально идентифицирует Экземпляр расширения.- ExtensionId is a unique identifier for the Extension in relation to the article ID. A pair (ItemId, ExtensionId) uniquely identifies an Extension Instance.
К Типам расширения применяются следующие ограничения:The following restrictions apply to Extension Types:
- Экземпляры типа расширения могут существовать независимо от Статьи; Экземпляр типа Статьи с тем же ItemId, что и ItemId Расширения должен существовать в хранилище до создания Экземпляра типа расширения. Расширение не может быть создано, если статьи с данным ItemId не существует. При удалении Статьи все Расширения с тем же ItemId удаляются;- Instances of the type of extension may exist independently of the Article; An instance of the Article type with the same ItemId as the ItemId of the Extension must exist in the repository before creating the Instance of the extension type. An extension cannot be created if an article with this ItemId does not exist. When deleting an Article, all Extensions with the same ItemId are deleted;
- С отдельной статьей можно связать самое большее один экземпляр данного последнего производного Типа расширения;- At most one instance of this last derived Extension Type can be associated with a single article;
- Расширения не могут быть источниками и целями Отношений.- Extensions cannot be the sources and goals of Relations.
Не существует ограничений на типы Расширений, которые можно связать с данным типом Статьи. Любой Тип расширения разрешен для расширения любого типа Статьи. Если к Статье присоединено множество экземпляров различных Типов расширения, то они не зависят друг от друга в отношении структуры и поведения. Экземпляры расширения подлежат хранению и доступу отдельно от статьи. Все Экземпляры типа расширения доступны из глобального вида расширения. Можно составить запрос, который будет возвращать все экземпляры данного типа Расширения независимо от типа Статьи, с которой они связаны. ItemId Расширения указывает, к какой Статье они принадлежат, и может использоваться для извлечения соответствующего объекта Статьи из глобального вида Статьи. Кроме того, для данной Статьи все Экземпляры расширения, связанные со Статьей, можно перечислять с использованием Свойства ItemId Расширения.There are no restrictions on the types of Extensions that can be associated with this type of Article. Any Type of extension is allowed to extend any type of Article. If many instances of various Extension Types are attached to an Article, they are independent of each other with respect to structure and behavior. Extension instances must be stored and accessed separately from the article. All Extension Type Instances are available from the global extension view. You can create a query that will return all instances of this type of Extension regardless of the type of Article with which they are associated. The ItemId Extensions indicates which Article they belong to, and can be used to retrieve the corresponding Article object from the global Article view. In addition, for this Article, all Extension Instances associated with the Article can be listed using the ItemId Properties of the Extension.
С. Расширенные функциональные возможностиC. Advanced Features
В нескольких вариантах осуществления настоящего изобретения система аппаратно-программного интерфейса использует Расширения и Наследование для формализации отношений между различными Статьями и таким образом улучшения возможностей запрашивания совокупности Статей.In several embodiments of the present invention, the hardware-software interface system uses Extensions and Inheritance to formalize the relationship between the various Articles and thereby improve the ability to query a collection of Articles.
1. Наследование1. Inheritance
Фиг.36 иллюстрирует ряд взаимосвязанных Статей и подмножество их Отношений. Статья 3502 «документ» и статья 3604 «контакт» непосредственно связаны назначенным отношением 3606, которое в данном случае является «отношением авторства», т.е. Контакт 3604 является «автором» Документа 3602. В этом примере статья 3622 «изображение», статья 36724 «музыка» и статья 3626 «особая» наследуют от статьи 3602 «документ», поскольку тип Статьи является подтипом типа Статьи «документ». Аналогично статья 3642 «лицо» и статья 3644 «организация» наследуют от статьи 3604 «контакт». В нескольких вариантах осуществления настоящего изобретения эти наследующие Статьи (Изображение 3622, Музыка 3624, Особая 3626, Лицо 3642 и Организация 3644) не только наследуют свойства соответствующих родительских статей (Документа 3602 и Контакта 3604), но также наследуют назначенные Отношения между этими родительскими Статьями. Например, Изображение 3622 наследует отношение 3662 с Контактом 3604, отношение 3664 с Лицом 3642 и отношение 3666 с Организацией 3644. Аналогичное множество Отношений также наследуется каждой из других показанных Статей.Fig. 36 illustrates a number of related Articles and a subset of their Relations. Article 3502 “document” and article 3604 “contact” are directly related by the assigned relation 3606, which in this case is the “relation of authorship”, i.e. Contact 3604 is the “author” of Document 3602. In this example, article 3622 “image”, article 36724 “music” and article 3626 “special” inherit from article 3602 “document” because the type of Article is a subtype of the type of Article “document”. Similarly, article 3642 “person” and article 3644 “organization” inherit from article 3604 “contact”. In several embodiments of the present invention, these inheriting Articles (Image 3622, Music 3624, Special 3626, Person 3642, and Organization 3644) not only inherit the properties of the respective parent articles (Document 3602 and Contact 3604), but also inherit the assigned Relationship between these parent Articles. For example, Image 3622 inherits a 3662 relationship with Contact 3604, a 3664 relationship with Person 3642, and a 3666 relationship with Organization 3644. A similar set of Relationships are also inherited by each of the other Articles displayed.
Однако важно отметить, что наследование отношений не является автоматическим и не происходит в каждом контексте. Например, атрибуты, которые описывают, когда тип может наследоваться (т.е. средства управления наследованием), сами не являются наследуемыми. Параметры наследования поддерживаются и регулируются системой аппаратно-программного интерфейса.However, it is important to note that inheritance is not automatic and does not occur in every context. For example, attributes that describe when a type can be inherited (i.e., inheritance controls) are themselves not inherited. Inheritance parameters are supported and regulated by the system of hardware-software interface.
2. Расширения2. Extensions
Фиг.37А иллюстрирует недостатки стандартного выделения подтипов Статьи для применения в конкретных целях. На этом чертеже Контакт доступен для четырех приложений, Пр1, Пр2, ПрХ и ПрY. Пр1 и Пр2 обращаются к стандартному Контакту, но каждому из ПрХ и ПрY нужен расширенный объект контакта (с добавлением дополнительных полей), и таким образом они выводят Контакт' и Контакт'', каждый из которых наследует от Контакта. Однако проблема состоит в том, что появляются три новых экземпляра исходной Статьи: «контакт» - один в Контакте, один - в Контакте' и один - в Контакте''.Figa illustrates the disadvantages of the standard allocation of subtypes of Articles for specific purposes. In this drawing, Contact is available for four applications, Pr1, Pr2, PrX and PrY. Pr1 and Pr2 access the standard Contact, but each of PrX and PrY needs an extended contact object (with the addition of additional fields), and so they display Contact 'and Contact', each of which inherits from Contact. However, the problem is that there are three new instances of the original Article: “contact” - one in Contact, one in Contact 'and one in Contact.' '
Частичное решение этой проблемы, проиллюстрированной на фиг.37В, заключается в расширении свойств Контакта для включения полей, необходимых приложению, которое их требует. В этом случае Контакт расширяется для включения Дополнительных полей, необходимых для ПрХ. Однако непосредственное расширение полей Статьи, например «контакт», можно произвести только один раз, и таким образом ПрY не может использовать этот способ.A partial solution to this problem, illustrated in FIG. 37B, is to expand the properties of the Contact to include the fields required by the application that requires them. In this case, the Contact expands to include the Additional fields required for the PRX. However, the direct expansion of the Article fields, for example, “contact”, can be done only once, and thus PrY cannot use this method.
В одном варианте осуществления настоящего изобретения, более универсальное решение состоит в расширении Контакта с помощью Расширения, которое отличается и отделено от самого Контакта, как показано на фиг.37С. Таким образом, ПрХ может расширить Контакт для включения своих Дополнительных полей ПрХ, тогда как ПрY может также отдельно расширить Контакт для включения своих Дополнительных полей ПрY. Эти Расширения сами являются искомыми и запрашиваемыми и таким образом эти Расширения обеспечивают форму многотипности для системы аппаратно-программного интерфейса.In one embodiment of the present invention, a more universal solution is to expand the Contact using the Extension, which is different and separated from the Contact itself, as shown in figs. Thus, PRX can expand the Contact to include its Additional PRX fields, while PRY can also separately expand the Contact to include its Additional PRY fields. These Extensions themselves are searched and requested, and thus these Extensions provide a form of multiplicity for the hardware-software interface system.
IV. ЗаключениеIV. Conclusion
Согласно проиллюстрированному выше, настоящее изобретение относится к платформе хранения для организации, поиска и совместного использования данных. Платформа хранения, отвечающая настоящему изобретению, продолжает и расширяет концепцию хранения данных за пределы существующих файловых систем и систем баз данных, и предназначена быть хранилищем для всех типов данных, включая структурированные, неструктурированные или частично структурированные данные, например реляционных (табличных) данных, XML и новой формы данных, именуемой Статьями. Посредством общей основы хранения и схематизированных данных платформа хранения, отвечающая настоящему изобретению, обеспечивает более эффективную разработку приложений для потребителей, специалистов в сфере информационных технологий и предпринимателей. Она обеспечивает богатый и расширяемый программный интерфейс приложения, который не только делает доступными возможности, присущие ее модели данных, но также охватывает и расширяет существующую файловую систему и методы доступа к данным. Понятно, что можно вносить изменения в вышеописанные варианты осуществления, не выходя за рамки сущности изобретения. Соответственно настоящее изобретение не ограничено конкретными раскрытыми вариантами осуществления, но призвано охватывать все модификации, отвечающие сущности и объему изобретения, заданному в прилагаемой формуле изобретения.According to the foregoing, the present invention relates to a storage platform for organizing, retrieving and sharing data. The storage platform of the present invention continues and extends the concept of storing data beyond existing file systems and database systems, and is intended to be a repository for all types of data, including structured, unstructured or partially structured data, such as relational (tabular) data, XML and a new data form called Articles. Through a common storage framework and schematized data, the storage platform of the present invention provides more efficient application development for consumers, IT professionals and entrepreneurs. It provides a rich and extensible application programming interface that not only makes available the capabilities inherent in its data model, but also extends and extends the existing file system and data access methods. It is understood that changes can be made to the above described embodiments without going beyond the scope of the invention. Accordingly, the present invention is not limited to the specific disclosed embodiments, but is intended to cover all modifications that meet the essence and scope of the invention defined in the attached claims.
Из вышеприведенного описания явствует, что различные системы, способы и аспекты настоящего изобретения полностью или частично можно реализовать в виде программного кода (т.е. команд). Этот программный код может храниться в компьютерно-считываемой среде, например магнитной, электрической или оптической среде хранения, включая, без ограничения, флоппи-диск, CD-ROM, CD-RW, DVD-ROM, DVD-RAM, магнитную ленту, флэш-память, жесткий диск или любой другой машиночитаемый носитель, в которой при загрузке программного кода в машину и его выполнении машиной, например компьютером или сервером, машина становится устройством для практического осуществления изобретения. Настоящее изобретение также можно реализовать в виде программного кода, который передается по некоторой среде передачи, например по электрическим проводам или кабелям, по оптическим волокнам, по сети, включая интернет и интрасеть, или посредством любой другой формы передачи, в которой при приеме и загрузки программного кода в машину и его выполнении машиной, например компьютером, машина становится устройством для практического осуществления изобретения. Будучи реализован на процессоре общего назначения, программный код объединяется с процессором для обеспечения уникального устройства, которое действует аналогично конкретным логическим схемам.From the foregoing description, it is apparent that various systems, methods, and aspects of the present invention can be fully or partially implemented as program code (i.e., instructions). This program code may be stored in a computer-readable medium, such as a magnetic, electrical, or optical storage medium, including, without limitation, a floppy disk, CD-ROM, CD-RW, DVD-ROM, DVD-RAM, magnetic tape, flash memory, a hard disk, or any other computer-readable medium in which, when a program code is loaded into a machine and executed by a machine, such as a computer or server, the machine becomes a device for practicing the invention. The present invention can also be implemented in the form of program code that is transmitted over a certain transmission medium, for example, via electric wires or cables, through optical fibers, through a network, including the Internet and an intranet, or by any other form of transmission, in which, when receiving and downloading software, code into the machine and its execution by a machine, such as a computer, the machine becomes a device for the practical implementation of the invention. Being implemented on a general-purpose processor, the program code is combined with the processor to provide a unique device that acts similarly to specific logic circuits.
Claims (16)
осуществление доступа к хранилищу данных для определения исходного дискретного сохраняемого блока информации, имеющего типизированную структуру и первый идентификатор;
определение расширения, характерного для желательной дополнительной структуры данных;
определение экземпляра расширения, имеющего тип расширения, причем экземпляр расширения идентифицируется первым идентификатором и идентификатором расширения, хранится и доступен отдельно от дискретного сохраняемого блока информации; и
создание настроенного дискретного сохраняемого блока информации в хранилище данных, который хранится и доступен отдельно от дискретного сохраняемого блока информации, причем создание настроенного дискретного сохраняемого блока информации содержит присоединение экземпляра расширения, имеющего тип расширения, к дискретному сохраняемому блоку информации.1. In a storage platform containing a data warehouse that implements a data model that represents information through discrete stored blocks, and a hardware-software interface system, a method for setting up a discrete stored block of information implemented by a storage platform, comprising the following steps:
access to the data warehouse to determine the source discrete stored block of information having a typed structure and a first identifier;
determining the extension characteristic of the desired additional data structure;
determining an extension instance having an extension type, wherein the extension instance is identified by the first identifier and the extension identifier, is stored and accessible separately from the discrete stored information block; and
creating a customized discrete stored information block in a data warehouse that is stored and accessible separately from a discrete stored information block, wherein creating a customized discrete stored information block comprises attaching an extension instance having an extension type to a discrete stored information block.
определение совокупности расширений, причем каждое расширение является характерным для желательной дополнительной структуры данных; и
присоединение расширений к типизированной структуре исходного дискретного сохраняемого блока информации.3. The method according to claim 1, additionally containing the following steps:
defining a set of extensions, each extension being characteristic of a desired additional data structure; and
attaching extensions to the typed structure of the original discrete stored block of information.
процессор, выполненный с возможностью выполнения исполняемых процессором инструкций;
запоминающее устройство, соединенное с возможностью обмена данными с процессором, хранящее исполняемые процессором инструкции, которые при выполнении процессором, реализуют подсистему для
определения исходных дискретных сохраняемых блоков информации, имеющих типизированную структуру и соответствующие первые идентификаторы;
определения по меньшей мере одного типа расширения, характерного для желательной дополнительной структуры данных;
определения по меньшей мере одного экземпляра расширения по меньшей мере одного типа расширения, причем по меньшей мере один экземпляр расширения идентифицируется соответствующим первым идентификатором дискретного сохраняемого блока информации, к которому присоединяется по меньшей мере один экземпляр расширения, и соответствующим идентификатором расширения, при этом по меньшей мере один экземпляр расширения хранится и доступен отдельно от дискретных сохраняемых блоков информации; и
присоединения расширений к типизированной структуре исходных дискретных сохраняемых блоков информации и
создания настроенных дискретных сохраняемых блоков информации в платформе хранения, которые хранятся и доступны отдельно от дискретных сохраняемых блоков информации, причем создание настроенных дискретных сохраняемых блоков информации содержит присоединение по меньшей мере одного экземпляра расширения по меньшей мере одного типа расширения к дискретным сохраняемым блокам информации.9. A hardware-software interface system for manipulating a plurality of discrete stored blocks of information by accessing a storage platform comprising a data store implementing a data model that represents information through discrete stored blocks, said system comprising
a processor configured to execute instructions executed by the processor;
a storage device connected with the possibility of exchanging data with the processor, storing instructions executed by the processor, which, when executed by the processor, implement a subsystem for
determining the source discrete stored blocks of information having a typed structure and corresponding first identifiers;
determining at least one type of extension specific to the desired additional data structure;
determining at least one extension instance of at least one type of extension, wherein at least one extension instance is identified by a corresponding first identifier of a discrete stored information block to which at least one extension instance is attached, and a corresponding extension identifier, wherein at least one instance of the extension is stored and accessible separately from discrete stored blocks of information; and
attaching extensions to the typed structure of the source discrete stored blocks of information and
creating customized discrete stored information blocks in a storage platform that are stored and accessible separately from discrete stored information blocks, the creation of customized discrete stored information blocks comprising attaching at least one extension instance of at least one type of extension to discrete stored information blocks.
осуществлять доступ к хранилищу данных для определения исходного дискретного сохраняемого блока информации, имеющего типизированную структуру и первый идентификатор;
определять по меньшей мере первый тип расширения и второй тип расширения, причем первый тип расширения является характерным для первой желательной дополнительной структуры данных, требуемой первым приложением, а второй тип расширения является характерным для второй желательной дополнительной структуры данных, требуемой вторым приложением;
определять первый экземпляр расширения первого типа расширения, причем первый экземпляр расширения идентифицируется первым идентификатором и первым идентификатором расширения;
определять второй экземпляр расширения второго типа расширения, причем второй экземпляр расширения идентифицируется первым идентификатором и вторым идентификатором расширения, при этом первый экземпляр расширения и второй экземпляр расширения хранятся и доступны отдельно от дискретного сохраняемого блока информации; и
создавать по меньшей мере два настроенных дискретных сохраняемых блока информации, которые хранятся и доступны отдельно от дискретного сохраняемого блока информации, причем создание по меньшей мере двух настроенных дискретных сохраняемых блоков информации содержит присоединение первого экземпляра расширения первого типа расширения к дискретному сохраняемому блоку информации для создания первого настроенного дискретного сохраняемого блока информации и, отдельно, присоединение второго экземпляра расширения второго типа расширения к дискретному сохраняемому блоку информации для создания настроенного дискретного сохраняемого блока информации. 16. A computer-readable medium containing computer-readable instructions that, when executed by a processor, instructs the storage platform:
access the data warehouse to determine the original discrete stored block of information having a typed structure and a first identifier;
determine at least a first extension type and a second extension type, wherein the first extension type is characteristic of a first desired additional data structure required by the first application, and the second extension type is characteristic of a second desired additional data structure required by the second application;
determining a first extension instance of a first extension type, wherein the first extension instance is identified by a first identifier and a first extension identifier;
define a second extension instance of the second extension type, wherein the second extension instance is identified by the first identifier and the second extension identifier, wherein the first extension instance and the second extension instance are stored and accessible separately from the discrete stored information block; and
creating at least two tuned discrete stored information blocks that are stored and accessible separately from the discrete stored information block, the creation of at least two tuned discrete stored information blocks comprises attaching a first extension instance of the first extension type to a discrete stored information block to create the first tuned discrete stored information block and, separately, attaching a second extension instance of the second extension type I am going to a discrete stored information block to create a customized discrete stored information block.
Applications Claiming Priority (5)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/US2003/026144 WO2005029313A1 (en) | 2003-08-21 | 2003-08-21 | Systems and methods for data modeling in an item-based storage platform |
| USPCT/US03/26144 | 2003-08-21 | ||
| US10/646,580 US7428546B2 (en) | 2003-08-21 | 2003-08-21 | Systems and methods for data modeling in an item-based storage platform |
| US10/646,580 | 2003-08-21 | ||
| US10/693,574 | 2003-10-24 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| RU2005119974A RU2005119974A (en) | 2006-01-20 |
| RU2412475C2 true RU2412475C2 (en) | 2011-02-20 |
Family
ID=35873210
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| RU2005119974/07A RU2412475C2 (en) | 2003-08-21 | 2004-07-29 | Systems and methods for extensions and inheritance for units of information managed by hardware/software interface system |
Country Status (1)
| Country | Link |
|---|---|
| RU (1) | RU2412475C2 (en) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| RU2522960C2 (en) * | 2012-07-30 | 2014-07-20 | Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования "Ульяновский государственный университет" | System for parts classification by machinability groups in compliance with their geometrical sizes |
| RU2666237C2 (en) * | 2013-01-04 | 2018-09-06 | МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи | Immutable object types |
Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| RU2144274C1 (en) * | 1997-02-07 | 2000-01-10 | Самсунг Электроникс Ко., Лтд. | Method for transmission and processing of message groups in electronic mail system |
| US6377953B1 (en) * | 1998-12-30 | 2002-04-23 | Oracle Corporation | Database having an integrated transformation engine using pickling and unpickling of data |
| US6418448B1 (en) * | 1999-12-06 | 2002-07-09 | Shyam Sundar Sarkar | Method and apparatus for processing markup language specifications for data and metadata used inside multiple related internet documents to navigate, query and manipulate information from a plurality of object relational databases over the web |
-
2004
- 2004-07-29 RU RU2005119974/07A patent/RU2412475C2/en not_active IP Right Cessation
Patent Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| RU2144274C1 (en) * | 1997-02-07 | 2000-01-10 | Самсунг Электроникс Ко., Лтд. | Method for transmission and processing of message groups in electronic mail system |
| US6377953B1 (en) * | 1998-12-30 | 2002-04-23 | Oracle Corporation | Database having an integrated transformation engine using pickling and unpickling of data |
| US6418448B1 (en) * | 1999-12-06 | 2002-07-09 | Shyam Sundar Sarkar | Method and apparatus for processing markup language specifications for data and metadata used inside multiple related internet documents to navigate, query and manipulate information from a plurality of object relational databases over the web |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| RU2522960C2 (en) * | 2012-07-30 | 2014-07-20 | Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования "Ульяновский государственный университет" | System for parts classification by machinability groups in compliance with their geometrical sizes |
| RU2666237C2 (en) * | 2013-01-04 | 2018-09-06 | МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи | Immutable object types |
Also Published As
| Publication number | Publication date |
|---|---|
| RU2005119974A (en) | 2006-01-20 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| KR101120817B1 (en) | Systems and methods for providing relational and hierarchical synchronization services for units of information manageable by hardware/software interface system | |
| CN1739107B (en) | System and method for providing synchronization services for units of information manageable by a hardware/software interface system | |
| US7917534B2 (en) | Systems and methods for extensions and inheritance for units of information manageable by a hardware/software interface system | |
| KR101041319B1 (en) | System and method for providing conflict handling for peer to peer synchronization of information units manageable by hardware / software interface system | |
| US8166101B2 (en) | Systems and methods for the implementation of a synchronization schemas for units of information manageable by a hardware/software interface system | |
| JP4901472B2 (en) | System and method for implementation of a digital image schema that organizes units of information manageable by a hardware / software interface system | |
| CN100565505C (en) | System and method by intermediary's file system or device synchronization computer system | |
| CA2815867C (en) | Systems and methods for extensions and inheritance for units of information manageable by a hardware/software interface system | |
| JP4583375B2 (en) | System for implementation of synchronization schema | |
| RU2412475C2 (en) | Systems and methods for extensions and inheritance for units of information managed by hardware/software interface system | |
| RU2412461C2 (en) | Systems and methods of interfacing application programs with article based storage platform | |
| KR101109390B1 (en) | Systems and methods for providing synchronization services for units of information manageable by a hardware/software interface system | |
| KR101149959B1 (en) | Systems and methods for synchronizing computer systems with intermediate file system shares or devices | |
| NZ540221A (en) | Systems and methods for extensions and inheritance for units of information manageable by a hardware/software interface system |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| PC41 | Official registration of the transfer of exclusive right |
Effective date: 20150526 |
|
| MM4A | The patent is invalid due to non-payment of fees |
Effective date: 20180730 |