Big Record

A Ruby Object/Data Mapper for distributed column-oriented data stores (inspired by BigTable) such as HBase. Intended to work as a drop-in for Rails applications.



BigTable, and by extension, Bigrecord isn’t right for everyone. A great introductory article discussing this topic can be found at explaining why you would or wouldn’t use BigTable. The rule of thumb, however, is that if your data model is simple or can fit into a standard RDBMS, then you probably don’t need it.

Beyond this though, there are two basic motivations that almost immediately demand a BigTable model database:

  1. Your data is highly dynamic in nature and would not fit in a schema bound model, or you cannot define a schema ahead

of time.

  1. You know that your database will grow to tens or hundreds of gigabytes, and can’t afford big iron servers. Instead,

you’d like to scale horizontally across many commodity servers.


Optional Component

interact with Java-based data stores and their native APIs. Clients that connect to the DRb server can be of any Ruby type (JRuby, MRI, etc). Currently, this is used only for HBase to serve as a connection alternative to Thrift or Stargate. This application can be run from a separate server than your Rails application.

present while using Bigrecord standalone when compared to Active Record. Some major limitations include the inability to query for data other than with the row ID, indexing, searching, and dynamic finders (find_by_attribute_name). Since these data access patterns are vital for most Rails applications to function, Bigindex was created to address these issues, and bring the feature set more up to par with Active Record. Please refer to the Bigindex package for more information and its requirements.

Getting Started

Check out the guides/getting_started.rdoc file for more information.


Refer to guides/deployment.rdoc for more information.


Please refer to


Big Record is released under the MIT license.