Prophet::Replica::prophet
version 0.751
Returns this replica's version.
Sets the replica's version to the given integer.
Return the replica's UUID
Returns an ordered set of changeset objects for all changesets containing changes to this object.
Note that changesets may include changes to other records
If "limit" is specified, only returns that many changesets (starting from record creation).
Creates a new Prophet::ChangeSet, which new changes will be added to.
$URL /<db-uuid>/ /replica-uuid /latest-sequence-no /replica-version /cas/records/<substr(sha1,0,1)>/substr(sha1,1,1)/<sha1> /cas/changesets/<substr(sha1,0,1)>/substr(sha1,1,1)/<sha1> /records (optional?) /<record type> (for resolution is actually _prophet-resolution-<cas-key>) /<record uuid> which is a file containing a list of 0 or more rows last-changed-sequence-no : cas key /changesets.idx index which has records: each record is : local-replica-seq-no : original-uuid : original-seq-no : cas key ... /resolutions/ /replica-uuid /latest-sequence-no /cas/<substr(sha1,0,1)>/substr(sha1,1,1)/<sha1> /content (optional?) /_prophet-resolution-<cas-key> (cas-key == a hash the conflicting change) /<record uuid> (record uuid == the originating replica) last-changed-sequence-no : <cas key to the content of the resolution> /changesets.idx index which has records: each record is : local-replica-seq-no : original-uuid : original-seq-no : cas key ...
Inside the top level directory for the mirror, you'll find a directory named as a hex-encoded UUID. This directory is the root of the published replica. The uuid uniquely identifes the database being replicated. All replicas of this database will share the same UUID.
Inside the <db-uuid> directory, are a set of files and directories that make up the actual content of the database replica:
replica-uuid
Contains the replica's hex-encoded UUID.
replica-version
Contains a single integer that defines the replica format.
The current replica version is 1.
latest-sequence-no
Contains a single integer, the replica's most recent sequence number.
cas/records
cas/changesets
The cas directory holds changesets and records, each keyed by a hex-encoded hash of the item's content. Inside the cas directory, you'll find a two-level deep directory tree of single-character hex digits. You'll find the changeset with the sha1 digest f4b7489b21f8d107ad8df78750a410c028abbf6c inside cas/changesets/f/4/f4b7489b21f8d107ad8df78750a410c028abbf6c.
cas
f4b7489b21f8d107ad8df78750a410c028abbf6c
cas/changesets/f/4/f4b7489b21f8d107ad8df78750a410c028abbf6c
You'll find the record with the sha1 digest dd6fb674de879a1a4762d690141cdfee138daf65 inside cas/records/d/d/dd6fb674de879a1a4762d690141cdfee138daf65.
dd6fb674de879a1a4762d690141cdfee138daf65
cas/records/d/d/dd6fb674de879a1a4762d690141cdfee138daf65
TODO: define the format for changesets and records
records
Files inside the records directory are index files which list off all published versions of a record and the key necessary to retrieve the record from the content-addressed store.
Inside the records directory, you'll find directories named for each type in your database. Inside each type directory, you'll find a two-level directory tree of single hexadecimal digits. You'll find the record with the type <Foo> and the UUID 29A3CA16-03C5-11DD-9AE0-E25CFCEE7EC4 stored in
type
29A3CA16-03C5-11DD-9AE0-E25CFCEE7EC4
records/Foo/2/9/29A3CA16-03C5-11DD-9AE0-E25CFCEE7EC4
The format of record files is:
<unsigned-long-int: last-changed-sequence-no><40 chars of hex: cas key>
The file is sorted in asecnding order by revision id.
changesets.idx
The changesets.idx file lists each changeset in this replica and provides an index into the content-addressed storage to fetch the content of the changeset.
<unsigned-long-int: sequence-no><16 bytes: changeset original source uuid><unsigned-long-int: changeset original source sequence no><16 bytes: cas key - sha1 sum of the changeset's content>
The file is sorted in ascending order by revision id.
resolutions
Jesse Vincent <jesse@bestpractical.com>
Chia-Liang Kao <clkao@bestpractical.com>
Christine Spang <christine@spang.cc>
This software is Copyright (c) 2009 by Best Practical Solutions.
This is free software, licensed under:
The MIT (X11) License
You can make new bug reports, and view existing ones, through the web interface at https://rt.cpan.org/Public/Dist/Display.html?Name=Prophet.
Alex Vandiver <alexmv@bestpractical.com>
Casey West <casey@geeknest.com>
Cyril Brulebois <kibi@debian.org>
Florian Ragwitz <rafl@debian.org>
Ioan Rogers <ioanr@cpan.org>
Jonas Smedegaard <dr@jones.dk>
Kevin Falcone <falcone@bestpractical.com>
Lance Wicks <lw@judocoach.com>
Nelson Elhage <nelhage@mit.edu>
Pedro Melo <melo@simplicidade.org>
Rob Hoelz <rob@hoelz.ro>
Ruslan Zakirov <ruz@bestpractical.com>
Shawn M Moore <sartak@bestpractical.com>
Simon Wistow <simon@thegestalt.org>
Stephane Alnet <stephane@shimaore.net>
Unknown user <nobody@localhost>
Yanick Champoux <yanick@babyl.dyndns.org>
franck cuny <franck@lumberjaph.net>
robertkrimen <robertkrimen@gmail.com>
sunnavy <sunnavy@bestpractical.com>
To install Prophet, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Prophet
CPAN shell
perl -MCPAN -e shell install Prophet
For more information on module installation, please visit the detailed CPAN module installation guide.