My first major Perl program, written several years ago, is an online database query system for a 12K race's runner registration. There is one master flat-file database that exists offline and which is manipulated by several offline scripts, including inactive participant pruning and incoming registration data entry. The data gets to the online system by uploading the entire zipped database to a Perl CGI script which extracts the info needed for online queries and indexes it along several dimensions for rapid access. The abbreviated dataset is stored online in a format similar to the master file.

Until now, all changes to the master database have had to occur offline, principally through the data entry script. This can be inconvenient, for example, when someone calls during the registration period and asks that their address or the spelling of their name be changed, since it means contacting the data entry person to update the master database. Consequently, these requests too often fall through the cracks.

I'm contemplating transferring the master database to the online server, so multiple entities can update it as needed, either directly through online transactions for small changes, or by synchronizing clones of the master database for larger changes. Due to the possibility of synchronization conflicts, this could be non-trivial to program from scratch.

I know there are commercial and freeware database systems (like MySQL) that would be of great benefit in this endeavor. Unfortunately my hosting service charges quite a bit extra for an account with MySQL access, so I'd like to consider other alternatives first. They are very good about installing requested modules, though, and even allow private libraries for those modules without universal appeal. Hence (after this long-winded intro) my question: Does anyone have experience with any Perl modules which provide record-level or (preferably) field-level synchronization support for flat-file databases? If so, are there any that you would recommend?

Many thanks!


In reply to Database Synchronization by Dr. Mu

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.