# File lib/tarantool.rb, line 165 def primary_interface raise NoMethodError, "#primary_interface should by overriden" end
class Tarantool::DB
Attributes
closed[R]
closed?[R]
connections[R]
previous_shards_count[R]
Public Class Methods
new(shards, replica_strategy, previous_shards_count, insert_to_previous_shard)
click to toggle source
# File lib/tarantool.rb, line 75 def initialize(shards, replica_strategy, previous_shards_count, insert_to_previous_shard) @shards = shards @replica_strategy = replica_strategy @previous_shards_count = previous_shards_count @insert_to_previous_shard = insert_to_previous_shard @connections = {} @closed = false end
Public Instance Methods
_shard(number)
click to toggle source
# File lib/tarantool.rb, line 141 def _shard(number) @connections[number] ||= begin @shards[number].map do |host, port| con = IProto.get_connection(host, port, self.class::IPROTO_CONNECTION_TYPE) _tune_new_connection(con) con end end end
_tune_new_connection(con)
click to toggle source
# File lib/tarantool.rb, line 151 def _tune_new_connection(con) end
close()
click to toggle source
# File lib/tarantool.rb, line 126 def close @closed = true close_connection end
close_connection()
click to toggle source
# File lib/tarantool.rb, line 160 def close_connection each_connection{|c| c.close} @connections.clear end
each_connection() { |r| ... }
click to toggle source
# File lib/tarantool.rb, line 154 def each_connection @connections.each do |num, replicas| replicas.each{|r| yield r} end end
insert_with_shards_count()
click to toggle source
# File lib/tarantool.rb, line 137 def insert_with_shards_count @insert_to_previous_shard && @previous_shards_count || @shards.count end
method_missing(name, *args, &block)
click to toggle source
Calls superclass method
# File lib/tarantool.rb, line 118 def method_missing(name, *args, &block) if query.respond_to?(name) query.send(name, *args, &block) else super end end
primary_interface()
click to toggle source
query()
click to toggle source
# File lib/tarantool.rb, line 114 def query @query ||= self.class::Query.new(self) end
shards_count()
click to toggle source
# File lib/tarantool.rb, line 131 def shards_count @shards.count end
space(space_no, fields = [], opts = {})
click to toggle source
# File lib/tarantool.rb, line 95 def space(space_no, fields = [], opts = {}) case fields when Array space_array(space_no, fields, opts) when Hash space_hash(space_no, fields, opts) else raise "You should specify fields as an array or hash (got #{fields.inspect})" end end
space_array(space_no, field_types = [], opts = {})
click to toggle source
returns regular space, where fields are named by position
tarantool.space_block(0, [:int, :str, :int, :str], keys: [[0], [1,2]])
# File lib/tarantool.rb, line 87 def space_array(space_no, field_types = [], opts = {}) indexes = opts[:keys] || opts[:indexes] shard_fields = opts[:shard_fields] shard_proc = opts[:shard_proc] self.class::SpaceArray.new(self, space_no, field_types, indexes, shard_fields, shard_proc) end
space_hash(space_no, fields, opts = {})
click to toggle source
# File lib/tarantool.rb, line 106 def space_hash(space_no, fields, opts = {}) indexes = opts[:keys] || opts[:indexes] shard_fields = opts[:shard_fields] shard_proc = opts[:shard_proc] self.class::SpaceHash.new(self, space_no, fields, indexes, shard_fields, shard_proc) end