SlideShare ist ein Scribd-Unternehmen logo
1 von 129
Downloaden Sie, um offline zu lesen
Building Applications
              with

DynamoDB
 An Online Seminar - 16th May 2012
Dr Matt Wood, Amazon Web Services
Thank you!
Building Applications with DynamoDB
Building Applications with DynamoDB




               Getting started
Building Applications with DynamoDB




               Getting started


               Data modeling
Building Applications with DynamoDB




               Getting started


               Data modeling


               Partitioning
Building Applications with DynamoDB




               Getting started


               Data modeling


               Partitioning


               Analytics
Getting started with
     DynamoDB

                 quick review
DynamoDB is a managed
NoSQL database service.
Store and retrieve any amount of data.
Serve any level of request traffic.
Without the
operational burden.
Consistent, predictable
performance.
Single digit millisecond latencies.
Backed on solid-state drives.
Flexible data model.

Key/attribute pairs.
No schema required.
Easy to create. Easy to adjust.
Seamless scalability.

No table size limits. Unlimited storage.
No downtime.
Durable.

Consistent, disk-only writes.
Replication across data centres and
availability zones.
Without the
operational burden.
Without the
operational burden.

             FOCUS ON YOUR APP
Two decisions + three clicks
= ready for use
P rimary keys +
                        t
   le v e l of throughpu


Two decisions + three clicks
= ready for use
Provisioned throughput.

Reserve IOPS for reads and writes.
Scale up (or down) at any time.
Pay per capacity unit.

Priced per hour of
provisioned throughput.
Write throughput.

Units = size of item x writes/second
$0.01 per hour for 10 write units
Consistent writes.

Atomic increment/decrement.
Optimistic concurrency control.
aka: “conditional writes”.
Transactions.

Item level transactions only.
Puts, updates and deletes are ACID.
strongly consistent

      eventually consistent



Read throughput.
strongly consistent

         eventually consistent



Read throughput.
Provisioned units =
size of item x reads/second

$0.01 per hour for 50 read units
strongly consistent

         eventually consistent



Read throughput.
Provisioned units =
size of item x reads/second
             2
$0.01 per hour for 100 read units
strongly consistent

         eventually consistent



Read throughput.

Same latency expectations.
Mix and match at “read time”.
Two decisions + three clicks
= ready for use
Two decisions + three clicks
= ready for use
Two decisions + one API call
= ready for use
$create_response = $dynamodb->create_table(array(
    'TableName' => 'ProductCatalog',
    'KeySchema' => array(
        'HashKeyElement' => array(
            'AttributeName' => 'Id',
            'AttributeType' => AmazonDynamoDB::TYPE_NUMBER
        )
    ),
    'ProvisionedThroughput' => array(
        'ReadCapacityUnits' => 10,
        'WriteCapacityUnits' => 5
    )
));
Two decisions + one API call
= ready for use
Two decisions + one API call
= ready for development
Two decisions + one API call
= ready for production
Two decisions + one API call
= ready for scale
Authentication.

Session based to minimize latency.
Uses Amazon Security Token Service.
Handled by AWS SDKs.
Integrates with IAM.
Monitoring.

CloudWatch metrics:
latency, consumed read and write
throughput, errors and throttling.
Libraries, mappers & mocks.
ColdFusion, Django, Erlang, Java, .Net,
Node.js, Perl, PHP, Python, Ruby

http://j.mp/dynamodb-libs
DynamoDB data models
DynamoDB semantics.

Tables, items and attributes.
Tables contain items.

Unlimited items per table.
Items are a collection of
attributes.

Each attribute has a key and a value.
An item can have any number of
attributes, up to 64k total.
Two scalar data types.

String: Unicode, UTF8 binary encoding.
Number: 38 digit precision.

Multi-value strings and numbers.
date =
id = 100   2012-05-16-09-00-10   total = 25.00

                 date =
id = 101   2012-05-15-15-00-11   total = 35.00

                 date =
id = 101   2012-05-16-12-00-10   total = 100.00

                 date =
id = 102   2012-03-20-18-23-10   total = 20.00

                 date =
id = 102   2012-03-20-18-23-10   total = 120.00
Table

                 date =
id = 100   2012-05-16-09-00-10   total = 25.00

                 date =
id = 101   2012-05-15-15-00-11   total = 35.00

                 date =
id = 101   2012-05-16-12-00-10   total = 100.00

                 date =
id = 102   2012-03-20-18-23-10   total = 20.00

                 date =
id = 102   2012-03-20-18-23-10   total = 120.00
Item
                        date =
       id = 100   2012-05-16-09-00-10   total = 25.00

                        date =
       id = 101   2012-05-15-15-00-11   total = 35.00

                        date =
       id = 101   2012-05-16-12-00-10   total = 100.00

                        date =
       id = 102   2012-03-20-18-23-10   total = 20.00

                        date =
       id = 102   2012-03-20-18-23-10   total = 120.00
Attribute

                 date =
id = 100   2012-05-16-09-00-10   total = 25.00

                 date =
id = 101   2012-05-15-15-00-11   total = 35.00

                 date =
id = 101   2012-05-16-12-00-10   total = 100.00

                 date =
id = 102   2012-03-20-18-23-10   total = 20.00

                 date =
id = 102   2012-03-20-18-23-10   total = 120.00
Where is the schema?

Tables do not require a formal schema.
Items are an arbitrary sized hash.
Just need to specify the primary key.
Items are indexed by
primary key.

Single hash keys and composite keys.
Hash Key

                   date =
  id = 100   2012-05-16-09-00-10   total = 25.00

                   date =
  id = 101   2012-05-15-15-00-11   total = 35.00

                   date =
  id = 101   2012-05-16-12-00-10   total = 100.00

                   date =
  id = 102   2012-03-20-18-23-10   total = 20.00

                   date =
  id = 102   2012-03-20-18-23-10   total = 120.00
Range key for queries.

Querying items by composite key.
Hash Key + Range Key

                   date =
  id = 100   2012-05-16-09-00-10   total = 25.00

                   date =
  id = 101   2012-05-15-15-00-11   total = 35.00

                   date =
  id = 101   2012-05-16-12-00-10   total = 100.00

                   date =
  id = 102   2012-03-20-18-23-10   total = 20.00

                   date =
  id = 102   2012-03-20-18-23-10   total = 120.00
Programming DynamoDB.

Small but perfectly formed.
Whole programming interface
fits on one slide.
CreateTable           PutItem

UpdateTable           GetItem

DeleteTable        UpdateItem

DescribeTable      DeleteItem

ListTables       BatchGetItem

Query           BatchWriteItem

Scan
CreateTable           PutItem

UpdateTable           GetItem

DeleteTable        UpdateItem

DescribeTable      DeleteItem

ListTables       BatchGetItem

Query           BatchWriteItem

Scan
CreateTable           PutItem

UpdateTable           GetItem

DeleteTable        UpdateItem

DescribeTable      DeleteItem

ListTables       BatchGetItem

Query           BatchWriteItem

Scan
Conditional updates.
PutItem, UpdateItem, DeleteItem can
take optional conditions for operation.

UpdateItem performs atomic
increments.
CreateTable           PutItem

UpdateTable           GetItem

DeleteTable        UpdateItem

DescribeTable      DeleteItem

ListTables       BatchGetItem

Query           BatchWriteItem

Scan
One API call, multiple items.
BatchGet returns multiple items by
primary key.

BatchWrite performs up to 25 put or
delete operations.

Throughput is measured by IO,
not API calls.
CreateTable           PutItem

UpdateTable           GetItem

DeleteTable        UpdateItem

DescribeTable      DeleteItem

ListTables       BatchGetItem

Query           BatchWriteItem

Scan
Query vs Scan
Query for composite key queries.
Scan for full table scans, exports.

Both support pages and limits.
Maximum response is 1Mb in size.
Query patterns.
Retrieve all items by hash key.

Range key conditions:
==, <, >, >=, <=, begins with, between.

Counts. Top and bottom n values.
Paged responses.
Modeling patterns
Patterns



 1. Mapping relationships
 with range keys.
 No cross-table joins in DynamoDB.

 Use composite keys to model
 relationships.
Data model example: online gaming.
Storing scores and leader boards.
                                       Players with
                                       high Scores.

                                     Leader board
                                                  for
                                       each game.
Data model example: online gaming.
Storing scores and leader boards.
                                           Players with
                                           high Scores.
  Players: hash key
   user_id =   location =    joined =    Leader board
                                                      for
      mza      Cambridge    2011-07-04     each game.
   user_id =   location =    joined =
    jeffbarr     Seattle    2012-01-20
   user_id =   location =    joined =
    werner     Worldwide    2011-05-15
Data model example: online gaming.
Storing scores and leader boards.
                                            Players with
                                            high Scores.
  Players: hash key
   user_id =   location =     joined =    Leader board
                                                       for
      mza      Cambridge     2011-07-04     each game.
   user_id =    location =    joined =
    jeffbarr      Seattle    2012-01-20
   user_id =   location =     joined =
    werner     Worldwide     2011-05-15


  Scores: composite key
   user_id =    game =        score =
      mza      angry-birds     11,000
   user_id =     game =        score =
      mza         tetris     1,223,000
   user_id =    location =    score =
    werner      bejewelled    55,000
