Class: Rufus::Edo::Table
Included Modules
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
Constants Included from Rufus::Tokyo::CabinetConfig
Constants Included from Rufus::Edo::TableCore
Constructor Summary
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 |
# 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) # # open @path = conf[:path] @db.open(@path, conf[:mode]) || raise_error end |
Public Visibility
Public Instance Method Summary
| #path |
Returns the path to this table. |
|---|
Public Instance Methods Included from Rufus::Edo::TableCore
[]=, clear, close, delete, delete_keys_with_prefix, difference, generate_unique_id, intersection, keys, lget, original, prepare_query, query, query_delete, search, set_index, size, tranabort, tranbegin, trancommit, union
Public Instance Method Details
path
Returns the path to this table.
146 147 148 149 |
# File 'lib/rufus/edo/cabinet/table.rb', line 146 def path @path end |