Hi, I’m Josh Symonds

I blog about Ruby on Rails, coding, and servers

Dynamoid: An ORM for Amazon’s DynamoDB

Reading time less than 1 minute

Dynamoid is (another) gem I developed, but I think it’s a lot more exciting than rapnd! I started work on it over Christmas but didn’t really get a lot of opportunity to focus on it again until recently, when work become relatively less busy.

Dynamoid owes a lot to Mongoid – it’s essentially trying to be for DynamoDB what Mongoid is for MongoDB. Unfortunately, it doesn’t really do a whole lot of exciting stuff yet…

But it will soon! The TODO list is particularly exciting:

  • Association magic: The standard fare like belongs_to, has_many, habtm.
  • Automatic value separation and joining: Values for DynamoDB keys are limited to 64KB, but with a clever framework we can get around that constraint with multiple keys conjoined together.
  • Automatic key distribution: As per Amazon’s provisioned throughput guidelines, keys that are frequently accessed incur a throughput penalty due to traffic concentration. Dynamoid will distribute keys that you specify across a number of duplicated keys, and will concatenate them together when read.
  • Not-gimpy finders: Criteria like you’re used to with ActiveRecord, so that you can do User.where(:name => ‘Josh’) rather than User.find_by_name(‘Josh’).
  • Range keys for models and indexes: To support queries like User.where(:created_at.gt => DateTime.now - 1.day)

I hope to have time over the next few days and the weekend to continue improving Dynamoid. Watch this space for further updates.

Josh Symonds performs devops and server wrangling on cloud-scale infrastructures, deploys amazing web applications with Ruby on Rails, and creates awesome iOS apps with Objective-C and RubyMotion. He is founder and CTO of Symonds & Son, a development shop focused on quality and excellence.

Josh Symonds