SlideShare a Scribd company logo
1 of 71
Download to read offline
© 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Shreekant Mandke, Software Development Manager, Amazon Marketplace
December 1, 2016
Migrating a Highly Available and
Scalable Service from Oracle to
Amazon DynamoDB
ARC404
Audience Poll:
Using Relational only
Using mix of Relational and Non-Relational
Considering moving from Relational to Non-Relational
What to Expect from This Session
Case study of an actual product migration done successfully
This talk is meant to be a template but not a prescription
What it is not
- Not a primer on Oracle or DynamoDB
- It is not about picking sides between technologies or products
- It is not a talk on how to do non-relational schema design
Agenda
1. Application Overview
2. Preparation for Migration
3. Schema Design
4. Migration Strategies
5. API Refactoring
6. Data Migration
7. Results
Application Overview
Why we migrated
Availability
Scalability
Ops Overhead
Cost
Document Ingestion Service Document Distribution Service
Document Manager Service
Oracle
Document
Metadata
S3
Encrypted
Documents
Data
Metadata
DynamoDB
Document
Metadata
Agenda
1. Application Overview
2. Preparation for Migration
3. Schema Design
4. Migration Strategies
5. API Refactoring
6. Data Migration
7. Results
Preparation: Data and Traffic Pattern
• Variances in persisted data
Preparation: Data and Traffic Pattern
• Variances in persisted data
• Database interactions
Preparation: Database Interactions (Sample)
CreateDocumentVersion-
-API
Documents
Table
DocumentAttributes
Table
UserAttributes
Table
Preparation: Data and Traffic Pattern
• Variances in persisted data
• Database interactions
• Traffic patterns
Preparation: Analyze Traffic Pattern
API Distribution
CreateDocument A%
GetDocumentVersion B%
CreateToken C%
ResolveToken D%
GetMetadata E%
SetMetadata F%
Search G%
--- other API’s --
Sessions Distribution
Internal document upload P%
External document upload Q%
Automated document upload R%
Update document metadata S%
Search metadata T%
Search and internal download U%
Search and external download V%
Automated document download W%
Delete document Y%
--- other sessions -- Z%
Preparation
• Variances in persisted data
• Database interactions
• Traffic patterns
• Froze schema - for duration of migration
Preparation
• Variances in persisted data
• Database interactions
• Traffic patterns
• Froze schema – for duration of migration
• Communication – clients informed of changes and effects
Agenda
1. Application Overview
2. Preparation for Migration
3. Schema Design
4. Migration Strategies
5. API Refactoring
6. Data Migration
7. Results
Schema: Design Tenets
• Optimize for scalability and latency. Not storage efficiency
• Eventually consistent reads only. No read after write
• Idempotent: Operations designed to work on unreliable systems
• Immutability: Insert only pattern. Maintain every version for audit
• Single table write per operation (aspirational)
• First write has data to repair subsequent writes
Schema: Oracle Schema (Partial)
Document
PK Document_UUID
FK1 DocumentClass_UUID
Desc
DocumentClass
PK DocumentClass_UUID
Desc
DocumentVersion
PK DocumentVersion_UUID
FK1 Document_UUID
Locator_UUID
Metadata_A
Metadata_B
Metadata_C
Metadata_D
Metadata_E
Locator
PK Locator_UUID
FK1 DocumentVersion_UUID
Type
DocumentVersion_Metadata
PK,FK1 DocumentVersion_UUID
PK Name
Value
LocatorMetadata
PK,FK1 Locator_UUID
PK Name
Value
Schema: DynamoDB Schema (Partial)
Documents
DocumentVersionId (UUID partition key)
DocumentId – (UUID GSI)
DocumentLIfetime data
DocumentClassId – (UUID)
DocumentClass table data
IndexedMetadata_A
IndexedMetadata_B
IndexedMetadata_C
IndexedMetadata_D
IndexedMetadata_E
UnindexedMetadata
LocatorID – (UUID)
Locator table data
Other fields
Document
PK Document_UUID
FK1 DocumentClass_UUID
Desc
DocumentClass
PK DocumentClass_UUID
Desc
DocumentVersion
PK DocumentVersion_UUID
FK1 Document_UUID
Locator_UUID
Metadata_A
Metadata_B
Metadata_C
Metadata_D
Metadata_E
Locator
PK Locator_UUID
FK1 DocumentVersion_UUID
Type
DocumentVersion_Metadata
PK,FK1 DocumentVersion_UUID
PK Name
Value
LocatorMetadata
PK,FK1 Locator_UUID
PK Name
Value
Schema: DynamoDB Schema (Partial)
Documents
DocumentVersionId (UUID partition key)
DocumentId – (UUID GSI)
DocumentLIfetime data
DocumentClassId – (UUID)
DocumentClass table data
IndexedMetadata_A
IndexedMetadata_B
IndexedMetadata_C
IndexedMetadata_D
IndexedMetadata_E
UnindexedMetadata
LocatorID – (UUID)
Locator table data
Other fields
Document
PK Document_UUID
FK1 DocumentClass_UUID
Desc
DocumentClass
PK DocumentClass_UUID
Desc
DocumentVersion
PK DocumentVersion_UUID
FK1 Document_UUID
Locator_UUID
Metadata_A
Metadata_B
Metadata_C
Metadata_D
Metadata_E
Locator
PK Locator_UUID
FK1 DocumentVersion_UUID
Type
DocumentVersion_Metadata
PK,FK1 DocumentVersion_UUID
PK Name
Value
LocatorMetadata
PK,FK1 Locator_UUID
PK Name
Value
Schema: DynamoDB Schema (Partial)
Documents
DocumentVersionId (UUID partition key)
DocumentId – (UUID GSI)
DocumentLIfetime data
DocumentClassId – (UUID)
DocumentClass table data
IndexedMetadata_A
IndexedMetadata_B
IndexedMetadata_C
IndexedMetadata_D
IndexedMetadata_E
UnindexedMetadata
LocatorID – (UUID)
Locator table data
Other fields
Document
PK Document_UUID
FK1 DocumentClass_UUID
Desc
DocumentClass
PK DocumentClass_UUID
Desc
DocumentVersion
PK DocumentVersion_UUID
FK1 Document_UUID
Locator_UUID
Metadata_A
Metadata_B
Metadata_C
Metadata_D
Metadata_E
Locator
PK Locator_UUID
FK1 DocumentVersion_UUID
Type
DocumentVersion_Metadata
PK,FK1 DocumentVersion_UUID
PK Name
Value
LocatorMetadata
PK,FK1 Locator_UUID
PK Name
Value
Schema: DynamoDB Schema (Partial)
Documents
DocumentVersionId (UUID partition key)
DocumentId – (UUID GSI)
DocumentLIfetime data
DocumentClassId – (UUID)
DocumentClass table data
IndexedMetadata_A
IndexedMetadata_B
IndexedMetadata_C
IndexedMetadata_D
IndexedMetadata_E
UnindexedMetadata
LocatorID – (UUID)
Locator table data
Other fields
Document
PK Document_UUID
FK1 DocumentClass_UUID
Desc
DocumentClass
PK DocumentClass_UUID
Desc
DocumentVersion
PK DocumentVersion_UUID
FK1 Document_UUID
Locator_UUID
Metadata_A
Metadata_B
Metadata_C
Metadata_D
Metadata_E
Locator
PK Locator_UUID
FK1 DocumentVersion_UUID
Type
DocumentVersion_Metadata
PK,FK1 DocumentVersion_UUID
PK Name
Value
LocatorMetadata
PK,FK1 Locator_UUID
PK Name
Value
Schema: DynamoDB Schema (Partial)
Documents
DocumentVersionId (UUID partition key)
DocumentId – (UUID GSI)
DocumentLIfetime data
DocumentClassId – (UUID)
DocumentClass table data
IndexedMetadata_A
IndexedMetadata_B
IndexedMetadata_C
IndexedMetadata_D
IndexedMetadata_E
UnindexedMetadata
LocatorID – (UUID)
Locator table data
Other fields
Document
PK Document_UUID
FK1 DocumentClass_UUID
Desc
DocumentClass
PK DocumentClass_UUID
Desc
DocumentVersion
PK DocumentVersion_UUID
FK1 Document_UUID
Locator_UUID
Metadata_A
Metadata_B
Metadata_C
Metadata_D
Metadata_E
Locator
PK Locator_UUID
FK1 DocumentVersion_UUID
Type
DocumentVersion_Metadata
PK,FK1 DocumentVersion_UUID
PK Name
Value
LocatorMetadata
PK,FK1 Locator_UUID
PK Name
Value
Schema: DynamoDB Schema (Partial)
Documents
DocumentVersionId (UUID partition key)
DocumentId – (UUID GSI)
DocumentLIfetime data
DocumentClassId – (UUID)
DocumentClass table data
IndexedMetadata_A
IndexedMetadata_B
IndexedMetadata_C
IndexedMetadata_D
IndexedMetadata_E
UnindexedMetadata
LocatorID – (UUID)
Locator table data
Other fields
UserAttributes
DocumentVersionId (UUID
partition key)
HeadVersion (sort key) –
HEAD
CurrentVersion – UID
PreviousVersion – UUID
IndexedMetadata_A (GSI)
IndexedMetadata_B (GSI)
IndexedMetadata_C (GSI)
IndexedMetadata_D (GSI)
IndexedMetadata_E (GSI)
UnindexedMetadata
Other fields
DocumentAttributes
DocumentVersionId
(UUID partition key)
HeadVersion (sort key) –
HEAD
CurrentVersion – UUID
PreviousVersion – UUID
DocumentLifetime data
Other fields
Schema: DynamoDB Schema (Partial)
Documents
DocumentVersionId (UUID partition key)
DocumentId – (UUID GSI)
DocumentLIfetime data
DocumentClassId – (UUID)
DocumentClass table data
IndexedMetadata_A
IndexedMetadata_B
IndexedMetadata_C
IndexedMetadata_D
IndexedMetadata_E
UnindexedMetadata
LocatorID – (UUID)
Locator table data
Other fields
UserAttributes
DocumentVersionId (UUID
partition key)
HeadVersion (sort key) –
HEAD
CurrentVersion – UID
PreviousVersion – UUID
IndexedMetadata_A (GSI)
IndexedMetadata_B (GSI)
IndexedMetadata_C (GSI)
IndexedMetadata_D (GSI)
IndexedMetadata_E (GSI)
UnindexedMetadata
Other fields
DocumentAttributes
DocumentVersionId
(UUID partition key)
HeadVersion (sort key) –
HEAD
CurrentVersion – UUID
PreviousVersion – UUID
DocumentLifetime data
Other fields
Schema: DynamoDB Schema (Partial)
Documents
DocumentVersionId (UUID partition key)
DocumentId – (UUID GSI)
DocumentLIfetime data
DocumentClassId – (UUID)
DocumentClass table data
IndexedMetadata_A
IndexedMetadata_B
IndexedMetadata_C
IndexedMetadata_D
IndexedMetadata_E
UnindexedMetadata
LocatorID – (UUID)
Locator table data
Other fields
UserAttributes
DocumentVersionId (UUID
partition key)
HeadVersion (sort key) –
HEAD
CurrentVersion – UID
PreviousVersion – UUID
IndexedMetadata_A (GSI)
IndexedMetadata_B (GSI)
IndexedMetadata_C (GSI)
IndexedMetadata_D (GSI)
IndexedMetadata_E (GSI)
UnindexedMetadata
Other fields
DocumentAttributes
DocumentVersionId
(UUID partition key)
HeadVersion (sort key) –
HEAD
CurrentVersion – UUID
PreviousVersion – UUID
DocumentLifetime data
Other fields
Schema: Multi-Table Write
CreateDocumentVersion API Documents Table UserAttributes Table DocumentAttributes Table
Parallel Calls
Schema: Multi-Table Write (Failure)
CreateDocumentVersion API Documents Table UserAttributes Table DocumentAttributes Table
Parallel Calls
Schema: Read Repair Pattern
GetDocumentVersionAttributes API UserAttributes Table Documents Table
On Failure ReadRepair
Schema: DynamoDB Schema (Partial)
Documents
DocumentVersionId (UUID partition key)
DocumentId – (UUID GSI)
Documents table data
DocumentClassId – (UUID)
DocumentClass table data
IndexedMetadata_A
IndexedMetadata_B
IndexedMetadata_C
IndexedMetadata_D
IndexedMetadata_E
UnindexedMetadata
Locator table data
Other fields
UserAttributes
DocumentVersionId (UUID partition key)
HeadVersion (sort key) – HEAD
CurrentVersion – UUID
PreviousVersion – UUID
IndexedMetadata_A (GSI)
IndexedMetadata_B (GSI)
IndexedMetadata_C (GSI)
IndexedMetadata_D (GSI)
IndexedMetadata_E (GSI)
UnindexedMetadata
Other fields
Schema: Update-only Pattern
Document
Version ID
(Primary Key)
Head
Version
( Sort Key )
Row
Version
Previous
version
Metadata A
( GSI )
Versioned
Metadata A
UUID1 HEAD V2 V1 bbbb
UUID1 V2 V1 bbbb
UUID1 V1 NULL aaaa
Document
Version ID
(Primary Key)
Head
Version
( Sort Key )
Row
Version
Previous
version
Metadata A
( GSI )
Versioned
Metadata A
UUID1 HEAD V2 V1 bbbb
UUID1 V3 V2 cccc
UUID1 V2 V1 bbbb
UUID1 V1 NULL aaaa
Document
Version ID
(Primary Key)
Head
Version
( Sort Key )
Row
Version
Previous
version
Metadata A
( GSI )
Versioned
Metadata A
UUID1 HEAD V3 V2 cccc
UUID1 V3 V2 cccc
UUID1 V2 V1 bbbb
UUID1 V1 NULL aaaa
Agenda
1. Application Overview
2. Preparation for Migration
3. Schema Design
4. Migration Strategies
5. API Refactoring
6. Data Migration
7. Results
Migration Phases
Phase 1: Data only to Oracle
Phase 2: Oracle is primary. DynamoDB is secondary
Phase 3: DynamoDB is primary. Oracle is secondary
Phase 4: Data only to DynamoDB
Migration Considerations
Application Consistency
• Interfaces and expected response remain unchanged
Correctness
• Entity in both data stores match
Completeness
• All entities have been migrated
Restartability
• Fall back to last-known good state and restart process
Design-1: Workflow Model
( Did Not Implement )
Workflow Model
Workflow
Engine
Oracle
DynamoDB
W-1
W-2
W-n
Queue
Workers
Write
Compare
Problems with Workflow Model
Application consistency:
• Reads might reflect old data if the workflow is blocked.
Application Correctness: Workflow system not strictly FIFO.
• E.g., Upd-1, Upd-2, Upd-3.
• Order might not be preserved
Validation checks for Upd-1 fails as Upd-2 or Upd-3 in progress
Complexity Low Completeness True
App Consistency Does not Meet Potential data loss Due to correctness
Correctness Does not Meet Restart ability True
Latency Low
Design-2: Single Master Model
( Not Implemented )
Single Master Model
Improvements over workflow model
• Synchronous changes: All changes done synchronously on client
request
• FIFO Order: Order preserved using Conditional puts. On error client
has to redo operation
Single Master Model
Service
Oracle DynamoDB
Entity - x
Update for Entity X
Problems with Single Master Model
Correctness: No baseline to check if data added to DynamoDB is
correct and can result in a Potential Data loss
Complexity High due to Search Completeness Does not Meet
App
Consistency
Due to potential data loss Potential data loss Does not Meet
Correctness Does not Meet Restart ability Due to Potential Data
loss
Latency Low
Design-3: Two Tracking flags
Model
( Not Implemented )
Two Tracking Flags Model
Improvements from Single Master model
• Baseline for data comparison. Write to both stores
• Flags to track which data needs to be migrated.
How it works
• Maintain extra flags in both Oracle and DynamoDB for tracking
• IsMaster – At any time either Oracle or DynamoDB will be Master
• IsBackfilled – True if row is backfilled to other store
• Request
• Clients write to master; IsMaster flag set
• Secondary data store updated
• IsBackfilled flag set after comparing data in both stores
• Client gets success
Two Tracking Flags Model: Problems
Global Secondary Index (GSI) on low cardinality field: IsBackfilled
Hotspots and Limitation
Application-specific problem due to 5 GSI /table limit in DynamoDB.
There was no deterministic way we could do a perfect migration using
this technique.
Complexity High Completeness
App Consistency Potential data loss Does not Meet
Correctness Restart ability Due to Potential Data loss
Latency 4 X
Design-4: Implemented Model
Implemented Model
Improvements to Two Tracking flag model
• No tracking flag in DynamoDB. No GSI, no hotspots
How it works
• Phase determines who is master.
• Managed in code.
• Phase-2 Master is Oracle. DyamoDB is secondary.
• Phase-3 Master is DynamoDB. Oracle is secondary.
Implemented Model
How it works.
Minimize chances of rollback.
• Read and Write operations work with both data stores.
• Verify data in both data stores before marking operation successful.
Migration in 1 direction only: Oracle  DynamoDB
• Maintain extra flag only in Oracle.IsDDBBackfilled
Limitations
• Small chance of inaccessible data.
• Small chance that search might be inconsistent.
Implemented Model – Write Operation
Phase 1 Phase 2 Phase 3 Phase 4
Oracle.Write
Oracle.Write +
Oracle.IsDDBBackfilled =
No
DynamoDB.Write +
Oracle.IsDDBBackfilled =
Yes
Compare Oracle and
DynamoDB Entities
B
A
C
K
F
I
L
L
DynamoDB.Write
Oracle.Write +
Oracle.IsDDBBackfilled =
Yes
Compare DynamoDB and
Oracle Entities
DynamoDB.
Write
Implemented Model – Read Operation
Phase 1 Phase 2 Phase 3 Phase 4
Oracle.Read
Oracle.Read;
if(Oracle.IsDDBBackfilled == No) {
Dynamodb.Write;
Oracle.IsDDBBackfilled== Yes
DynamoDB.Read;
Compare Oracle with
DynamoDB Entities
}
B
A
C
K
F
I
L
L
DynamoDB.Read
if(Entry Not Found) {
Oracle.Read
Dynamodb.Write;
Oracle.IsDDBBackfilled = Yes
DynamoDB.Read
Compare Oracle with
DynamoDB Entities
}
DynamoDB.
Read
Implemented Model
Complexity High Completeness True
App Consistency Yes Potential data loss No
Correctness Yes Restart ability Yes
Latency Reads
4 x in Phase 2
1 x for Phase 3
Writes
3 x in Phase 2
2 x in Phase 3
Agenda
1. Application Overview
2. Preparation for Migration
3. Schema Design
4. Migration Strategies
5. API Refactoring
6. Data Migration
7. Results
API Refactoring: Adapter Pattern for Migration
Agenda
1. Application Overview
2. Preparation for Migration
3. Schema Design
4. Migration Strategies
5. API Refactoring
6. Data Migration
7. Results
Pre-migration Checklist
• You have successfully run data migration on sample data
Smart Data Migration Tool
• Migration traffic throttled down if latencies increase due to
increased production traffic
• Migration traffic stopped if latency thresholds crossed
• Migration traffic scaled up as production traffic decreases
Pre-migration Checklist
• You have successfully run data migration on sample data
• You have tested out rollback scenarios in case you find errors in your
migration
Migration and Rollback Testing
2 rounds of migration done in pre-prod environment
• Happy Case: P1  P2  Backfill P3 P4
• Rollback Case: P1  P2  P1
• Rollback Case: P1  P2  Backfill P3  P2
Checked that there was no loss in data
• Controlled test data in Oracle and clean tables in DynamoDB
• 5 million rows migrated in backfill
Pre-migration Checklist
• You have successfully run data migration on sample data
• You have tested out rollback scenarios in case you find errors in your
migration
• You have run stress tests in each phase
Stress Testing Tool
• Generates data for each session and then uses these
values for the entire session
• Simulates the same amount of traffic for each API as
expected
API Distribution
CreateDocument A%
GetDocumentVersion B%
CreateToken C%
ResolveToken D%
GetMetadata E%
SetMetadata F%
Search G%
--- other API’s --
Pre-migration Checklist
• You have successfully run data migration on sample data
• You have tested out rollback scenarios in case you find errors in your
migration
• You have run stress tests in each phase
• Theoretical and practical throughput numbers for tables and GSI are
matching for each phase
Sample: Phase 2 IOPS Calculations
Writes IOPS Documents Table UserAttributes Table
API TPS
Size
Multiplier
Ops
Multiplier Table GSI
Size
Multiplier
Ops
Multiplier Table
GSI
1
GSI
2
GSI
3
CreateDocument 400 8 1 3200 400 1 2 800 400 400 400
CreateDocumentVersion 100 4 1 400 100 1 2 200 200 200 200
Other API - - -
Total 3600 500 1000 600 600 600
Read IOPS Documents Table UserAttributes Table
API TPS
Size
Multiplier
Ops
Multiplier Table GSI
Size
Multiplier
Ops
Multiplier Table
GSI
1
GSI
2
GSI
3
GetDocument 100 1 1 100 100 1 1 100
Search 100 1 1 100 100 100 100
Other API - - -
Total 1000 100 200 100 100 100
Sample: Phase 2 IOPS Calculations
Writes IOPS Documents Table UserAttributes Table
API TPS
Size
Multiplier
Ops
Multiplier Table GSI
Size
Multiplier
Ops
Multiplier Table
GSI
1
GSI
2
GSI
3
CreateDocument 400 8 1 3200 400 1 2 800 400 400 400
CreateDocumentVersion 100 4 1 400 100 1 2 200 200 200 200
Other API - - -
Total 3600 500 1000 600 600 600
Read IOPS Documents Table UserAttributes Table
API TPS
Size
Multiplier
Ops
Multiplier Table GSI
Size
Multiplier
Ops
Multiplier Table
GSI
1
GSI
2
GSI
3
GetDocument 100 1 1 100 100 1 1 100
Search 100 1 1 100 100 100 100
Other API - - -
Total 1000 100 200 100 100 100
Sample: Phase 2 IOPS Calculations
Writes IOPS Documents Table UserAttributes Table
API TPS
Size
Multiplier
Ops
Multiplier Table GSI
Size
Multiplier
Ops
Multiplier Table
GSI
1
GSI
2
GSI
3
CreateDocument 400 8 1 3200 400 1 2 800 400 400 400
CreateDocumentVersion 100 4 1 400 100 1 2 200 200 200 200
Other API - - -
Total 3600 500 1000 600 600 600
Read IOPS Documents Table UserAttributes Table
API TPS
Size
Multiplier
Ops
Multiplier Table GSI
Size
Multiplier
Ops
Multiplier Table
GSI
1
GSI
2
GSI
3
GetDocument 100 1 1 100 100 1 1 100
Search 100 1 1 100 100 100 100
Other API - - -
Total 1000 100 200 100 100 100
Sample: Phase 2 IOPS Calculations
Writes IOPS Documents Table UserAttributes Table
API TPS
Size
Multiplier
Ops
Multiplier Table GSI
Size
Multiplier
Ops
Multiplier Table
GSI
1
GSI
2
GSI
3
CreateDocument 400 8 1 3200 400 1 2 800 400 400 400
CreateDocumentVersion 100 4 1 400 100 1 2 200 200 200 200
Other API - - -
Total 3600 500 1000 600 600 600
Read IOPS Documents Table UserAttributes Table
API TPS
Size
Multiplier
Ops
Multiplier Table GSI
Size
Multiplier
Ops
Multiplier Table
GSI
1
GSI
2
GSI
3
GetDocument 100 1 1 100 100 1 1 100
Search 100 1 1 100 100 100 100
Other API - - -
Total 1000 100 200 100 100 100
Pre-migration Checklist
• Successful data migration on sample data
• Tested out rollback scenarios
• Run stress tests in each phase
• Theoretical and practical throughput numbers for tables and GSI are
matching for each phase
• Operation alarms and dashboards for each phase
• Clients informed about of latencies to adjust their alarms
Timeline
• Migration takes time.
• Duration 9 months. Schema frozen for 6 months.
• Keep time buffer for data migration.
• Took 2 months. 2x higher due to higher production traffic.
• Code increased by 3x. Code verification took 3 weeks
• Each API had 4 behaviors – 1 for each phase.
• Application maintained for 2 weeks in Phase 3.
• Precaution before moving to Phase 4.
Agenda
1. Application Overview
2. Preparation for Migration
3. Schema Design
4. Migration Strategies
5. API Refactoring
6. Data Migration
7. Results
Results
Migration completed in Happy Path – no reset or rollbacks
Data migrated without a single error or loss of data
500 M entities migrated without a single client issue
Results (Reason to Migrate)
Availability: Maintained 100% availability for over 1 year
Scalability: Application managing 10x more documents
today; ample room to keep growing
Operations overhead: No dedicated DBA; application dev
team managing DynamoDB
Suggestions
• Run migration from a different Oracle server
• Prevent locking or overloading the primary
• Avoid GSI on low cardinality attribute
• Consider moving search to Amazon CloudSearch / Amazon
Elasticsearch
• Do not over scale throughput for migration.
• DynamoDB does not reduce partitions when you descale
your throughput
Q & A
Thank you!
Remember to complete
your evaluations!

More Related Content

What's hot

Choosing the Right Database for the Job: Relational, Cache, or NoSQL?
Choosing the Right Database for the Job: Relational, Cache, or NoSQL?Choosing the Right Database for the Job: Relational, Cache, or NoSQL?
Choosing the Right Database for the Job: Relational, Cache, or NoSQL?Amazon Web Services
 
AWS March 2016 Webinar Series - Building Big Data Solutions with Amazon EMR a...
AWS March 2016 Webinar Series - Building Big Data Solutions with Amazon EMR a...AWS March 2016 Webinar Series - Building Big Data Solutions with Amazon EMR a...
AWS March 2016 Webinar Series - Building Big Data Solutions with Amazon EMR a...Amazon Web Services
 
Databases in the Cloud - DevDay Austin 2017 Day 2
Databases in the Cloud - DevDay Austin 2017 Day 2Databases in the Cloud - DevDay Austin 2017 Day 2
Databases in the Cloud - DevDay Austin 2017 Day 2Amazon Web Services
 
AWS re:Invent 2016: How to Build a Big Data Analytics Data Lake (LFS303)
AWS re:Invent 2016: How to Build a Big Data Analytics Data Lake (LFS303)AWS re:Invent 2016: How to Build a Big Data Analytics Data Lake (LFS303)
AWS re:Invent 2016: How to Build a Big Data Analytics Data Lake (LFS303)Amazon Web Services
 
New Database Migration Services & RDS Updates
New Database Migration Services & RDS UpdatesNew Database Migration Services & RDS Updates
New Database Migration Services & RDS UpdatesAmazon Web Services
 
Module 2 - Datalake
Module 2 - DatalakeModule 2 - Datalake
Module 2 - DatalakeLam Le
 
(BDT317) Building A Data Lake On AWS
(BDT317) Building A Data Lake On AWS(BDT317) Building A Data Lake On AWS
(BDT317) Building A Data Lake On AWSAmazon Web Services
 
FSI201 FINRA’s Managed Data Lake – Next Gen Analytics in the Cloud
FSI201 FINRA’s Managed Data Lake – Next Gen Analytics in the CloudFSI201 FINRA’s Managed Data Lake – Next Gen Analytics in the Cloud
FSI201 FINRA’s Managed Data Lake – Next Gen Analytics in the CloudAmazon Web Services
 
AWS re:Invent 2016: JustGiving: Serverless Data Pipelines, Event-Driven ETL, ...
AWS re:Invent 2016: JustGiving: Serverless Data Pipelines, Event-Driven ETL, ...AWS re:Invent 2016: JustGiving: Serverless Data Pipelines, Event-Driven ETL, ...
AWS re:Invent 2016: JustGiving: Serverless Data Pipelines, Event-Driven ETL, ...Amazon Web Services
 
Optimizing Storage for Big Data Analytics Workloads
Optimizing Storage for Big Data Analytics WorkloadsOptimizing Storage for Big Data Analytics Workloads
Optimizing Storage for Big Data Analytics WorkloadsAmazon Web Services
 
What's New with Big Data Analytics
What's New with Big Data AnalyticsWhat's New with Big Data Analytics
What's New with Big Data AnalyticsAmazon Web Services
 
Modernising your Applications on AWS: AWS SDKs and Application Web Services –...
Modernising your Applications on AWS: AWS SDKs and Application Web Services –...Modernising your Applications on AWS: AWS SDKs and Application Web Services –...
Modernising your Applications on AWS: AWS SDKs and Application Web Services –...Amazon Web Services
 
AWS re:Invent 2016: ElastiCache Deep Dive: Best Practices and Usage Patterns ...
AWS re:Invent 2016: ElastiCache Deep Dive: Best Practices and Usage Patterns ...AWS re:Invent 2016: ElastiCache Deep Dive: Best Practices and Usage Patterns ...
AWS re:Invent 2016: ElastiCache Deep Dive: Best Practices and Usage Patterns ...Amazon Web Services
 
Logging infrastructure for Microservices using StreamSets Data Collector
Logging infrastructure for Microservices using StreamSets Data CollectorLogging infrastructure for Microservices using StreamSets Data Collector
Logging infrastructure for Microservices using StreamSets Data CollectorCask Data
 
Building Serverless Web Applications - DevDay Los Angeles 2017
Building Serverless Web Applications - DevDay Los Angeles 2017Building Serverless Web Applications - DevDay Los Angeles 2017
Building Serverless Web Applications - DevDay Los Angeles 2017Amazon Web Services
 
FSI301 An Architecture for Trade Capture and Regulatory Reporting
FSI301 An Architecture for Trade Capture and Regulatory ReportingFSI301 An Architecture for Trade Capture and Regulatory Reporting
FSI301 An Architecture for Trade Capture and Regulatory ReportingAmazon Web Services
 
Best Practices for Building a Data Lake on AWS
Best Practices for Building a Data Lake on AWSBest Practices for Building a Data Lake on AWS
Best Practices for Building a Data Lake on AWSAmazon Web Services
 
Migrating to Amazon RDS with Database Migration Service
Migrating to Amazon RDS with Database Migration ServiceMigrating to Amazon RDS with Database Migration Service
Migrating to Amazon RDS with Database Migration ServiceAmazon Web Services
 
Fast Track to Your Data Lake on AWS
Fast Track to Your Data Lake on AWSFast Track to Your Data Lake on AWS
Fast Track to Your Data Lake on AWSAmazon Web Services
 
ENT305 Migrating Your Databases to AWS: Deep Dive on Amazon Relational Databa...
ENT305 Migrating Your Databases to AWS: Deep Dive on Amazon Relational Databa...ENT305 Migrating Your Databases to AWS: Deep Dive on Amazon Relational Databa...
ENT305 Migrating Your Databases to AWS: Deep Dive on Amazon Relational Databa...Amazon Web Services
 

What's hot (20)

Choosing the Right Database for the Job: Relational, Cache, or NoSQL?
Choosing the Right Database for the Job: Relational, Cache, or NoSQL?Choosing the Right Database for the Job: Relational, Cache, or NoSQL?
Choosing the Right Database for the Job: Relational, Cache, or NoSQL?
 
AWS March 2016 Webinar Series - Building Big Data Solutions with Amazon EMR a...
AWS March 2016 Webinar Series - Building Big Data Solutions with Amazon EMR a...AWS March 2016 Webinar Series - Building Big Data Solutions with Amazon EMR a...
AWS March 2016 Webinar Series - Building Big Data Solutions with Amazon EMR a...
 
Databases in the Cloud - DevDay Austin 2017 Day 2
Databases in the Cloud - DevDay Austin 2017 Day 2Databases in the Cloud - DevDay Austin 2017 Day 2
Databases in the Cloud - DevDay Austin 2017 Day 2
 
AWS re:Invent 2016: How to Build a Big Data Analytics Data Lake (LFS303)
AWS re:Invent 2016: How to Build a Big Data Analytics Data Lake (LFS303)AWS re:Invent 2016: How to Build a Big Data Analytics Data Lake (LFS303)
AWS re:Invent 2016: How to Build a Big Data Analytics Data Lake (LFS303)
 
New Database Migration Services & RDS Updates
New Database Migration Services & RDS UpdatesNew Database Migration Services & RDS Updates
New Database Migration Services & RDS Updates
 
Module 2 - Datalake
Module 2 - DatalakeModule 2 - Datalake
Module 2 - Datalake
 
(BDT317) Building A Data Lake On AWS
(BDT317) Building A Data Lake On AWS(BDT317) Building A Data Lake On AWS
(BDT317) Building A Data Lake On AWS
 
FSI201 FINRA’s Managed Data Lake – Next Gen Analytics in the Cloud
FSI201 FINRA’s Managed Data Lake – Next Gen Analytics in the CloudFSI201 FINRA’s Managed Data Lake – Next Gen Analytics in the Cloud
FSI201 FINRA’s Managed Data Lake – Next Gen Analytics in the Cloud
 
AWS re:Invent 2016: JustGiving: Serverless Data Pipelines, Event-Driven ETL, ...
AWS re:Invent 2016: JustGiving: Serverless Data Pipelines, Event-Driven ETL, ...AWS re:Invent 2016: JustGiving: Serverless Data Pipelines, Event-Driven ETL, ...
AWS re:Invent 2016: JustGiving: Serverless Data Pipelines, Event-Driven ETL, ...
 
Optimizing Storage for Big Data Analytics Workloads
Optimizing Storage for Big Data Analytics WorkloadsOptimizing Storage for Big Data Analytics Workloads
Optimizing Storage for Big Data Analytics Workloads
 
What's New with Big Data Analytics
What's New with Big Data AnalyticsWhat's New with Big Data Analytics
What's New with Big Data Analytics
 
Modernising your Applications on AWS: AWS SDKs and Application Web Services –...
Modernising your Applications on AWS: AWS SDKs and Application Web Services –...Modernising your Applications on AWS: AWS SDKs and Application Web Services –...
Modernising your Applications on AWS: AWS SDKs and Application Web Services –...
 
AWS re:Invent 2016: ElastiCache Deep Dive: Best Practices and Usage Patterns ...
AWS re:Invent 2016: ElastiCache Deep Dive: Best Practices and Usage Patterns ...AWS re:Invent 2016: ElastiCache Deep Dive: Best Practices and Usage Patterns ...
AWS re:Invent 2016: ElastiCache Deep Dive: Best Practices and Usage Patterns ...
 
Logging infrastructure for Microservices using StreamSets Data Collector
Logging infrastructure for Microservices using StreamSets Data CollectorLogging infrastructure for Microservices using StreamSets Data Collector
Logging infrastructure for Microservices using StreamSets Data Collector
 
Building Serverless Web Applications - DevDay Los Angeles 2017
Building Serverless Web Applications - DevDay Los Angeles 2017Building Serverless Web Applications - DevDay Los Angeles 2017
Building Serverless Web Applications - DevDay Los Angeles 2017
 
FSI301 An Architecture for Trade Capture and Regulatory Reporting
FSI301 An Architecture for Trade Capture and Regulatory ReportingFSI301 An Architecture for Trade Capture and Regulatory Reporting
FSI301 An Architecture for Trade Capture and Regulatory Reporting
 
Best Practices for Building a Data Lake on AWS
Best Practices for Building a Data Lake on AWSBest Practices for Building a Data Lake on AWS
Best Practices for Building a Data Lake on AWS
 
Migrating to Amazon RDS with Database Migration Service
Migrating to Amazon RDS with Database Migration ServiceMigrating to Amazon RDS with Database Migration Service
Migrating to Amazon RDS with Database Migration Service
 
Fast Track to Your Data Lake on AWS
Fast Track to Your Data Lake on AWSFast Track to Your Data Lake on AWS
Fast Track to Your Data Lake on AWS
 
ENT305 Migrating Your Databases to AWS: Deep Dive on Amazon Relational Databa...
ENT305 Migrating Your Databases to AWS: Deep Dive on Amazon Relational Databa...ENT305 Migrating Your Databases to AWS: Deep Dive on Amazon Relational Databa...
ENT305 Migrating Your Databases to AWS: Deep Dive on Amazon Relational Databa...
 

Viewers also liked

Deep-Dive: Building Mobile Web Applications with AWS Mobile SDK
Deep-Dive: Building Mobile Web Applications with AWS Mobile SDKDeep-Dive: Building Mobile Web Applications with AWS Mobile SDK
Deep-Dive: Building Mobile Web Applications with AWS Mobile SDKAmazon Web Services
 
Building Serverless Backends with AWS Lambda and Amazon API Gateway
Building Serverless Backends with AWS Lambda and Amazon API GatewayBuilding Serverless Backends with AWS Lambda and Amazon API Gateway
Building Serverless Backends with AWS Lambda and Amazon API GatewayAmazon Web Services
 
AWS Black Belt Online Seminar 2016 Amazon VPC
AWS Black Belt Online Seminar 2016 Amazon VPCAWS Black Belt Online Seminar 2016 Amazon VPC
AWS Black Belt Online Seminar 2016 Amazon VPCAmazon Web Services Japan
 
AWSでアプリ開発するなら 知っておくべこと
AWSでアプリ開発するなら 知っておくべことAWSでアプリ開発するなら 知っておくべこと
AWSでアプリ開発するなら 知っておくべことKeisuke Nishitani
 
AWS re:Invent 2016| DAT318 | Migrating from RDBMS to NoSQL: How Sony Moved fr...
AWS re:Invent 2016| DAT318 | Migrating from RDBMS to NoSQL: How Sony Moved fr...AWS re:Invent 2016| DAT318 | Migrating from RDBMS to NoSQL: How Sony Moved fr...
AWS re:Invent 2016| DAT318 | Migrating from RDBMS to NoSQL: How Sony Moved fr...Amazon 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
 
MTDDC 2010.2.5 Tokyo - Brand new API
MTDDC 2010.2.5 Tokyo - Brand new APIMTDDC 2010.2.5 Tokyo - Brand new API
MTDDC 2010.2.5 Tokyo - Brand new APISix Apart KK
 
Novelties in Java EE 7: JAX-RS 2.0 + IPT REST HATEOAS Polling Demo @ BGOUG Co...
Novelties in Java EE 7: JAX-RS 2.0 + IPT REST HATEOAS Polling Demo @ BGOUG Co...Novelties in Java EE 7: JAX-RS 2.0 + IPT REST HATEOAS Polling Demo @ BGOUG Co...
Novelties in Java EE 7: JAX-RS 2.0 + IPT REST HATEOAS Polling Demo @ BGOUG Co...Trayan Iliev
 
Data API ことはじめ
Data API ことはじめData API ことはじめ
Data API ことはじめYuji Takayama
 
Fork/Join Framework。そしてLambdaへ。
Fork/Join Framework。そしてLambdaへ。Fork/Join Framework。そしてLambdaへ。
Fork/Join Framework。そしてLambdaへ。Yuichi Sakuraba
 
Introducing C# in AWS Lambda
Introducing C# in AWS LambdaIntroducing C# in AWS Lambda
Introducing C# in AWS LambdaAtsushi Fukui
 
Running Java Apps with Amazon EC2, AWS Elastic Beanstalk or Serverless
Running Java Apps with Amazon EC2, AWS Elastic Beanstalk or ServerlessRunning Java Apps with Amazon EC2, AWS Elastic Beanstalk or Serverless
Running Java Apps with Amazon EC2, AWS Elastic Beanstalk or ServerlessKeisuke Nishitani
 
