Кіріспе
Microsoft COM Structured Storage (COM құрылымды сақтау немесе OLE құрылымды сақтау деп те аталады) – Microsoft компаниясы Windows операциялық жүйесінің бір бөлігі ретінде бір файлда иерархиялық деректерді сақтау үшін әзірлеген технология. Қатаң айтқанда, құрылымдалған сақтау термині – сәйкес келетін іске асыру қамтамасыз етуі тиіс COM интерфейстерінің жиынтығын білдіреді, нақты іске асыруды немесе нақты файл пішімін білдірмейді (іс жүзінде, құрылымдалған сақтау іске асыруы деректерін тіпті файлда сақтаудың қажеті жоқ). Деректерді иерархиялық құрылыммен қамтамасыз етуден басқа, құрылымдалған сақтау деректерге қол жеткізу үшін транзакциялық қолдаудың шектеулі түрін де ұсынуы мүмкін. Microsoft транзакцияларды қолдайтын, сондай-ақ қолдамайтын (жеңіл режимдегі сақтау деп аталады) іске асыруды ұсынады, соңғысы басқа жағынан да шектеулі, бірақ өнімділігі жақсы. Құрылымдалған сақтау Microsoft Office қосымшаларында кеңінен қолданылады, бірақ жаңа нұсқалары (Office 2007-ден бастап) әдепкі бойынша XML негізіндегі Office Open XML-ді пайдаланады. Ол сонымен қатар COM және оған байланысты Object Linking and Embedding (OLE) технологияларының маңызды бөлігі болып табылады. Құрылымдалған сақтаутың басқа да маңызды қолданыстарына SQL Server, Windows қабығы және көптеген үшінші тарап CAD бағдарламалары жатады.
COM Structured Storage (variously also known as COM structured storage or OLE structured storage) is a technology developed by Microsoft as part of its Windows operating system for storing hierarchical data within a single file. Strictly speaking, the term structured storage refers to a set of COM interfaces that a conforming implementation must provide, and not to a specific implementation, nor to a specific file format (in fact, a structured storage implementation need not store its data in a file at all). In addition to providing a hierarchical structure for data, structured storage may also provide a limited form of transactional support for data access. Microsoft provides an implementation that supports transactions, as well as one that does not (called simple mode storage, the latter implementation is limited in other ways as well, although it performs better). Structured storage is widely used in Microsoft Office applications, although newer releases (starting with Office 2007) use the XML based Office Open XML by default. It is also an important part of both COM and the related Object Linking and Embedding (OLE) technologies. Other notable applications of structured storage include SQL Server, the Windows shell, and many third party CAD programs.
Мотивация
Құрылымдық сақтау бірнеше дерек объектілерін бір файлда сақтаудың туындайтын кейбір қиындықтарын шешеді. Бір қиындық, файлда сақталған объект өзгертілгенде, жаңарту нәтижесінде көлемі өзгеретін кезде пайда болады. Егер файлды оқып/жазатын қолданба файлдағы объектілердің белгілі бір ретпен сақталуын күтсе, онда объектінің файлдағы бейнесінен кейін орналасқан барлық мәліметтер, егер объекті үлкейсе, орын ашу үшін артқа қарай, ал егер кішірейсе, бос қалған орынды толтыру үшін алға қарай жылдырылуы керек. Егер файл үлкен болса, бұл операция қымбатқа түсуі мүмкін. Әрине, осы қиындыққа көптеген шешімдер бар, бірақ көбінесе қолданба бағдарламашысы бинарлық файл форматтары сияқты төменгі деңгейдегі ерекшеліктермен айналысқысы келмейді. Құрылымдық сақтау ағын деп аталатын абстракцияны ұсынады, ол IStream интерфейсі арқылы ұсынылады. Ағын тұжырымдамалық тұрғыдан файлға өте ұқсас, ал IStream интерфейсі файлдық кіріс/шығысқа ұқсас оқу және жазу әдістерін қамтамасыз етеді. Ағын жадта, файл ішінде, басқа ағын ішінде және т.б. орналасуы мүмкін, бұл оның іске асылуына байланысты. Тағы бір маңызды абстракция – сақтау, ол IStorage интерфейсі арқылы ұсынылады. Сақтау файлдық жүйедегі каталогқа тұжырымдамалық жағынан өте ұқсас. Сақтаулар ағындарды, сондай-ақ басқа сақтауларды қамтуы мүмкін. Егер қолданба бірнеше дерек объектісін файлға сақтағысы келсе, оны жасаудың бір жолы – файлдың мазмұнын көрсететін IStorage ашып, әрбір объектіні жеке IStream-де сақтау. Мұны іске асырудың бір жолы – стандартты COM интерфейсі IPersistStream арқылы. OLE осы модельге көп көлінеді, құжаттарға объектілерді ендіру үшін.
Жергілікті құрылымды сақтау
Windows 2000-ның бета-тестілеу кезеңінде, құрылымды сақтау құжаттарын сақтауға арналған Native Structured Storage (NSS) деп аталатын мүмкіндік болды (мысалы, бинарлық Microsoft Office форматтары және Windows Explorer-дің миниатюраларды кэштеу үшін пайдаланатын thumbs.db файлы). Әрбір құжатты құрайтын ағын жеке-жеке NTFS дерек ағынында сақталды. Бұл мүмкіндік, тұрақты құрылымды сақтау құжатындағы ағындарды автоматты түрде NTFS дерек ағындарына және керісінше бөлетін құралдарды қамтыды. Дегенмен, Beta 3-тен кейін басқа операциялық жүйе компоненттерімен үйлесімсіздіктерге байланысты бұл мүмкіндік алынып тасталды, ал барлық NSS файлдары автоматты түрде бірыңғай дерек ағыны форматына түрлендірілді.