gotime-cassandra_object 0.7.8 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
data/MIT-LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2011 [Michael Koziarski]
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -17,6 +17,8 @@ require 'cassandra_object/cursor'
17
17
  require 'cassandra_object/collection'
18
18
  require 'cassandra_object/types'
19
19
  require 'cassandra_object/mocking'
20
+ require 'cassandra_object/find_each'
21
+ require 'cassandra_object/find_with_ids'
20
22
 
21
23
  require 'cassandra_object/log_subscriber'
22
24
 
@@ -56,9 +58,10 @@ module CassandraObject
56
58
  include Persistence
57
59
  include Indexes
58
60
  include Dirty
59
-
60
61
  include Validation
61
62
  include Associations
63
+ include FindEach
64
+ include FindWithIds
62
65
 
63
66
  attr_reader :attributes
64
67
  attr_accessor :key
@@ -0,0 +1,28 @@
1
+ module CassandraObject
2
+ module FindEach
3
+ extend ActiveSupport::Concern
4
+
5
+ module ClassMethods
6
+ def find_each(options={})
7
+ find_in_batches(options) do |records|
8
+ records.each { |record| yield record }
9
+ end
10
+ nil
11
+ end
12
+
13
+ def find_in_batches(options={})
14
+ start = options[:start] || ''
15
+ finish = options[:finish] || ''
16
+ batch_size = options[:batch_size] || 100
17
+
18
+ records = all(start..finish, limit: batch_size)
19
+ while records.any?
20
+ yield records
21
+ records = all(records.last.key.to_s..finish, limit: batch_size+1)
22
+ records.shift
23
+ end
24
+ nil
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,24 @@
1
+ module CassandraObject
2
+ module FindWithIds
3
+ extend ActiveSupport::Concern
4
+
5
+ module ClassMethods
6
+ def find_with_ids(ids, options=nil)
7
+ expects_array = ids.first.kind_of?(Array)
8
+ return ids.first if expects_array && ids.first.empty?
9
+
10
+ ids = ids.dup
11
+ ids.flatten!
12
+ ids.compact!
13
+ ids.collect!(&:to_s)
14
+ ids.uniq!
15
+
16
+ #raise RecordNotFound, "Couldn't find #{record_klass.name} without an ID" if ids.empty?
17
+
18
+ results = multi_get(ids).values.compact
19
+
20
+ results.size <= 1 && !expects_array ? results.first : results
21
+ end
22
+ end
23
+ end
24
+ end
metadata CHANGED
@@ -1,12 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gotime-cassandra_object
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 7
8
- - 8
9
- version: 0.7.8
4
+ prerelease:
5
+ version: 0.8.0
10
6
  platform: ruby
11
7
  authors:
12
8
  - Michael Koziarski
@@ -15,116 +11,96 @@ autorequire:
15
11
  bindir: bin
16
12
  cert_chain: []
17
13
 
18
- date: 2011-02-18 00:00:00 -08:00
14
+ date: 2011-03-09 00:00:00 -08:00
19
15
  default_executable:
20
16
  dependencies:
21
17
  - !ruby/object:Gem::Dependency
22
18
  name: activesupport
19
+ prerelease: false
23
20
  requirement: &id001 !ruby/object:Gem::Requirement
24
21
  none: false
25
22
  requirements:
26
23
  - - ~>
27
24
  - !ruby/object:Gem::Version
28
- segments:
29
- - 3
30
25
  version: "3"
31
26
  type: :runtime
32
- prerelease: false
33
27
  version_requirements: *id001
34
28
  - !ruby/object:Gem::Dependency
35
29
  name: activemodel
30
+ prerelease: false
36
31
  requirement: &id002 !ruby/object:Gem::Requirement
37
32
  none: false
38
33
  requirements:
39
34
  - - ~>
40
35
  - !ruby/object:Gem::Version
41
- segments:
42
- - 3
43
36
  version: "3"
44
37
  type: :runtime
45
- prerelease: false
46
38
  version_requirements: *id002
47
39
  - !ruby/object:Gem::Dependency
48
40
  name: cassandra
41
+ prerelease: false
49
42
  requirement: &id003 !ruby/object:Gem::Requirement
50
43
  none: false
51
44
  requirements:
52
45
  - - ">="
53
46
  - !ruby/object:Gem::Version
54
- segments:
55
- - 0
56
47
  version: "0"
57
48
  type: :runtime
58
- prerelease: false
59
49
  version_requirements: *id003
60
50
  - !ruby/object:Gem::Dependency
61
51
  name: nokogiri
52
+ prerelease: false
62
53
  requirement: &id004 !ruby/object:Gem::Requirement
