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

Annotation of /nfo/perl/libs/Data/Transfer/Sync.pod

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (hide annotations)
Sun Jan 19 02:03:48 2003 UTC (21 years, 5 months ago) by joko
Branch: MAIN
+ initial check-in

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

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