Data model example: online gaming.
Storing scores and leader boards.
                                                             Players with
                                                             high Scores.
  Players: hash key
   user_id =   location =     joined =                    Leader board
                                                                       for
      mza      Cambridge     2011-07-04                     each game.
   user_id =    location =    joined =
    jeffbarr      Seattle    2012-01-20
   user_id =   location =     joined =
    werner     Worldwide     2011-05-15


  Scores: composite key                   Leader boards: composite key
   user_id =    game =        score =      game =        score =    user_id =
      mza      angry-birds     11,000     angry-birds     11,000       mza
   user_id =     game =        score =      game =        score =   user_id =
      mza         tetris     1,223,000       tetris     1,223,000      mza
   user_id =    location =    score =       game =        score =   user_id =
    werner      bejewelled    55,000         tetris     9,000,000    jeffbarr
Data model example: online gaming.
Storing scores and leader boards.


  Players: hash key
   user_id =   location =     joined =
      mza      Cambridge     2011-07-04       Scores by user
   user_id =
    jeffbarr
                location =
                  Seattle
                              joined =
                             2012-01-20
                                              (and by game)
   user_id =   location =     joined =
    werner     Worldwide     2011-05-15


  Scores: composite key                   Leader boards: composite key
   user_id =    game =        score =      game =        score =    user_id =
      mza      angry-birds     11,000     angry-birds     11,000       mza
   user_id =     game =        score =      game =        score =   user_id =
      mza         tetris     1,223,000       tetris     1,223,000      mza
   user_id =    location =    score =       game =        score =   user_id =
    werner      bejewelled    55,000         tetris     9,000,000    jeffbarr
Data model example: online gaming.
Storing scores and leader boards.


  Players: hash key
   user_id =   location =     joined =      High scores by
      mza      Cambridge     2011-07-04
   user_id =    location =    joined =          game
    jeffbarr      Seattle    2012-01-20
   user_id =   location =     joined =
    werner     Worldwide     2011-05-15


  Scores: composite key                   Leader boards: composite key
   user_id =    game =        score =      game =        score =    user_id =
      mza      angry-birds     11,000     angry-birds     11,000       mza
   user_id =     game =        score =      game =        score =   user_id =
      mza         tetris     1,223,000       tetris     1,223,000      mza
   user_id =    location =    score =       game =        score =   user_id =
    werner      bejewelled    55,000         tetris     9,000,000    jeffbarr
Patterns




 2. Handling large items.
 Unlimited attributes per item.
 Unlimited items per table.

 Max 64k per item.
Data model example: large items.
Storing more than 64k across items.




  Large messages: composite keys
         message_id =                 part =      message =
               1                        1         <first 64k>
         message_id =                 part =      message =
               1                        2        <second 64k>
         message_id =                 part =        joined =
               1                        3         <third 64k>




                    Split attributes across items.
              Query by message_id and part to retrieve.
Patterns



 Store a pointer to objects in
 Amazon S3.
 Large data stored in S3.
 Location stored in DynamoDB.

 99.999999999% data durability in S3.
Patterns



 3. Managing secondary
 indices.

 Not supported by DynamoDB.

 Create your own.
Data model example: secondary indices.
Storing more than 64k across items.


  Users: hash key
           user_id =             first_name =   last_name =
              mza                     Matt          Wood
           user_id =             first_name =   last_name =
            mattfox                   Matt           Fox
           user_id =             first_name =   last_name =
            werner                   Werner        Vogels
Data model example: secondary indices.
Storing more than 64k across items.


  Users: hash key
           user_id =                  first_name =   last_name =
              mza                          Matt          Wood
           user_id =                  first_name =   last_name =
            mattfox                        Matt           Fox
           user_id =                  first_name =   last_name =
            werner                        Werner        Vogels


 First name index: composite keys
     first_name =         user_id =
          Matt               mza
     first_name =         user_id =
          Matt             mattfox
     first_name =         user_id =
         Werner            werner
Data model example: secondary indices.
Storing more than 64k across items.


  Users: hash key
           user_id =                  first_name =                 last_name =
              mza                          Matt                        Wood
           user_id =                  first_name =                 last_name =
            mattfox                        Matt                         Fox
           user_id =                  first_name =                 last_name =
            werner                        Werner                      Vogels


 First name index: composite keys             Second name index: composite keys
     first_name =         user_id =                  last_name =       user_id =
          Matt               mza                         Wood             mza
     first_name =         user_id =                  last_name =       user_id =
          Matt             mattfox                        Fox           mattfox
     first_name =         user_id =                  last_name =       user_id =
         Werner            werner                       Vogels          werner
Data model example: secondary indices.
Storing more than 64k across items.


  Users: hash key
           user_id =                  first_name =                 last_name =
              mza                          Matt                        Wood
           user_id =                  first_name =                 last_name =
            mattfox                        Matt                         Fox
           user_id =                  first_name =                 last_name =
            werner                        Werner                      Vogels


 First name index: composite keys             Second name index: composite keys
     first_name =         user_id =                  last_name =       user_id =
          Matt               mza                         Wood             mza
     first_name =         user_id =                  last_name =       user_id =
          Matt             mattfox                        Fox           mattfox
     first_name =         user_id =                  last_name =       user_id =
         Werner            werner                       Vogels          werner
Data model example: secondary indices.
Storing more than 64k across items.


  Users: hash key
           user_id =                  first_name =                 last_name =
              mza                          Matt                        Wood
           user_id =                  first_name =                 last_name =
            mattfox                        Matt                         Fox
           user_id =                  first_name =                 last_name =
            werner                        Werner                      Vogels


 First name index: composite keys             Second name index: composite keys
     first_name =         user_id =                  last_name =       user_id =
          Matt               mza                         Wood             mza
     first_name =         user_id =                  last_name =       user_id =
          Matt             mattfox                        Fox           mattfox
     first_name =         user_id =                  last_name =       user_id =
         Werner            werner                       Vogels          werner
Patterns




 4. Time series data.
 Logging, click through, ad views,
 game play data, application usage.

 Non-uniform access patterns.
 Newer data is ‘live’.
 Older data is read only.
Data model example: time series data.
Rolling tables for hot and cold data.


  Events table: composite keys
          event_id =                timestamp =        key =
             1000                2012-05-16-09-59-01   value
          event_id =                timestamp =        key =
             1001                2012-05-16-09-59-02   value
          event_id =                timestamp =        key =
             1002                2012-05-16-09-59-02   value
Data model example: time series data.
Rolling tables for hot and cold data.


  Events table: composite keys
           event_id =                   timestamp =                     key =
              1000                   2012-05-16-09-59-01                value
           event_id =                  timestamp =                      key =
              1001                  2012-05-16-09-59-02                 value
           event_id =                  timestamp =                      key =
              1002                  2012-05-16-09-59-02                 value


  Events table for April: composite keys         Events table for January: composite keys
       event_id =            timestamp =              event_id =           timestamp =
          400            2012-04-01-00-00-01             100            2012-01-01-00-00-01
       event_id =            timestamp =              event_id =           timestamp =
          401            2012-04-01-00-00-02              101          2012-01-01-00-00-02
       event_id =            timestamp =              event_id =           timestamp =
          402            2012-04-01-00-00-03             102           2012-01-01-00-00-03
Patterns


       Hot and cold tables.


Dec    Jan       Feb   Mar   April   May
Patterns


       Hot and cold tables.


Dec    Jan       Feb   Mar   April       May

                                       higher
                                     throughput
Patterns


       Hot and cold tables.


Dec    Jan       Feb   Mar   April       May

         lower                         higher
       throughput                    throughput
Patterns


       Hot and cold tables.


Dec    Jan       Feb   Mar   April   May

      data to S3,
  delete cold tables
Patterns


       Hot and cold tables.


Jan    Feb       Mar   Apr   May   June
Patterns


       Hot and cold tables.


Feb    Mar       Apr   May   June   July
Patterns


       Hot and cold tables.


Mar    Apr       May   June   July   Aug
Patterns


       Hot and cold tables.


Apr    May       June   July   Aug   Sept
Patterns


    Hot and cold tables.


May June      July   Aug   Sept   Oct
Patterns


 Not out of mind.

 DynamoDB and S3 data can be
 integrated for analytics.

 Run queries across hot and cold data
 with Elastic MapReduce.
Partitioning best practices
Uniform workloads.
DynamoDB divides table data into
multiple partitions.

Data is distributed primarily by
hash key.

Provisioned throughput is divided
evenly across the partitions.
Uniform workloads.
To achieve and maintain full
provisioned throughput for a table,
spread your workload evenly across
the hash keys.
Non-uniform workloads.

Some requests might be throttled,
even at high levels of provisioned
throughput.


Some best practices...
Patterns



 1. Distinct values for hash
 keys.

 Hash key elements should have a
 high number of distinct values.
Data model example: hash key selection.
Well distributed work loads


  Users

          user_id =           first_name =   last_name =
             mza                   Matt          Wood

          user_id =           first_name =   last_name =
           jeffbarr                 Jeff          Barr

          user_id =           first_name =   last_name =
           werner                 Werner        Vogels

          user_id =           first_name =   last_name =
           mattfox                 Matt           Fox

             ...                   ...           ...
