1 | <HTML>
|
---|
2 | <HEAD>
|
---|
3 | <TITLE>L2/L3 DMC Requirements</TITLE>
|
---|
4 | </HEAD>
|
---|
5 | <BODY>
|
---|
6 | <CENTER>
|
---|
7 | <H1>DMC Specifications</H1>
|
---|
8 | <H2>L2/L3 Requirements</H2>
|
---|
9 | <H3>Réza Ansari, Éric Aubourg, Floor van Leeuwen</H3>
|
---|
10 | <H3>July 10, 2000 (draft)</H3>
|
---|
11 | <H3>PL-HFI-SPP-SP-DMC002</H3>
|
---|
12 | </CENTER>
|
---|
13 | <SPACER TYPE="VERTICAL" SIZE="20">
|
---|
14 |
|
---|
15 | <H2>Introduction</H2>
|
---|
16 |
|
---|
17 | The Data Management Component (<ACRONYM>DMC</ACRONYM>) is a set of
|
---|
18 | interfaces handling data persistence for Planck <ACRONYM>DPC</ACRONYM>'s
|
---|
19 | (in the <ACRONYM>IDIS</ACRONYM> framework). It will be used by both
|
---|
20 | consortia (<ACRONYM>HFI</ACRONYM> and <ACRONYM>LFI</ACRONYM>).
|
---|
21 |
|
---|
22 | <P>
|
---|
23 | Since the <ACRONYM>DMC</ACRONYM> is a set of interfaces, different
|
---|
24 | persistence mechanisms can be implemented in a transparent way. This
|
---|
25 | insures some independance from the market (especially from the currently
|
---|
26 | highly volatile market of object databases, O2 being virtually dead, Object
|
---|
27 | Design appearing as the new leader as of June 2000).
|
---|
28 |
|
---|
29 | <P>
|
---|
30 | Even if the two consortia choose the same implementation, which is not
|
---|
31 | required, care must be taken to preserve this independence as the
|
---|
32 | <ACRONYM>DMC</ACRONYM> interface is evolved.
|
---|
33 |
|
---|
34 |
|
---|
35 | <H2>Object persistence mechanisms</H2>
|
---|
36 | The <ACRONYM>DMC</ACRONYM> should provide object persistence, i.e. the
|
---|
37 | fact that the internal state of an object is preserved after the end of
|
---|
38 | the life of the application that created or modified it. The
|
---|
39 | <ACRONYM>DPC</ACRONYM>'s will use this object persistence facility to store
|
---|
40 | data, like maps, <ACRONYM>TOI</ACRONYM>'s, calibration information,
|
---|
41 | pointing information, etc.
|
---|
42 |
|
---|
43 | <P>
|
---|
44 | Data persistence can be achieved in several ways. For L2/L3
|
---|
45 | <ACRONYM>DPC</ACRONYM>'s, one should keep in mind that
|
---|
46 |
|
---|
47 | <UL>
|
---|
48 | <LI><ACRONYM>DPC</ACRONYM> software should be independant of the
|
---|
49 | <ACRONYM>DMC</ACRONYM> implementation. In particular, it should be able to
|
---|
50 | run, for testing and development purposes, without any
|
---|
51 | <ACRONYM>DMC</ACRONYM> implementation (or a basic flat file
|
---|
52 | implementation).
|
---|
53 | <LI>Most objects handled during <ACRONYM>DPC</ACRONYM> processing will
|
---|
54 | be transient. Only input data and final products of a task will be
|
---|
55 | tagged persistent. Too tight a coupling between classes handled by
|
---|
56 | <ACRONYM>DPC</ACRONYM> software and <ACRONYM>DMC</ACRONYM> should be
|
---|
57 | avoided.
|
---|
58 | </UL>
|
---|
59 | One way to achieve this is by using the Bridge design pattern [Gamma 1995], to
|
---|
60 | decouple interface and implementation inside the <ACRONYM>DMC</ACRONYM>.
|
---|
61 | The <ACRONYM>DMC</ACRONYM> should probably be kept as a separate package providing
|
---|
62 | persistence services, the science objects and classes having no explicit
|
---|
63 | dependency to the <ACRONYM>DMC</ACRONYM>.
|
---|
64 |
|
---|
65 | <P>
|
---|
66 | The <ACRONYM>DMC</ACRONYM> interface should moreover make minimal
|
---|
67 | assumptions on the implementation layer functionalities.
|
---|
68 |
|
---|
69 | <H2>Data structure details, and opaque persistence</H2>
|
---|
70 |
|
---|
71 | <ACRONYM>DPC</ACRONYM> software will need to store complex objects, which
|
---|
72 | structure can evolve. The precise internal data structure does not need to
|
---|
73 | be handled by the DMC (semantically, although the DMC needs of course to know
|
---|
74 | how the structure is built in terms of basic data types).
|
---|
75 |
|
---|
76 | <P>
|
---|
77 | This facilitates schema evolution, since this provides skill separation
|
---|
78 | between precise data structure definition (a physicist task) and data
|
---|
79 | persistence (a database specialist task).
|
---|
80 |
|
---|
81 | <P>
|
---|
82 | This also keeps the <ACRONYM>DMCI</ACRONYM> simple: it is a low-level
|
---|
83 | software layer, that should not depend on higher-level (and thus more
|
---|
84 | volatile) concepts.
|
---|
85 |
|
---|
86 | <P>
|
---|
87 | Persistent data should be associated with tags and flags on which
|
---|
88 | <ACRONYM>DMC</ACRONYM> requests can be based. A history of each object
|
---|
89 | should also be kept, with support for versioning. Finer-grained searches
|
---|
90 | should be handled by higher-level software layers.
|
---|
91 |
|
---|
92 | <H2>Use cases</H2> The data model specifications document should be
|
---|
93 | complemented by use cases. A list of the kind of requests on each
|
---|
94 | type of data will help determine the
|
---|
95 | information that need to be
|
---|
96 | accessible by the <ACRONYM>DMC</ACRONYM>, i.e.
|
---|
97 | which classes of the
|
---|
98 | data model have to be known by the
|
---|
99 | <ACRONYM>DMC</ACRONYM>, and which
|
---|
100 | tags should be associated with them.
|
---|
101 |
|
---|
102 | <H2>Requirements summary</H2>
|
---|
103 |
|
---|
104 | The <ACRONYM>DMCI</ACRONYM> should implement the
|
---|
105 | following requirements:
|
---|
106 |
|
---|
107 | <UL>
|
---|
108 | <LI>The <ACRONYM>DMCI</ACRONYM> should
|
---|
109 | provide a set of interfaces to handle persistence on any kind of
|
---|
110 | data.
|
---|
111 | <LI>Software that uses <ACRONYM>DMCI</ACRONYM> facilities
|
---|
112 | should be able to run without those facilities.
|
---|
113 | <LI>Making data
|
---|
114 | persistent should not imply a hard-coded dependency between the data
|
---|
115 | definition (in C++ or Java) and the <ACRONYM>DMCI</ACRONYM>.
|
---|
116 |
|
---|
117 | Persistence should in particular not be obtained by heritage, but by
|
---|
118 | mechanisms like bridges and delegation.
|
---|
119 | <LI>The <ACRONYM>DMCI</ACRONYM> should make persistent all basic data types
|
---|
120 | (integers, floating point numbers, strings, and n-dimensional arrays
|
---|
121 | of such data), as well as aggregates of those basic types. It should
|
---|
122 | provide an <ACRONYM>API</ACRONYM> to define new data types as
|
---|
123 | aggregates of already defined types. It should provide an
|
---|
124 | <ACRONYM>API</ACRONYM> to define searchable fields and tags
|
---|
125 | associated to data. <LI>The <ACRONYM>DMCI</ACRONYM> should associate
|
---|
126 | to any persistent data the following characteristics: name, creation
|
---|
127 | date, modification date, creator. It should handle version history:
|
---|
128 | several versions of an object can be stored and retrieved.
|
---|
129 | <LI>The <ACRONYM>DMCI</ACRONYM> should provide an <ACRONYM>API</ACRONYM> to
|
---|
130 |
|
---|
131 | locate an object based on searcheable fields and tags, and on version;
|
---|
132 | to retrieve and store an object; and to lock an object while it is
|
---|
133 | being processed.
|
---|
134 | </UL>
|
---|
135 |
|
---|
136 | The <ACRONYM>DMCI</ACRONYM> could provide
|
---|
137 | more functionalities for
|
---|
138 | fundamental data structures like
|
---|
139 | <ACRONYM>TOI</ACRONYM>'s and maps. This
|
---|
140 | remains to be defined,
|
---|
141 | keeping in particular in mind that, for instance,
|
---|
142 | unforeseen pixelisation schemes could be used and that this should neither
|
---|
143 | break the <ACRONYM>DMC</ACRONYM> nor imply major developments in a low
|
---|
144 | software layer.
|
---|
145 |
|
---|
146 | <H3>Revisions</H3>
|
---|
147 | <UL>
|
---|
148 | <LI>0.1 Éric Aubourg, 07/07/2000
|
---|
149 | <LI>0.2 Éric Aubourg, 10/07/2000
|
---|
150 | </UL>
|
---|
151 | </BODY>
|
---|
152 | </HTML>
|
---|