Need help with cassandra_object?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

NZKoz
204 Stars 27 Forks ISC License 218 Commits 3 Opened issues

Description

A library for persisting your objects into cassandra.

Services available

!
?

Need anything else?

Contributors list

No Data

Cassandra Object

Cassandra Object provides a nice API for working with Cassandra. CassandraObjects are mostly duck-type compatible with ActiveRecord objects so most of your controller code should work ok. Note that they're mostly compatible, Cassandra has no support for dynamic queries, or sorting. So the following kinds of operations aren't supported and never will be.

  • :order
  • :conditions
  • :joins
  • :group

There isn't much in the way of documentation yet, but a few examples.

    class Customer < CassandraObject::Base
      attribute :first_name,    :type => :string
      attribute :last_name,     :type => :string
      attribute :date_of_birth, :type => :date
      attribute :signed_up_at,  :type => :time_with_zone

  validate :should_be_cool

  key :uuid

  index :date_of_birth

  association :invoices, :unique=&gt;false, :inverse_of=&gt;:customer

  private

  def should_be_cool
    unless ["Michael", "Anika", "Evan", "James"].include?(first_name)
      errors.add(:first_name, "must be that of a cool person")
    end
  end
end

class Invoice &lt; CassandraObject::Base
  attribute :number, :type=&gt;:integer
  attribute :total, :type=&gt;:float
  attribute :gst_number, :type=&gt;:string

  # indexes can have a single entry also.
  index :number, :unique=&gt;true

  # bi-directional associations with read-repair support.
  association :customer, :unique=&gt;true, :inverse_of=&gt;:invoices

  # Read migration support
  migrate 1 do |attrs|
    attrs["total"] ||= rand(2000) / 100.0
  end

  migrate 2 do |attrs|
    attrs["gst_number"] = "66-666-666"
  end

  key :natural, :attributes =&gt; :number
end

@invoice = Invoice.get("12345")
@invoice.customer.invoices.all.include?(@invoice) # true

FAQ

How do I make this work?

Here are some basic directions:

  1. git clone git://github.com/NZKoz/cassandra_object.git
  2. Run the bundler
    gem bundle
  3. Make sure the tests pass
    rake test

This gem has backwards compatibility with active support version 2.3.x, this is to enable people to use it with rails 2.3 applications. This backwards compatibility may not continue after the 1.0 release.

Should I use this in production?

Only if you're looking to help out with the development, there are a bunch of rough edges right now.

Why do you use a superclass and not a module.

Because.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.