bigrecord 0.0.7 → 0.0.8
Sign up to get free protection for your applications and to get access to all the features.
- 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
|