[MarkLogic Dev General] Rsync-Like DB Contents Comparison and Update?

David Gorbet David.Gorbet at marklogic.com
Mon Jan 29 10:32:12 PST 2018

..actually if it’s been disconnected too long (i.e. the journals no longer exist), it does a bulk replication which is not necessarily a full copy. It’s a delta copy of what’s missing.

Note though that with Database replication you’re subject to replication lag limits that you may need to monitor. Also, adding and removing replicas is a configuration change that may be more heavyweight than adding a flexrep target.

From: general-bounces at developer.marklogic.com [mailto:general-bounces at developer.marklogic.com] On Behalf Of Ron Hitchens
Sent: Monday, January 29, 2018 7:32 AM
To: MarkLogic Developer Discussion <general at developer.marklogic.com>
Subject: Re: [MarkLogic Dev General] Rsync-Like DB Contents Comparison and Update?

   I would suggest looking at direct, low-level database replication if your copies can be read-only and your goal is exact duplicate databases.  In this case MarkLogic keeps the databases in sync by sending low-level journal frames rather than syncing individual documents.  If a slave is disconnected for a while it will quickly catch up as the master sends the frames it’s missed.  If it’s been disconnected too long, or is newly connected, a zero day full copy is sent (depending on your bandwidth, 3GB is not a lot of data to send).


Ron Hitchens ron at overstory.co.uk<mailto:ron at overstory.co.uk>, +44 7879 358212

On January 27, 2018 at 6:13:12 PM, Eliot Kimber (ekimber at contrext.com<mailto:ekimber at contrext.com>) wrote:
ML 9

I have a system of servers where a master server gets new remote servers allocated it more or less randomly and dynamically.

The remote servers need to have a correct copy of a databse on the master server but the database is pretty big (the previously-mentioned 380K doc, 3GB database).

I can of course sync it with FlexRep but when a new server comes available I don't know what the current state of its local copy of the database is (if it has one at all) so I'm forced to recreate my master server's replication targets and do a full push, which takes an hour or two.

In the case where the remote server already has a copy of the database I would like to be able to compare it's contents to the master's and determine what the deltas are, if any, and only handle those, which usually would only be a few docs out of the total set.

Does there exist this kind of rsync or git-like comparison mechanism, either out of the box or as a public project?

I'm thinking of something comparable to what git does, which is create hashes of each file and then comparing hashes.

I could do this in XQuery but I suspect something more efficient could be done at the forest level, if one knew what one was doing.


Eliot Kimber

General mailing list
General at developer.marklogic.com<mailto:General at developer.marklogic.com>
Manage your subscription at:
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://developer.marklogic.com/pipermail/general/attachments/20180129/1328bf4d/attachment-0001.html 

More information about the General mailing list