Class: Rufus::Edo::Table
- Inherits:
-
Object
- Object
- Rufus::Edo::Table
- Includes:
- TableCore, Tokyo::CabinetConfig
- Defined in:
- lib/rufus/edo/cabinet/table.rb
Overview
Rufus::Edo::Table wraps Hirabayashi-san’s Ruby bindings for Tokyo Cabinet tables.
This class has the exact same methods as Rufus::Tokyo::Table. It’s faster though. The advantage of Rufus::Tokyo::Table lies in that in runs on Ruby 1.8, 1.9 and JRuby.
You need to have Hirabayashi-san’s binding installed to use this Rufus::Edo::Table :
http://github.com/jmettraux/rufus-tokyo/tree/master/lib/rufus/edo
Example usage :
require 'rufus/edo'
db = Rufus::Edo::Table.new('data.tct')
db['customer1'] = { 'name' => 'Taira no Kyomori', 'age' => '55' }
# ...
db.close
Constant Summary
Constants included from TableCore
Rufus::Edo::TableCore::INDEX_TYPES
Instance Attribute Summary
Attributes included from Tokyo::HashMethods
Instance Method Summary collapse
-
#initialize(path, params = {}) ⇒ Table
constructor
Initializes and open a table.
-
#path ⇒ Object
Returns the path to this table.
Methods included from TableCore
#[]=, #clear, #close, #delete, #delete_keys_with_prefix, #difference, #generate_unique_id, included, #intersection, #keys, #lget, #original, #prepare_query, #query, #query_count, #query_delete, #search, #set_index, #size, #tranabort, #tranbegin, #trancommit, #union
Methods included from Tokyo::Transactions
Methods included from Tokyo::HashMethods
#[], #default, #default=, #each, #merge, #merge!, #to_a, #to_h, #values
Constructor Details
#initialize(path, params = {}) ⇒ Table
Initializes and open a table.
db = Rufus::Edo::Table.new(‘data.tct’)
# or
db = Rufus::Edo::Table.new(‘data’, :type => :table)
# or
db = Rufus::Edo::Table.new(‘data’)
parameters
There are two ways to pass parameters at the opening of a db :
db = Rufus::Edo::Table.new('data.tct#opts=ld#mode=w') # or
db = Rufus::Edo::Table.new('data.tct', :opts => 'ld', :mode => 'w')
mode
* :mode a set of chars ('r'ead, 'w'rite, 'c'reate, 't'runcate,
'e' non locking, 'f' non blocking lock), default is 'wc'
other parameters
* :opts a set of chars ('l'arge, 'd'eflate, 'b'zip2, 't'cbs)
(usually empty or something like 'ld' or 'lb')
* :bnum number of elements of the bucket array
* :apow size of record alignment by power of 2 (defaults to 4)
* :fpow maximum number of elements of the free block pool by
power of 2 (defaults to 10)
* :rcnum specifies the maximum number of records to be cached.
If it is not more than 0, the record cache is disabled.
It is disabled by default.
* :lcnum specifies the maximum number of leaf nodes to be cached.
If it is not more than 0, the default value is specified.
The default value is 2048.
* :ncnum specifies the maximum number of non-leaf nodes to be
cached. If it is not more than 0, the default value is
specified. The default value is 512.
* :dfunit unit step number. If it is not more than 0,
the auto defragmentation is disabled. (Since TC 1.4.21)
NOTE :
On reopening a file, Cabinet will tend to stick to the parameters as set when the file was opened. To change that, have a look at the man pages of the various command line tools coming with Tokyo Cabinet.
110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 |
# File 'lib/rufus/edo/cabinet/table.rb', line 110 def initialize (path, params={}) conf = determine_conf(path, params, :table) @db = TokyoCabinet::TDB.new # # tune @db.tune(conf[:bnum], conf[:apow], conf[:fpow], conf[:opts]) # # set cache @db.setcache(conf[:rcnum], conf[:lcnum], conf[:ncnum]) # # set xmsiz @db.setxmsiz(conf[:xmsiz]) # # set dfunit (TC > 1.4.21) @db.setdfunit(conf[:dfunit]) if @db.respond_to?(:setdfunit) # # no default @default_proc = nil # # open @path = conf[:path] @db.open(@path, conf[:mode]) || raise_error end |
Instance Method Details
#path ⇒ Object
Returns the path to this table.
151 152 153 154 |
# File 'lib/rufus/edo/cabinet/table.rb', line 151 def path @path end |