Strukturované úložiště COM - COM Structured Storage
COM Strukturované úložiště (různě také známý jako COM strukturované ukládání nebo OLE strukturované úložiště ) je technologie vyvinutá společností Microsoft jako součást svého systému Windows operačního systému pro ukládání hierarchických dat v rámci jednoho souboru. Přísně vzato, termín strukturované úložiště odkazuje na sadu rozhraní COM, která musí vyhovující implementace poskytnout, a nikoli na konkrétní implementaci, ani na konkrétní formát souboru (ve skutečnosti implementace strukturovaného úložiště nemusí ukládat svá data do souboru vůbec). Kromě poskytování hierarchické struktury pro data může strukturované úložiště také poskytovat omezenou formu transakční podpory pro přístup k datům. Microsoft poskytuje implementaci, která podporuje transakce, a také implementaci, která ji nepodporuje (nazývá se úložiště v jednoduchém režimu , druhá implementace je omezena i jinými způsoby, i když funguje lépe).
Strukturované úložiště je široce používán v Microsoft Office aplikací, ačkoli novější verzí (počínaje Office 2007 ) pomocí XML založené Office Open XML ve výchozím nastavení. Je také důležitou součástí jak COM, tak souvisejících technologií OLE (Object Linking and Embedding). Mezi další pozoruhodné aplikace strukturovaného úložiště patří SQL Server , prostředí Windows a mnoho programů CAD jiných výrobců .
Motivace
Strukturované úložiště řeší některé inherentní potíže s ukládáním více datových objektů do jednoho souboru. Jeden problém nastane, když objekt přetrvává v souboru, který se kvůli aktualizaci změní ve velikosti. Pokud aplikace, která čte / zapisuje soubor, očekává, že objekty v souboru zůstanou v určitém pořadí, může být nutné vše, co následuje po reprezentaci daného objektu v souboru, posunout dozadu, aby se uvolnil prostor, pokud objekt naroste, nebo dopředu, aby vyplnil zbývající prostor, pokud se objekt zmenší. Pokud je soubor velký, mohlo by to vést k nákladné operaci. Samozřejmě existuje mnoho možných řešení tohoto problému, ale aplikační programátor často nechce řešit podrobnosti na nízké úrovni, jako jsou binární formáty souborů.
Strukturované úložiště poskytuje abstrakci známou jako stream , představovanou rozhraním IStream . Proud je koncepčně velmi podobný souboru a IStream rozhraní poskytuje metody pro čtení a zápis podobné jako při vstupu / výstupu souboru. Proud by mohl být umístěn v paměti , v souboru, v jiném proudu atd., V závislosti na implementaci. Další důležitou abstrakcí je úložiště představované rozhraním IStorage . Úložiště je koncepčně velmi podobné adresáři v systému souborů . Úložiště mohou obsahovat streamy i další úložiště.
Pokud si aplikace přeje přetrvávat několik datových objektů do souboru, jedním ze způsobů by bylo otevřít soubor, IStorage který představuje obsah tohoto souboru, a uložit každý z objektů do jednoho IStream . Jedním ze způsobů, jak toho dosáhnout, je standardní rozhraní COM IPersistStream . OLE silně závisí na tomto modelu pro vložení objektů do dokumentů.
Formát
Implementace společnosti Microsoft používá formát souborů známý jako složené soubory a všechny široce nasazené implementace strukturovaného úložiště tento formát čtou a zapisují. Složené soubory používají strukturu podobnou FAT k reprezentaci úložišť a streamů. Kusy souboru, známé jako sektory (tyto mohou nebo nemusí odpovídat sektorům podkladového systému souborů), jsou podle potřeby přidělovány pro přidání nových streamů a pro zvětšení velikosti stávajících streamů. Pokud jsou streamy odstraněny nebo zmenšeny a zůstávají nepřidělené sektory, mohou být tyto sektory znovu použity pro nové streamy.
Následující aplikace používají strukturované úložiště OLE (Compound Document Format)
-
Dokumenty Microsoft Office 97 - 2003 :
- Wordové dokumenty (.DOC, .DOT)
- Tabulky aplikace Excel (.XLS, .XLT)
- PowerPointové prezentace (.PPT, .POT)
- Soubory vydavatele (.PUB)
- Soubory Visio (.VSD)
- Soubory projektu (.MPP)
- Soubory Microsoft PhotoDraw (.MIX)
- Soubory Microsoft Outlook (.MSG)
- Soubory Instalační služby systému Windows (.MSI, .MSP, .MST)
- Microsoft Picture It! / Soubory Microsoft Digital Image (.MIX)
- Kanály RSS aplikace Internet Explorer RSS Soubory platformy Windows RSS (.feed-ms)
- Windows 7 StickyNotes (.SNT)
- Soubory seznamů Windows 7
- Thumbs.db
- Balíčky Microsoft SQL 2000 Server DTS
- Autodesk Revit
- Autodesk Inventor
- FlashPix
- Altium Designer
Nativní strukturované úložiště
Během fáze testování beta verze systému Windows 2000 zahrnoval funkci nazvanou Nativní strukturované úložiště ( NSS ) pro ukládání dokumentů strukturovaného úložiště (jako jsou binární formáty Microsoft Office a thumbs.db soubor, který používá Průzkumník Windows k ukládání miniatur do mezipaměti) s každým streamem, který tvoří dokument uložený v samostatném datovém toku NTFS . Zahrnovalo nástroje, které automaticky rozdělují proudy v běžném dokumentu strukturovaného úložiště na datové proudy NTFS a naopak. Tato funkce však byla po verzi Beta 3 stažena z důvodu nekompatibility s jinými součástmi operačního systému a všechny soubory NSS byly automaticky převedeny do formátu jediného datového proudu.
Implementace
- Pro Microsoft .NET:
- OpenMCDF - bezplatná komponenta .NET pro přístup k souborům strukturovaných úložišť OLE s licencí MPL.
- Pro Linux:
- Knihovna strukturovaných souborů GNOME - Umí číst strukturované soubory úložiště Microsoft.
- PÓL .
- Cross platform C ++ pro Windows / MacOSX / Linux:
- Pro Javu:
- POIFS - Java implementace formátu OLE 2 Compound Document, součást POI Apache .
- Pro Perl:
- Pro JavaScript:
- js-cfb - implementace JavaScriptu formátu složeného dokumentu OLE 2.
- Pro Python:
- compoundfiles - implementace Pythonu ve formátu Microsoft Compound File Binary (CFB).