GithubHelp home page GithubHelp logo

bigrecord's Introduction

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.

bigrecord's People

Contributors

greglu avatar jdcryans avatar openplaces avatar

Stargazers

 avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.