Data model example: hash key selection.
Well distributed work loads


  Users

          user_id =             first_name =             last_name =
             mza                     Matt                    Wood

          user_id =             first_name =             last_name =
           jeffbarr                   Jeff                    Barr

          user_id =             first_name =             last_name =
           werner                   Werner                  Vogels

          user_id =             first_name =             last_name =
           mattfox                   Matt                     Fox

             ...                     ...                     ...


             Lots of users with unique user_id.
             Workload well distributed across user partitions.
Patterns



 2. Avoid limited hash key
 values.

 Hash key elements should have a
 high number of distinct values.
Data model example: small hash value range.
Non-uniform workload.


 Status responses

                    status =           date =
                      200        2012-04-01-00-00-01

                    status =           date =
                      404        2012-04-01-00-00-01

                     status            date =
                      404        2012-04-01-00-00-01

                    status =           date =
                      404        2012-04-01-00-00-01
Data model example: small hash value range.
Non-uniform workload.


 Status responses

                    status =                          date =
                      200                       2012-04-01-00-00-01

                    status =                          date =
                      404                       2012-04-01-00-00-01

                     status                           date =
                      404                       2012-04-01-00-00-01

                    status =                          date =
                      404                       2012-04-01-00-00-01



              Small number of status codes.
              Unevenly, non-uniform workload.
Patterns



 3. Model for even
 distribution of access.

 Access by hash key value should be
 evenly distributed across the dataset.
Data model example: uneven access pattern by key.
Non-uniform access workload.


 Devices

              mobile_id =           access_date =
                 100             2012-04-01-00-00-01

              mobile_id =           access_date =
                 100             2012-04-01-00-00-02

              mobile_id =           access_date =
                 100             2012-04-01-00-00-03

              mobile_id =           access_date =
                 100             2012-04-01-00-00-04

                  ...                    ...
Data model example: uneven access pattern by key.
Non-uniform access workload.


 Devices

              mobile_id =                     access_date =
                 100                       2012-04-01-00-00-01

              mobile_id =                     access_date =
                 100                       2012-04-01-00-00-02

              mobile_id =                     access_date =
                 100                       2012-04-01-00-00-03

              mobile_id =                     access_date =
                 100                       2012-04-01-00-00-04

                  ...                              ...

            Large number of devices.
            Small number which are much more popular than others.
            Workload unevenly distributed.
Data model example: randomize access pattern by key.
Towards a uniform workload.


 Devices

             mobile_id =                     access_date =
                100.1                     2012-04-01-00-00-01

             mobile_id =                     access_date =
               100.2                      2012-04-01-00-00-02

             mobile_id =                     access_date =
               100.3                      2012-04-01-00-00-03

             mobile_id =                     access_date =
               100.4                      2012-04-01-00-00-04

                 ...                              ...


            Randomize access pattern.
            Workload randomised by hash key.
Design for a uniform
workload.
Analytics with DynamoDB
Seamless scale.
Scalable methods for data processing.
Scalable methods for backup/restore.
Amazon Elastic MapReduce.
Managed Hadoop service for
data-intensive workflows.

http://aws.amazon.com/emr
Hadoop under the hood.
Take advantage of the Hadoop
ecosystem: streaming interfaces,
Hive, Pig, Mahout.
Distributed data processing.

API driven. Analytics at any scale.
Query flexibility with Hive.
create external table items_db
  (id string, votes bigint, views bigint) stored by
  'org.apache.hadoop.hive.dynamodb.DynamoDBStorageHandler'
   tblproperties
  ("dynamodb.table.name" = "items",
   "dynamodb.column.mapping" =
   "id:id,votes:votes,views:views");
Query flexibility with Hive.

select id, likes, views
from items_db
order by views desc;
Data export/import.

