NAME
Data::RecordStore - Simple store for text and byte data
SYNPOSIS
use Data::RecordStore;
$store = Data::RecordStore->init_store( DIRECTORY => $directory, MAX_FILE_SIZE => 20_000_000_000 );
$data = "TEXT OR BYTES";
# the first record id is 1
my $id = $store->stow( $data );
my $val = $store->fetch( $some_id );
my $count = $store->entry_count;
$store->lock( qw( FEE FIE FOE FUM ) ); # lock blocks, may not be called until unlock.
$store->unlock; # unlocks all
$store->delete_record( $id_to_remove ); #deletes the old record
$reopened_store = Data::RecordStore->open_store( $directory );
DESCRIPTION
Data::RecordStore is a simple way to store serialized text or byte data. It is written entirely in perl with no non-core dependencies. It is designed to be both easy to set up and easy to use.
It adheres to a RecordStore interface so other implementations exist using other technologies rather than simple binary file storage.
Transactions (see below) can be created that stow records. They come with the standard commit and rollback methods. If a process dies in the middle of a commit or rollback, the operation can be reattempted. Incomplete transactions are obtained by the store's 'list_transactions' method.
Data::RecordStore operates directly and instantly on the file system. It is not a daemon or server and is not thread safe. It can be used in a thread safe manner if the controlling program uses locking mechanisms, including the locks that the store provides.
METHODS
open_store( options )
Constructs a data store according to the options.
Options
reopen_store( directory )
Opens the existing store in the given directory.
fetch( id )
Returns the record associated with the ID. If the ID has no record associated with it, undef is returned.
stow( data, optionalID )
This saves the text or byte data to the record store. If an id is passed in, this saves the data to the record for that id, overwriting what was there. If an id is not passed in, it creates a new record store.
Returns the id of the record written to.
next_id
This sets up a new empty record and returns the id for it.
delete_record( id )
Removes the entry with the given id from the store, freeing up its space. It does not reuse the id.
lock( @names )
Adds an advisory (flock) lock for each of the unique names given. This may not be called twice in a row without an unlock in between and will die if that happens.
unlock
Unlocks all names locked by this thread
use_transaction()
Returns the current transaction. If there is no current transaction, it creates one and returns it.
commit_transaction()
Commits the current transaction, if any.
rollback_transaction()
Rolls back the current transaction, if any.
entry_count
Returns how many record ids exist.
index_silo
Returns the index silo for this store. This method is not part of the record store interface.
max_file_size
Returns the max file size of any silo in bytes. This method is not part of the record store interface.
silos
Returns a list of data silo objects where the data silo record size is 2**index position. This means that the beginning of the list will have undefs as there is a minimum silo size. This method is not part of the record store interface.
transaction_silo
Returns the transaction silo for this store. This method is not part of the record store interface.
active_entry_count
Returns how many record ids exist that have silo entries. This method is not part of the record store interface.
silos_entry_count
Returns the number of entries in the data silos.
detect_version( $dir )
Tries to detect the version of the Data::RecordStore in the given directory, if any.
AUTHOR Eric Wolf coyocanid@gmail.com
COPYRIGHT AND LICENSE
Copyright (c) 2015-2020 Eric Wolf. All rights reserved.
This program is free software; you can redistribute it
and/or modify it under the same terms as Perl itself.
VERSION Version 6.06 (Jan, 2020))
1 POD Error
The following errors were encountered while parsing the POD:
- Around line 698:
You forgot a '=back' before '=head2'