20161111 java one2016-feedback
20161111 java one2016-feedback20161111 java one2016-feedback
20161111 java one2016-feedbackTakashi Ito
 
Going Serverless, Building Applications with No Servers
Going Serverless, Building Applications with No ServersGoing Serverless, Building Applications with No Servers
Going Serverless, Building Applications with No ServersKeisuke Nishitani
 
Awsで作るビッグデータ解析今とこれから
Awsで作るビッグデータ解析今とこれからAwsで作るビッグデータ解析今とこれから
Awsで作るビッグデータ解析今とこれからShohei Kobayashi
 

Viewers also liked (20)

Deep-Dive: Building Mobile Web Applications with AWS Mobile SDK
Deep-Dive: Building Mobile Web Applications with AWS Mobile SDKDeep-Dive: Building Mobile Web Applications with AWS Mobile SDK
Deep-Dive: Building Mobile Web Applications with AWS Mobile SDK
 
Building Serverless Backends with AWS Lambda and Amazon API Gateway
Building Serverless Backends with AWS Lambda and Amazon API GatewayBuilding Serverless Backends with AWS Lambda and Amazon API Gateway
Building Serverless Backends with AWS Lambda and Amazon API Gateway
 
Serverless Revolution
Serverless RevolutionServerless Revolution
Serverless Revolution
 
Serverless for Developers
Serverless for DevelopersServerless for Developers
Serverless for Developers
 
What's new with Serverless
What's new with ServerlessWhat's new with Serverless
What's new with Serverless
 
Deep Dive: Amazon DynamoDB
Deep Dive: Amazon DynamoDBDeep Dive: Amazon DynamoDB
Deep Dive: Amazon DynamoDB
 
AWS Black Belt Online Seminar 2016 Amazon VPC
AWS Black Belt Online Seminar 2016 Amazon VPCAWS Black Belt Online Seminar 2016 Amazon VPC
AWS Black Belt Online Seminar 2016 Amazon VPC
 
AWSでアプリ開発するなら 知っておくべこと
AWSでアプリ開発するなら 知っておくべことAWSでアプリ開発するなら 知っておくべこと
AWSでアプリ開発するなら 知っておくべこと
 
AWS re:Invent 2016| DAT318 | Migrating from RDBMS to NoSQL: How Sony Moved fr...
AWS re:Invent 2016| DAT318 | Migrating from RDBMS to NoSQL: How Sony Moved fr...AWS re:Invent 2016| DAT318 | Migrating from RDBMS to NoSQL: How Sony Moved fr...
AWS re:Invent 2016| DAT318 | Migrating from RDBMS to NoSQL: How Sony Moved fr...
 
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...
 
MTDDC 2010.2.5 Tokyo - Brand new API
MTDDC 2010.2.5 Tokyo - Brand new APIMTDDC 2010.2.5 Tokyo - Brand new API
MTDDC 2010.2.5 Tokyo - Brand new API
 
Novelties in Java EE 7: JAX-RS 2.0 + IPT REST HATEOAS Polling Demo @ BGOUG Co...
Novelties in Java EE 7: JAX-RS 2.0 + IPT REST HATEOAS Polling Demo @ BGOUG Co...Novelties in Java EE 7: JAX-RS 2.0 + IPT REST HATEOAS Polling Demo @ BGOUG Co...
Novelties in Java EE 7: JAX-RS 2.0 + IPT REST HATEOAS Polling Demo @ BGOUG Co...
 
Data API ことはじめ
Data API ことはじめData API ことはじめ
Data API ことはじめ
 
Fork/Join Framework。そしてLambdaへ。
Fork/Join Framework。そしてLambdaへ。Fork/Join Framework。そしてLambdaへ。
Fork/Join Framework。そしてLambdaへ。
 
Introducing C# in AWS Lambda
Introducing C# in AWS LambdaIntroducing C# in AWS Lambda
Introducing C# in AWS Lambda
 
Running Java Apps with Amazon EC2, AWS Elastic Beanstalk or Serverless
Running Java Apps with Amazon EC2, AWS Elastic Beanstalk or ServerlessRunning Java Apps with Amazon EC2, AWS Elastic Beanstalk or Serverless
Running Java Apps with Amazon EC2, AWS Elastic Beanstalk or Serverless
 
20161111 java one2016-feedback
20161111 java one2016-feedback20161111 java one2016-feedback
20161111 java one2016-feedback
 
Going Serverless, Building Applications with No Servers
Going Serverless, Building Applications with No ServersGoing Serverless, Building Applications with No Servers
Going Serverless, Building Applications with No Servers
 
Introduction to AWS X-Ray
Introduction to AWS X-RayIntroduction to AWS X-Ray
Introduction to AWS X-Ray
 
Awsで作るビッグデータ解析今とこれから
Awsで作るビッグデータ解析今とこれからAwsで作るビッグデータ解析今とこれから
Awsで作るビッグデータ解析今とこれから
 

Similar to AWS re:Invent 2016: Migrating a Highly Available and Scalable Database from Oracle to Amazon DynamoDB (ARC404)

UNIT - 1 Part 2: Data Warehousing and Data Mining
UNIT - 1 Part 2: Data Warehousing and Data MiningUNIT - 1 Part 2: Data Warehousing and Data Mining
UNIT - 1 Part 2: Data Warehousing and Data MiningNandakumar P
 
HKOSCon18 - Chetan Khatri - Scaling TB's of Data with Apache Spark and Scala ...
HKOSCon18 - Chetan Khatri - Scaling TB's of Data with Apache Spark and Scala ...HKOSCon18 - Chetan Khatri - Scaling TB's of Data with Apache Spark and Scala ...
HKOSCon18 - Chetan Khatri - Scaling TB's of Data with Apache Spark and Scala ...Chetan Khatri
 
Spring data presentation
Spring data presentationSpring data presentation
Spring data presentationOleksii Usyk
 
Anatomy of Data Frame API : A deep dive into Spark Data Frame API
Anatomy of Data Frame API :  A deep dive into Spark Data Frame APIAnatomy of Data Frame API :  A deep dive into Spark Data Frame API
Anatomy of Data Frame API : A deep dive into Spark Data Frame APIdatamantra
 
Architect’s Open-Source Guide for a Data Mesh Architecture
Architect’s Open-Source Guide for a Data Mesh ArchitectureArchitect’s Open-Source Guide for a Data Mesh Architecture
Architect’s Open-Source Guide for a Data Mesh ArchitectureDatabricks
 
Jump Start on Apache Spark 2.2 with Databricks
Jump Start on Apache Spark 2.2 with DatabricksJump Start on Apache Spark 2.2 with Databricks
Jump Start on Apache Spark 2.2 with DatabricksAnyscale
 
Real time analytics at uber @ strata data 2019
Real time analytics at uber @ strata data 2019Real time analytics at uber @ strata data 2019
Real time analytics at uber @ strata data 2019Zhenxiao Luo
 
Oracle Forms to APEX conversion tool
Oracle Forms to APEX conversion toolOracle Forms to APEX conversion tool
Oracle Forms to APEX conversion toolScott Wesley
 
Introduction to Structured Data Processing with Spark SQL
Introduction to Structured Data Processing with Spark SQLIntroduction to Structured Data Processing with Spark SQL
Introduction to Structured Data Processing with Spark SQLdatamantra
 
Database Cloud Services Office Hours : Oracle sharding hyperscale globally d...
Database Cloud Services Office Hours : Oracle sharding  hyperscale globally d...Database Cloud Services Office Hours : Oracle sharding  hyperscale globally d...
Database Cloud Services Office Hours : Oracle sharding hyperscale globally d...Tammy Bednar
 
Why Wait? Realtime Ingestion With Chen Qin and Heng Zhang | Current 2022
Why Wait? Realtime Ingestion With Chen Qin and Heng Zhang | Current 2022Why Wait? Realtime Ingestion With Chen Qin and Heng Zhang | Current 2022
Why Wait? Realtime Ingestion With Chen Qin and Heng Zhang | Current 2022HostedbyConfluent
 
Big data meet_up_08042016
Big data meet_up_08042016Big data meet_up_08042016
Big data meet_up_08042016Mark Smith
 
Deep Dive into Spark SQL with Advanced Performance Tuning with Xiao Li & Wenc...
Deep Dive into Spark SQL with Advanced Performance Tuning with Xiao Li & Wenc...Deep Dive into Spark SQL with Advanced Performance Tuning with Xiao Li & Wenc...
Deep Dive into Spark SQL with Advanced Performance Tuning with Xiao Li & Wenc...Databricks
 
2010 - SPOCS WP1 Review First Year V1.0
2010 - SPOCS WP1 Review First Year V1.02010 - SPOCS WP1 Review First Year V1.0
2010 - SPOCS WP1 Review First Year V1.0evkas
 
MarcEdit Shelter-In-Place Webinar 5: Working with MarcEdit's Linked Data Fram...
MarcEdit Shelter-In-Place Webinar 5: Working with MarcEdit's Linked Data Fram...MarcEdit Shelter-In-Place Webinar 5: Working with MarcEdit's Linked Data Fram...
MarcEdit Shelter-In-Place Webinar 5: Working with MarcEdit's Linked Data Fram...Terry Reese
 
Ajith_kumar_4.3 Years_Informatica_ETL
Ajith_kumar_4.3 Years_Informatica_ETLAjith_kumar_4.3 Years_Informatica_ETL
Ajith_kumar_4.3 Years_Informatica_ETLAjith Kumar Pampatti
 
Apache Spark Data Source V2 with Wenchen Fan and Gengliang Wang
Apache Spark Data Source V2 with Wenchen Fan and Gengliang WangApache Spark Data Source V2 with Wenchen Fan and Gengliang Wang
Apache Spark Data Source V2 with Wenchen Fan and Gengliang WangDatabricks
 
Processing genetic data at scale
Processing genetic data at scaleProcessing genetic data at scale
Processing genetic data at scaleMark Schroering
 
