Project

bigrecord

0.02
No commit activity in last 3 years
No release in over 3 years
BigRecord is built from ActiveRecord, and intended to seamlessly integrate into your Ruby on Rails applications.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

>= 0

Runtime

 Project Readme

Bigrecord Suite¶ ↑

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.

Features¶ ↑

  • Dynamic schemas (due to the schema-less design of BigTable).

  • Support for column-oriented data stores.

  • Similar usage to Active Record.

  • Embedded records that store within a single table row.

  • Automatic versioning.

  • Scalability (depending on the data store used).

Motivations¶ ↑

BigTable, and by extension, Bigrecord isn’t right for everyone. A great introductory article discussing this topic can be found at blog.rapleaf.com/dev/?p=26 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.

  2. 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.

Components¶ ↑

  • Bigrecord: Ruby Object/Data Mapper. Inspired and architected similarly to Active Record.

Optional Component¶ ↑

  • Bigrecord Driver: Consists of a JRuby server component that bridges Ruby and Java (through the DRb protocol) to 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.

  • Bigindex [github.com/openplaces/bigindex]: Due to the nature of BigTable databases, some limitations are 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¶ ↑

Please refer to each component’s own documentation for more information on getting started!

License¶ ↑

Big Record is released under the MIT license.