Class: Rufus::Edo::Table

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

Constructor Summary

public initialize(path, params = {})

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  '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.

[View source]


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 Method Details

path

public path

Returns the path to this table.

[View source]


146
147
148
149
# File 'lib/rufus/edo/cabinet/table.rb', line 146

def path

  @path
end
Generated on Friday, September 18 2009 at 10:35:43 AM by YARD 0.2.3.5 (ruby-1.8.7).