63
54
  none: false
64
55
  requirements:
65
56
  - - ">="
66
57
  - !ruby/object:Gem::Version
67
- segments:
68
- - 0
69
58
  version: "0"
70
59
  type: :runtime
71
- prerelease: false
72
60
  version_requirements: *id004
73
61
  - !ruby/object:Gem::Dependency
74
62
  name: shoulda
63
+ prerelease: false
75
64
  requirement: &id005 !ruby/object:Gem::Requirement
76
65
  none: false
77
66
  requirements:
78
67
  - - ">="
79
68
  - !ruby/object:Gem::Version
80
- segments:
81
- - 0
82
69
  version: "0"
83
70
  type: :development
84
- prerelease: false
85
71
  version_requirements: *id005
86
72
  - !ruby/object:Gem::Dependency
87
73
  name: bundler
74
+ prerelease: false
88
75
  requirement: &id006 !ruby/object:Gem::Requirement
89
76
  none: false
90
77
  requirements:
91
78
  - - ~>
92
79
  - !ruby/object:Gem::Version
93
- segments:
94
- - 1
95
- - 0
96
- - 0
97
80
  version: 1.0.0
98
81
  type: :development
99
- prerelease: false
100
82
  version_requirements: *id006
101
83
  - !ruby/object:Gem::Dependency
102
84
  name: jeweler
85
+ prerelease: false
103
86
  requirement: &id007 !ruby/object:Gem::Requirement
104
87
  none: false
105
88
  requirements:
106
89
  - - ~>
107
90
  - !ruby/object:Gem::Version
108
- segments:
109
- - 1
110
- - 5
111
- - 1
112
91
  version: 1.5.1
113
92
  type: :development
114
- prerelease: false
115
93
  version_requirements: *id007
116
94
  - !ruby/object:Gem::Dependency
117
95
  name: rcov
96
+ prerelease: false
118
97
  requirement: &id008 !ruby/object:Gem::Requirement
119
98
  none: false
120
99
  requirements:
121
100
  - - ">="
122
101
  - !ruby/object:Gem::Version
123
- segments:
124
- - 0
125
102
  version: "0"
126
103
  type: :development
127
- prerelease: false
128
104
  version_requirements: *id008
129
105
  description: Cassandra ActiveModel
130
106
  email: grantr@gmail.com
@@ -133,22 +109,14 @@ executables: []
133
109
  extensions: []
134
110
 
135
111
  extra_rdoc_files:
136
- - LICENSE
137
112
  - README.markdown
138
- - TODO
139
113
  files:
140
- - CHANGELOG
141
- - Gemfile
142
- - Gemfile.lock
143
- - LICENSE
144
- - README.markdown
114
+ - MIT-LICENSE
145
115
  - Rakefile
146
- - TODO
147
- - gotime-cassandra_object.gemspec
148
- - lib/cassandra_object.rb
149
- - lib/cassandra_object/associations.rb
116
+ - README.markdown
150
117
  - lib/cassandra_object/associations/one_to_many.rb
151
118
  - lib/cassandra_object/associations/one_to_one.rb
119
+ - lib/cassandra_object/associations.rb
152
120
  - lib/cassandra_object/attributes.rb
153
121
  - lib/cassandra_object/base.rb
154
122
  - lib/cassandra_object/callbacks.rb
@@ -156,13 +124,14 @@ files:
156
124
  - lib/cassandra_object/consistency.rb
157
125
  - lib/cassandra_object/cursor.rb
158
126
  - lib/cassandra_object/dirty.rb
127
+ - lib/cassandra_object/find_each.rb
128
+ - lib/cassandra_object/find_with_ids.rb
159
129
  - lib/cassandra_object/generators/migration_generator.rb
160
- - lib/cassandra_object/generators/templates/migration.rb.erb
161
- - lib/cassandra_object/identity.rb
162
130
  - lib/cassandra_object/identity/abstract_key_factory.rb
163
131
  - lib/cassandra_object/identity/key.rb
164
132
  - lib/cassandra_object/identity/natural_key_factory.rb
165
133
  - lib/cassandra_object/identity/uuid_key_factory.rb
134
+ - lib/cassandra_object/identity.rb
166
135
  - lib/cassandra_object/indexes.rb
167
136
  - lib/cassandra_object/log_subscriber.rb
168
137
  - lib/cassandra_object/migration.rb
@@ -177,13 +146,10 @@ files:
177
146
  - lib/cassandra_object/type_registration.rb
178
147
  - lib/cassandra_object/types.rb
179
148
  - lib/cassandra_object/validation.rb
180
- - lib/cassandra_object/version.rb
149
+ - lib/cassandra_object.rb
181
150
  - test/active_model_test.rb