Real time analytics on deep learning @ strata data 2019
Real time analytics on deep learning @ strata data 2019Real time analytics on deep learning @ strata data 2019
Real time analytics on deep learning @ strata data 2019Zhenxiao Luo
 
Spark SQL In Depth www.syedacademy.com
Spark SQL In Depth www.syedacademy.comSpark SQL In Depth www.syedacademy.com
Spark SQL In Depth www.syedacademy.comSyed Hadoop
 

Similar to AWS re:Invent 2016: Migrating a Highly Available and Scalable Database from Oracle to Amazon DynamoDB (ARC404) (20)

UNIT - 1 Part 2: Data Warehousing and Data Mining
UNIT - 1 Part 2: Data Warehousing and Data MiningUNIT - 1 Part 2: Data Warehousing and Data Mining
UNIT - 1 Part 2: Data Warehousing and Data Mining
 
HKOSCon18 - Chetan Khatri - Scaling TB's of Data with Apache Spark and Scala ...
HKOSCon18 - Chetan Khatri - Scaling TB's of Data with Apache Spark and Scala ...HKOSCon18 - Chetan Khatri - Scaling TB's of Data with Apache Spark and Scala ...
HKOSCon18 - Chetan Khatri - Scaling TB's of Data with Apache Spark and Scala ...
 
Spring data presentation
Spring data presentationSpring data presentation
Spring data presentation
 
Anatomy of Data Frame API : A deep dive into Spark Data Frame API
Anatomy of Data Frame API :  A deep dive into Spark Data Frame APIAnatomy of Data Frame API :  A deep dive into Spark Data Frame API
Anatomy of Data Frame API : A deep dive into Spark Data Frame API
 
Architect’s Open-Source Guide for a Data Mesh Architecture
Architect’s Open-Source Guide for a Data Mesh ArchitectureArchitect’s Open-Source Guide for a Data Mesh Architecture
Architect’s Open-Source Guide for a Data Mesh Architecture
 
Jump Start on Apache Spark 2.2 with Databricks
Jump Start on Apache Spark 2.2 with DatabricksJump Start on Apache Spark 2.2 with Databricks
Jump Start on Apache Spark 2.2 with Databricks
 
Real time analytics at uber @ strata data 2019
Real time analytics at uber @ strata data 2019Real time analytics at uber @ strata data 2019
Real time analytics at uber @ strata data 2019
 
Oracle Forms to APEX conversion tool
Oracle Forms to APEX conversion toolOracle Forms to APEX conversion tool
Oracle Forms to APEX conversion tool
 
Introduction to Structured Data Processing with Spark SQL
Introduction to Structured Data Processing with Spark SQLIntroduction to Structured Data Processing with Spark SQL
Introduction to Structured Data Processing with Spark SQL
 
Database Cloud Services Office Hours : Oracle sharding hyperscale globally d...
Database Cloud Services Office Hours : Oracle sharding  hyperscale globally d...Database Cloud Services Office Hours : Oracle sharding  hyperscale globally d...
Database Cloud Services Office Hours : Oracle sharding hyperscale globally d...
 
Why Wait? Realtime Ingestion With Chen Qin and Heng Zhang | Current 2022
Why Wait? Realtime Ingestion With Chen Qin and Heng Zhang | Current 2022Why Wait? Realtime Ingestion With Chen Qin and Heng Zhang | Current 2022
Why Wait? Realtime Ingestion With Chen Qin and Heng Zhang | Current 2022
 
Big data meet_up_08042016
Big data meet_up_08042016Big data meet_up_08042016
Big data meet_up_08042016
 
Deep Dive into Spark SQL with Advanced Performance Tuning with Xiao Li & Wenc...
Deep Dive into Spark SQL with Advanced Performance Tuning with Xiao Li & Wenc...Deep Dive into Spark SQL with Advanced Performance Tuning with Xiao Li & Wenc...
Deep Dive into Spark SQL with Advanced Performance Tuning with Xiao Li & Wenc...
 
2010 - SPOCS WP1 Review First Year V1.0
2010 - SPOCS WP1 Review First Year V1.02010 - SPOCS WP1 Review First Year V1.0
2010 - SPOCS WP1 Review First Year V1.0
 
MarcEdit Shelter-In-Place Webinar 5: Working with MarcEdit's Linked Data Fram...
MarcEdit Shelter-In-Place Webinar 5: Working with MarcEdit's Linked Data Fram...MarcEdit Shelter-In-Place Webinar 5: Working with MarcEdit's Linked Data Fram...
MarcEdit Shelter-In-Place Webinar 5: Working with MarcEdit's Linked Data Fram...
 
Ajith_kumar_4.3 Years_Informatica_ETL
Ajith_kumar_4.3 Years_Informatica_ETLAjith_kumar_4.3 Years_Informatica_ETL
Ajith_kumar_4.3 Years_Informatica_ETL
 
Apache Spark Data Source V2 with Wenchen Fan and Gengliang Wang
Apache Spark Data Source V2 with Wenchen Fan and Gengliang WangApache Spark Data Source V2 with Wenchen Fan and Gengliang Wang
Apache Spark Data Source V2 with Wenchen Fan and Gengliang Wang
 
Processing genetic data at scale
Processing genetic data at scaleProcessing genetic data at scale
Processing genetic data at scale
 
Real time analytics on deep learning @ strata data 2019
Real time analytics on deep learning @ strata data 2019Real time analytics on deep learning @ strata data 2019
Real time analytics on deep learning @ strata data 2019
 
Spark SQL In Depth www.syedacademy.com
Spark SQL In Depth www.syedacademy.comSpark SQL In Depth www.syedacademy.com
Spark SQL In Depth www.syedacademy.com
 

More from 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
 

More from 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
 

Recently uploaded

New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 

Recently uploaded (20)

DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 

