Class: Droonga::Catalog::Dataset

Inherits:
Object
  • Object
show all
Defined in:
lib/droonga/catalog/dataset.rb

Direct Known Subclasses

Version1::Dataset

Constant Summary collapse

DEFAULT_NAME =
"Default"

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, data) ⇒ Dataset

Returns a new instance of Dataset.



27
28
29
30
31
# File 'lib/droonga/catalog/dataset.rb', line 27

def initialize(name, data)
  @name = name
  @data = data
  @schema = nil
end

Instance Attribute Details

#nameObject (readonly)

Returns the value of attribute name.



25
26
27
# File 'lib/droonga/catalog/dataset.rb', line 25

def name
  @name
end

Instance Method Details

#[](key) ⇒ Object

provided for compatibility



34
35
36
# File 'lib/droonga/catalog/dataset.rb', line 34

def [](key)
  @data[key]
end

#[]=(key, value) ⇒ Object

provided for compatibility



39
40
41
# File 'lib/droonga/catalog/dataset.rb', line 39

def []=(key, value)
  @data[key] = value
end

#all_nodesObject



63
64
65
# File 'lib/droonga/catalog/dataset.rb', line 63

def all_nodes
  @all_nodes ||= replicas.all_nodes
end

#compute_routes(message, live_nodes) ⇒ Object



67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# File 'lib/droonga/catalog/dataset.rb', line 67

def compute_routes(message, live_nodes)
  routes = []
  case message["type"]
  when "broadcast"
    volumes = replicas.select(message["replica"].to_sym, live_nodes)
    volumes.each do |volume|
      slices = volume.select_slices
      slices.each do |slice|
        routes << slice.volume.address.to_s
      end
    end
  when "scatter"
    volumes = replicas.select(message["replica"].to_sym, live_nodes)
    volumes.each do |volume|
      slice = volume.choose_slice(message["record"])
      routes << slice.volume.address.to_s
    end
  end
  routes
end

#factObject



51
52
53
# File 'lib/droonga/catalog/dataset.rb', line 51

def fact
  @data["fact"]
end

#n_workersObject



55
56
57
# File 'lib/droonga/catalog/dataset.rb', line 55

def n_workers
  @data["nWorkers"] || 0
end

#pluginsObject



47
48
49
# File 'lib/droonga/catalog/dataset.rb', line 47

def plugins
  @data["plugins"] || []
end

#replicasObject



59
60
61
# File 'lib/droonga/catalog/dataset.rb', line 59

def replicas
  @replicas ||= VolumeCollection.new(create_volumes(@data["replicas"]))
end

#schemaObject



43
44
45
# File 'lib/droonga/catalog/dataset.rb', line 43

def schema
  @schema ||= Schema.new(@name, @data["schema"])
end

#single_slice?Boolean

Returns:

  • (Boolean)


88
89
90
91
92
93
94
# File 'lib/droonga/catalog/dataset.rb', line 88

def single_slice?
  # TODO: Support slice key
  replicas.all? do |volume|
    volume.is_a?(SingleVolume) or
      volume.slices.size == 1
  end
end