182
151
  - test/basic_scenarios_test.rb
183
152
  - test/callbacks_test.rb
184
- - test/config/cassandra.in.sh
185
- - test/config/log4j.properties
186
- - test/config/storage-conf.xml
187
153
  - test/connection.rb
188
154
  - test/cursor_test.rb
189
155
  - test/dirty_test.rb
@@ -201,8 +167,8 @@ files:
201
167
  - test/z_mock_test.rb
202
168
  has_rdoc: true
203
169
  homepage: http://github.com/gotime/cassandra_object
204
- licenses:
205
- - MIT
170
+ licenses: []
171
+
206
172
  post_install_message:
207
173
  rdoc_options: []
208
174
 
@@ -213,41 +179,19 @@ required_ruby_version: !ruby/object:Gem::Requirement
213
179
  requirements:
214
180
  - - ">="
215
181
  - !ruby/object:Gem::Version
216
- hash: -64604789628622989
217
- segments:
218
- - 0
219
182
  version: "0"
220
183
  required_rubygems_version: !ruby/object:Gem::Requirement
221
184
  none: false
222
185
  requirements:
223
186
  - - ">="
224
187
  - !ruby/object:Gem::Version
225
- segments:
226
- - 0
227
- version: "0"
188
+ version: 1.3.5
228
189
  requirements: []
229
190
 
230
191
  rubyforge_project:
231
- rubygems_version: 1.3.7
192
+ rubygems_version: 1.6.1
232
193
  signing_key:
233
194
  specification_version: 3
234
195
  summary: Cassandra ActiveModel
