NAME
Amazon::DynamoDB::Simple - Simple to use and highly available
SYNOPSIS
use Amazon::DynamoDB::Simple;
my $table = Amazon::DynamoDB::Simple->new(
table => $table, # required
primary_key => $primary_key, # required
access_key_id => ..., # default: $ENV{AWS_ACCESS_KEY_ID};
secret_access_key => ..., # default: $ENV{AWS_SECRET_ACCESS_KEY};
);
# returns a hash
my %item = $table->get($key);
# create or update an item
$table->put(%item);
# mark item as deleted
$table->delete($key);
# returns a hash representing the whole table as key value pairs
$table->items();
# returns all the keys in the table
$table->keys();
# delete $old_key, create $new_key
$table->rename($old_key, $new_key);
# sync data between AWS regions using the 'last_updated' field to select
# the newest data. This method will permanently delete any items marked as
# 'deleted'.
$table->sync_regions();
# This sets the value of the hosts attribute. The value shown is the
# default value. You must use exactly two hosts for stuff to work atm.
# Sorry.
$table->hosts([qw/
dynamodb.us-east-1.amazonaws.com
dynamodb.us-west-1.amazonaws.com
/]);
DESCRIPTION
DynamoDB is a simple key value store. A Amazon::DynamoDB::Simple object represents a single table in DynamoDB.
This module provides a simple UI layer on top of Amazon::DynamoDB. It also makes your data highly available across exactly 2 AWS regions. In other words it provides redundancy in case one region goes down. It doesn't do async. It doesn't (currently) support secondary keys.
Note Amazon::DynamoDB can't handle complex data structures. But this module can because it serializes yer stuff to JSON if needed.
At the moment you cannot use this module against a single dynamodb server. The table must exist in 2 regions. I want to make the high availability part optional in the future. It should not be hard. Patches welcome.
DATA REDUNDANCY
TODO
ACKNOWLEDGEMENTS
Thanks to DuckDuckGo for making this module possible by donating developer time.
LICENSE
Copyright (C) Eric Johnson.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
AUTHOR
Eric Johnson <eric.git@iijo.org>