Skip to content

tokuhirom/UnQLite

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NAME

UnQLite - Perl bindings for UnQLite

SYNOPSIS

use UnQLite;

my $db = UnQLite->open('foo.db', UnQLite::UNQLITE_OPEN_READWRITE|UnQLite::UNQLITE_OPEN_CREATE);
$db->kv_store('foo', 'bar');
say $db->kv_fetch('foo'); # => bar
$db->kv_delete('foo');
undef $db; # close database

# tie interface
tie my %hash, 'UnQLite', 'foo.db', UnQLite::UNQLITE_OPEN_READWRITE;
$hash{foo} = 'bar';
say $hash{foo}; # => bar

DESCRIPTION

UnQLite is a in-process software library which implements a self-contained, serverless, zero-configuration, transactional NoSQL database engine. UnQLite is a document store database similar to MongoDB, Redis, CouchDB etc. as well a standard Key/Value store similar to BerkeleyDB, LevelDB, etc.

This module is Perl5 binding for UnQLite.

If you want to know more information about UnQLite, see http://unqlite.org/.

This version of UnQLite.pm does not provides document store feature. Patches welcome.

You can use UnQLite.pm as DBM.

METHODS

  • my $db = UnQLite->open('foo.db'[, $mode]);

    Open the database.

    Modes:

      UnQLite::UNQLITE_OPEN_CREATE      (Default)
      UnQLite::UNQLITE_OPEN_READONLY
      UnQLite::UNQLITE_OPEN_READWRITE
      UnQLite::UNQLITE_OPEN_EXCLUSIVE
      UnQLite::UNQLITE_OPEN_TEMP_DB
      UnQLite::UNQLITE_OPEN_OMIT_JOURNALING
      UnQLite::UNQLITE_OPEN_IN_MEMORY
      UnQLite::UNQLITE_OPEN_MMAP
    
  • $db->kv_store($key, $value);

    Store the entry to database.

  • $db->kv_fetch($key);

    Fetch data from database.

  • $db->kv_delete($key);

    Delte $key from database.

  • $db->rc();

    Return code from UnQLite. It may updates after any UnQLite API call.

  • $db->errstr()

    This API returns stringified version of $db->rc(). It's not human readable but it's better than magic number.

  • my $cursor = $db->cursor_init()

    Create new cursor object.

UnQLite::Cursor

UnQLite supports cursor for iterating entries.

Here is example code:

my $cursor = $db->cursor_init();
my @ret;
for ($cursor->first_entry; $cursor->valid_entry; $cursor->next_entry) {
    push @ret, $cursor->key(), $cursor->data()
}

METHODS

  • $cursor->first_entry()

    Seek cursor to first entry.

    Return true if succeeded, false otherwise.

  • $cursor->last_entry()

    Seek cursor to last entry.

    Return true if succeeded, false otherwise.

  • $cursor->valid_entry()

    This will return 1 when valid. 0 otherwise

  • $cursor->key()

    Get current entry's key.

  • $cursor->data()

    Get current entry's data.

  • $cursor->next_entry()

    Seek cursor to next entry.

  • $cursor->prev_entry()

    Seek cursor to previous entry.

    Return true if succeeded, false otherwise.

  • $cursor->seek($key, $opt=UnQLite::UNQLITE_CURSOR_MATCH_EXACT)

    Seek cursor to $key.

    You can specify the option as $opt. Please see http://unqlite.org/c_api/unqlite_kv_cursor.html for more details.

    Return true if succeeded, false otherwise.

  • $cursor->delete_entry()

    Delete the database entry pointed by the cursor.

    Return true if succeeded, false otherwise.

LICENSE

Copyright (C) tokuhirom.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

AUTHOR

tokuhirom tokuhirom@gmail.com

About

Perl5 bindings for Unqlite.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages