bigrecord 0.0.7 → 0.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/LICENSE +0 -0
- data/README.rdoc +9 -1
- data/Rakefile +0 -0
- data/VERSION +1 -1
- data/examples/bigrecord.yml +2 -5
- data/generators/bigrecord/bigrecord_generator.rb +0 -0
- data/generators/bigrecord/templates/bigrecord.rake +0 -0
- data/generators/bigrecord_migration/bigrecord_migration_generator.rb +0 -0
- data/generators/bigrecord_migration/templates/migration.rb +0 -0
- data/generators/bigrecord_model/bigrecord_model_generator.rb +0 -0
- data/generators/bigrecord_model/templates/migration.rb +0 -0
- data/generators/bigrecord_model/templates/model.rb +0 -0
- data/generators/bigrecord_model/templates/model_spec.rb +0 -0
- data/{doc → guides}/bigrecord_specs.rdoc +0 -0
- data/guides/deployment.rdoc +21 -0
- data/{doc → guides}/getting_started.rdoc +30 -18
- data/init.rb +0 -0
- data/install.rb +0 -0
- data/lib/big_record/abstract_base.rb +50 -28
- data/lib/big_record/action_view_extensions.rb +1 -1
- data/lib/big_record/ar_associations/association_collection.rb +0 -0
- data/lib/big_record/ar_associations/association_proxy.rb +0 -0
- data/lib/big_record/ar_associations/belongs_to_association.rb +0 -0
- data/lib/big_record/ar_associations/belongs_to_many_association.rb +0 -0
- data/lib/big_record/ar_associations/has_and_belongs_to_many_association.rb +0 -0
- data/lib/big_record/ar_associations/has_many_association.rb +0 -0
- data/lib/big_record/ar_associations/has_one_association.rb +0 -0
- data/lib/big_record/ar_associations.rb +0 -0
- data/lib/big_record/ar_reflection.rb +0 -0
- data/lib/big_record/attribute_methods.rb +0 -0
- data/lib/big_record/base.rb +49 -24
- data/lib/big_record/br_associations/association_collection.rb +0 -0
- data/lib/big_record/br_associations/association_proxy.rb +0 -0
- data/lib/big_record/br_associations/belongs_to_association.rb +0 -0
- data/lib/big_record/br_associations/belongs_to_many_association.rb +0 -0
- data/lib/big_record/br_associations/cached_item_proxy.rb +0 -0
- data/lib/big_record/br_associations/cached_item_proxy_factory.rb +0 -0
- data/lib/big_record/br_associations/has_and_belongs_to_many_association.rb +0 -0
- data/lib/big_record/br_associations/has_one_association.rb +0 -0
- data/lib/big_record/br_associations.rb +0 -0
- data/lib/big_record/br_reflection.rb +0 -0
- data/lib/big_record/callbacks.rb +0 -0
- data/lib/big_record/connection_adapters/abstract/connection_specification.rb +0 -0
- data/lib/big_record/connection_adapters/abstract/database_statements.rb +0 -0
- data/lib/big_record/connection_adapters/abstract/quoting.rb +1 -1
- data/lib/big_record/connection_adapters/abstract_adapter.rb +0 -0
- data/lib/big_record/connection_adapters/column.rb +30 -0
- data/lib/big_record/connection_adapters/hbase_adapter.rb +0 -0
- data/lib/big_record/connection_adapters/hbase_rest_adapter.rb +424 -0
- data/lib/big_record/connection_adapters/view.rb +63 -0
- data/lib/big_record/connection_adapters.rb +1 -0
- data/lib/big_record/deletion.rb +0 -0
- data/lib/big_record/dynamic_schema.rb +0 -0
- data/lib/big_record/embedded.rb +128 -1
- data/lib/big_record/embedded_associations/association_proxy.rb +0 -0
- data/lib/big_record/family_span_columns.rb +0 -0
- data/lib/big_record/fixtures.rb +0 -0
- data/lib/big_record/migration.rb +30 -8
- data/lib/big_record/routing_ext.rb +6 -4
- data/lib/big_record/timestamp.rb +0 -0
- data/lib/big_record/validations.rb +0 -0
- data/lib/big_record.rb +5 -3
- data/lib/bigrecord.rb +0 -0
- data/rails/init.rb +3 -2
- data/spec/adapter_benchmark.rb +55 -0
- data/spec/connections/bigrecord.yml +4 -2
- data/spec/connections/cassandra/connection.rb +0 -0
- data/spec/connections/hbase/connection.rb +0 -0
- data/spec/debug.log +156 -40724
- data/spec/integration/br_associations_spec.rb +0 -0
- data/spec/lib/animal.rb +0 -0
- data/spec/lib/book.rb +0 -0
- data/spec/lib/broken_migrations/duplicate_name/20090706182535_add_animals_table.rb +0 -0
- data/spec/lib/broken_migrations/duplicate_name/20090706193019_add_animals_table.rb +0 -0
- data/spec/lib/broken_migrations/duplicate_version/20090706190623_add_books_table.rb +0 -0
- data/spec/lib/broken_migrations/duplicate_version/20090706190623_add_companies_table.rb +0 -0
- data/spec/lib/company.rb +0 -0
- data/spec/lib/embedded/web_link.rb +0 -0
- data/spec/lib/employee.rb +0 -0
- data/spec/lib/migrations/20090706182535_add_animals_table.rb +0 -0
- data/spec/lib/migrations/20090706190623_add_books_table.rb +0 -0
- data/spec/lib/migrations/20090706193019_add_companies_table.rb +0 -0
- data/spec/lib/migrations/20090706194512_add_employees_table.rb +0 -0
- data/spec/lib/migrations/20090706195741_add_zoos_table.rb +0 -0
- data/spec/lib/novel.rb +2 -0
- data/spec/lib/zoo.rb +0 -0
- data/spec/spec.opts +0 -0
- data/spec/spec_helper.rb +7 -1
- data/spec/unit/abstract_base_spec.rb +0 -0
- data/spec/unit/adapters/abstract_adapter_spec.rb +0 -0
- data/spec/unit/adapters/adapter_shared_spec.rb +0 -0
- data/spec/unit/adapters/hbase_adapter_spec.rb +0 -0
- data/spec/unit/ar_associations_spec.rb +0 -0
- data/spec/unit/base_spec.rb +0 -0
- data/spec/unit/br_associations_spec.rb +0 -0
- data/spec/unit/embedded_spec.rb +0 -0
- data/spec/unit/find_spec.rb +0 -0
- data/spec/unit/hash_helper_spec.rb +0 -0
- data/spec/unit/migration_spec.rb +0 -0
- data/spec/unit/model_spec.rb +0 -0
- data/spec/unit/validations_spec.rb +0 -0
- data/tasks/bigrecord_tasks.rake +0 -0
- data/tasks/data_store.rb +8 -1
- data/tasks/gem.rb +2 -2
- data/tasks/rdoc.rb +14 -8
- data/tasks/spec.rb +0 -0
- metadata +10 -6
|
File without changes
|
|
File without changes
|
data/lib/big_record/fixtures.rb
CHANGED
|
File without changes
|
data/lib/big_record/migration.rb
CHANGED
|
@@ -28,15 +28,20 @@ module BigRecord
|
|
|
28
28
|
end
|
|
29
29
|
end
|
|
30
30
|
|
|
31
|
-
#
|
|
32
|
-
# require the creation of tables and column families ahead of time. The individual columns,
|
|
33
|
-
# however, are defined in the model itself and can be modified dynamically without the need for migrations.
|
|
31
|
+
# = Migrations
|
|
34
32
|
#
|
|
35
|
-
#
|
|
36
|
-
#
|
|
33
|
+
# Although column-oriented databases are generally schema-less, certain
|
|
34
|
+
# ones (like HBase) require the creation of tables and column families
|
|
35
|
+
# ahead of time. The individual columns, however, are defined in the model
|
|
36
|
+
# itself and can be modified dynamically without the need for migrations.
|
|
37
37
|
#
|
|
38
|
-
#
|
|
39
|
-
#
|
|
38
|
+
# Unless you're familiar with column families, the majority of use cases
|
|
39
|
+
# work perfectly fine within one column family. When you generate a
|
|
40
|
+
# bigrecord_model, it will default to creating the :attribute column family.
|
|
41
|
+
#
|
|
42
|
+
# The following is a standard migration file that creates a table
|
|
43
|
+
# called "Books" with the default column family :attribute that has the
|
|
44
|
+
# following option of 100 versions and uses the 'lzo' compression scheme.
|
|
40
45
|
# Leave any options blank for the default value.
|
|
41
46
|
#
|
|
42
47
|
# class CreateBooks < BigRecord::Migration
|
|
@@ -51,6 +56,23 @@ module BigRecord
|
|
|
51
56
|
# end
|
|
52
57
|
# end
|
|
53
58
|
#
|
|
59
|
+
# == HBase column family options (HBase specific)
|
|
60
|
+
#
|
|
61
|
+
# * versions: integer. By default, Hbase will store 3 versions of changes for
|
|
62
|
+
# any column family. Changing this value on the creation will change this
|
|
63
|
+
# behavior.
|
|
64
|
+
#
|
|
65
|
+
# * compression: 'none', 'gz', 'lzo'. Defaults to 'none'. Since Hbase 0.20,
|
|
66
|
+
# column families can be stored using compression. The compression scheme
|
|
67
|
+
# you define here must be installed on the Hbase servers!
|
|
68
|
+
#
|
|
69
|
+
# == Migrating
|
|
70
|
+
#
|
|
71
|
+
# Run the following rake task to migrate your tables and column families up
|
|
72
|
+
# to the latest version:
|
|
73
|
+
#
|
|
74
|
+
# rake bigrecord:migrate
|
|
75
|
+
#
|
|
54
76
|
class Migration
|
|
55
77
|
@@verbose = true
|
|
56
78
|
cattr_accessor :verbose
|
|
@@ -170,7 +192,7 @@ module BigRecord
|
|
|
170
192
|
|
|
171
193
|
end
|
|
172
194
|
|
|
173
|
-
class Migrator#:nodoc:
|
|
195
|
+
class Migrator #:nodoc:
|
|
174
196
|
class << self
|
|
175
197
|
def migrate(migrations_path, target_version = nil)
|
|
176
198
|
case
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
#
|
|
4
|
-
|
|
1
|
+
module ActionController #:nodoc
|
|
2
|
+
|
|
3
|
+
# The following overrides are required because we use strings as ids and it's
|
|
4
|
+
# possible that these strings are not clean. The default implementation
|
|
5
|
+
# escapes them with URI.escape() but its' not good. e.g. '&' becomes
|
|
6
|
+
# & instead of %26.
|
|
5
7
|
module Routing
|
|
6
8
|
class PathSegment
|
|
7
9
|
def interpolation_chunk(value_code = "#{local_name}")
|
data/lib/big_record/timestamp.rb
CHANGED
|
File without changes
|
|
File without changes
|
data/lib/big_record.rb
CHANGED
|
@@ -40,7 +40,7 @@ require dir + '/abstract_base'
|
|
|
40
40
|
require dir + '/base'
|
|
41
41
|
require dir + '/embedded'
|
|
42
42
|
require dir + '/validations'
|
|
43
|
-
require dir + '/callbacks'
|
|
43
|
+
#require dir + '/callbacks'
|
|
44
44
|
require dir + '/ar_reflection'
|
|
45
45
|
require dir + '/br_reflection'
|
|
46
46
|
require dir + '/ar_associations'
|
|
@@ -60,7 +60,8 @@ require dir + '/action_view_extensions'
|
|
|
60
60
|
|
|
61
61
|
BigRecord::Base.class_eval do
|
|
62
62
|
include BigRecord::Validations
|
|
63
|
-
include BigRecord::Callbacks
|
|
63
|
+
# include BigRecord::Callbacks
|
|
64
|
+
include ActiveRecord::Callbacks
|
|
64
65
|
include BigRecord::Timestamp
|
|
65
66
|
include BigRecord::ArAssociations
|
|
66
67
|
include BigRecord::BrAssociations
|
|
@@ -74,7 +75,8 @@ end
|
|
|
74
75
|
|
|
75
76
|
BigRecord::Embedded.class_eval do
|
|
76
77
|
include BigRecord::Validations
|
|
77
|
-
include BigRecord::Callbacks
|
|
78
|
+
# include BigRecord::Callbacks
|
|
79
|
+
include ActiveRecord::Callbacks
|
|
78
80
|
include BigRecord::Timestamp
|
|
79
81
|
include BigRecord::ArAssociations
|
|
80
82
|
include BigRecord::BrAssociations
|
data/lib/bigrecord.rb
CHANGED
|
File without changes
|
data/rails/init.rb
CHANGED
|
@@ -10,6 +10,7 @@ begin
|
|
|
10
10
|
|
|
11
11
|
# Try establishing the connection
|
|
12
12
|
BigRecord::Base.establish_connection
|
|
13
|
-
rescue
|
|
14
|
-
puts "[Bigrecord]
|
|
13
|
+
rescue Exception => e
|
|
14
|
+
puts "[Bigrecord] Error encountered while loading the config file and establishing a connection. Please bootstrap Bigrecord into your application if you haven't done so already with: script/generate bigrecord\n" +
|
|
15
|
+
e.message
|
|
15
16
|
end
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# This benchmark was created to give a relative measure of performance
|
|
2
|
+
# between different adapters, e.g. Bigrecord Driver vs Stargate.
|
|
3
|
+
#
|
|
4
|
+
# This is not meant to be a benchmark of real world performance.
|
|
5
|
+
#
|
|
6
|
+
# To use it, run the command:
|
|
7
|
+
# > ruby adapter_benchmark.rb [hbase|hbase_brd]
|
|
8
|
+
#
|
|
9
|
+
|
|
10
|
+
require 'rubygems'
|
|
11
|
+
require 'benchmark'
|
|
12
|
+
require 'pathname'
|
|
13
|
+
require 'ruby-debug'
|
|
14
|
+
|
|
15
|
+
SPEC_ROOT = Pathname(__FILE__).dirname.expand_path
|
|
16
|
+
require SPEC_ROOT.parent + 'lib/big_record'
|
|
17
|
+
|
|
18
|
+
BigRecord::Base.configurations = YAML::load(File.open(File.join(File.dirname(__FILE__), "connections", "bigrecord.yml")))
|
|
19
|
+
BigRecord::Base.logger = Logger.new(File.join(File.dirname(__FILE__), "benchmark.log"))
|
|
20
|
+
|
|
21
|
+
environment = (ARGV.pop || "hbase")
|
|
22
|
+
BigRecord::Base.establish_connection(environment)
|
|
23
|
+
BigRecord::Base.logger.info "Connecting to #{environment} data store (#{BigRecord::Base.configurations.inspect})"
|
|
24
|
+
|
|
25
|
+
require 'lib/book'
|
|
26
|
+
|
|
27
|
+
Book.delete_all
|
|
28
|
+
record_ids = []
|
|
29
|
+
|
|
30
|
+
# Benchmark the creation process
|
|
31
|
+
Benchmark.bm do |x|
|
|
32
|
+
x.report("Creating 1000 records") do
|
|
33
|
+
record_ids = 1000.times.collect do |i|
|
|
34
|
+
Book.create(:title => "Book_#{i}", :description => "Book description", :author => "Some Author").id
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# Reading in those records created previously
|
|
40
|
+
Benchmark.bm do |x|
|
|
41
|
+
x.report("Reading 1000 records") do
|
|
42
|
+
record_ids.each do |id|
|
|
43
|
+
Book.find(id)
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
# Benchmark the scanner functionality
|
|
49
|
+
Benchmark.bm do |x|
|
|
50
|
+
x.report('find(:all)x10') do
|
|
51
|
+
10.times do |x|
|
|
52
|
+
Book.find(:all)
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
hbase:
|
|
2
|
+
adapter: hbase_rest
|
|
3
|
+
api_address: http://localhost:8080
|
|
4
|
+
hbase_brd:
|
|
2
5
|
adapter: hbase
|
|
3
6
|
zookeeper_quorum: localhost
|
|
4
|
-
zookeeper_client_port:
|
|
7
|
+
zookeeper_client_port: 2181
|
|
5
8
|
drb_host: localhost
|
|
6
9
|
drb_port: 50001
|
|
7
|
-
|
|
8
10
|
cassandra:
|
|
9
11
|
adapter: cassandra
|
|
10
12
|
address: localhost
|
|
File without changes
|
|
File without changes
|