Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/carbonfive/active_column
ActiveColumn is a data management framework for Cassandra. It includes data migrations similar to ActiveRecord, and a data mapping framework for "time line" modeled data.
https://github.com/carbonfive/active_column
Last synced: 2 days ago
JSON representation
ActiveColumn is a data management framework for Cassandra. It includes data migrations similar to ActiveRecord, and a data mapping framework for "time line" modeled data.
- Host: GitHub
- URL: https://github.com/carbonfive/active_column
- Owner: carbonfive
- Created: 2010-12-04T01:52:26.000Z (about 14 years ago)
- Default Branch: master
- Last Pushed: 2024-03-01T16:48:25.000Z (11 months ago)
- Last Synced: 2025-01-16T05:07:22.433Z (10 days ago)
- Language: Ruby
- Homepage: http://blog.carbonfive.com/2011/01/06/database-migrations-for-cassandra-with-activecolumn/
- Size: 144 KB
- Stars: 53
- Watchers: 5
- Forks: 18
- Open Issues: 12
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
**IMPORTANT**: If you are reading this on the main ActiveColumn page on github, please go to
[the actual README page](./active_column/blob/master/README.md) so that links bring you to the right place.# ActiveColumn
ActiveColumn is a framework for working with data in Cassandra. It currently includes two features:
- Database migrations
- "Time line" model data managementData migrations are very similar to those in ActiveRecord, and are documented in [Migrate](./docs/Migrate.md).
Time line data management is loosely based on concepts in ActiveRecord, but is adapted to saving data in which rows in
Cassandra grow indefinitely over time, such as in the oft-used Twitter example for Cassandra. This usage is documented
in:- [Create](./docs/Create.md) - how to create data
- [Query](./docs/Query.md) - how to find data## Installation
Add ActiveColumn to your Gemfile:
gem 'active_column'Install with bundler:
bundle install## Usage
### Configuration
ActiveColumn requires Cassandra 0.7 or above, as well as the [cassandra gem](https://github.com/twitter/cassandra),
version 0.9 or above. You must also be sure to use the Cassandra 0.7 support in the gem, which can be done by
adding Cassandra to your Gemfile like this:
gem 'cassandra', '>= 0.9', :require => 'cassandra/0.7'Data migrations in ActiveColumn are used within a Rails project, and are driven off of a configuration file,
config/cassandra.yml. It should look something like this:_config/cassandra.yml_
test:
servers: "127.0.0.1:9160"
keyspace: "myapp_test"
thrift:
timeout: 3
retries: 2development:
servers: "127.0.0.1:9160"
keyspace: "myapp_development"
thrift:
timeout: 3
retries: 2You can use embedded ruby code in the YAML file to determine host/machine specific settings.
production:
servers: "<%=get_from_file('abc.conf')%>:9160"
keyspace: "<%=get_from_file('abc.conf')%>"
disable_node_auto_discovery: true
thrift:
timeout: 3
retries: 2Node Auto Discovery
You can set disable_node_auto_discovery to off by setting disable_node_auto_discovery flag in your cassandra.yml
In order to get time line modeling support, you must provide ActiveColumn with an instance of a Cassandra object.
Since you have your cassandra.yml from above, you can do this very simply like this:_config/initializers/cassandra.rb_
config = YAML.load_file(Rails.root.join("config", "cassandra.yml"))[Rails.env]
$cassandra = Cassandra.new(config['keyspace'],
config['servers'],
config['thrift'])ActiveColumn.connection = $cassandra
As you can see, I create a global $cassandra variable, which I use in my tests to validate data directly in Cassandra.
### Examples
Add column family
create_column_family :impressions do |cf|
cf.comment = 'impressions for something'
cf.comparator_type = :utf8
cf.key_validation_class = :utf8
endDrop column family
drop_column_family :impressionsRename column family
rename_column_family :impressions, :showingsUpdate column family
update_column_family :impressions do |cf|
cf.comment = "blah"
cf.gc_grace_seconds = 3600
endOne other thing to note is that you obviously must have Cassandra installed and running! Please take a look at the
[mama_cass gem](https://github.com/carbonfive/mama_cass) for a quick way to get up and running with Cassandra for
development and testing.