235
- test_files:
236
- - test/active_model_test.rb
237
- - test/basic_scenarios_test.rb
238
- - test/callbacks_test.rb
239
- - test/connection.rb
240
- - test/cursor_test.rb
241
- - test/dirty_test.rb
242
- - test/fixture_models.rb
243
- - test/identity/natural_key_factory_test.rb
244
- - test/index_test.rb
245
- - test/legacy/test_helper.rb
246
- - test/migration_test.rb
247
- - test/one_to_many_associations_test.rb
248
- - test/test_case.rb
249
- - test/test_helper.rb
250
- - test/time_test.rb
251
- - test/types_test.rb
252
- - test/validation_test.rb
253
- - test/z_mock_test.rb
196
+ test_files: []
197
+
data/CHANGELOG DELETED
@@ -1,3 +0,0 @@
1
- v 0.5.0.pre
2
- - First release
3
- - Rough around the corners, especially outside the core attributes/persistence stuff
data/Gemfile DELETED
@@ -1,14 +0,0 @@
1
- source :gemcutter
2
-
3
- gem "activesupport", "~>3"
4
- gem "activemodel", "~>3"
5
-
6
- gem "cassandra"
7
- gem "nokogiri"
8
-
9
- group :development do
10
- gem "shoulda", ">= 0"
11
- gem "bundler", "~> 1.0.0"
12
- gem "jeweler", "~> 1.5.1"
13
- gem "rcov", ">= 0"
14
- end
data/Gemfile.lock DELETED
@@ -1,42 +0,0 @@
1
- GEM
2
- remote: http://rubygems.org/
3
- specs:
4
- activemodel (3.0.3)
5
- activesupport (= 3.0.3)
6
- builder (~> 2.1.2)
7
- i18n (~> 0.4)
8
- activesupport (3.0.3)
9
- builder (2.1.2)
10
- cassandra (0.9.0)
11
- json
12
- rake
13
- simple_uuid (>= 0.1.0)
14
- thrift_client (>= 0.6.0)
15
- git (1.2.5)
16
- i18n (0.5.0)
17
- jeweler (1.5.1)
18
- bundler (~> 1.0.0)
19
- git (>= 1.2.5)
20
- rake
21
- json (1.4.6)
22
- nokogiri (1.4.4)
23
- rake (0.8.7)
24
- rcov (0.9.9)
25
- shoulda (2.11.3)
26
- simple_uuid (0.1.1)
27
- thrift (0.5.0)
28
- thrift_client (0.6.0)
29
- thrift (~> 0.5.0)
30
-
31
- PLATFORMS
32
- ruby
33
-
34
- DEPENDENCIES
35
- activemodel (~> 3)
36
- activesupport (~> 3)
37
- bundler (~> 1.0.0)
38
- cassandra
39
- jeweler (~> 1.5.1)
40
- nokogiri
41
- rcov
42
- shoulda
data/LICENSE DELETED
@@ -1,13 +0,0 @@
1
- Copyright (c) 2009 Koziarski Software Ltd
2
-
3
- Permission to use, copy, modify, and/or distribute this software for any
4
- purpose with or without fee is hereby granted, provided that the above
5
- copyright notice and this permission notice appear in all copies.
6
-
7
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
8
- WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
9
- MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
10
- ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
11
- WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
12
- ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
13
- OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
data/TODO DELETED
@@ -1,2 +0,0 @@
1
- * Support for alternate column names in associations and indexes
2
- * Support for compound keys for associations e.g. "#{customer_id}:#{invoice_date}"
@@ -1,144 +0,0 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
- # -*- encoding: utf-8 -*-
5
-
6
- Gem::Specification.new do |s|
7
- s.name = %q{gotime-cassandra_object}
8
- s.version = "0.7.8"
9
-
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Michael Koziarski", "grantr"]
12
- s.date = %q{2011-02-18}
13
- s.description = %q{Cassandra ActiveModel}
14
- s.email = %q{grantr@gmail.com}
15
- s.extra_rdoc_files = [
16
- "LICENSE",
17
- "README.markdown",
18
- "TODO"
19
- ]
20
- s.files = [
21
- "CHANGELOG",
22
- "Gemfile",
23
- "Gemfile.lock",
24
- "LICENSE",
25
- "README.markdown",
26
- "Rakefile",
27
- "TODO",
28
- "gotime-cassandra_object.gemspec",
29
- "lib/cassandra_object.rb",
30
- "lib/cassandra_object/associations.rb",
31
- "lib/cassandra_object/associations/one_to_many.rb",
32
- "lib/cassandra_object/associations/one_to_one.rb",
33
- "lib/cassandra_object/attributes.rb",
34
- "lib/cassandra_object/base.rb",
35
- "lib/cassandra_object/callbacks.rb",
36
- "lib/cassandra_object/collection.rb",
37
- "lib/cassandra_object/consistency.rb",
38
- "lib/cassandra_object/cursor.rb",
39
- "lib/cassandra_object/dirty.rb",
40
- "lib/cassandra_object/generators/migration_generator.rb",
41
- "lib/cassandra_object/generators/templates/migration.rb.erb",
42
- "lib/cassandra_object/identity.rb",
43
- "lib/cassandra_object/identity/abstract_key_factory.rb",
44
- "lib/cassandra_object/identity/key.rb",
45
- "lib/cassandra_object/identity/natural_key_factory.rb",
46
- "lib/cassandra_object/identity/uuid_key_factory.rb",
47
- "lib/cassandra_object/indexes.rb",
48
- "lib/cassandra_object/log_subscriber.rb",
49
- "lib/cassandra_object/migration.rb",
50
- "lib/cassandra_object/migrations.rb",
51
- "lib/cassandra_object/migrator.rb",
52
- "lib/cassandra_object/mocking.rb",
53
- "lib/cassandra_object/persistence.rb",
54
- "lib/cassandra_object/serialization.rb",
55
- "lib/cassandra_object/tasks/column_family.rb",
56
- "lib/cassandra_object/tasks/keyspace.rb",
57
- "lib/cassandra_object/tasks/ks.rb",
58
- "lib/cassandra_object/type_registration.rb",
59
- "lib/cassandra_object/types.rb",
60
- "lib/cassandra_object/validation.rb",
61
- "lib/cassandra_object/version.rb",
62
- "test/active_model_test.rb",
63
- "test/basic_scenarios_test.rb",
64
- "test/callbacks_test.rb",
65
- "test/config/cassandra.in.sh",
66
- "test/config/log4j.properties",
67
- "test/config/storage-conf.xml",
68
- "test/connection.rb",
69
- "test/cursor_test.rb",
70
- "test/dirty_test.rb",
71
- "test/fixture_models.rb",
72
- "test/identity/natural_key_factory_test.rb",
73
- "test/index_test.rb",
74
- "test/legacy/test_helper.rb",
75
- "test/migration_test.rb",
76
- "test/one_to_many_associations_test.rb",
77
- "test/test_case.rb",
78
- "test/test_helper.rb",
79
- "test/time_test.rb",
80
- "test/types_test.rb",
81
- "test/validation_test.rb",
82
- "test/z_mock_test.rb"
83
- ]
84
- s.homepage = %q{http://github.com/gotime/cassandra_object}
85
- s.licenses = ["MIT"]
86
- s.require_paths = ["lib"]
87
- s.rubygems_version = %q{1.3.7}
88
- s.summary = %q{Cassandra ActiveModel}
89
- s.test_files = [
90
- "test/active_model_test.rb",
91
- "test/basic_scenarios_test.rb",
92
- "test/callbacks_test.rb",
93
- "test/connection.rb",
94
- "test/cursor_test.rb",
95
- "test/dirty_test.rb",
96
- "test/fixture_models.rb",
97
- "test/identity/natural_key_factory_test.rb",
98
- "test/index_test.rb",
99
- "test/legacy/test_helper.rb",
100
- "test/migration_test.rb",
101
- "test/one_to_many_associations_test.rb",
102
- "test/test_case.rb",
103
- "test/test_helper.rb",
104
- "test/time_test.rb",
105
- "test/types_test.rb",
106
- "test/validation_test.rb",
107
- "test/z_mock_test.rb"
108
- ]
109
-
110
- if s.respond_to? :specification_version then
111
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
112
- s.specification_version = 3
113
-
114
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
115
- s.add_runtime_dependency(%q<activesupport>, ["~> 3"])
116
- s.add_runtime_dependency(%q<activemodel>, ["~> 3"])
117
- s.add_runtime_dependency(%q<cassandra>, [">= 0"])
118
- s.add_runtime_dependency(%q<nokogiri>, [">= 0"])
119
- s.add_development_dependency(%q<shoulda>, [">= 0"])
120
- s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
121
- s.add_development_dependency(%q<jeweler>, ["~> 1.5.1"])
122
- s.add_development_dependency(%q<rcov>, [">= 0"])
123
- else
124
- s.add_dependency(%q<activesupport>, ["~> 3"])
125
- s.add_dependency(%q<activemodel>, ["~> 3"])
126
- s.add_dependency(%q<cassandra>, [">= 0"])
127
- s.add_dependency(%q<nokogiri>, [">= 0"])
128
- s.add_dependency(%q<shoulda>, [">= 0"])
129
- s.add_dependency(%q<bundler>, ["~> 1.0.0"])
130
- s.add_dependency(%q<jeweler>, ["~> 1.5.1"])
131
- s.add_dependency(%q<rcov>, [">= 0"])
132
- end
133
- else
134
- s.add_dependency(%q<activesupport>, ["~> 3"])
135
- s.add_dependency(%q<activemodel>, ["~> 3"])
136
- s.add_dependency(%q<cassandra>, [">= 0"])
137
- s.add_dependency(%q<nokogiri>, [">= 0"])
138
- s.add_dependency(%q<shoulda>, [">= 0"])
139
- s.add_dependency(%q<bundler>, ["~> 1.0.0"])
140
- s.add_dependency(%q<jeweler>, ["~> 1.5.1"])
141
- s.add_dependency(%q<rcov>, [">= 0"])
142
- end
143
- end
144
-
@@ -1,11 +0,0 @@
1
- class <%= name %> < CassandraObject::Migration
2
-
3
- def self.up
4
-
5
- end
6
-
7
- def self.down
8
-
9
- end
10
-
11
- end
@@ -1,9 +0,0 @@
1
- module CassandraObject
2
- module Version
3
- MAJOR = 0
4
- MINOR = 7
5
- PATCH = 8
6
-
7
- STRING = [MAJOR, MINOR, PATCH].compact.join('.')
8
- end
9
- end
@@ -1,53 +0,0 @@
1
- # Licensed to the Apache Software Foundation (ASF) under one
2
- # or more contributor license agreements. See the NOTICE file
3
- # distributed with this work for additional information
4
- # regarding copyright ownership. The ASF licenses this file
5
- # to you under the Apache License, Version 2.0 (the
6
- # "License"); you may not use this file except in compliance
7
- # with the License. You may obtain a copy of the License at
8
- #
9
- # http://www.apache.org/licenses/LICENSE-2.0
10
- #
11
- # Unless required by applicable law or agreed to in writing, software
12
- # distributed under the License is distributed on an "AS IS" BASIS,
13
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- # See the License for the specific language governing permissions and
15
- # limitations under the License.
16
-
17
-
18
- cassandra_home=`dirname $0`/..
19
-
20
- # The directory where Cassandra's configs live (required)
21
- CASSANDRA_CONF=`pwd`/../test/config
22
-
23
- # This can be the path to a jar file, or a directory containing the
24
- # compiled classes. NOTE: This isn't needed by the startup script,
25
- # it's just used here in constructing the classpath.
26
- cassandra_bin=$cassandra_home/build/classes
27
- #cassandra_bin=$cassandra_home/build/cassandra.jar
28
-
29
- # The java classpath (required)
30
- CLASSPATH=$CASSANDRA_CONF:$cassandra_bin
31
-
32
- for jar in $cassandra_home/lib/*.jar; do
33
- CLASSPATH=$CLASSPATH:$jar
34
- done
35
-
36
- # Arguments to pass to the JVM
37
- JVM_OPTS=" \
38
- -ea \
39
- -Xdebug \
40
- -Xrunjdwp:transport=dt_socket,server=y,address=8888,suspend=n \
41
- -Xms128M \
42
- -Xmx1G \
43
- -XX:SurvivorRatio=8 \
44
- -XX:TargetSurvivorRatio=90 \
45
- -XX:+AggressiveOpts \
46
- -XX:+UseParNewGC \
47
- -XX:+UseConcMarkSweepGC \
48
- -XX:CMSInitiatingOccupancyFraction=1 \
49
- -XX:+CMSParallelRemarkEnabled \
50
- -XX:+HeapDumpOnOutOfMemoryError \
51
- -Dcom.sun.management.jmxremote.port=8080 \
52
- -Dcom.sun.management.jmxremote.ssl=false \
53
- -Dcom.sun.management.jmxremote.authenticate=false"
@@ -1,38 +0,0 @@
1
- # Licensed to the Apache Software Foundation (ASF) under one
2
- # or more contributor license agreements. See the NOTICE file
3
- # distributed with this work for additional information
4
- # regarding copyright ownership. The ASF licenses this file
5
- # to you under the Apache License, Version 2.0 (the
6
- # "License"); you may not use this file except in compliance
7
- # with the License. You may obtain a copy of the License at
8
- #
9
- # http://www.apache.org/licenses/LICENSE-2.0
10
- #
11
- # Unless required by applicable law or agreed to in writing, software
12
- # distributed under the License is distributed on an "AS IS" BASIS,
13
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- # See the License for the specific language governing permissions and
15
- # limitations under the License.
16
-
17
- # for production, you should probably set the root to INFO
18
- # and the pattern to %c instead of %l. (%l is slower.)
19
-
20
- # output messages into a rolling log file as well as stdout
21
- log4j.rootLogger=DEBUG,stdout,R
22
-
23
- # stdout
24
- log4j.appender.stdout=org.apache.log4j.ConsoleAppender
25
- log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout
26
-
27
- # rolling log file ("system.log
28
- log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
29
- log4j.appender.R.DatePattern='.'yyyy-MM-dd-HH
30
- log4j.appender.R.layout=org.apache.log4j.PatternLayout
31
- log4j.appender.R.layout.ConversionPattern=%5p [%t] %d{ISO8601} %F (line %L) %m%n
32
- # Edit the next line to point to your logs directory
33
- log4j.appender.R.File=data/logs/system.log
34
-
35
- # Application logging options
36
- #log4j.logger.com.facebook=DEBUG
37
- #log4j.logger.com.facebook.infrastructure.gms=DEBUG
38
- #log4j.logger.com.facebook.infrastructure.db=DEBUG
@@ -1,221 +0,0 @@
1
- <!--
2
- ~ Licensed to the Apache Software Foundation (ASF) under one
3
- ~ or more contributor license agreements. See the NOTICE file
4
- ~ distributed with this work for additional information
5
- ~ regarding copyright ownership. The ASF licenses this file
6
- ~ to you under the Apache License, Version 2.0 (the
7
- ~ "License"); you may not use this file except in compliance
8
- ~ with the License. You may obtain a copy of the License at
9
- ~
10
- ~ http:/www.apache.org/licenses/LICENSE-2.0
11
- ~
12
- ~ Unless required by applicable law or agreed to in writing,
13
- ~ software distributed under the License is distributed on an
14
- ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
- ~ KIND, either express or implied. See the License for the
16
- ~ specific language governing permissions and limitations
17
- ~ under the License.
18
- -->
19
- <Storage>
20
- <!--======================================================================-->
21
- <!-- Basic Configuration -->
22
- <!--======================================================================-->
23
- <ClusterName>Test</ClusterName>
24
-
25
- <!-- Tables and ColumnFamilies
26
- Think of a table as a namespace, not a relational table.
27
- (ColumnFamilies are closer in meaning to those.)
28
-
29
- There is an implicit table named 'system' for Cassandra internals.
30
- -->
31
- <Keyspaces>
32
- <Keyspace Name="Twitter">
33
- <KeysCachedFraction>0.01</KeysCachedFraction>
34
- <ColumnFamily CompareWith="UTF8Type" Name="Users" />
35
- <ColumnFamily CompareWith="UTF8Type" Name="UserAudits" />
36
- <ColumnFamily CompareWith="UTF8Type" CompareSubcolumnsWith="TimeUUIDType" ColumnType="Super" Name="UserRelationships" />
37
- <ColumnFamily CompareWith="UTF8Type" Name="Usernames" />
38
- <ColumnFamily CompareWith="UTF8Type" Name="Statuses" />
39
- <ColumnFamily CompareWith="UTF8Type" Name="StatusAudits" />
40
- <ColumnFamily CompareWith="UTF8Type" CompareSubcolumnsWith="TimeUUIDType" ColumnType="Super" Name="StatusRelationships" />
41
- </Keyspace>
42
-
43
- <Keyspace Name="Multiblog">
44
- <KeysCachedFraction>0.01</KeysCachedFraction>
45
- <ColumnFamily CompareWith="UTF8Type" Name="Blogs"/>
46
- <ColumnFamily CompareWith="UTF8Type" Name="Comments"/>
47
- </Keyspace>
48
-
49
- <Keyspace Name="CassandraObject">
50
- <KeysCachedFraction>0.01</KeysCachedFraction>
51
- <ColumnFamily CompareWith="UTF8Type" Name="Customers" />
52
- <ColumnFamily CompareWith="UTF8Type" CompareSubcolumnsWith="TimeUUIDType" ColumnType="Super" Name="CustomerRelationships" />
53
- <ColumnFamily CompareWith="UTF8Type" CompareSubcolumnsWith="TimeUUIDType" ColumnType="Super" Name="CustomersByLastName" />
54
- <ColumnFamily CompareWith="UTF8Type" Name="Invoices" />
55
- <ColumnFamily CompareWith="UTF8Type" CompareSubcolumnsWith="TimeUUIDType" ColumnType="Super" Name="InvoiceRelationships" />
56
- <ColumnFamily CompareWith="UTF8Type" Name="InvoicesByNumber" />
57
- <ColumnFamily CompareWith="UTF8Type" Name="Payments" />
58
- </Keyspace>
59
- </Keyspaces>
60
-
61
- <!-- Partitioner: any IPartitioner may be used, including your own
62
- as long as it is on the classpath. Out of the box,
63
- Cassandra provides
64
- org.apache.cassandra.dht.RandomPartitioner and
65
- org.apache.cassandra.dht.OrderPreservingPartitioner.
66
- Range queries require using OrderPreservingPartitioner or a subclass.
67
-
68
- Achtung! Changing this parameter requires wiping your data directories,
69
- since the partitioner can modify the sstable on-disk format.
70
- -->
71
- <Partitioner>org.apache.cassandra.dht.OrderPreservingPartitioner</Partitioner>
72
-
73
- <!-- If you are using the OrderPreservingPartitioner and you know your key
74
- distribution, you can specify the token for this node to use.
75
- (Keys are sent to the node with the "closest" token, so distributing
76
- your tokens equally along the key distribution space will spread
77
- keys evenly across your cluster.) This setting is only checked the
78
- first time a node is started.
79
-
80
- This can also be useful with RandomPartitioner to force equal
81
- spacing of tokens around the hash space, especially for
82
- clusters with a small number of nodes. -->
83
- <InitialToken></InitialToken>
84
-
85
-
86
- <!-- EndPointSnitch: Setting this to the class that implements IEndPointSnitch
87
- which will see if two endpoints are in the same data center or on the same rack.
88
- Out of the box, Cassandra provides
89
- org.apache.cassandra.locator.EndPointSnitch
90
- -->
91
- <EndPointSnitch>org.apache.cassandra.locator.EndPointSnitch</EndPointSnitch>
92
-
93
- <!-- Strategy: Setting this to the class that implements IReplicaPlacementStrategy
94
- will change the way the node picker works.
95
- Out of the box, Cassandra provides
96
- org.apache.cassandra.locator.RackUnawareStrategy
97
- org.apache.cassandra.locator.RackAwareStrategy
98
- (place one replica in a different datacenter, and the
99
- others on different racks in the same one.)
100
- -->
101
- <ReplicaPlacementStrategy>org.apache.cassandra.locator.RackUnawareStrategy</ReplicaPlacementStrategy>
102
-
103
- <!-- Number of replicas of the data-->
104
- <ReplicationFactor>1</ReplicationFactor>
105
-
106
- <!-- Directories: Specify where Cassandra should store different data on disk
107
- Keep the data disks and the CommitLog disks separate for best performance
108
- -->
109
- <CommitLogDirectory>data/commitlog</CommitLogDirectory>
110
- <DataFileDirectories>
111
- <DataFileDirectory>data/data</DataFileDirectory>
112
- </DataFileDirectories>
113
- <CalloutLocation>data/callouts</CalloutLocation>
114
- <BootstrapFileDirectory>data/bootstrap</BootstrapFileDirectory>
115
- <StagingFileDirectory>data/staging</StagingFileDirectory>
116
-
117
- <!-- Addresses of hosts that are deemed contact points. Cassandra nodes use
118
- this list of hosts to find each other and learn the topology of the ring.
119
- You must change this if you are running multiple nodes!
120
- -->
121
- <Seeds>
122
- <Seed>127.0.0.1</Seed>
123
- </Seeds>
124
-
125
-
126
- <!-- Miscellaneous -->
127
-
128
- <!-- time to wait for a reply from other nodes before failing the command -->
129
- <RpcTimeoutInMillis>5000</RpcTimeoutInMillis>
130
- <!-- size to allow commitlog to grow to before creating a new segment -->
131
- <CommitLogRotationThresholdInMB>128</CommitLogRotationThresholdInMB>
132
-
133
-
134
- <!-- Local hosts and ports -->
135
-
136
- <!-- Address to bind to and tell other nodes to connect to.
137
- You _must_ change this if you want multiple nodes to be able
138
- to communicate!
139
-
140
- Leaving it blank leaves it up to InetAddress.getLocalHost().
141
- This will always do the Right Thing *if* the node is properly
142
- configured (hostname, name resolution, etc), and the Right
143
- Thing is to use the address associated with the hostname (it
144
- might not be). -->
145
- <ListenAddress>localhost</ListenAddress>
146
- <!-- TCP port, for commands and data -->
147
- <StoragePort>7000</StoragePort>
148
- <!-- UDP port, for membership communications (gossip) -->
149
- <ControlPort>7001</ControlPort>
150
-
151
- <!-- The address to bind the Thrift RPC service to. Unlike
152
- ListenAddress above, you *can* specify 0.0.0.0 here if you want
153
- Thrift to listen on all interfaces.
154
-
155
- Leaving this blank has the same effect it does for ListenAddress,
156
- (i.e. it will be based on the configured hostname of the node).
157
- -->
158
- <ThriftAddress>localhost</ThriftAddress>
159
- <!-- Thrift RPC port (the port clients connect to). -->
160
- <ThriftPort>9160</ThriftPort>
161
-
162
-
163
- <!--======================================================================-->
164
- <!-- Memory, Disk, and Performance -->
165
- <!--======================================================================-->
166
-
167
- <!-- Add column indexes to a row after its contents reach this size -->
168
- <ColumnIndexSizeInKB>256</ColumnIndexSizeInKB>
169
-
170
- <!--
171
- The maximum amount of data to store in memory before flushing to
172
- disk. Note: There is one memtable per column family, and this threshold
173
- is based solely on the amount of data stored, not actual heap memory
174
- usage (there is some overhead in indexing the columns).
175
- -->
176
- <MemtableSizeInMB>32</MemtableSizeInMB>
177
-
178
- <!--
179
- The maximum number of columns in millions to store in memory
180
- before flushing to disk. This is also a per-memtable setting.
181
- Use with MemtableSizeInMB to tune memory usage.
182
- -->
183
- <MemtableObjectCountInMillions>0.01</MemtableObjectCountInMillions>
184
-
185
- <!-- Unlike most systems, in Cassandra writes are faster than
186
- reads, so you can afford more of those in parallel.
187
- A good rule of thumb is 2 concurrent reads per processor core.
188
- You especially want more concurrentwrites if you are using
189
- CommitLogSync + CommitLogSyncDelay. -->
190
- <ConcurrentReads>8</ConcurrentReads>
191
- <ConcurrentWrites>32</ConcurrentWrites>
192
-
193
- <!-- Turn on CommitLogSync to improve durability.
194
- When enabled, Cassandra won't ack writes until the commit log
195
- has been synced to disk. This is less necessary in Cassandra
196
- than in traditional databases since replication reduces the
197
- odds of losing data from a failure after writing the log
198
- entry but before it actually reaches the disk.
199
- -->
200
- <CommitLogSync>false</CommitLogSync>
201
- <!-- Delay (in microseconds) during which additional commit log
202
- entries may be written before fsync. This will increase
203
- latency slightly, but can vastly improve throughput where
204
- there are many writers. Set to zero to disable
205
- (each entry will be synced individually).
206
- Reasonable values range from a minimal 100 to even 10000
207
- if throughput matters more than latency. (10000us = 10ms
208
- write latency isn't even that bad by traditional db
209
- standards.)
210
- -->
211
- <CommitLogSyncDelay>1000</CommitLogSyncDelay>
212
-
213
-
214
- <!-- Time to wait before garbage-collection deletion markers.
215
- Set this to a large enough value that you are confident
216
- that the deletion marker will be propagated to all replicas
217
- by the time this many seconds has elapsed, even in the
218
- face of hardware failures. The default value is ten days.
219
- -->
220
- <GCGraceSeconds>864000</GCGraceSeconds>
221
- </Storage>