Symbian3/PDK/Source/GUID-33241691-7362-5FA1-A3B0-C3FA550E5E09.dita
changeset 5 f345bda72bc4
parent 3 46218c8b8afa
child 9 59758314f811
equal deleted inserted replaced
4:4816d766a08a 5:f345bda72bc4
     7     Nokia Corporation - initial contribution.
     7     Nokia Corporation - initial contribution.
     8 Contributors: 
     8 Contributors: 
     9 -->
     9 -->
    10 <!DOCTYPE concept
    10 <!DOCTYPE concept
    11   PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
    11   PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
    12 <concept xml:lang="en" id="GUID-33241691-7362-5FA1-A3B0-C3FA550E5E09"><title>Store Overview</title><shortdesc>Provides structured data storage, using networks of streams. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Purpose</title> <p>It is often necessary to persist a data structure such as an object by writing it to memory as a sequence of bytes called a stream. A complex object is persisted as multiple streams collectively known as a store. The Store component provides access to stores in Symbian OS. </p> </section> <section><title>Required background</title> <p>The Store component requires no specific background apart from C++ and Symbian OS. </p> </section> <section><title>Key concepts and terms</title> <p>The API has the following key concepts. </p> <dl><dlentry><dt>stream store</dt> <dd><p>a store consisting of streams, implemented by <xref href="GUID-30726D8E-E18D-3A3A-8EFB-CCA4F04C984D.dita"><apiname>CStreamStore</apiname></xref>  </p> </dd> </dlentry> <dlentry><dt>persistent store</dt> <dd><p>a store which persists beyond the lifetime of the application which creates it, implemented by <xref href="GUID-21637329-EC49-39AD-8986-A22289D8CFE8.dita"><apiname>CPersistentStore</apiname></xref>  </p> </dd> </dlentry> <dlentry><dt>embedded store</dt> <dd><p>a store which can itself be stored as a stream in another store, implemented by <xref href="GUID-F2EC3A9D-5F4B-3C98-98DC-44394C54B6DE.dita"><apiname>CEmbeddedStore</apiname></xref>  </p> </dd> </dlentry> <dlentry><dt>memory store</dt> <dd><p>a store which resides in memory and exists only for the life of the store object, implemented by <xref href="GUID-5EC5199D-50F2-3BFA-BA45-4C5C017281DD.dita"><apiname>CBufStore</apiname></xref>  </p> </dd> </dlentry> <dlentry><dt>dictionary store base and streams</dt> <dd><p>a sequence of streams accessed by a UID, implemented by <xref href="GUID-9899DA2C-DB1B-3D67-8719-B7E13658B4D7.dita"><apiname>CDictionaryStore</apiname></xref>  </p> </dd> </dlentry> </dl> </section> <section><title>Architecture</title> <p>A stream is a representation of a data structure (such as an object) as a sequence of bytes. Structures as complex as most applications require multiple streams to store their state. This is termed a store. Stream types that work with stores are provided by the <xref href="GUID-66ACFC54-5671-5B72-9DBC-A76F7A112D63.dita">Store Streams</xref> API. </p> <p>The Stores API defines both base classes that define store abstractions without specifying the storage medium, and some concrete store types. </p> <p>The abstract classes are used as the base classes of separate APIs which use particular storage media. In particular the <xref href="GUID-21CF1D5F-44C5-5407-B3C9-8BC103C97079.dita">File Stores</xref> API defines further concrete stores which use file storage. Its base class, <xref href="GUID-9CBA8AB1-5BFC-3719-82AF-22A9BD93C306.dita"><apiname>CFileStore</apiname></xref> extends <xref href="GUID-21637329-EC49-39AD-8986-A22289D8CFE8.dita"><apiname>CPersistentStore</apiname></xref> and has its own subclasses such as <xref href="GUID-8B713854-7858-3E02-8A1C-B3E6C1C9EA85.dita"><apiname>CDirectFileStore</apiname></xref>. Concrete store types do not have to provide all the stream manipulation functionality defined by the base class interfaces: for example, direct file stores do not support individual deletion of streams within a store. </p> <p>Dictionary stores are accessed by a UID whereas stream stores are accessed by a stream ID. Persistent stores persist beyond the lifetime of the application that created them: they have a root stream from which the other streams in the store can be found. Embedded stores can be stored as streams in other stores: once written they cannot be modified. </p> <p>Stores are integrated with the application architecture as defined in the Uikon Core API. That expects file-based and embeddable applications to handle their data storage through stores. </p> <p>Stores are also the basis of the relational database provided by <xref href="GUID-13C95985-D16F-5A9E-A7F8-CAB637C4C6ED.dita">DBMS</xref>. </p> <fig id="GUID-39DD7576-D335-5CD2-92A6-E0B81EF2160A"><image href="GUID-09A58B23-68EA-58D7-BBC9-E7F4C4BF55D7_d0e571838_href.png" placement="inline"/></fig> </section> <section><title>APIs</title> <table id="GUID-6D27BADC-7CA7-5E39-8308-29CAA1858CAB"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>API</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p> <xref href="GUID-30726D8E-E18D-3A3A-8EFB-CCA4F04C984D.dita"><apiname>CStreamStore</apiname></xref>  </p> </entry> <entry><p>Provides the core abstract framework for stores allowing streams to be created and manipulated </p> </entry> </row> <row><entry><p> <xref href="GUID-21637329-EC49-39AD-8986-A22289D8CFE8.dita"><apiname>CPersistentStore</apiname></xref>  </p> </entry> <entry><p>Persistent store abstract base class </p> </entry> </row> <row><entry><p> <xref href="GUID-F2EC3A9D-5F4B-3C98-98DC-44394C54B6DE.dita"><apiname>CEmbeddedStore</apiname></xref>  </p> </entry> <entry><p>Encapsulates an embedded store </p> </entry> </row> <row><entry><p> <xref href="GUID-5EC5199D-50F2-3BFA-BA45-4C5C017281DD.dita"><apiname>CBufStore</apiname></xref>  </p> </entry> <entry><p>In-memory non-persistent store </p> </entry> </row> <row><entry><p> <xref href="GUID-9899DA2C-DB1B-3D67-8719-B7E13658B4D7.dita"><apiname>CDictionaryStore</apiname></xref>  </p> </entry> <entry><p>Dictionary store interface </p> </entry> </row> <row><entry><p> <xref href="GUID-4FA6EE6C-5B4E-39E0-B888-ABDE19985976.dita"><apiname>RStoreReadStream</apiname></xref>  </p> </entry> <entry><p>Supports the opening and manipulation of an existing stream in a store </p> </entry> </row> <row><entry><p> <xref href="GUID-346D4908-15C7-3F15-945F-D561E774022D.dita"><apiname>RStoreWriteStream</apiname></xref>  </p> </entry> <entry><p>Supports the writing of a stream to a store </p> </entry> </row> <row><entry><p> <xref href="GUID-418E7956-BE91-39A2-A26D-F1CA88B458AA.dita"><apiname>RFileBuf</apiname></xref>  </p> </entry> <entry><p>A stream buffer hosted by a file </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Typical uses</title> <p>A typical use of stores is to write files to memory without using the file server. This is a good thing to do when an application uses embedded documents. </p> </section> </conbody><related-links><link href="GUID-F4875493-6501-56FC-90E5-5EEAA89A72C3.dita"><linktext>Persistent Storage Overview</linktext> </link> <link href="GUID-21CF1D5F-44C5-5407-B3C9-8BC103C97079.dita"><linktext>File Stores Overview</linktext> </link> <link href="GUID-66ACFC54-5671-5B72-9DBC-A76F7A112D63.dita"><linktext>Store Streams
    12 <concept id="GUID-33241691-7362-5FA1-A3B0-C3FA550E5E09" xml:lang="en"><title>Store
    13                 Overview</linktext> </link> <link href="GUID-744ACF2C-963B-5E2F-A6B3-220AB899FD23.dita"><linktext>Streaming Overview</linktext> </link> </related-links></concept>
    13 Overview</title><shortdesc>Provides structured data storage, using networks of streams. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
       
    14 <section id="GUID-D38A0EFA-4D87-406B-AD87-CF79E61F2A08"><title>Purpose</title> <p>It
       
    15 is often necessary to persist a data structure such as an object by writing
       
    16 it to memory as a sequence of bytes called a stream. A complex object is persisted
       
    17 as multiple streams collectively known as a store. The Store component provides
       
    18 access to stores in Symbian platform. </p> </section>
       
    19 <section id="GUID-6E2C9766-E106-4A63-81CC-453B64C51DCC"><title>Required background</title> <p>The
       
    20 Store component requires no specific background apart from C++ and Symbian
       
    21 platform. </p> </section>
       
    22 <section id="GUID-597F91DD-2AA3-443C-BC98-C1E8A74BF505"><title>Key concepts
       
    23 and terms</title> <p>The API has the following key concepts. </p> <dl>
       
    24 <dlentry>
       
    25 <dt>stream store</dt>
       
    26 <dd><p>a store consisting of streams, implemented by <xref href="GUID-30726D8E-E18D-3A3A-8EFB-CCA4F04C984D.dita"><apiname>CStreamStore</apiname></xref>  </p> </dd>
       
    27 </dlentry>
       
    28 <dlentry>
       
    29 <dt>persistent store</dt>
       
    30 <dd><p>a store which persists beyond the lifetime of the application which
       
    31 creates it, implemented by <xref href="GUID-21637329-EC49-39AD-8986-A22289D8CFE8.dita"><apiname>CPersistentStore</apiname></xref>  </p> </dd>
       
    32 </dlentry>
       
    33 <dlentry>
       
    34 <dt>embedded store</dt>
       
    35 <dd><p>a store which can itself be stored as a stream in another store, implemented
       
    36 by <xref href="GUID-F2EC3A9D-5F4B-3C98-98DC-44394C54B6DE.dita"><apiname>CEmbeddedStore</apiname></xref>  </p> </dd>
       
    37 </dlentry>
       
    38 <dlentry>
       
    39 <dt>memory store</dt>
       
    40 <dd><p>a store which resides in memory and exists only for the life of the
       
    41 store object, implemented by <xref href="GUID-5EC5199D-50F2-3BFA-BA45-4C5C017281DD.dita"><apiname>CBufStore</apiname></xref>  </p> </dd>
       
    42 </dlentry>
       
    43 <dlentry>
       
    44 <dt>dictionary store base and streams</dt>
       
    45 <dd><p>a sequence of streams accessed by a UID, implemented by <xref href="GUID-9899DA2C-DB1B-3D67-8719-B7E13658B4D7.dita"><apiname>CDictionaryStore</apiname></xref>  </p> </dd>
       
    46 </dlentry>
       
    47 </dl> </section>
       
    48 <section id="GUID-8B3C967B-ED78-4756-8162-80EB1261433C"><title>Architecture</title> <p>A
       
    49 stream is a representation of a data structure (such as an object) as a sequence
       
    50 of bytes. Structures as complex as most applications require multiple streams
       
    51 to store their state. This is termed a store. Stream types that work with
       
    52 stores are provided by the <xref href="GUID-66ACFC54-5671-5B72-9DBC-A76F7A112D63.dita">Store
       
    53 Streams</xref> API. </p> <p>The Stores API defines both base classes that
       
    54 define store abstractions without specifying the storage medium, and some
       
    55 concrete store types. </p> <p>The abstract classes are used as the base classes
       
    56 of separate APIs which use particular storage media. In particular the <xref href="GUID-21CF1D5F-44C5-5407-B3C9-8BC103C97079.dita">File Stores</xref> API defines
       
    57 further concrete stores which use file storage. Its base class, <xref href="GUID-9CBA8AB1-5BFC-3719-82AF-22A9BD93C306.dita"><apiname>CFileStore</apiname></xref> extends <xref href="GUID-21637329-EC49-39AD-8986-A22289D8CFE8.dita"><apiname>CPersistentStore</apiname></xref> and
       
    58 has its own subclasses such as <xref href="GUID-8B713854-7858-3E02-8A1C-B3E6C1C9EA85.dita"><apiname>CDirectFileStore</apiname></xref>. Concrete
       
    59 store types do not have to provide all the stream manipulation functionality
       
    60 defined by the base class interfaces: for example, direct file stores do not
       
    61 support individual deletion of streams within a store. </p> <p>Dictionary
       
    62 stores are accessed by a UID whereas stream stores are accessed by a stream
       
    63 ID. Persistent stores persist beyond the lifetime of the application that
       
    64 created them: they have a root stream from which the other streams in the
       
    65 store can be found. Embedded stores can be stored as streams in other stores:
       
    66 once written they cannot be modified. </p> <p>Stores are integrated with the
       
    67 application architecture as defined in the Uikon Core API. That expects file-based
       
    68 and embedded applications to handle their data storage through stores. </p> <p>Stores
       
    69 are also the basis of the relational database provided by <xref href="GUID-13C95985-D16F-5A9E-A7F8-CAB637C4C6ED.dita">DBMS</xref>. </p> <fig id="GUID-39DD7576-D335-5CD2-92A6-E0B81EF2160A">
       
    70 <title>Store inheritance diagram</title>
       
    71 <image href="GUID-09A58B23-68EA-58D7-BBC9-E7F4C4BF55D7_d0e593071_href.png" placement="inline"/>
       
    72 </fig> </section>
       
    73 <section id="GUID-CBBE7C0F-6999-4FCE-9793-C71B61130C75"><title>APIs</title> <table id="GUID-6D27BADC-7CA7-5E39-8308-29CAA1858CAB">
       
    74 <tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
       
    75 <thead>
       
    76 <row>
       
    77 <entry>API</entry>
       
    78 <entry>Description</entry>
       
    79 </row>
       
    80 </thead>
       
    81 <tbody>
       
    82 <row>
       
    83 <entry><p> <xref href="GUID-30726D8E-E18D-3A3A-8EFB-CCA4F04C984D.dita"><apiname>CStreamStore</apiname></xref>  </p> </entry>
       
    84 <entry><p>Provides the core abstract framework for stores allowing streams
       
    85 to be created and manipulated </p> </entry>
       
    86 </row>
       
    87 <row>
       
    88 <entry><p> <xref href="GUID-21637329-EC49-39AD-8986-A22289D8CFE8.dita"><apiname>CPersistentStore</apiname></xref>  </p> </entry>
       
    89 <entry><p>Persistent store abstract base class </p> </entry>
       
    90 </row>
       
    91 <row>
       
    92 <entry><p> <xref href="GUID-F2EC3A9D-5F4B-3C98-98DC-44394C54B6DE.dita"><apiname>CEmbeddedStore</apiname></xref>  </p> </entry>
       
    93 <entry><p>Encapsulates an embedded store </p> </entry>
       
    94 </row>
       
    95 <row>
       
    96 <entry><p> <xref href="GUID-5EC5199D-50F2-3BFA-BA45-4C5C017281DD.dita"><apiname>CBufStore</apiname></xref>  </p> </entry>
       
    97 <entry><p>In-memory non-persistent store </p> </entry>
       
    98 </row>
       
    99 <row>
       
   100 <entry><p> <xref href="GUID-9899DA2C-DB1B-3D67-8719-B7E13658B4D7.dita"><apiname>CDictionaryStore</apiname></xref>  </p> </entry>
       
   101 <entry><p>Dictionary store interface </p> </entry>
       
   102 </row>
       
   103 <row>
       
   104 <entry><p> <xref href="GUID-4FA6EE6C-5B4E-39E0-B888-ABDE19985976.dita"><apiname>RStoreReadStream</apiname></xref>  </p> </entry>
       
   105 <entry><p>Supports the opening and manipulation of an existing stream in a
       
   106 store </p> </entry>
       
   107 </row>
       
   108 <row>
       
   109 <entry><p> <xref href="GUID-346D4908-15C7-3F15-945F-D561E774022D.dita"><apiname>RStoreWriteStream</apiname></xref>  </p> </entry>
       
   110 <entry><p>Supports the writing of a stream to a store </p> </entry>
       
   111 </row>
       
   112 <row>
       
   113 <entry><p> <xref href="GUID-418E7956-BE91-39A2-A26D-F1CA88B458AA.dita"><apiname>RFileBuf</apiname></xref>  </p> </entry>
       
   114 <entry><p>A stream buffer hosted by a file </p> </entry>
       
   115 </row>
       
   116 </tbody>
       
   117 </tgroup>
       
   118 </table> </section>
       
   119 <section id="GUID-4B0C731E-F9CB-4406-8DD4-C8C325B08257"><title>Typical uses</title> <p>A
       
   120 typical use of stores is to write files to memory without using the file server.
       
   121 This is a good thing to do when an application uses embedded documents. </p> </section>
       
   122 </conbody><related-links>
       
   123 <link href="GUID-F4875493-6501-56FC-90E5-5EEAA89A72C3.dita"><linktext>Persistent
       
   124 Storage Overview</linktext></link>
       
   125 <link href="GUID-21CF1D5F-44C5-5407-B3C9-8BC103C97079.dita"><linktext>File Stores
       
   126 Overview</linktext></link>
       
   127 <link href="GUID-66ACFC54-5671-5B72-9DBC-A76F7A112D63.dita"><linktext>Store Streams
       
   128                 Overview</linktext></link>
       
   129 <link href="GUID-744ACF2C-963B-5E2F-A6B3-220AB899FD23.dita"><linktext>Streaming
       
   130 Overview</linktext></link>
       
   131 </related-links></concept>