AWS re:Invent 2016: Migrating a Highly Available and Scalable Database from Oracle to Amazon DynamoDB (ARC404)

  • 1. © 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Shreekant Mandke, Software Development Manager, Amazon Marketplace December 1, 2016 Migrating a Highly Available and Scalable Service from Oracle to Amazon DynamoDB ARC404
  • 2. Audience Poll: Using Relational only Using mix of Relational and Non-Relational Considering moving from Relational to Non-Relational
  • 3. What to Expect from This Session Case study of an actual product migration done successfully This talk is meant to be a template but not a prescription What it is not - Not a primer on Oracle or DynamoDB - It is not about picking sides between technologies or products - It is not a talk on how to do non-relational schema design
  • 4. Agenda 1. Application Overview 2. Preparation for Migration 3. Schema Design 4. Migration Strategies 5. API Refactoring 6. Data Migration 7. Results
  • 5. Application Overview Why we migrated Availability Scalability Ops Overhead Cost Document Ingestion Service Document Distribution Service Document Manager Service Oracle Document Metadata S3 Encrypted Documents Data Metadata DynamoDB Document Metadata
  • 6. Agenda 1. Application Overview 2. Preparation for Migration 3. Schema Design 4. Migration Strategies 5. API Refactoring 6. Data Migration 7. Results
  • 7. Preparation: Data and Traffic Pattern • Variances in persisted data
  • 8. Preparation: Data and Traffic Pattern • Variances in persisted data • Database interactions
  • 9. Preparation: Database Interactions (Sample) CreateDocumentVersion- -API Documents Table DocumentAttributes Table UserAttributes Table
  • 10. Preparation: Data and Traffic Pattern • Variances in persisted data • Database interactions • Traffic patterns
  • 11. Preparation: Analyze Traffic Pattern API Distribution CreateDocument A% GetDocumentVersion B% CreateToken C% ResolveToken D% GetMetadata E% SetMetadata F% Search G% --- other API’s -- Sessions Distribution Internal document upload P% External document upload Q% Automated document upload R% Update document metadata S% Search metadata T% Search and internal download U% Search and external download V% Automated document download W% Delete document Y% --- other sessions -- Z%
  • 12. Preparation • Variances in persisted data • Database interactions • Traffic patterns • Froze schema - for duration of migration
  • 13. Preparation • Variances in persisted data • Database interactions • Traffic patterns • Froze schema – for duration of migration • Communication – clients informed of changes and effects
  • 14. Agenda 1. Application Overview 2. Preparation for Migration 3. Schema Design 4. Migration Strategies 5. API Refactoring 6. Data Migration 7. Results
  • 15. Schema: Design Tenets • Optimize for scalability and latency. Not storage efficiency • Eventually consistent reads only. No read after write • Idempotent: Operations designed to work on unreliable systems • Immutability: Insert only pattern. Maintain every version for audit • Single table write per operation (aspirational) • First write has data to repair subsequent writes
  • 16. Schema: Oracle Schema (Partial) Document PK Document_UUID FK1 DocumentClass_UUID Desc DocumentClass PK DocumentClass_UUID Desc DocumentVersion PK DocumentVersion_UUID FK1 Document_UUID Locator_UUID Metadata_A Metadata_B Metadata_C Metadata_D Metadata_E Locator PK Locator_UUID FK1 DocumentVersion_UUID Type DocumentVersion_Metadata PK,FK1 DocumentVersion_UUID PK Name Value LocatorMetadata PK,FK1 Locator_UUID PK Name Value
  • 17. Schema: DynamoDB Schema (Partial) Documents DocumentVersionId (UUID partition key) DocumentId – (UUID GSI) DocumentLIfetime data DocumentClassId – (UUID) DocumentClass table data IndexedMetadata_A IndexedMetadata_B IndexedMetadata_C IndexedMetadata_D IndexedMetadata_E UnindexedMetadata LocatorID – (UUID) Locator table data Other fields Document PK Document_UUID FK1 DocumentClass_UUID Desc DocumentClass PK DocumentClass_UUID Desc DocumentVersion PK DocumentVersion_UUID FK1 Document_UUID Locator_UUID Metadata_A Metadata_B Metadata_C Metadata_D Metadata_E Locator PK Locator_UUID FK1 DocumentVersion_UUID Type DocumentVersion_Metadata PK,FK1 DocumentVersion_UUID PK Name Value LocatorMetadata PK,FK1 Locator_UUID PK Name Value
  • 18. Schema: DynamoDB Schema (Partial) Documents DocumentVersionId (UUID partition key) DocumentId – (UUID GSI) DocumentLIfetime data DocumentClassId – (UUID) DocumentClass table data IndexedMetadata_A IndexedMetadata_B IndexedMetadata_C IndexedMetadata_D IndexedMetadata_E UnindexedMetadata LocatorID – (UUID) Locator table data Other fields Document PK Document_UUID FK1 DocumentClass_UUID Desc DocumentClass PK DocumentClass_UUID Desc DocumentVersion PK DocumentVersion_UUID FK1 Document_UUID Locator_UUID Metadata_A Metadata_B Metadata_C Metadata_D Metadata_E Locator PK Locator_UUID FK1 DocumentVersion_UUID Type DocumentVersion_Metadata PK,FK1 DocumentVersion_UUID PK Name Value LocatorMetadata PK,FK1 Locator_UUID PK Name Value
  • 19. Schema: DynamoDB Schema (Partial) Documents DocumentVersionId (UUID partition key) DocumentId – (UUID GSI) DocumentLIfetime data DocumentClassId – (UUID) DocumentClass table data IndexedMetadata_A IndexedMetadata_B IndexedMetadata_C IndexedMetadata_D IndexedMetadata_E UnindexedMetadata LocatorID – (UUID) Locator table data Other fields Document PK Document_UUID FK1 DocumentClass_UUID Desc DocumentClass PK DocumentClass_UUID Desc DocumentVersion PK DocumentVersion_UUID FK1 Document_UUID Locator_UUID Metadata_A Metadata_B Metadata_C Metadata_D Metadata_E Locator PK Locator_UUID FK1 DocumentVersion_UUID Type DocumentVersion_Metadata PK,FK1 DocumentVersion_UUID PK Name Value LocatorMetadata PK,FK1 Locator_UUID PK Name Value
  • 20. Schema: DynamoDB Schema (Partial) Documents DocumentVersionId (UUID partition key) DocumentId – (UUID GSI) DocumentLIfetime data DocumentClassId – (UUID) DocumentClass table data IndexedMetadata_A IndexedMetadata_B IndexedMetadata_C IndexedMetadata_D IndexedMetadata_E UnindexedMetadata LocatorID – (UUID) Locator table data Other fields Document PK Document_UUID FK1 DocumentClass_UUID Desc DocumentClass PK DocumentClass_UUID Desc DocumentVersion PK DocumentVersion_UUID FK1 Document_UUID Locator_UUID Metadata_A Metadata_B Metadata_C Metadata_D Metadata_E Locator PK Locator_UUID FK1 DocumentVersion_UUID Type DocumentVersion_Metadata PK,FK1 DocumentVersion_UUID PK Name Value LocatorMetadata PK,FK1 Locator_UUID PK Name Value
  • 21. Schema: DynamoDB Schema (Partial) Documents DocumentVersionId (UUID partition key) DocumentId – (UUID GSI) DocumentLIfetime data DocumentClassId – (UUID) DocumentClass table data IndexedMetadata_A IndexedMetadata_B IndexedMetadata_C IndexedMetadata_D IndexedMetadata_E UnindexedMetadata LocatorID – (UUID) Locator table data Other fields Document PK Document_UUID FK1 DocumentClass_UUID Desc DocumentClass PK DocumentClass_UUID Desc DocumentVersion PK DocumentVersion_UUID FK1 Document_UUID Locator_UUID Metadata_A Metadata_B Metadata_C Metadata_D Metadata_E Locator PK Locator_UUID FK1 DocumentVersion_UUID Type DocumentVersion_Metadata PK,FK1 DocumentVersion_UUID PK Name Value LocatorMetadata PK,FK1 Locator_UUID PK Name Value
  • 22. Schema: DynamoDB Schema (Partial) Documents DocumentVersionId (UUID partition key) DocumentId – (UUID GSI) DocumentLIfetime data DocumentClassId – (UUID) DocumentClass table data IndexedMetadata_A IndexedMetadata_B IndexedMetadata_C IndexedMetadata_D IndexedMetadata_E UnindexedMetadata LocatorID – (UUID) Locator table data Other fields UserAttributes DocumentVersionId (UUID partition key) HeadVersion (sort key) – HEAD CurrentVersion – UID PreviousVersion – UUID IndexedMetadata_A (GSI) IndexedMetadata_B (GSI) IndexedMetadata_C (GSI) IndexedMetadata_D (GSI) IndexedMetadata_E (GSI) UnindexedMetadata Other fields DocumentAttributes DocumentVersionId (UUID partition key) HeadVersion (sort key) – HEAD CurrentVersion – UUID PreviousVersion – UUID DocumentLifetime data Other fields
  • 23. Schema: DynamoDB Schema (Partial) Documents DocumentVersionId (UUID partition key) DocumentId – (UUID GSI) DocumentLIfetime data DocumentClassId – (UUID) DocumentClass table data IndexedMetadata_A IndexedMetadata_B IndexedMetadata_C IndexedMetadata_D IndexedMetadata_E UnindexedMetadata LocatorID – (UUID) Locator table data Other fields UserAttributes DocumentVersionId (UUID partition key) HeadVersion (sort key) – HEAD CurrentVersion – UID PreviousVersion – UUID IndexedMetadata_A (GSI) IndexedMetadata_B (GSI) IndexedMetadata_C (GSI) IndexedMetadata_D (GSI) IndexedMetadata_E (GSI) UnindexedMetadata Other fields DocumentAttributes DocumentVersionId (UUID partition key) HeadVersion (sort key) – HEAD CurrentVersion – UUID PreviousVersion – UUID DocumentLifetime data Other fields
  • 24. Schema: DynamoDB Schema (Partial) Documents DocumentVersionId (UUID partition key) DocumentId – (UUID GSI) DocumentLIfetime data DocumentClassId – (UUID) DocumentClass table data IndexedMetadata_A IndexedMetadata_B IndexedMetadata_C IndexedMetadata_D IndexedMetadata_E UnindexedMetadata LocatorID – (UUID) Locator table data Other fields UserAttributes DocumentVersionId (UUID partition key) HeadVersion (sort key) – HEAD CurrentVersion – UID PreviousVersion – UUID IndexedMetadata_A (GSI) IndexedMetadata_B (GSI) IndexedMetadata_C (GSI) IndexedMetadata_D (GSI) IndexedMetadata_E (GSI) UnindexedMetadata Other fields DocumentAttributes DocumentVersionId (UUID partition key) HeadVersion (sort key) – HEAD CurrentVersion – UUID PreviousVersion – UUID DocumentLifetime data Other fields
  • 25. Schema: Multi-Table Write CreateDocumentVersion API Documents Table UserAttributes Table DocumentAttributes Table Parallel Calls
  • 26. Schema: Multi-Table Write (Failure) CreateDocumentVersion API Documents Table UserAttributes Table DocumentAttributes Table Parallel Calls
  • 27. Schema: Read Repair Pattern GetDocumentVersionAttributes API UserAttributes Table Documents Table On Failure ReadRepair
  • 28. Schema: DynamoDB Schema (Partial) Documents DocumentVersionId (UUID partition key) DocumentId – (UUID GSI) Documents table data DocumentClassId – (UUID) DocumentClass table data IndexedMetadata_A IndexedMetadata_B IndexedMetadata_C IndexedMetadata_D IndexedMetadata_E UnindexedMetadata Locator table data Other fields UserAttributes DocumentVersionId (UUID partition key) HeadVersion (sort key) – HEAD CurrentVersion – UUID PreviousVersion – UUID IndexedMetadata_A (GSI) IndexedMetadata_B (GSI) IndexedMetadata_C (GSI) IndexedMetadata_D (GSI) IndexedMetadata_E (GSI) UnindexedMetadata Other fields
  • 29. Schema: Update-only Pattern Document Version ID (Primary Key) Head Version ( Sort Key ) Row Version Previous version Metadata A ( GSI ) Versioned Metadata A UUID1 HEAD V2 V1 bbbb UUID1 V2 V1 bbbb UUID1 V1 NULL aaaa Document Version ID (Primary Key) Head Version ( Sort Key ) Row Version Previous version Metadata A ( GSI ) Versioned Metadata A UUID1 HEAD V2 V1 bbbb UUID1 V3 V2 cccc UUID1 V2 V1 bbbb UUID1 V1 NULL aaaa Document Version ID (Primary Key) Head Version ( Sort Key ) Row Version Previous version Metadata A ( GSI ) Versioned Metadata A UUID1 HEAD V3 V2 cccc UUID1 V3 V2 cccc UUID1 V2 V1 bbbb UUID1 V1 NULL aaaa
  • 30. Agenda 1. Application Overview 2. Preparation for Migration 3. Schema Design 4. Migration Strategies 5. API Refactoring 6. Data Migration 7. Results
  • 31. Migration Phases Phase 1: Data only to Oracle Phase 2: Oracle is primary. DynamoDB is secondary Phase 3: DynamoDB is primary. Oracle is secondary Phase 4: Data only to DynamoDB
  • 32. Migration Considerations Application Consistency • Interfaces and expected response remain unchanged Correctness • Entity in both data stores match Completeness • All entities have been migrated Restartability • Fall back to last-known good state and restart process
  • 33. Design-1: Workflow Model ( Did Not Implement )
  • 35. Problems with Workflow Model Application consistency: • Reads might reflect old data if the workflow is blocked. Application Correctness: Workflow system not strictly FIFO. • E.g., Upd-1, Upd-2, Upd-3. • Order might not be preserved Validation checks for Upd-1 fails as Upd-2 or Upd-3 in progress Complexity Low Completeness True App Consistency Does not Meet Potential data loss Due to correctness Correctness Does not Meet Restart ability True Latency Low
  • 36. Design-2: Single Master Model ( Not Implemented )
  • 37. Single Master Model Improvements over workflow model • Synchronous changes: All changes done synchronously on client request • FIFO Order: Order preserved using Conditional puts. On error client has to redo operation
  • 38. Single Master Model Service Oracle DynamoDB Entity - x Update for Entity X
  • 39. Problems with Single Master Model Correctness: No baseline to check if data added to DynamoDB is correct and can result in a Potential Data loss Complexity High due to Search Completeness Does not Meet App Consistency Due to potential data loss Potential data loss Does not Meet Correctness Does not Meet Restart ability Due to Potential Data loss Latency Low
  • 40. Design-3: Two Tracking flags Model ( Not Implemented )
  • 41. Two Tracking Flags Model Improvements from Single Master model • Baseline for data comparison. Write to both stores • Flags to track which data needs to be migrated. How it works • Maintain extra flags in both Oracle and DynamoDB for tracking • IsMaster – At any time either Oracle or DynamoDB will be Master • IsBackfilled – True if row is backfilled to other store • Request • Clients write to master; IsMaster flag set • Secondary data store updated • IsBackfilled flag set after comparing data in both stores • Client gets success
  • 42. Two Tracking Flags Model: Problems Global Secondary Index (GSI) on low cardinality field: IsBackfilled Hotspots and Limitation Application-specific problem due to 5 GSI /table limit in DynamoDB. There was no deterministic way we could do a perfect migration using this technique. Complexity High Completeness App Consistency Potential data loss Does not Meet Correctness Restart ability Due to Potential Data loss Latency 4 X
  • 44. Implemented Model Improvements to Two Tracking flag model • No tracking flag in DynamoDB. No GSI, no hotspots How it works • Phase determines who is master. • Managed in code. • Phase-2 Master is Oracle. DyamoDB is secondary. • Phase-3 Master is DynamoDB. Oracle is secondary.
  • 45. Implemented Model How it works. Minimize chances of rollback. • Read and Write operations work with both data stores. • Verify data in both data stores before marking operation successful. Migration in 1 direction only: Oracle  DynamoDB • Maintain extra flag only in Oracle.IsDDBBackfilled Limitations • Small chance of inaccessible data. • Small chance that search might be inconsistent.
  • 46. Implemented Model – Write Operation Phase 1 Phase 2 Phase 3 Phase 4 Oracle.Write Oracle.Write + Oracle.IsDDBBackfilled = No DynamoDB.Write + Oracle.IsDDBBackfilled = Yes Compare Oracle and DynamoDB Entities B A C K F I L L DynamoDB.Write Oracle.Write + Oracle.IsDDBBackfilled = Yes Compare DynamoDB and Oracle Entities DynamoDB. Write
  • 47. Implemented Model – Read Operation Phase 1 Phase 2 Phase 3 Phase 4 Oracle.Read Oracle.Read; if(Oracle.IsDDBBackfilled == No) { Dynamodb.Write; Oracle.IsDDBBackfilled== Yes DynamoDB.Read; Compare Oracle with DynamoDB Entities } B A C K F I L L DynamoDB.Read if(Entry Not Found) { Oracle.Read Dynamodb.Write; Oracle.IsDDBBackfilled = Yes DynamoDB.Read Compare Oracle with DynamoDB Entities } DynamoDB. Read
  • 48. Implemented Model Complexity High Completeness True App Consistency Yes Potential data loss No Correctness Yes Restart ability Yes Latency Reads 4 x in Phase 2 1 x for Phase 3 Writes 3 x in Phase 2 2 x in Phase 3
  • 49. Agenda 1. Application Overview 2. Preparation for Migration 3. Schema Design 4. Migration Strategies 5. API Refactoring 6. Data Migration 7. Results
  • 50. API Refactoring: Adapter Pattern for Migration
  • 51. Agenda 1. Application Overview 2. Preparation for Migration 3. Schema Design 4. Migration Strategies 5. API Refactoring 6. Data Migration 7. Results
  • 52. Pre-migration Checklist • You have successfully run data migration on sample data
  • 53. Smart Data Migration Tool • Migration traffic throttled down if latencies increase due to increased production traffic • Migration traffic stopped if latency thresholds crossed • Migration traffic scaled up as production traffic decreases
  • 54. Pre-migration Checklist • You have successfully run data migration on sample data • You have tested out rollback scenarios in case you find errors in your migration
  • 55. Migration and Rollback Testing 2 rounds of migration done in pre-prod environment • Happy Case: P1  P2  Backfill P3 P4 • Rollback Case: P1  P2  P1 • Rollback Case: P1  P2  Backfill P3  P2 Checked that there was no loss in data • Controlled test data in Oracle and clean tables in DynamoDB • 5 million rows migrated in backfill
  • 56. Pre-migration Checklist • You have successfully run data migration on sample data • You have tested out rollback scenarios in case you find errors in your migration • You have run stress tests in each phase
  • 57. Stress Testing Tool • Generates data for each session and then uses these values for the entire session • Simulates the same amount of traffic for each API as expected API Distribution CreateDocument A% GetDocumentVersion B% CreateToken C% ResolveToken D% GetMetadata E% SetMetadata F% Search G% --- other API’s --
  • 58. Pre-migration Checklist • You have successfully run data migration on sample data • You have tested out rollback scenarios in case you find errors in your migration • You have run stress tests in each phase • Theoretical and practical throughput numbers for tables and GSI are matching for each phase
  • 59. Sample: Phase 2 IOPS Calculations Writes IOPS Documents Table UserAttributes Table API TPS Size Multiplier Ops Multiplier Table GSI Size Multiplier Ops Multiplier Table GSI 1 GSI 2 GSI 3 CreateDocument 400 8 1 3200 400 1 2 800 400 400 400 CreateDocumentVersion 100 4 1 400 100 1 2 200 200 200 200 Other API - - - Total 3600 500 1000 600 600 600 Read IOPS Documents Table UserAttributes Table API TPS Size Multiplier Ops Multiplier Table GSI Size Multiplier Ops Multiplier Table GSI 1 GSI 2 GSI 3 GetDocument 100 1 1 100 100 1 1 100 Search 100 1 1 100 100 100 100 Other API - - - Total 1000 100 200 100 100 100
  • 60. Sample: Phase 2 IOPS Calculations Writes IOPS Documents Table UserAttributes Table API TPS Size Multiplier Ops Multiplier Table GSI Size Multiplier Ops Multiplier Table GSI 1 GSI 2 GSI 3 CreateDocument 400 8 1 3200 400 1 2 800 400 400 400 CreateDocumentVersion 100 4 1 400 100 1 2 200 200 200 200 Other API - - - Total 3600 500 1000 600 600 600 Read IOPS Documents Table UserAttributes Table API TPS Size Multiplier Ops Multiplier Table GSI Size Multiplier Ops Multiplier Table GSI 1 GSI 2 GSI 3 GetDocument 100 1 1 100 100 1 1 100 Search 100 1 1 100 100 100 100 Other API - - - Total 1000 100 200 100 100 100
  • 61. Sample: Phase 2 IOPS Calculations Writes IOPS Documents Table UserAttributes Table API TPS Size Multiplier Ops Multiplier Table GSI Size Multiplier Ops Multiplier Table GSI 1 GSI 2 GSI 3 CreateDocument 400 8 1 3200 400 1 2 800 400 400 400 CreateDocumentVersion 100 4 1 400 100 1 2 200 200 200 200 Other API - - - Total 3600 500 1000 600 600 600 Read IOPS Documents Table UserAttributes Table API TPS Size Multiplier Ops Multiplier Table GSI Size Multiplier Ops Multiplier Table GSI 1 GSI 2 GSI 3 GetDocument 100 1 1 100 100 1 1 100 Search 100 1 1 100 100 100 100 Other API - - - Total 1000 100 200 100 100 100
  • 62. Sample: Phase 2 IOPS Calculations Writes IOPS Documents Table UserAttributes Table API TPS Size Multiplier Ops Multiplier Table GSI Size Multiplier Ops Multiplier Table GSI 1 GSI 2 GSI 3 CreateDocument 400 8 1 3200 400 1 2 800 400 400 400 CreateDocumentVersion 100 4 1 400 100 1 2 200 200 200 200 Other API - - - Total 3600 500 1000 600 600 600 Read IOPS Documents Table UserAttributes Table API TPS Size Multiplier Ops Multiplier Table GSI Size Multiplier Ops Multiplier Table GSI 1 GSI 2 GSI 3 GetDocument 100 1 1 100 100 1 1 100 Search 100 1 1 100 100 100 100 Other API - - - Total 1000 100 200 100 100 100
  • 63. Pre-migration Checklist • Successful data migration on sample data • Tested out rollback scenarios • Run stress tests in each phase • Theoretical and practical throughput numbers for tables and GSI are matching for each phase • Operation alarms and dashboards for each phase • Clients informed about of latencies to adjust their alarms
  • 64. Timeline • Migration takes time. • Duration 9 months. Schema frozen for 6 months. • Keep time buffer for data migration. • Took 2 months. 2x higher due to higher production traffic. • Code increased by 3x. Code verification took 3 weeks • Each API had 4 behaviors – 1 for each phase. • Application maintained for 2 weeks in Phase 3. • Precaution before moving to Phase 4.
  • 65. Agenda 1. Application Overview 2. Preparation for Migration 3. Schema Design 4. Migration Strategies 5. API Refactoring 6. Data Migration 7. Results
  • 66. Results Migration completed in Happy Path – no reset or rollbacks Data migrated without a single error or loss of data 500 M entities migrated without a single client issue
  • 67. Results (Reason to Migrate) Availability: Maintained 100% availability for over 1 year Scalability: Application managing 10x more documents today; ample room to keep growing Operations overhead: No dedicated DBA; application dev team managing DynamoDB
  • 68. Suggestions • Run migration from a different Oracle server • Prevent locking or overloading the primary • Avoid GSI on low cardinality attribute • Consider moving search to Amazon CloudSearch / Amazon Elasticsearch • Do not over scale throughput for migration. • DynamoDB does not reduce partitions when you descale your throughput
  • 69. Q & A