BDB::Common (Class)

In: bdb.rb
Parent: Object

Implement common methods for access to data

Public Class methods

same than upgrade

open the database

  • name The argument name is used as the name of a single physical file on disk that will be used to back the database.
  • subname The subname argument allows applications to have subdatabases, i.e., multiple databases inside of a single physical file. This is useful when the logical databases are both numerous and reasonably small, in order to avoid creating a large number of underlying files. It is an error to attempt to open a subdatabase in a database file that was not initially created using a subdatabase name.
  • flags The flags must be the string "r", "r+", "w", "w+", "a", "a+" or and integer value.

    The flags value must be set to 0 or by bitwise inclusively OR‘ing together one or more of the following values

    • BDB::CREATE Create any underlying files, as necessary. If the files do not already exist and the DB_CREATE flag is not specified, the call will fail.
    • BD::EXCL Return an error if the database already exists. Underlying filesystem primitives are used to implement this flag. For this reason it is only applicable to the physical database file and cannot be used to test if a subdatabase already exists.
    • BDB::NOMMAP Do not map this database into process memory.
    • BDB::RDONLY Open the database for reading only. Any attempt to modify items in the database will fail regardless of the actual permissions of any underlying files.
    • BDB::TRUNCATE Physically truncate the underlying database file, discarding all previous subdatabases or databases. Underlying filesystem primitives are used to implement this flag. For this reason it is only applicable to the physical database file and cannot be used to discard subdatabases.

      The DB_TRUNCATE flag cannot be transaction protected, and it is an error to specify it in a transaction protected environment.

  • options Hash, Possible options are (see the documentation of Berkeley DB for more informations)
    • set_array_base: base index for BDB::Recno, BDB::Queue or BDB::Btree (with BDB::RECNUM). Must be 0 or 1
    • set_bt_compare : specify a Btree comparison function
    • set_bt_minkey : set the minimum number of keys per Btree page
    • set_bt_prefix : specify a Btree prefix comparison function
    • set_cachesize : set the database cache size
    • set_dup_compare : specify a duplicate comparison function
    • set_store_key : specify a Proc called before a key is stored
    • set_fetch_key : specify a Proc called after a key is read
    • set_store_value : specify a Proc called before a value is stored
    • set_fetch_value : specify a Proc called after a value is read
    • set_flags : general database configuration
    • set_h_ffactor : set the Hash table density
    • set_h_hash : specify a hashing function
    • set_h_nelem : set the Hash table size
    • set_lorder : set the database byte order
    • set_pagesize : set the underlying database page size
    • set_re_delim : set the variable-length record delimiter
    • set_re_len : set the fixed-length record length
    • set_re_pad : set the fixed-length record pad byte
    • set_re_source : set the backing Recno text file
    • set_append_recno : modify the stored data for BDB::APPEND
    • set_encrypt : set the password used
    • set_feedback : set the function to monitor some operations
    • env : open the database in the environnement given as the value
    • txn : open the database in the transaction given as the value

    set_append_recno will be called with (key, value) and it must return nil or the modified value

    set_encrypt take an Array as arguments with the values [password, flags], where flags can be 0 or BDB::ENCRYPT_AES

    Proc given to set_bt_compare, set_bt_prefix, set_dup_compare, set_h_hash, set_store_key set_fetch_key, set_store_value, set_fetch_value set_feedback and set_append_recno can be also specified as a method (replace the prefix set_ with bdb_)

        For example
    
          module BDB
             class Btreesort < Btree
                def bdb_bt_compare(a, b)
                   b.downcase <=> a.downcase
                end
             end
          end
    

Removes the database (or subdatabase) represented by the name and subname combination.

If no subdatabase is specified, the physical file represented by name is removed, incidentally removing all subdatabases that it contained.

Upgrade the database

Public Instance methods

Append the value associating with key

associate a secondary index db

flag can have the value BDB::RDONLY

The block must return the new key, or Qfalse in this case the secondary index will not contain any reference to key/value

Return if the underlying database is in host order

return the current priority value

set the priority value : can be BDB::PRIORITY_VERY_LOW, BDB::PRIORITY_LOW, BDB::PRIORITY_DEFAULT, BDB::PRIORITY_HIGH or BDB::PRIORITY_VERY_HIGH

same than truncate

Clear partial set.

Closes the file.

Return the count of duplicate for key

Open a new cursor.

Return the subname

same than append

same than close

same than cursor

same than delete

Removes the association from the key.

It return the object deleted or nil if the specified key don’t exist.

Deletes associations if the evaluation of the block returns true.

set

same than count

Return an array of all duplicate associations for key

if assoc is false return only the values.

Iterates over each duplicate associations for key

bulk

Iterates over each duplicate values for key

bulk

Iterates over keys.

set bulk

Iterates over secondary indexes and give secondary key, primary key and value

Returns true if the database is empty.

monitor the progress of some operations

Return the name of the file

Returns the value correspondind the key

flags can have the values BDB::GET_BOTH, BDB::SET_RECNO or BDB::RMW

In presence of duplicates it will return the first data item, use

 duplicates if you want all duplicates (see also #each_dup)

same than byteswapped?

Returns true if the association from key is value

Returns true if the association from the key exists.

Returns true if the association to the value exists.

Returns the first key associated with value

Returns the keys associated with value1, value2, …

Perform a join. cursor is an array of BDB::Cursor

Returns the array of the keys in the database

Returns the number of association in the database.

The log_register function registers a file name.

The log_register function registers a file name.

The log_unregister function unregisters a file name.

The log_unregister function unregisters a file name.

Returns the primary key and the value corresponding to key in the secondary index

only with >= 3.3.11

Stores the value associating with key

If nil is given as the value, the association from the key will be removed. It return the object deleted or nil if the specified key don’t exist.

flags can have the value DBD::NOOVERWRITE, in this case it will return nil if the specified key exist, otherwise true

Create an hash without the associations if the evaluation of the block returns true.

Iterates over associations in reverse order

set

Iterates over keys in reverse order

set

Iterates over secondary indexes in reverse order and give secondary key, primary key and value

Iterates over values in reverse order.

set

Stores the value associating with key

If nil is given as the value, the association from the key will be removed.

Returns the value corresponding the key

Set the partial value len and offset

same than length

Return database statistics.

same than database

Return an array of all associations [key, value]

Return an hash of all associations {key => value}

Empty a database

Returns the array of the values in the database.

Verify the integrity of the DB file, and optionnally output the key/data to file (file must respond to to_io)

[Validate]