/[cvs]/nfo/perl/libs/Data/Transfer/Sync.README.html
ViewVC logotype

Contents of /nfo/perl/libs/Data/Transfer/Sync.README.html

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.2 - (show annotations)
Sun Jan 19 02:01:55 2003 UTC (21 years, 5 months ago) by joko
Branch: MAIN
Changes since 1.1: +26 -2 lines
File MIME type: text/html
+ updated

1 <HTML>
2 <HEAD>
3 <TITLE>Data::Storage::Sync</TITLE>
4 <LINK REV="made" HREF="mailto:">
5 </HEAD>
6
7 <BODY>
8
9 <A NAME="__index__"></A>
10 <!-- INDEX BEGIN -->
11
12 <UL>
13
14 <LI><A HREF="#news">NEWS</A></LI>
15 <UL>
16
17 <UL>
18
19 <UL>
20
21 <LI><A HREF="#20030118 integration with torus">2003-01-18 - integration with Torus</A></LI>
22 <LI><A HREF="#20021010 initial checkin">2002-10-10 - initial check-in</A></LI>
23 </UL>
24
25 </UL>
26
27 </UL>
28
29 <LI><A HREF="#description">DESCRIPTION</A></LI>
30 <LI><A HREF="#requirements">REQUIREMENTS</A></LI>
31 <LI><A HREF="#authors / copyright">AUTHORS / COPYRIGHT</A></LI>
32 <LI><A HREF="#support / warranty">SUPPORT / WARRANTY</A></LI>
33 <LI><A HREF="#bugs">BUGS</A></LI>
34 <LI><A HREF="#user level errors">USER LEVEL ERRORS</A></LI>
35 <UL>
36
37 <UL>
38
39 <UL>
40
41 <LI><A HREF="#mapping">Mapping</A></LI>
42 <LI><A HREF="#dbd::autocsv's rulebase">DBD::AutoCSV's rulebase</A></LI>
43 <LI><A HREF="#check structure of source node">Check structure of source node</A></LI>
44 <LI><A HREF="#modify structure of source node">Modify structure of source node</A></LI>
45 <LI><A HREF="#load source node by ident">Load source node by ident</A></LI>
46 </UL>
47
48 </UL>
49
50 </UL>
51
52 <LI><A HREF="#todo">TODO</A></LI>
53 </UL>
54 <!-- INDEX END -->
55
56 <HR>
57 <P>
58 <HR>
59 <H1><A NAME="news">NEWS</A></H1>
60 <P>
61 <H4><A NAME="20030118 integration with torus">2003-01-18 - integration with Torus</A></H4>
62 <PRE>
63 please look at <A HREF="http://www.netfrag.org/horde/chora/cvs.php/perl/scripts/outlook2ldap/">http://www.netfrag.org/horde/chora/cvs.php/perl/scripts/outlook2ldap/</A></PRE>
64 <P>
65 <H4><A NAME="20021010 initial checkin">2002-10-10 - initial check-in</A></H4>
66 <P>
67 <HR>
68 <H1><A NAME="description">DESCRIPTION</A></H1>
69 <P>Data::Transfer::Sync is a module providing a generic synchronization process
70 across arbitrary/multiple storages based on a ident/checksum mechanism.
71 It sits on top of Data::Storage.</P>
72 <P>
73 <HR>
74 <H1><A NAME="requirements">REQUIREMENTS</A></H1>
75 <PRE>
76 For full functionality:
77 Data::Storage
78 Data::Transform
79 Data::Compare
80 ... and all their dependencies</PRE>
81 <P>
82 <HR>
83 <H1><A NAME="authors / copyright">AUTHORS / COPYRIGHT</A></H1>
84 <P>The Data::Storage module is Copyright (c) 2002 Andreas Motl.
85 All rights reserved.</P>
86 <P>You may distribute it under the terms of either the GNU General Public
87 License or the Artistic License, as specified in the Perl README file.</P>
88 <P>
89 <HR>
90 <H1><A NAME="support / warranty">SUPPORT / WARRANTY</A></H1>
91 <P>Data::Storage is free software. IT COMES WITHOUT WARRANTY OF ANY KIND.</P>
92 <P>
93 <HR>
94 <H1><A NAME="bugs">BUGS</A></H1>
95 <PRE>
96 When in &quot;import&quot; mode for windows file - DBD::AutoCSV may hang.
97 Hint: Maybe the source node contains an ident-, but no checksum-column?</PRE>
98 <P>
99 <HR>
100 <H1><A NAME="user level errors">USER LEVEL ERRORS</A></H1>
101 <P>
102 <H4><A NAME="mapping">Mapping</A></H4>
103 <PRE>
104 - - - - - - - - - - - - - - - - - - - - - - - - - -
105 info: BizWorks::Process::Setup-&gt;syncResource( source_node Currency mode PULL erase 0 import 0 )critical: BizWorks::Process::Setup-&gt;startSync: Can't access mapping for node &quot;Currency&quot; - please check BizWorks::ResourceMapping.
106 - - - - - - - - - - - - - - - - - - - - - - - - - -
107 You have to create a sub for each node used in synchronization inside named Perl module. The name of this sub _must_ match
108 the name of the node you want to sync. This sub holds mapping metadata to give the engine hints about how
109 to access the otherwise generic nodes.
110 - - - - - - - - - - - - - - - - - - - - - - - - - -</PRE>
111 <P>
112 <H4><A NAME="dbd::autocsv's rulebase">DBD::AutoCSV's rulebase</A></H4>
113 <PRE>
114
115 - - - - - - - - - - - - - - - - - - - - - - - - - -
116 info: BizWorks::Process::Setup-&gt;syncResource( source_node Currency mode PULL erase 0 import 0 )
117 info: Data::Transfer::Sync-&gt;syncNodes: source=L/Currency &lt;- target=R/currencies.csv</PRE>
118 <PRE>
119
120 Execution ERROR: Error while scanning: Missing first row or scanrule not applied. at C:/home/amo/develop/netfrag.org/nfo/perl/libs/DBD/CSV.p
121 m line 165, &lt;GEN9&gt; line 1.
122 called from C:/home/amo/develop/netfrag.org/nfo/perl/libs/Data/Storage/Handler/DBI.pm at 123.</PRE>
123 <PRE>
124
125 DBI-Error: DBD::AutoCSV::st fetchrow_hashref failed: Attempt to fetch row from a Non-SELECT statement
126 notice: Data::Transfer::Sync-&gt;syncNodes: No nodes to synchronize.
127 - - - - - - - - - - - - - - - - - - - - - - - - - -
128 DBD::AutoCSV contains a rulebase which is spooled down while attempting to guess the style of the csv file regarding
129 parameters like newline (eol), column-seperation-character (sep_char), quoting character (quote_char).
130 If this spool runs out of entries and no style could be resolved, DBD::CSV dies causing this &quot;Execution ERROR&quot; which
131 results in a &quot;DBI-Error&quot; afterwards.
132 - - - - - - - - - - - - - - - - - - - - - - - - - -</PRE>
133 <P>
134 <H4><A NAME="check structure of source node">Check structure of source node</A></H4>
135 <PRE>
136
137 - - - - - - - - - - - - - - - - - - - - - - - - - -
138 info: Data::Transfer::Sync-&gt;syncNodes: source=L/Currency &lt;- target=R/currencies.csv
139 critical: Data::Transfer::Sync-&gt;syncNodes: Can not synchronize: No ident found in source node, maybe try to &quot;import&quot; this node first.
140 - - - - - - - - - - - - - - - - - - - - - - - - - -
141 If lowlevel detection succeeds, but no other required informations are found, this message is issued.
142 &quot;Other informations&quot; might be:
143 - column-header-row completely missing
144 - ident column is empty
145 - - - - - - - - - - - - - - - - - - - - - - - - - -</PRE>
146 <P>
147 <H4><A NAME="modify structure of source node">Modify structure of source node</A></H4>
148 <PRE>
149
150 - - - - - - - - - - - - - - - - - - - - - - - - - -
151 info: Data::Transfer::Sync-&gt;syncNodes: source=L/Currency &lt;- target=R/currencies.csv
152 info: Data::Transfer::Sync-&gt;_prepareNode_MetaProperties( descent source )
153 warning: Data::Transfer::Sync-&gt;_prepareNode_MetaProperties: node is lacking meta properties - will try to alter...
154 SQL ERROR: Command 'ALTER' not recognized or not supported!</PRE>
155 <PRE>
156
157 SQL ERROR: Command 'ALTER' not recognized or not supported!
158 - - - - - - - - - - - - - - - - - - - - - - - - - -
159 The Engine found a node which structure does not match the required. It tries to alter this automatically - only when doing &quot;import&quot; -
160 but the DBD driver (in this case DBD::CSV) gets in the way croaking not to be able to do this.
161 This could also appear if your database connection has insufficient rights to modify the database structure.
162 DBD::CSV croaks because it doesn't implement the ALTER command, so please edit your columns manually.
163 Hint: Add columns with the names of your &quot;ident&quot; and &quot;checksum&quot; property specifications.
164 - - - - - - - - - - - - - - - - - - - - - - - - - -</PRE>
165 <P>
166 <H4><A NAME="load source node by ident">Load source node by ident</A></H4>
167 <PRE>
168 - - - - - - - - - - - - - - - - - - - - - - - - - -
169 info: Data::Transfer::Sync-&gt;_prepareNode_DummyIdent( descent source )
170 pcritical: Data::Transfer::Sync-&gt;_modifyNode failed: &quot;source&quot; node is empty.
171 - - - - - - - - - - - - - - - - - - - - - - - - - -
172 The source node could not be loaded. Maybe the ident is missing. Please check manually.
173 Hint: Like above, the ident and/or checksum columns may be missing....
174 - - - - - - - - - - - - - - - - - - - - - - - - - -</PRE>
175 <P>
176 <HR>
177 <H1><A NAME="todo">TODO</A></H1>
178 <PRE>
179 - sub _resolveIdentProvider
180 - wrap _doModifySource and _doTransferTarget around a core function which can change virtually any type of node
181 - split this module up into Sync.pm, Sync/Core.pm, Sync/Compare.pm and Sync/Compare/Checksum.pm
182 - introduce _compareNodes as a core method and wrap it around methods in Sync/Compare/Checksum.pm
183 - introduce Sync/Compare/MyComparisonImplementation.pm
184 - some generic deferring method - e.g. &quot;$self-&gt;defer(action)&quot; - to be able to accumulate a bunch of actions for later processing
185 - this implies everything done is _really_ split up into generic actions - how else would we defer them???
186 - example uses:
187 - fetch whole checksum list from node
188 - remember source ident retransmits
189 - remember: this is convenient - and maybe / of course faster - but we'll loose &quot;per-node-atomic&quot; operations
190 - feature: mechanism to implicit inject checksum property to nodes (alter table / modify schema)
191 - expand statistics / keep track of:
192 - touched/untouched nodes
193 - full sync
194 - just do a push and a pull for now but use stats for touched nodes in between to speed up things
195 - introduce some new metadata flags for a synchronization partner which is (e.g.) of &quot;source&quot; or &quot;target&quot;:
196 - isNewNodePropagator
197 - isWriteProtected</PRE>
198
199 </BODY>
200
201 </HTML>

MailToCvsAdmin">MailToCvsAdmin
ViewVC Help
Powered by ViewVC 1.1.26 RSS 2.0 feed