Use EMR for backup and restore
to Amazon S3.
Data export/import.
CREATE EXTERNAL TABLE orders_s3_new_export ( order_id
string, customer_id string, order_date int, total
double )
PARTITIONED BY (year string, month string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
LOCATION 's3://export_bucket';

INSERT OVERWRITE TABLE
orders_s3_new_export
PARTITION (year='2012', month='01')
SELECT * from orders_ddb_2012_01;
Integrate live and
archive data
Run queries across external Hive tables
on S3 and DynamoDB.

Live & archive. Metadata & big objects.
In summary...




DynamoDB
Predictable performance
Provisioned throughput
Libraries & mappers
In summary...




DynamoDB
Predictable performance
Provisioned throughput
Libraries & mappers


Data modeling
Tables & items
Read & write patterns
Time series data
In summary...




DynamoDB                                 Partitioning
Predictable performance                  Automatic partitioning
Provisioned throughput                   Hot and cold data
Libraries & mappers                      Size/throughput ratio


Data modeling
Tables & items
Read & write patterns
Time series data
In summary...




DynamoDB                                 Partitioning
Predictable performance                  Automatic partitioning
Provisioned throughput                   Hot and cold data
Libraries & mappers                      Size/throughput ratio


Data modeling                            Analytics
Tables & items                           Elastic MapReduce
Read & write patterns                    Hive queries
Time series data                         Backup & restore
DynamoDB free tier
5 writes, 10 consistent reads per second
           100Mb of storage
aws.amazon.com/dynamodb
aws.amazon.com/documentation/dynamodb


         best practice + sample code
Thank you!
Q&A
matthew@amazon.com
      @mza

Weitere ähnliche Inhalte

Was ist angesagt?

AWS solution Architect Associate study material
AWS solution Architect Associate study materialAWS solution Architect Associate study material
AWS solution Architect Associate study materialNagesh Ramamoorthy
 
Getting Strated with Amazon Dynamo DB (Jim Scharf) - AWS DB Day
Getting Strated with Amazon Dynamo DB (Jim Scharf) - AWS DB DayGetting Strated with Amazon Dynamo DB (Jim Scharf) - AWS DB Day
Getting Strated with Amazon Dynamo DB (Jim Scharf) - AWS DB DayAmazon Web Services Korea
 
20분안에 스타트업이 알아야하는 AWS의 모든것 - 윤석찬 :: 스타트업얼라이언스 런치클럽
20분안에 스타트업이 알아야하는 AWS의 모든것 - 윤석찬 :: 스타트업얼라이언스 런치클럽20분안에 스타트업이 알아야하는 AWS의 모든것 - 윤석찬 :: 스타트업얼라이언스 런치클럽
20분안에 스타트업이 알아야하는 AWS의 모든것 - 윤석찬 :: 스타트업얼라이언스 런치클럽Amazon Web Services Korea
 
Introduction to AWS Cloud Computing
Introduction to AWS Cloud ComputingIntroduction to AWS Cloud Computing
Introduction to AWS Cloud ComputingAmazon Web Services
 
Apache Cassandra at the Geek2Geek Berlin
Apache Cassandra at the Geek2Geek BerlinApache Cassandra at the Geek2Geek Berlin
Apache Cassandra at the Geek2Geek BerlinChristian Johannsen
 
Introduction to Block and File storage on AWS
Introduction to Block and File storage on AWSIntroduction to Block and File storage on AWS
Introduction to Block and File storage on AWSAmazon Web Services
 
Using ClickHouse for Experimentation
Using ClickHouse for ExperimentationUsing ClickHouse for Experimentation
Using ClickHouse for ExperimentationGleb Kanterov
 
Building Data Lakes and Analytics on AWS; Patterns and Best Practices - BDA30...
Building Data Lakes and Analytics on AWS; Patterns and Best Practices - BDA30...Building Data Lakes and Analytics on AWS; Patterns and Best Practices - BDA30...
Building Data Lakes and Analytics on AWS; Patterns and Best Practices - BDA30...Amazon Web Services
 

Was ist angesagt? (20)

Introduction to Amazon EC2
Introduction to Amazon EC2Introduction to Amazon EC2
Introduction to Amazon EC2
 
AWS solution Architect Associate study material
AWS solution Architect Associate study materialAWS solution Architect Associate study material
AWS solution Architect Associate study material
 
Deep Dive on Amazon DynamoDB
Deep Dive on Amazon DynamoDBDeep Dive on Amazon DynamoDB
Deep Dive on Amazon DynamoDB
 
Deep Dive on Amazon S3
Deep Dive on Amazon S3Deep Dive on Amazon S3
Deep Dive on Amazon S3
 
Getting Strated with Amazon Dynamo DB (Jim Scharf) - AWS DB Day
Getting Strated with Amazon Dynamo DB (Jim Scharf) - AWS DB DayGetting Strated with Amazon Dynamo DB (Jim Scharf) - AWS DB Day
Getting Strated with Amazon Dynamo DB (Jim Scharf) - AWS DB Day
 
20분안에 스타트업이 알아야하는 AWS의 모든것 - 윤석찬 :: 스타트업얼라이언스 런치클럽
20분안에 스타트업이 알아야하는 AWS의 모든것 - 윤석찬 :: 스타트업얼라이언스 런치클럽20분안에 스타트업이 알아야하는 AWS의 모든것 - 윤석찬 :: 스타트업얼라이언스 런치클럽
20분안에 스타트업이 알아야하는 AWS의 모든것 - 윤석찬 :: 스타트업얼라이언스 런치클럽
 
AWS DynamoDB and Schema Design
AWS DynamoDB and Schema DesignAWS DynamoDB and Schema Design
AWS DynamoDB and Schema Design
 
Building your Datalake on AWS
Building your Datalake on AWSBuilding your Datalake on AWS
Building your Datalake on AWS
 
Introduction to AWS Cloud Computing
Introduction to AWS Cloud ComputingIntroduction to AWS Cloud Computing
Introduction to AWS Cloud Computing
 
Amazon Aurora
Amazon AuroraAmazon Aurora
Amazon Aurora
 
Introducing DynamoDB
Introducing DynamoDBIntroducing DynamoDB
Introducing DynamoDB
 
Apache Cassandra at the Geek2Geek Berlin
Apache Cassandra at the Geek2Geek BerlinApache Cassandra at the Geek2Geek Berlin
Apache Cassandra at the Geek2Geek Berlin
 
AWS RDS
AWS RDSAWS RDS
AWS RDS
 
AWS CloudFormation Masterclass
AWS CloudFormation MasterclassAWS CloudFormation Masterclass
AWS CloudFormation Masterclass
 
Introduction to Block and File storage on AWS
Introduction to Block and File storage on AWSIntroduction to Block and File storage on AWS
Introduction to Block and File storage on AWS
 
Amazon S3 Masterclass
Amazon S3 MasterclassAmazon S3 Masterclass
Amazon S3 Masterclass
 
AWS Deployment Best Practices
AWS Deployment Best PracticesAWS Deployment Best Practices
AWS Deployment Best Practices
 
Using ClickHouse for Experimentation
Using ClickHouse for ExperimentationUsing ClickHouse for Experimentation
Using ClickHouse for Experimentation
 
Intro to Cassandra
Intro to CassandraIntro to Cassandra
Intro to Cassandra
 
Building Data Lakes and Analytics on AWS; Patterns and Best Practices - BDA30...
Building Data Lakes and Analytics on AWS; Patterns and Best Practices - BDA30...Building Data Lakes and Analytics on AWS; Patterns and Best Practices - BDA30...
Building Data Lakes and Analytics on AWS; Patterns and Best Practices - BDA30...
 

Andere mochten auch

Design Patterns using Amazon DynamoDB
 Design Patterns using Amazon DynamoDB Design Patterns using Amazon DynamoDB
Design Patterns using Amazon DynamoDBAmazon Web Services
 
Amazon DynamoDB Design Patterns for Ultra-High Performance Apps (DAT304) | AW...
Amazon DynamoDB Design Patterns for Ultra-High Performance Apps (DAT304) | AW...Amazon DynamoDB Design Patterns for Ultra-High Performance Apps (DAT304) | AW...
Amazon DynamoDB Design Patterns for Ultra-High Performance Apps (DAT304) | AW...Amazon Web Services
 
(SDD407) Amazon DynamoDB: Data Modeling and Scaling Best Practices | AWS re:I...
(SDD407) Amazon DynamoDB: Data Modeling and Scaling Best Practices | AWS re:I...(SDD407) Amazon DynamoDB: Data Modeling and Scaling Best Practices | AWS re:I...
(SDD407) Amazon DynamoDB: Data Modeling and Scaling Best Practices | AWS re:I...Amazon Web Services
 
AWS December 2015 Webinar Series - Design Patterns using Amazon DynamoDB
AWS December 2015 Webinar Series - Design Patterns using Amazon DynamoDBAWS December 2015 Webinar Series - Design Patterns using Amazon DynamoDB
AWS December 2015 Webinar Series - Design Patterns using Amazon DynamoDBAmazon Web Services
 
Compare DynamoDB vs. MongoDB
Compare DynamoDB vs. MongoDBCompare DynamoDB vs. MongoDB
Compare DynamoDB vs. MongoDBAmar Das
 
Cloud Security at Netflix
Cloud Security at NetflixCloud Security at Netflix
Cloud Security at NetflixJason Chan
 
Netflix in the Cloud at SV Forum
Netflix in the Cloud at SV ForumNetflix in the Cloud at SV Forum
Netflix in the Cloud at SV ForumAdrian Cockcroft
 
(WRK302) Event-Driven Programming
(WRK302) Event-Driven Programming(WRK302) Event-Driven Programming
(WRK302) Event-Driven ProgrammingAmazon Web Services
 
(BDT203) From Zero to NoSQL Hero: Amazon DynamoDB Tutorial | AWS re:Invent 2014
(BDT203) From Zero to NoSQL Hero: Amazon DynamoDB Tutorial | AWS re:Invent 2014(BDT203) From Zero to NoSQL Hero: Amazon DynamoDB Tutorial | AWS re:Invent 2014
(BDT203) From Zero to NoSQL Hero: Amazon DynamoDB Tutorial | AWS re:Invent 2014Amazon Web Services
 
Cloud-powered Continuous Integration and Deployment architectures - Jinesh Varia
Cloud-powered Continuous Integration and Deployment architectures - Jinesh VariaCloud-powered Continuous Integration and Deployment architectures - Jinesh Varia
Cloud-powered Continuous Integration and Deployment architectures - Jinesh VariaAmazon Web Services
 
(ARC403) From One to Many: Evolving VPC Design | AWS re:Invent 2014
(ARC403) From One to Many: Evolving VPC Design | AWS re:Invent 2014(ARC403) From One to Many: Evolving VPC Design | AWS re:Invent 2014
(ARC403) From One to Many: Evolving VPC Design | AWS re:Invent 2014Amazon Web Services
 
Deep Dive - Amazon Virtual Private Cloud (VPC)
Deep Dive - Amazon Virtual Private Cloud (VPC)Deep Dive - Amazon Virtual Private Cloud (VPC)
Deep Dive - Amazon Virtual Private Cloud (VPC)Amazon Web Services
 
Developing Connected Applications with AWS IoT - Technical 301
Developing Connected Applications with AWS IoT - Technical 301Developing Connected Applications with AWS IoT - Technical 301
Developing Connected Applications with AWS IoT - Technical 301Amazon Web Services
 
AWS Customer Presentation: Zeebox - AWS Start-Up AWS Summit 2012 -in London
AWS Customer Presentation: Zeebox - AWS Start-Up AWS Summit 2012 -in LondonAWS Customer Presentation: Zeebox - AWS Start-Up AWS Summit 2012 -in London
AWS Customer Presentation: Zeebox - AWS Start-Up AWS Summit 2012 -in LondonAmazon Web Services
 

Andere mochten auch (20)

Design Patterns using Amazon DynamoDB
 Design Patterns using Amazon DynamoDB Design Patterns using Amazon DynamoDB
Design Patterns using Amazon DynamoDB
 
Amazon DynamoDB Design Patterns for Ultra-High Performance Apps (DAT304) | AW...
Amazon DynamoDB Design Patterns for Ultra-High Performance Apps (DAT304) | AW...Amazon DynamoDB Design Patterns for Ultra-High Performance Apps (DAT304) | AW...
Amazon DynamoDB Design Patterns for Ultra-High Performance Apps (DAT304) | AW...
 
Deep Dive: Amazon DynamoDB
Deep Dive: Amazon DynamoDBDeep Dive: Amazon DynamoDB
Deep Dive: Amazon DynamoDB
 
(SDD407) Amazon DynamoDB: Data Modeling and Scaling Best Practices | AWS re:I...
(SDD407) Amazon DynamoDB: Data Modeling and Scaling Best Practices | AWS re:I...(SDD407) Amazon DynamoDB: Data Modeling and Scaling Best Practices | AWS re:I...
(SDD407) Amazon DynamoDB: Data Modeling and Scaling Best Practices | AWS re:I...
 
Under the Covers of DynamoDB
Under the Covers of DynamoDBUnder the Covers of DynamoDB
Under the Covers of DynamoDB
 
Deep Dive on Amazon DynamoDB
Deep Dive on Amazon DynamoDBDeep Dive on Amazon DynamoDB
Deep Dive on Amazon DynamoDB
 
AWS December 2015 Webinar Series - Design Patterns using Amazon DynamoDB
AWS December 2015 Webinar Series - Design Patterns using Amazon DynamoDBAWS December 2015 Webinar Series - Design Patterns using Amazon DynamoDB
AWS December 2015 Webinar Series - Design Patterns using Amazon DynamoDB
 
Compare DynamoDB vs. MongoDB
Compare DynamoDB vs. MongoDBCompare DynamoDB vs. MongoDB
Compare DynamoDB vs. MongoDB
 
Cloud Security at Netflix
Cloud Security at NetflixCloud Security at Netflix
Cloud Security at Netflix
 
Netflix in the Cloud at SV Forum
Netflix in the Cloud at SV ForumNetflix in the Cloud at SV Forum
Netflix in the Cloud at SV Forum
 
(WRK302) Event-Driven Programming
(WRK302) Event-Driven Programming(WRK302) Event-Driven Programming
(WRK302) Event-Driven Programming
 
Hadoop and DynamoDB
Hadoop and DynamoDBHadoop and DynamoDB
Hadoop and DynamoDB
 
(BDT203) From Zero to NoSQL Hero: Amazon DynamoDB Tutorial | AWS re:Invent 2014
(BDT203) From Zero to NoSQL Hero: Amazon DynamoDB Tutorial | AWS re:Invent 2014(BDT203) From Zero to NoSQL Hero: Amazon DynamoDB Tutorial | AWS re:Invent 2014
(BDT203) From Zero to NoSQL Hero: Amazon DynamoDB Tutorial | AWS re:Invent 2014
 
Cloud-powered Continuous Integration and Deployment architectures - Jinesh Varia
Cloud-powered Continuous Integration and Deployment architectures - Jinesh VariaCloud-powered Continuous Integration and Deployment architectures - Jinesh Varia
Cloud-powered Continuous Integration and Deployment architectures - Jinesh Varia
 
Global Netflix Platform
Global Netflix PlatformGlobal Netflix Platform
Global Netflix Platform
 
(ARC403) From One to Many: Evolving VPC Design | AWS re:Invent 2014
(ARC403) From One to Many: Evolving VPC Design | AWS re:Invent 2014(ARC403) From One to Many: Evolving VPC Design | AWS re:Invent 2014
(ARC403) From One to Many: Evolving VPC Design | AWS re:Invent 2014
 
Deep Dive - Amazon Virtual Private Cloud (VPC)
Deep Dive - Amazon Virtual Private Cloud (VPC)Deep Dive - Amazon Virtual Private Cloud (VPC)
Deep Dive - Amazon Virtual Private Cloud (VPC)
 
Developing Connected Applications with AWS IoT - Technical 301
Developing Connected Applications with AWS IoT - Technical 301Developing Connected Applications with AWS IoT - Technical 301
Developing Connected Applications with AWS IoT - Technical 301
 
AWS Data Collection & Storage
AWS Data Collection & StorageAWS Data Collection & Storage
AWS Data Collection & Storage
 
AWS Customer Presentation: Zeebox - AWS Start-Up AWS Summit 2012 -in London
AWS Customer Presentation: Zeebox - AWS Start-Up AWS Summit 2012 -in LondonAWS Customer Presentation: Zeebox - AWS Start-Up AWS Summit 2012 -in London
AWS Customer Presentation: Zeebox - AWS Start-Up AWS Summit 2012 -in London
 

Ähnlich wie Building Applications with DynamoDB

Data & Analytics - Session 3 - Under the Covers with Amazon DynamoDB
Data & Analytics - Session 3 - Under the Covers with Amazon DynamoDBData & Analytics - Session 3 - Under the Covers with Amazon DynamoDB
Data & Analytics - Session 3 - Under the Covers with Amazon DynamoDBAmazon Web Services
 
DAT302 Under the Covers of Amazon DynamoDB - AWS re: Invent 2012
DAT302 Under the Covers of Amazon DynamoDB - AWS re: Invent 2012DAT302 Under the Covers of Amazon DynamoDB - AWS re: Invent 2012
DAT302 Under the Covers of Amazon DynamoDB - AWS re: Invent 2012Amazon Web Services
 
Beyond PHP - It's not (just) about the code
Beyond PHP - It's not (just) about the codeBeyond PHP - It's not (just) about the code
Beyond PHP - It's not (just) about the codeWim Godden
 
AWS Under the covers with Amazon DynamoDB IP Expo 2013
AWS Under the covers with Amazon DynamoDB IP Expo 2013AWS Under the covers with Amazon DynamoDB IP Expo 2013
AWS Under the covers with Amazon DynamoDB IP Expo 2013Amazon Web Services
 
Beyond php it's not (just) about the code
Beyond php   it's not (just) about the codeBeyond php   it's not (just) about the code
Beyond php it's not (just) about the codeWim Godden
 
Beyond PHP - it's not (just) about the code
Beyond PHP - it's not (just) about the codeBeyond PHP - it's not (just) about the code
Beyond PHP - it's not (just) about the codeWim Godden
 
Beyond php - it's not (just) about the code
Beyond php - it's not (just) about the codeBeyond php - it's not (just) about the code
Beyond php - it's not (just) about the codeWim Godden
 
Beyond php - it's not (just) about the code
Beyond php - it's not (just) about the codeBeyond php - it's not (just) about the code
Beyond php - it's not (just) about the codeWim Godden
 
Beyond php - it's not (just) about the code
Beyond php - it's not (just) about the codeBeyond php - it's not (just) about the code
Beyond php - it's not (just) about the codeWim Godden
 
Relational Database to Apache Spark (and sometimes back again)
Relational Database to Apache Spark (and sometimes back again)Relational Database to Apache Spark (and sometimes back again)
Relational Database to Apache Spark (and sometimes back again)Ed Thewlis
 
Geek Sync | Rewriting Bad SQL Code 101
Geek Sync | Rewriting Bad SQL Code 101Geek Sync | Rewriting Bad SQL Code 101
Geek Sync | Rewriting Bad SQL Code 101IDERA Software
 
Beyond php - it's not (just) about the code
Beyond php - it's not (just) about the codeBeyond php - it's not (just) about the code
Beyond php - it's not (just) about the codeWim Godden
 
Beyond php - it's not (just) about the code
Beyond php - it's not (just) about the codeBeyond php - it's not (just) about the code
Beyond php - it's not (just) about the codeWim Godden
 
Beyond php - it's not (just) about the code
Beyond php - it's not (just) about the codeBeyond php - it's not (just) about the code
Beyond php - it's not (just) about the codeWim Godden
 
Amazon Redshift
Amazon RedshiftAmazon Redshift
Amazon RedshiftJeff Patti
 
Beyond PHP - it's not (just) about the code
Beyond PHP - it's not (just) about the codeBeyond PHP - it's not (just) about the code
Beyond PHP - it's not (just) about the codeWim Godden
 
10 wp7 local database
10 wp7   local database10 wp7   local database
10 wp7 local databaseTao Wang
 
Building Competing Models Using Apache Spark DataFrames with Abdulla Al-Qawasmeh
Building Competing Models Using Apache Spark DataFrames with Abdulla Al-QawasmehBuilding Competing Models Using Apache Spark DataFrames with Abdulla Al-Qawasmeh
Building Competing Models Using Apache Spark DataFrames with Abdulla Al-QawasmehDatabricks
 

Ähnlich wie Building Applications with DynamoDB (20)

Data & Analytics - Session 3 - Under the Covers with Amazon DynamoDB
Data & Analytics - Session 3 - Under the Covers with Amazon DynamoDBData & Analytics - Session 3 - Under the Covers with Amazon DynamoDB
Data & Analytics - Session 3 - Under the Covers with Amazon DynamoDB
 
Conhecendo o DynamoDB
Conhecendo o DynamoDBConhecendo o DynamoDB
Conhecendo o DynamoDB
 
DAT302 Under the Covers of Amazon DynamoDB - AWS re: Invent 2012
DAT302 Under the Covers of Amazon DynamoDB - AWS re: Invent 2012DAT302 Under the Covers of Amazon DynamoDB - AWS re: Invent 2012
DAT302 Under the Covers of Amazon DynamoDB - AWS re: Invent 2012
 
Beyond PHP - It's not (just) about the code
Beyond PHP - It's not (just) about the codeBeyond PHP - It's not (just) about the code
Beyond PHP - It's not (just) about the code
 
AWS Under the covers with Amazon DynamoDB IP Expo 2013
AWS Under the covers with Amazon DynamoDB IP Expo 2013AWS Under the covers with Amazon DynamoDB IP Expo 2013
AWS Under the covers with Amazon DynamoDB IP Expo 2013
 
Beyond php it's not (just) about the code
Beyond php   it's not (just) about the codeBeyond php   it's not (just) about the code
Beyond php it's not (just) about the code
 
Beyond PHP - it's not (just) about the code
Beyond PHP - it's not (just) about the codeBeyond PHP - it's not (just) about the code
Beyond PHP - it's not (just) about the code
 
Beyond php - it's not (just) about the code
Beyond php - it's not (just) about the codeBeyond php - it's not (just) about the code
Beyond php - it's not (just) about the code
 
Beyond php - it's not (just) about the code
Beyond php - it's not (just) about the codeBeyond php - it's not (just) about the code
Beyond php - it's not (just) about the code
 
DynamoDB Deep Dive
DynamoDB Deep DiveDynamoDB Deep Dive
DynamoDB Deep Dive
 
Beyond php - it's not (just) about the code
Beyond php - it's not (just) about the codeBeyond php - it's not (just) about the code
Beyond php - it's not (just) about the code
 
Relational Database to Apache Spark (and sometimes back again)
Relational Database to Apache Spark (and sometimes back again)Relational Database to Apache Spark (and sometimes back again)
Relational Database to Apache Spark (and sometimes back again)
 
Geek Sync | Rewriting Bad SQL Code 101
Geek Sync | Rewriting Bad SQL Code 101Geek Sync | Rewriting Bad SQL Code 101
Geek Sync | Rewriting Bad SQL Code 101
 
Beyond php - it's not (just) about the code
Beyond php - it's not (just) about the codeBeyond php - it's not (just) about the code
Beyond php - it's not (just) about the code
 
Beyond php - it's not (just) about the code
Beyond php - it's not (just) about the codeBeyond php - it's not (just) about the code
Beyond php - it's not (just) about the code
 
Beyond php - it's not (just) about the code
Beyond php - it's not (just) about the codeBeyond php - it's not (just) about the code
Beyond php - it's not (just) about the code
 
Amazon Redshift
Amazon RedshiftAmazon Redshift
Amazon Redshift
 
Beyond PHP - it's not (just) about the code
Beyond PHP - it's not (just) about the codeBeyond PHP - it's not (just) about the code
Beyond PHP - it's not (just) about the code
 
10 wp7 local database
10 wp7   local database10 wp7   local database
10 wp7 local database
 
Building Competing Models Using Apache Spark DataFrames with Abdulla Al-Qawasmeh
Building Competing Models Using Apache Spark DataFrames with Abdulla Al-QawasmehBuilding Competing Models Using Apache Spark DataFrames with Abdulla Al-Qawasmeh
Building Competing Models Using Apache Spark DataFrames with Abdulla Al-Qawasmeh
 

Mehr von Amazon Web Services

Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...Amazon Web Services
 
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...Amazon Web Services
 
Esegui pod serverless con Amazon EKS e AWS Fargate
Esegui pod serverless con Amazon EKS e AWS FargateEsegui pod serverless con Amazon EKS e AWS Fargate
Esegui pod serverless con Amazon EKS e AWS FargateAmazon Web Services
 
Costruire Applicazioni Moderne con AWS
Costruire Applicazioni Moderne con AWSCostruire Applicazioni Moderne con AWS
Costruire Applicazioni Moderne con AWSAmazon Web Services
 
Come spendere fino al 90% in meno con i container e le istanze spot
Come spendere fino al 90% in meno con i container e le istanze spot Come spendere fino al 90% in meno con i container e le istanze spot
Come spendere fino al 90% in meno con i container e le istanze spot Amazon Web Services
 
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...Amazon Web Services
 
OpsWorks Configuration Management: automatizza la gestione e i deployment del...
OpsWorks Configuration Management: automatizza la gestione e i deployment del...OpsWorks Configuration Management: automatizza la gestione e i deployment del...
OpsWorks Configuration Management: automatizza la gestione e i deployment del...Amazon Web Services
 
Microsoft Active Directory su AWS per supportare i tuoi Windows Workloads
Microsoft Active Directory su AWS per supportare i tuoi Windows WorkloadsMicrosoft Active Directory su AWS per supportare i tuoi Windows Workloads
Microsoft Active Directory su AWS per supportare i tuoi Windows WorkloadsAmazon Web Services
 
Database Oracle e VMware Cloud on AWS i miti da sfatare
Database Oracle e VMware Cloud on AWS i miti da sfatareDatabase Oracle e VMware Cloud on AWS i miti da sfatare
Database Oracle e VMware Cloud on AWS i miti da sfatareAmazon Web Services
 
Crea la tua prima serverless ledger-based app con QLDB e NodeJS
Crea la tua prima serverless ledger-based app con QLDB e NodeJSCrea la tua prima serverless ledger-based app con QLDB e NodeJS
Crea la tua prima serverless ledger-based app con QLDB e NodeJSAmazon Web Services
 
API moderne real-time per applicazioni mobili e web
API moderne real-time per applicazioni mobili e webAPI moderne real-time per applicazioni mobili e web
API moderne real-time per applicazioni mobili e webAmazon Web Services
 
Database Oracle e VMware Cloud™ on AWS: i miti da sfatare
Database Oracle e VMware Cloud™ on AWS: i miti da sfatareDatabase Oracle e VMware Cloud™ on AWS: i miti da sfatare
Database Oracle e VMware Cloud™ on AWS: i miti da sfatareAmazon Web Services
 
Tools for building your MVP on AWS
Tools for building your MVP on AWSTools for building your MVP on AWS
Tools for building your MVP on AWSAmazon Web Services
 
How to Build a Winning Pitch Deck
How to Build a Winning Pitch DeckHow to Build a Winning Pitch Deck
How to Build a Winning Pitch DeckAmazon Web Services
 
Building a web application without servers
Building a web application without serversBuilding a web application without servers
Building a web application without serversAmazon Web Services
 
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...Amazon Web Services
 
Introduzione a Amazon Elastic Container Service
Introduzione a Amazon Elastic Container ServiceIntroduzione a Amazon Elastic Container Service
Introduzione a Amazon Elastic Container ServiceAmazon Web Services
 

Mehr von Amazon Web Services (20)

Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
 
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
 
Esegui pod serverless con Amazon EKS e AWS Fargate
Esegui pod serverless con Amazon EKS e AWS FargateEsegui pod serverless con Amazon EKS e AWS Fargate
Esegui pod serverless con Amazon EKS e AWS Fargate
 
Costruire Applicazioni Moderne con AWS
Costruire Applicazioni Moderne con AWSCostruire Applicazioni Moderne con AWS
Costruire Applicazioni Moderne con AWS
 
Come spendere fino al 90% in meno con i container e le istanze spot
Come spendere fino al 90% in meno con i container e le istanze spot Come spendere fino al 90% in meno con i container e le istanze spot
Come spendere fino al 90% in meno con i container e le istanze spot
 
Open banking as a service
Open banking as a serviceOpen banking as a service
Open banking as a service
 
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
 
OpsWorks Configuration Management: automatizza la gestione e i deployment del...
OpsWorks Configuration Management: automatizza la gestione e i deployment del...OpsWorks Configuration Management: automatizza la gestione e i deployment del...
OpsWorks Configuration Management: automatizza la gestione e i deployment del...
 
Microsoft Active Directory su AWS per supportare i tuoi Windows Workloads
Microsoft Active Directory su AWS per supportare i tuoi Windows WorkloadsMicrosoft Active Directory su AWS per supportare i tuoi Windows Workloads
Microsoft Active Directory su AWS per supportare i tuoi Windows Workloads
 
Computer Vision con AWS
Computer Vision con AWSComputer Vision con AWS
Computer Vision con AWS
 
Database Oracle e VMware Cloud on AWS i miti da sfatare
Database Oracle e VMware Cloud on AWS i miti da sfatareDatabase Oracle e VMware Cloud on AWS i miti da sfatare
Database Oracle e VMware Cloud on AWS i miti da sfatare
 
Crea la tua prima serverless ledger-based app con QLDB e NodeJS
Crea la tua prima serverless ledger-based app con QLDB e NodeJSCrea la tua prima serverless ledger-based app con QLDB e NodeJS
Crea la tua prima serverless ledger-based app con QLDB e NodeJS
 
API moderne real-time per applicazioni mobili e web
API moderne real-time per applicazioni mobili e webAPI moderne real-time per applicazioni mobili e web
API moderne real-time per applicazioni mobili e web
 
Database Oracle e VMware Cloud™ on AWS: i miti da sfatare
Database Oracle e VMware Cloud™ on AWS: i miti da sfatareDatabase Oracle e VMware Cloud™ on AWS: i miti da sfatare
Database Oracle e VMware Cloud™ on AWS: i miti da sfatare
 
Tools for building your MVP on AWS
Tools for building your MVP on AWSTools for building your MVP on AWS
Tools for building your MVP on AWS
 
How to Build a Winning Pitch Deck
How to Build a Winning Pitch DeckHow to Build a Winning Pitch Deck
How to Build a Winning Pitch Deck
 
Building a web application without servers
Building a web application without serversBuilding a web application without servers
Building a web application without servers
 
Fundraising Essentials
Fundraising EssentialsFundraising Essentials
Fundraising Essentials
 
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
 
Introduzione a Amazon Elastic Container Service
Introduzione a Amazon Elastic Container ServiceIntroduzione a Amazon Elastic Container Service
Introduzione a Amazon Elastic Container Service
 

Kürzlich hochgeladen

GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 

Kürzlich hochgeladen (20)

GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 

Building Applications with DynamoDB

  • 1. Building Applications with DynamoDB An Online Seminar - 16th May 2012 Dr Matt Wood, Amazon Web Services
  • 4. Building Applications with DynamoDB Getting started
  • 5. Building Applications with DynamoDB Getting started Data modeling
  • 6. Building Applications with DynamoDB Getting started Data modeling Partitioning
  • 7. Building Applications with DynamoDB Getting started Data modeling Partitioning Analytics
  • 8. Getting started with DynamoDB quick review
  • 9. DynamoDB is a managed NoSQL database service. Store and retrieve any amount of data. Serve any level of request traffic.
  • 11. Consistent, predictable performance. Single digit millisecond latencies. Backed on solid-state drives.
  • 12. Flexible data model. Key/attribute pairs. No schema required. Easy to create. Easy to adjust.
  • 13. Seamless scalability. No table size limits. Unlimited storage. No downtime.
  • 14. Durable. Consistent, disk-only writes. Replication across data centres and availability zones.
  • 16. Without the operational burden. FOCUS ON YOUR APP
  • 17. Two decisions + three clicks = ready for use
  • 18. P rimary keys + t le v e l of throughpu Two decisions + three clicks = ready for use
  • 19. Provisioned throughput. Reserve IOPS for reads and writes. Scale up (or down) at any time.
  • 20. Pay per capacity unit. Priced per hour of provisioned throughput.
  • 21. Write throughput. Units = size of item x writes/second $0.01 per hour for 10 write units
  • 22. Consistent writes. Atomic increment/decrement. Optimistic concurrency control. aka: “conditional writes”.
  • 23. Transactions. Item level transactions only. Puts, updates and deletes are ACID.
  • 24. strongly consistent eventually consistent Read throughput.
  • 25. strongly consistent eventually consistent Read throughput. Provisioned units = size of item x reads/second $0.01 per hour for 50 read units
  • 26. strongly consistent eventually consistent Read throughput. Provisioned units = size of item x reads/second 2 $0.01 per hour for 100 read units
  • 27. strongly consistent eventually consistent Read throughput. Same latency expectations. Mix and match at “read time”.
  • 28. Two decisions + three clicks = ready for use
  • 29.
  • 30.
  • 31.
  • 32. Two decisions + three clicks = ready for use
  • 33. Two decisions + one API call = ready for use
  • 34. $create_response = $dynamodb->create_table(array( 'TableName' => 'ProductCatalog', 'KeySchema' => array( 'HashKeyElement' => array( 'AttributeName' => 'Id', 'AttributeType' => AmazonDynamoDB::TYPE_NUMBER ) ), 'ProvisionedThroughput' => array( 'ReadCapacityUnits' => 10, 'WriteCapacityUnits' => 5 ) ));
  • 35. Two decisions + one API call = ready for use
  • 36. Two decisions + one API call = ready for development
  • 37. Two decisions + one API call = ready for production
  • 38. Two decisions + one API call = ready for scale
  • 39.
  • 40. Authentication. Session based to minimize latency. Uses Amazon Security Token Service. Handled by AWS SDKs. Integrates with IAM.
  • 41. Monitoring. CloudWatch metrics: latency, consumed read and write throughput, errors and throttling.
  • 42. Libraries, mappers & mocks. ColdFusion, Django, Erlang, Java, .Net, Node.js, Perl, PHP, Python, Ruby http://j.mp/dynamodb-libs
  • 46. Items are a collection of attributes. Each attribute has a key and a value. An item can have any number of attributes, up to 64k total.
  • 47. Two scalar data types. String: Unicode, UTF8 binary encoding. Number: 38 digit precision. Multi-value strings and numbers.
  • 48. date = id = 100 2012-05-16-09-00-10 total = 25.00 date = id = 101 2012-05-15-15-00-11 total = 35.00 date = id = 101 2012-05-16-12-00-10 total = 100.00 date = id = 102 2012-03-20-18-23-10 total = 20.00 date = id = 102 2012-03-20-18-23-10 total = 120.00
  • 49. Table date = id = 100 2012-05-16-09-00-10 total = 25.00 date = id = 101 2012-05-15-15-00-11 total = 35.00 date = id = 101 2012-05-16-12-00-10 total = 100.00 date = id = 102 2012-03-20-18-23-10 total = 20.00 date = id = 102 2012-03-20-18-23-10 total = 120.00
  • 50. Item date = id = 100 2012-05-16-09-00-10 total = 25.00 date = id = 101 2012-05-15-15-00-11 total = 35.00 date = id = 101 2012-05-16-12-00-10 total = 100.00 date = id = 102 2012-03-20-18-23-10 total = 20.00 date = id = 102 2012-03-20-18-23-10 total = 120.00
  • 51. Attribute date = id = 100 2012-05-16-09-00-10 total = 25.00 date = id = 101 2012-05-15-15-00-11 total = 35.00 date = id = 101 2012-05-16-12-00-10 total = 100.00 date = id = 102 2012-03-20-18-23-10 total = 20.00 date = id = 102 2012-03-20-18-23-10 total = 120.00
  • 52. Where is the schema? Tables do not require a formal schema. Items are an arbitrary sized hash. Just need to specify the primary key.
  • 53. Items are indexed by primary key. Single hash keys and composite keys.
  • 54. Hash Key date = id = 100 2012-05-16-09-00-10 total = 25.00 date = id = 101 2012-05-15-15-00-11 total = 35.00 date = id = 101 2012-05-16-12-00-10 total = 100.00 date = id = 102 2012-03-20-18-23-10 total = 20.00 date = id = 102 2012-03-20-18-23-10 total = 120.00
  • 55. Range key for queries. Querying items by composite key.
  • 56. Hash Key + Range Key date = id = 100 2012-05-16-09-00-10 total = 25.00 date = id = 101 2012-05-15-15-00-11 total = 35.00 date = id = 101 2012-05-16-12-00-10 total = 100.00 date = id = 102 2012-03-20-18-23-10 total = 20.00 date = id = 102 2012-03-20-18-23-10 total = 120.00
  • 57. Programming DynamoDB. Small but perfectly formed. Whole programming interface fits on one slide.
  • 58. CreateTable PutItem UpdateTable GetItem DeleteTable UpdateItem DescribeTable DeleteItem ListTables BatchGetItem Query BatchWriteItem Scan
  • 59. CreateTable PutItem UpdateTable GetItem DeleteTable UpdateItem DescribeTable DeleteItem ListTables BatchGetItem Query BatchWriteItem Scan
  • 60. CreateTable PutItem UpdateTable GetItem DeleteTable UpdateItem DescribeTable DeleteItem ListTables BatchGetItem Query BatchWriteItem Scan
  • 61. Conditional updates. PutItem, UpdateItem, DeleteItem can take optional conditions for operation. UpdateItem performs atomic increments.
  • 62. CreateTable PutItem UpdateTable GetItem DeleteTable UpdateItem DescribeTable DeleteItem ListTables BatchGetItem Query BatchWriteItem Scan
  • 63. One API call, multiple items. BatchGet returns multiple items by primary key. BatchWrite performs up to 25 put or delete operations. Throughput is measured by IO, not API calls.
  • 64. CreateTable PutItem UpdateTable GetItem DeleteTable UpdateItem DescribeTable DeleteItem ListTables BatchGetItem Query BatchWriteItem Scan
  • 65. Query vs Scan Query for composite key queries. Scan for full table scans, exports. Both support pages and limits. Maximum response is 1Mb in size.
  • 66. Query patterns. Retrieve all items by hash key. Range key conditions: ==, <, >, >=, <=, begins with, between. Counts. Top and bottom n values. Paged responses.
  • 68. Patterns 1. Mapping relationships with range keys. No cross-table joins in DynamoDB. Use composite keys to model relationships.
  • 69. Data model example: online gaming. Storing scores and leader boards. Players with high Scores. Leader board for each game.
  • 70. Data model example: online gaming. Storing scores and leader boards. Players with high Scores. Players: hash key user_id = location = joined = Leader board for mza Cambridge 2011-07-04 each game. user_id = location = joined = jeffbarr Seattle 2012-01-20 user_id = location = joined = werner Worldwide 2011-05-15
  • 71. Data model example: online gaming. Storing scores and leader boards. Players with high Scores. Players: hash key user_id = location = joined = Leader board for mza Cambridge 2011-07-04 each game. user_id = location = joined = jeffbarr Seattle 2012-01-20 user_id = location = joined = werner Worldwide 2011-05-15 Scores: composite key user_id = game = score = mza angry-birds 11,000 user_id = game = score = mza tetris 1,223,000 user_id = location = score = werner bejewelled 55,000
  • 72. Data model example: online gaming. Storing scores and leader boards. Players with high Scores. Players: hash key user_id = location = joined = Leader board for mza Cambridge 2011-07-04 each game. user_id = location = joined = jeffbarr Seattle 2012-01-20 user_id = location = joined = werner Worldwide 2011-05-15 Scores: composite key Leader boards: composite key user_id = game = score = game = score = user_id = mza angry-birds 11,000 angry-birds 11,000 mza user_id = game = score = game = score = user_id = mza tetris 1,223,000 tetris 1,223,000 mza user_id = location = score = game = score = user_id = werner bejewelled 55,000 tetris 9,000,000 jeffbarr
  • 73. Data model example: online gaming. Storing scores and leader boards. Players: hash key user_id = location = joined = mza Cambridge 2011-07-04 Scores by user user_id = jeffbarr location = Seattle joined = 2012-01-20 (and by game) user_id = location = joined = werner Worldwide 2011-05-15 Scores: composite key Leader boards: composite key user_id = game = score = game = score = user_id = mza angry-birds 11,000 angry-birds 11,000 mza user_id = game = score = game = score = user_id = mza tetris 1,223,000 tetris 1,223,000 mza user_id = location = score = game = score = user_id = werner bejewelled 55,000 tetris 9,000,000 jeffbarr
  • 74. Data model example: online gaming. Storing scores and leader boards. Players: hash key user_id = location = joined = High scores by mza Cambridge 2011-07-04 user_id = location = joined = game jeffbarr Seattle 2012-01-20 user_id = location = joined = werner Worldwide 2011-05-15 Scores: composite key Leader boards: composite key user_id = game = score = game = score = user_id = mza angry-birds 11,000 angry-birds 11,000 mza user_id = game = score = game = score = user_id = mza tetris 1,223,000 tetris 1,223,000 mza user_id = location = score = game = score = user_id = werner bejewelled 55,000 tetris 9,000,000 jeffbarr
  • 75. Patterns 2. Handling large items. Unlimited attributes per item. Unlimited items per table. Max 64k per item.
  • 76. Data model example: large items. Storing more than 64k across items. Large messages: composite keys message_id = part = message = 1 1 <first 64k> message_id = part = message = 1 2 <second 64k> message_id = part = joined = 1 3 <third 64k> Split attributes across items. Query by message_id and part to retrieve.
  • 77. Patterns Store a pointer to objects in Amazon S3. Large data stored in S3. Location stored in DynamoDB. 99.999999999% data durability in S3.
  • 78. Patterns 3. Managing secondary indices. Not supported by DynamoDB. Create your own.
  • 79. Data model example: secondary indices. Storing more than 64k across items. Users: hash key user_id = first_name = last_name = mza Matt Wood user_id = first_name = last_name = mattfox Matt Fox user_id = first_name = last_name = werner Werner Vogels
  • 80. Data model example: secondary indices. Storing more than 64k across items. Users: hash key user_id = first_name = last_name = mza Matt Wood user_id = first_name = last_name = mattfox Matt Fox user_id = first_name = last_name = werner Werner Vogels First name index: composite keys first_name = user_id = Matt mza first_name = user_id = Matt mattfox first_name = user_id = Werner werner
  • 81. Data model example: secondary indices. Storing more than 64k across items. Users: hash key user_id = first_name = last_name = mza Matt Wood user_id = first_name = last_name = mattfox Matt Fox user_id = first_name = last_name = werner Werner Vogels First name index: composite keys Second name index: composite keys first_name = user_id = last_name = user_id = Matt mza Wood mza first_name = user_id = last_name = user_id = Matt mattfox Fox mattfox first_name = user_id = last_name = user_id = Werner werner Vogels werner
  • 82. Data model example: secondary indices. Storing more than 64k across items. Users: hash key user_id = first_name = last_name = mza Matt Wood user_id = first_name = last_name = mattfox Matt Fox user_id = first_name = last_name = werner Werner Vogels First name index: composite keys Second name index: composite keys first_name = user_id = last_name = user_id = Matt mza Wood mza first_name = user_id = last_name = user_id = Matt mattfox Fox mattfox first_name = user_id = last_name = user_id = Werner werner Vogels werner
  • 83. Data model example: secondary indices. Storing more than 64k across items. Users: hash key user_id = first_name = last_name = mza Matt Wood user_id = first_name = last_name = mattfox Matt Fox user_id = first_name = last_name = werner Werner Vogels First name index: composite keys Second name index: composite keys first_name = user_id = last_name = user_id = Matt mza Wood mza first_name = user_id = last_name = user_id = Matt mattfox Fox mattfox first_name = user_id = last_name = user_id = Werner werner Vogels werner
  • 84. Patterns 4. Time series data. Logging, click through, ad views, game play data, application usage. Non-uniform access patterns. Newer data is ‘live’. Older data is read only.
  • 85. Data model example: time series data. Rolling tables for hot and cold data. Events table: composite keys event_id = timestamp = key = 1000 2012-05-16-09-59-01 value event_id = timestamp = key = 1001 2012-05-16-09-59-02 value event_id = timestamp = key = 1002 2012-05-16-09-59-02 value
  • 86. Data model example: time series data. Rolling tables for hot and cold data. Events table: composite keys event_id = timestamp = key = 1000 2012-05-16-09-59-01 value event_id = timestamp = key = 1001 2012-05-16-09-59-02 value event_id = timestamp = key = 1002 2012-05-16-09-59-02 value Events table for April: composite keys Events table for January: composite keys event_id = timestamp = event_id = timestamp = 400 2012-04-01-00-00-01 100 2012-01-01-00-00-01 event_id = timestamp = event_id = timestamp = 401 2012-04-01-00-00-02 101 2012-01-01-00-00-02 event_id = timestamp = event_id = timestamp = 402 2012-04-01-00-00-03 102 2012-01-01-00-00-03
  • 87. Patterns Hot and cold tables. Dec Jan Feb Mar April May
  • 88. Patterns Hot and cold tables. Dec Jan Feb Mar April May higher throughput
  • 89. Patterns Hot and cold tables. Dec Jan Feb Mar April May lower higher throughput throughput
  • 90. Patterns Hot and cold tables. Dec Jan Feb Mar April May data to S3, delete cold tables
  • 91. Patterns Hot and cold tables. Jan Feb Mar Apr May June
  • 92. Patterns Hot and cold tables. Feb Mar Apr May June July
  • 93. Patterns Hot and cold tables. Mar Apr May June July Aug
  • 94. Patterns Hot and cold tables. Apr May June July Aug Sept
  • 95. Patterns Hot and cold tables. May June July Aug Sept Oct
  • 96. Patterns Not out of mind. DynamoDB and S3 data can be integrated for analytics. Run queries across hot and cold data with Elastic MapReduce.
  • 98. Uniform workloads. DynamoDB divides table data into multiple partitions. Data is distributed primarily by hash key. Provisioned throughput is divided evenly across the partitions.
  • 99. Uniform workloads. To achieve and maintain full provisioned throughput for a table, spread your workload evenly across the hash keys.
  • 100. Non-uniform workloads. Some requests might be throttled, even at high levels of provisioned throughput. Some best practices...
  • 101. Patterns 1. Distinct values for hash keys. Hash key elements should have a high number of distinct values.
  • 102. Data model example: hash key selection. Well distributed work loads Users user_id = first_name = last_name = mza Matt Wood user_id = first_name = last_name = jeffbarr Jeff Barr user_id = first_name = last_name = werner Werner Vogels user_id = first_name = last_name = mattfox Matt Fox ... ... ...
  • 103. Data model example: hash key selection. Well distributed work loads Users user_id = first_name = last_name = mza Matt Wood user_id = first_name = last_name = jeffbarr Jeff Barr user_id = first_name = last_name = werner Werner Vogels user_id = first_name = last_name = mattfox Matt Fox ... ... ... Lots of users with unique user_id. Workload well distributed across user partitions.
  • 104. Patterns 2. Avoid limited hash key values. Hash key elements should have a high number of distinct values.
  • 105. Data model example: small hash value range. Non-uniform workload. Status responses status = date = 200 2012-04-01-00-00-01 status = date = 404 2012-04-01-00-00-01 status date = 404 2012-04-01-00-00-01 status = date = 404 2012-04-01-00-00-01
  • 106. Data model example: small hash value range. Non-uniform workload. Status responses status = date = 200 2012-04-01-00-00-01 status = date = 404 2012-04-01-00-00-01 status date = 404 2012-04-01-00-00-01 status = date = 404 2012-04-01-00-00-01 Small number of status codes. Unevenly, non-uniform workload.
  • 107. Patterns 3. Model for even distribution of access. Access by hash key value should be evenly distributed across the dataset.
  • 108. Data model example: uneven access pattern by key. Non-uniform access workload. Devices mobile_id = access_date = 100 2012-04-01-00-00-01 mobile_id = access_date = 100 2012-04-01-00-00-02 mobile_id = access_date = 100 2012-04-01-00-00-03 mobile_id = access_date = 100 2012-04-01-00-00-04 ... ...
  • 109. Data model example: uneven access pattern by key. Non-uniform access workload. Devices mobile_id = access_date = 100 2012-04-01-00-00-01 mobile_id = access_date = 100 2012-04-01-00-00-02 mobile_id = access_date = 100 2012-04-01-00-00-03 mobile_id = access_date = 100 2012-04-01-00-00-04 ... ... Large number of devices. Small number which are much more popular than others. Workload unevenly distributed.
  • 110. Data model example: randomize access pattern by key. Towards a uniform workload. Devices mobile_id = access_date = 100.1 2012-04-01-00-00-01 mobile_id = access_date = 100.2 2012-04-01-00-00-02 mobile_id = access_date = 100.3 2012-04-01-00-00-03 mobile_id = access_date = 100.4 2012-04-01-00-00-04 ... ... Randomize access pattern. Workload randomised by hash key.
  • 111. Design for a uniform workload.
  • 113. Seamless scale. Scalable methods for data processing. Scalable methods for backup/restore.
  • 114. Amazon Elastic MapReduce. Managed Hadoop service for data-intensive workflows. http://aws.amazon.com/emr
  • 115. Hadoop under the hood. Take advantage of the Hadoop ecosystem: streaming interfaces, Hive, Pig, Mahout.
  • 116. Distributed data processing. API driven. Analytics at any scale.
  • 117. Query flexibility with Hive. create external table items_db (id string, votes bigint, views bigint) stored by 'org.apache.hadoop.hive.dynamodb.DynamoDBStorageHandler' tblproperties ("dynamodb.table.name" = "items", "dynamodb.column.mapping" = "id:id,votes:votes,views:views");
  • 118. Query flexibility with Hive. select id, likes, views from items_db order by views desc;
  • 119. Data export/import. Use EMR for backup and restore to Amazon S3.
  • 120. Data export/import. CREATE EXTERNAL TABLE orders_s3_new_export ( order_id string, customer_id string, order_date int, total double ) PARTITIONED BY (year string, month string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LOCATION 's3://export_bucket'; INSERT OVERWRITE TABLE orders_s3_new_export PARTITION (year='2012', month='01') SELECT * from orders_ddb_2012_01;
  • 121. Integrate live and archive data Run queries across external Hive tables on S3 and DynamoDB. Live & archive. Metadata & big objects.
  • 123. In summary... DynamoDB Predictable performance Provisioned throughput Libraries & mappers Data modeling Tables & items Read & write patterns Time series data
  • 124. In summary... DynamoDB Partitioning Predictable performance Automatic partitioning Provisioned throughput Hot and cold data Libraries & mappers Size/throughput ratio Data modeling Tables & items Read & write patterns Time series data
  • 125. In summary... DynamoDB Partitioning Predictable performance Automatic partitioning Provisioned throughput Hot and cold data Libraries & mappers Size/throughput ratio Data modeling Analytics Tables & items Elastic MapReduce Read & write patterns Hive queries Time series data Backup & restore
  • 126. DynamoDB free tier 5 writes, 10 consistent reads per second 100Mb of storage