Data::Chronicle::Reader - Provides reading from an efficient data storage for volatile and time-based data
This module contains helper methods which can be used to store and retrieve information on an efficient storage with below properties:
It is assumed that data to be stored are time-based meaning they change over time and the latest version is most important for us.
The module uses Redis cache to provide efficient data storage and retrieval.
In addition to caching every incoming data, it is also stored in PostgreSQL for future retrieval.
This modules hides all the internal details including distribution, caching, and database structure from the developer. He only needs to call a method to save data and another method to retrieve it. All the underlying complexities are handled by the module.
my $d = get_some_log_data(); my $chronicle_w = Data::Chronicle::Writer->new( cache_writer => $writer, dbic => $dbic); my $chronicle_r = Data::Chronicle::Reader->new( cache_reader => $reader, dbic => $dbic); #store data into Chronicle - each time we call `set` it will also store #a copy of the data for historical data retrieval $chronicle_w->set("log_files", "syslog", $d); #retrieve latest data stored for syslog under log_files category my $dt = $chronicle_r->get("log_files", "syslog"); #find historical data for `syslog` at given point in time my $some_old_data = $chronicle_r->get_for("log_files", "syslog", $epoch1);
cache_reader should be an instance of RedisDB.
dbic should be an instance of DBIx::Connector.
Example:
my $data = get("category1", "name1");
Query for the latest data under "category1::name1" from the cache reader. Will return `undef` if the data does not exist.
my @values = mget([["category1", "name1"], ["category2", "name2"], ...]);
Query for the latest data under "category1::name1", "category2::name2", etc from the cache reader. Will return an arrayref containing results in the same ordering, with `undef` if the data does not exist.
my $data = get_for("category1", "name1", 1447401505);
Query Pg archive for the data under "category1::name1" at or exactly before the given epoch/Date::Utility.
my $data = get_for_period("category1", "name1", 1447401505, 1447401900)
Query Pg historical data and return records whose date is between given period.
my $data = get_history("category1", "name1", 1);
Query Pg archive for the data under "category1::name1" at the provided number of revisions in the past.
Binary.com, <support at binary.com>
<support at binary.com>
Please report any bugs or feature requests to bug-data-chronicle at rt.cpan.org, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Data-Chronicle. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
bug-data-chronicle at rt.cpan.org
You can find documentation for this module with the perldoc command.
perldoc Data::Chronicle::Reader
You can also look for information at:
RT: CPAN's request tracker (report bugs here)
http://rt.cpan.org/NoAuth/Bugs.html?Dist=Data-Chronicle
AnnoCPAN: Annotated CPAN documentation
http://annocpan.org/dist/Data-Chronicle
CPAN Ratings
http://cpanratings.perl.org/d/Data-Chronicle
Search CPAN
https://metacpan.org/release/Data-Chronicle/
BUILDALL, BUILDARGS, DEMOLISHALL, DOES, does, dump
To install Data::Chronicle, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Data::Chronicle
CPAN shell
perl -MCPAN -e shell install Data::Chronicle
For more information on module installation, please visit the detailed CPAN module installation guide.