24 |
|
|
25 |
<LI><A HREF="#requirements">REQUIREMENTS</A></LI> |
<LI><A HREF="#requirements">REQUIREMENTS</A></LI> |
26 |
<LI><A HREF="#description">DESCRIPTION</A></LI> |
<LI><A HREF="#description">DESCRIPTION</A></LI> |
27 |
|
<UL> |
28 |
|
|
29 |
|
<LI><A HREF="#data::storage">Data::Storage</A></LI> |
30 |
|
<LI><A HREF="#why">Why?</A></LI> |
31 |
|
<LI><A HREF="#what else">What else?</A></LI> |
32 |
|
</UL> |
33 |
|
|
34 |
<LI><A HREF="#authors / copyright">AUTHORS / COPYRIGHT</A></LI> |
<LI><A HREF="#authors / copyright">AUTHORS / COPYRIGHT</A></LI> |
35 |
<LI><A HREF="#acknowledgements">ACKNOWLEDGEMENTS</A></LI> |
<LI><A HREF="#acknowledgements">ACKNOWLEDGEMENTS</A></LI> |
36 |
<LI><A HREF="#support / warranty">SUPPORT / WARRANTY</A></LI> |
<LI><A HREF="#support / warranty">SUPPORT / WARRANTY</A></LI> |
52 |
<HR> |
<HR> |
53 |
<P> |
<P> |
54 |
<H1><A NAME="name">NAME</A></H1> |
<H1><A NAME="name">NAME</A></H1> |
55 |
<P>Data::Storage - Interface for accessing various Storage implementations for Perl in an independent way</P> |
<PRE> |
56 |
|
Data::Storage - Interface for accessing various Storage implementations for Perl in an independent way</PRE> |
57 |
<P> |
<P> |
58 |
<HR> |
<HR> |
59 |
<H1><A NAME="aims">AIMS</A></H1> |
<H1><A NAME="aims">AIMS</A></H1> |
175 |
}</PRE> |
}</PRE> |
176 |
<P> |
<P> |
177 |
<H2><A NAME="note">NOTE</A></H2> |
<H2><A NAME="note">NOTE</A></H2> |
178 |
<P>This module heavily relies on DBI and Tangram, but adds a lot of additional bugs and quirks. |
<PRE> |
179 |
Please look at their documentation and/or this code for additional information.</P> |
This module heavily relies on DBI and Tangram, but adds a lot of additional bugs and quirks. |
180 |
|
Please look at their documentation and/or this code for additional information.</PRE> |
181 |
<P> |
<P> |
182 |
<HR> |
<HR> |
183 |
<H1><A NAME="requirements">REQUIREMENTS</A></H1> |
<H1><A NAME="requirements">REQUIREMENTS</A></H1> |
194 |
<P> |
<P> |
195 |
<HR> |
<HR> |
196 |
<H1><A NAME="description">DESCRIPTION</A></H1> |
<H1><A NAME="description">DESCRIPTION</A></H1> |
197 |
<P>Data::Storage is a module for accessing various ``data structures'' stored inside |
<P> |
198 |
various ``data containers''. It sits on top of DBI and/or Tangram.</P> |
<H2><A NAME="data::storage">Data::Storage</A></H2> |
199 |
|
<PRE> |
200 |
|
Data::Storage is a module for accessing various "data structures / kinds of structured data" stored inside |
201 |
|
various "data containers". |
202 |
|
We tried to use the AdapterPattern (<A HREF="http://c2.com/cgi/wiki?AdapterPattern">http://c2.com/cgi/wiki?AdapterPattern</A>) to implement a wrapper-layer |
203 |
|
around core CPAN modules (Tangram, DBI).</PRE> |
204 |
|
<P> |
205 |
|
<H2><A NAME="why">Why?</A></H2> |
206 |
|
<PRE> |
207 |
|
You will get a better code-structure (not bad for later maintenance) in growing Perl code projects, |
208 |
|
especially when using multiple database connections at the same time. |
209 |
|
You will be able to switch between different _kinds_ of implementations used for storing data. |
210 |
|
Your code will use the very same API to access these storage layers. |
211 |
|
... implementation has to be changed for now |
212 |
|
Maybe you will be able to switch "on-the-fly" without changing any bits in code in the future.... |
213 |
|
... but that's not the focus</PRE> |
214 |
|
<P> |
215 |
|
<H2><A NAME="what else">What else?</A></H2> |
216 |
|
<PRE> |
217 |
|
Having this, we were able to do implement a generic data synchronization module more easy, |
218 |
|
please look at Data::Transfer.</PRE> |
219 |
<P> |
<P> |
220 |
<HR> |
<HR> |
221 |
<H1><A NAME="authors / copyright">AUTHORS / COPYRIGHT</A></H1> |
<H1><A NAME="authors / copyright">AUTHORS / COPYRIGHT</A></H1> |
222 |
<P>The Data::Storage module is Copyright (c) 2002 Andreas Motl. |
<PRE> |
223 |
All rights reserved.</P> |
The Data::Storage module is Copyright (c) 2002 Andreas Motl. |
224 |
<P>You may distribute it under the terms of either the GNU General Public |
All rights reserved. |
225 |
License or the Artistic License, as specified in the Perl README file.</P> |
You may distribute it under the terms of either the GNU General Public |
226 |
|
License or the Artistic License, as specified in the Perl README file.</PRE> |
227 |
<P> |
<P> |
228 |
<HR> |
<HR> |
229 |
<H1><A NAME="acknowledgements">ACKNOWLEDGEMENTS</A></H1> |
<H1><A NAME="acknowledgements">ACKNOWLEDGEMENTS</A></H1> |
230 |
<P>Larry Wall for Perl, Tim Bunce for DBI, Jean-Louis Leroy for Tangram and Set::Object, |
<PRE> |
231 |
Sam Vilain for Class::Tangram, Jochen Wiedmann and Jeff Zucker for DBD::CSV and related, |
Larry Wall for Perl, Tim Bunce for DBI, Jean-Louis Leroy for Tangram and Set::Object, |
232 |
Adam Spiers for MySQL::Diff and all contributors.</P> |
Sam Vilain for Class::Tangram, Jochen Wiedmann and Jeff Zucker for DBD::CSV & Co., |
233 |
|
Adam Spiers for MySQL::Diff and all contributors.</PRE> |
234 |
<P> |
<P> |
235 |
<HR> |
<HR> |
236 |
<H1><A NAME="support / warranty">SUPPORT / WARRANTY</A></H1> |
<H1><A NAME="support / warranty">SUPPORT / WARRANTY</A></H1> |
237 |
<P>Data::Storage is free software. IT COMES WITHOUT WARRANTY OF ANY KIND.</P> |
<PRE> |
238 |
|
Data::Storage is free software. IT COMES WITHOUT WARRANTY OF ANY KIND.</PRE> |
239 |
<P> |
<P> |
240 |
<HR> |
<HR> |
241 |
<H1><A NAME="todo">TODO</A></H1> |
<H1><A NAME="todo">TODO</A></H1> |
303 |
- .wab - files (Windows Address Book) |
- .wab - files (Windows Address Book) |
304 |
- .pst - files (Outlook Post Storage?) |
- .pst - files (Outlook Post Storage?) |
305 |
- XML (e.g. via XML::Simple?) |
- XML (e.g. via XML::Simple?) |
306 |
- Move to t3, look at InCASE</PRE> |
- Move to t3, look at InCASE |
307 |
|
- some kind of security layer for methods/objects |
308 |
|
- acls (stored via tangram/ldap?) for functions, methods and objects (entity- & data!?) |
309 |
|
- where are the hooks needed then? |
310 |
|
- is Data::Storage & Co. okay, or do we have to touch the innards of DBI and/or Tangram? |
311 |
|
- an attempt to start could be: |
312 |
|
- 'sub getACLByObjectId($id, $context)' |
313 |
|
- 'sub getACLByMethodname($id, $context)' |
314 |
|
- 'sub getACLByName($id, $context)' |
315 |
|
( would require a kinda registry to look up these very names pointing to arbitrary locations (code, data, ...) )</PRE> |
316 |
<P> |
<P> |
317 |
<H3><A NAME="links / references">LINKS / REFERENCES</A></H3> |
<H3><A NAME="links / references">LINKS / REFERENCES</A></H3> |
318 |
<PRE> |
<PRE> |