SlideShare a Scribd company logo
Migration Best Practices: From RDBMS to Cassandra without a Hitch
#Cassandra @doanduyhai
#Cassandra @doanduyhai
Who am I ?
2
DuyHai Doan
Achilles
Cassandra Technical Advocate @ Datastax
Former Java Developer @ Libon
#Cassandra @doanduyhai
Agenda
•  Libon context
•  Migration strategy
•  Business code migration
•  Data Modeling
•  Take Away
3
#Cassandra @doanduyhai
Libon Context
#Cassandra @doanduyhai
What is Libon ?
•  Messaging app
•  VOIP (out)
•  Custom voicemail & greetings
•  SMS/chat/file transfer
•  Contacts matching
5
#Cassandra @doanduyhai
Contact Matching
6
Libon User
#Cassandra @doanduyhai
Contact Matching
7
Libon User Friend
#Cassandra @doanduyhai
Contact Matching
8
Libon User Friend
Contact matching
#Cassandra @doanduyhai
Contact Matching
9
Libon User Friend
Accept link
#Cassandra @doanduyhai
Project Context
•  Application grew over the years
10
#Cassandra @doanduyhai
Project Context
•  Application grew over the years
•  Already using Cassandra to handle events
•  messaging / file sharing / SMS / notifications
•  Cassandra R/W latencies ≈ 0,4 ms
•  server response time under 10 ms
11
#Cassandra @doanduyhai
Project Context
•  About contacts …
12
#Cassandra @doanduyhai
Project Context
•  About contacts …
•  stored as relational model in RDBMS (Oracle)
13
#Cassandra @doanduyhai
Project Context
•  About contacts …
•  stored as relational model in RDBMS (Oracle)
•  1 user ≈ 300 contacts
14
#Cassandra @doanduyhai
Project Context
•  About contacts …
•  stored as relational model in RDBMS (Oracle)
•  1 user ≈ 300 contacts
•  with millions users ☞ billions of contacts to handle
15
#Cassandra @doanduyhai
Project Context
•  About contacts …
•  stored as relational model in RDBMS (Oracle)
•  1 user ≈ 300 contacts
•  with millions users ☞ billions of contacts to handle
•  query latency unpredictable
16
#Cassandra @doanduyhai17
#Cassandra @doanduyhai
Fixing the problem
•  Tune the RDBMS
18
#Cassandra @doanduyhai
Fixing the problem
•  Tune the RDBMS
•  indices
19
#Cassandra @doanduyhai
Fixing the problem
•  Tune the RDBMS
•  indices
•  partitioning
20
#Cassandra @doanduyhai
Fixing the problem
•  Tune the RDBMS
•  indices
•  partitioning
•  less joins, simplified relational model
21
#Cassandra @doanduyhai
Fixing the problem
•  Tune the RDBMS
•  indices
•  partitioning
•  less joins, simplified relational model
•  hardware capacity increased
22
#Cassandra @doanduyhai
Fixing the problem
•  Tune the RDBMS
•  indices
•  partitioning
•  less joins, simplified relational model
•  hardware capacity increased
23
That worked
#Cassandra @doanduyhai
Fixing the problem
•  Tune the RDBMS
•  indices
•  partitioning
•  less joins, simplified relational model
•  hardware capacity increased
24
That worked
but …
#Cassandra @doanduyhai
Back-end application
RDBMS Cassandra
25
#Cassandra @doanduyhai
Back-end application
RDBMS Cassandra
26
We need to
choose
#Cassandra @doanduyhai
Next Challenges
•  High Availability (DB failure, site failure …)
27
#Cassandra @doanduyhai
Next Challenges
•  High Availability (DB failure, site failure …)
•  Predictable performance at scale
28
#Cassandra @doanduyhai
Next Challenges
•  High Availability (DB failure, site failure …)
•  Predictable performance at scale
•  Going to multi data-centers
29
#Cassandra @doanduyhai
Next Challenges
•  High Availability (DB failure, site failure …)
•  Predictable performance at scale
•  Going to multi data-centers
☞ Cassandra, what else ?
30
#Cassandra @doanduyhai
Data Migration Strategy
#Cassandra @doanduyhai
Objectives
•  No downtime
32
#Cassandra @doanduyhai
Objectives
•  No downtime
•  No concurrency corner-cases 
33
#Cassandra @doanduyhai
Objectives
•  No downtime
•  No concurrency corner-cases 
•  Safe rollback possible
34
#Cassandra @doanduyhai
Objectives
•  No downtime
•  No concurrency corner-cases 
•  Safe rollback possible
•  Replay-ability & resume-ability
35
#Cassandra @doanduyhai
Strategy
•  4 phases
36
#Cassandra @doanduyhai
Strategy
•  4 phases
•  Write contacts to both data stores
37
#Cassandra @doanduyhai
Strategy
•  4 phases
•  Write contacts to both data stores
•  Old contacts migration
38
#Cassandra @doanduyhai
Strategy
•  4 phases
•  Write contacts to both data stores
•  Old contacts migration
•  Switch to Cassandra (but keep RDBMS in case of…)
39
#Cassandra @doanduyhai
Strategy
•  4 phases
•  Write contacts to both data stores
•  Old contacts migration
•  Switch to Cassandra (but keep RDBMS in case of…)
•  Remove the RDBMS code
40
#Cassandra @doanduyhai
Migration Phase 1
41
Back end server
·
·
·
SQLSQLSQL
C*
C*
C*
C*
C*
Write
contactUUID
contactId … contactUUID
129363
 123e4567-
e89b-12d3…
834849
contacId(long) + contactUUID
#Cassandra @doanduyhai
Migration Phase 1
42
Back end server
·
·
·
SQLSQLSQL
C*
C*
C*
C*
C*
Read
#Cassandra @doanduyhai
Migration Phase 2
•  On live production, migrate old contacts
43
SQLSQLSQL
C*
C*
C*
C*
C*
For each batch of users
SELECT * FROM contacts
WHERE user_id = …
AND contact_uuid IS NULL
Old contacts created 
before phase 1
#Cassandra @doanduyhai
Migration Phase 2
•  On live production, migrate old contacts
44
SQLSQLSQL
C*
C*
C*
C*
C*
For each batch of users
SELECT * FROM contacts
WHERE user_id = …
AND contact_uuid IS NULL
Logged batches of 
INSERT INTO contacts(..)
VALUES(…)
USING TIMESTAMP
now() - 1 week
Old contacts created 
before phase 1
#Cassandra @doanduyhai
Migration Phase 2
45
USING TIMESTAMP now() - 1 week 😳
#Cassandra @doanduyhai
Migration Phase 2
•  During data migration …
46
#Cassandra @doanduyhai
Migration Phase 2
•  During data migration …
•  … concurrent writes from the migration batch …
47
#Cassandra @doanduyhai
Migration Phase 2
•  During data migration …
•  … concurrent writes from the migration batch …
•  … and updates from production for the same contact
48
#Cassandra @doanduyhai
Migration Phase 2
49
contact_uuid
name (now -1 week)
 …
 name (now)
 …
Johny …
 Johnny …
Insert from batch
(to the past)
Update from production
#Cassandra @doanduyhai
Migration Phase 2
50
contact_uuid
name (now -1 week)
 …
 name (now)
 …
Johny …
 Johnny …
Future reads pick the most up-to-date value
#Cassandra @doanduyhai
Last Write Win in action
51
Case 1 Case 2
Batchpast(Johny)
 t1
Prodnow(Johnny)
 t2
t3
 Read(Johnny)
Batchpast(Johny)
t1
Prodnow(Johnny)
t2
t3
 Read(Johnny)
#Cassandra @doanduyhai
Migration Phase 2
52
"Write to the Past…
to save the Future"
Libon – 2014/10/08
#Cassandra @doanduyhai
Migration Phase 3
53
Back end server
·
·
·
SQLSQLSQL
C*
C*
C*
C*
C*
Write
#Cassandra @doanduyhai
Migration Phase 4
54
Back end server
·
·
·
SQLSQLSQL
C*
C*
C*
C*
C*
Write
❌
#Cassandra @doanduyhai
Business Code Refactoring
#Cassandra @doanduyhai
Code Inventory
•  Written for RDBMS
56
#Cassandra @doanduyhai
Code Inventory
•  Written for RDBMS
•  Lots of joins (no surprise) 
57
#Cassandra @doanduyhai
Code Inventory
•  Written for RDBMS
•  Lots of joins (no surprise) 
•  Designed around transactions
58
#Cassandra @doanduyhai
Code Inventory
•  Written for RDBMS
•  Lots of joins (no surprise) 
•  Designed around transactions
•  Spring @Transactional everywhere
59
#Cassandra @doanduyhai
Code Inventory cont.
•  Entities go through Services & Repositories
60
Repositories

Services
ContactEntity
#Cassandra @doanduyhai
Code Inventory cont.
•  Hibernate is auto-magic
61
#Cassandra @doanduyhai
Code Inventory cont.
•  Hibernate is auto-magic
•  lazy loading
•  1st level cache
•  N+1 select
62
Repositories

Services
ContactEntity
#Cassandra @doanduyhai
Which options ?
•  Throw existing code …
•  … and re-design from scratch for Cassandra

63
#Cassandra @doanduyhai
Which options ?
•  Throw existing code …
•  … and re-design from scratch for Cassandra

64
No way !
#Cassandra @doanduyhai
Code Quality
•  Existing business code has…
•  … ≈ 3500 unit tests

65
#Cassandra @doanduyhai
Code Quality
•  Existing business code has…
•  … ≈ 3500 unit tests
•  and ≈600+ integration tests
66
#Cassandra @doanduyhai
Code Quality
67
"The code coverage
is one of your most
valuable technical asset"
Libon – since beginning
#Cassandra @doanduyhai
Repositories
Services
Refactoring Strategy
68
ContactMatchingService
ContactService
ContactSync
ContactEntity
n
1
n
 n
#Cassandra @doanduyhai
Repositories
Services
Refactoring Strategy
69
ContactMatchingService
ContactService
ContactNoSQLEntity
ContactSync
ContactEntity
n
1
n
 n
Proxy
#Cassandra @doanduyhai
Repositories
Services
Refactoring Strategy
70
ContactMatchingService
ContactService
ContactNoSQLEntity
ContactSync
ContactEntity
n
1
n
 n
Denorm2
 …
 DenormN
Denorm1
Proxy
#Cassandra @doanduyhai
Refactoring Strategy
•  Use CQRS
•  ContactReadRepository
•  ContactWriteRepository
•  ContactUpdateRepository
•  ContactDeleteRepository
71
#Cassandra @doanduyhai
Refactoring Strategy
•  ContactReadRepository
•  direct sequential read
•  no joins
•  1 read ≈ 1 SELECT
72
#Cassandra @doanduyhai
Refactoring Strategy
•  ContactWriteRepository
•  write to all denormalized tables
•  using CQL logged batches
•  use TTLs
73
#Cassandra @doanduyhai
Refactoring Strategy
•  ContactUpdateRepository
•  read-before-write most of the time 😟
•  rare updates ☞ acceptable perf penalty
74
#Cassandra @doanduyhai
Refactoring Strategy
•  ContactDeleteRepository
•  delete by partition key
75
#Cassandra @doanduyhai
Outcome
•  5 months of 2 men work
76
#Cassandra @doanduyhai
Outcome
•  5 months of 2 men work
•  Many iterations to fix bugs (thanks to IT)
77
#Cassandra @doanduyhai
Outcome
•  5 months of 2 men work
•  Many iterations to fix bugs (thanks to IT)
•  Lots of performance benchmarks using Gatling
78
#Cassandra @doanduyhai
Gatling Output
79
#Cassandra @doanduyhai
Outcome
•  5 months of 2 men work
•  Many iterations to fix bugs (thanks to IT)
•  Lots of performance benchmarks using Gatling

☞ data model & code validation
80
#Cassandra @doanduyhai
Outcome
•  5 months of 2 men work
•  Many iterations to fix bugs (thanks to IT)
•  Lots of performance benchmarks using Gatling

☞ data model & code validation
•  … we are almost there for production
81
#Cassandra @doanduyhai
Data Model
#Cassandra @doanduyhai
Denormalization, the good
•  Support fast reads
•  1 read ≈ 1 SELECT
•  Worthy because mostly read, few updates
83
#Cassandra @doanduyhai
Denormalization, the bad
•  Updating mutable data can be nightmare
•  Data model bound by existing client-facing API
•  Update paths very error-prone without tests
84
#Cassandra @doanduyhai
Data model in detail
85
Contacts_by_id
Contacts_by_identifiers
Contacts_in_profiles
Contacts_by_modification_date
Contacts_by_firstname_lastname
Contacts_linked_user
#Cassandra @doanduyhai
Data model in detail
86
Contacts_by_id
Contacts_by_identifiers
Contacts_in_profiles
Contacts_by_modification_date
Contacts_by_firstname_lastname
Contacts_linked_user
user_id always component
of partition key
#Cassandra @doanduyhai
Scalable design
87
n1
n2
n3
n4
n5
n6
n7
n8
A
B
C
D
E
F
G
H
user_id1
user_id2
user_id3
user_id4
user_id5
#Cassandra @doanduyhai
Scalable design
88
n1
n2
n3
n4
n5
n6
n7
n8
A
B
C
D
E
F
G
H
user_id1user_id2
user_id3
user_id4
user_id5
#Cassandra @doanduyhai
Bloom filters in action
•  For some tables, partition key = (user_id, contact_id)
☞ fast look-up, leverages Bloom filters
☞ touches 1 SSTable most of the time
89
#Cassandra @doanduyhai
Data model in detail
90
Contacts_by_id
Contacts_by_identifiers
Contacts_in_profiles
Contacts_by_modification_date
Contacts_by_firstname_lastname
Contacts_linked_user
Wide partition
#Cassandra @doanduyhai
A "queue" story
•  contacts_by_modification_date
•  queue-like pattern 😭
91
#Cassandra @doanduyhai
A "queue" story
•  contacts_by_modification_date
•  queue-like pattern 😭
☞ buckets to the rescue
92
user_id:2014-12
date35
 date12 …
 …
 date47
… …
 …
 …
user_id:2014-11
date11
 date12 …
 …
 date34
… …
 …
 …
#Cassandra @doanduyhai
Data model summary
•  7 tables for denormalization
93
#Cassandra @doanduyhai
Data model summary
•  7 tables for denormalization
•  Normalize some tables because rare access
94
#Cassandra @doanduyhai
Data model summary
•  7 tables for denormalization
•  Normalize some tables because rare access
•  Read-before write in most update scenarios 😟 
95
#Cassandra @doanduyhai
Notes on contact_id
•  In SQL, auto-generated long using sequence
•  In Cassandra, auto-generated timeuuid 
96
#Cassandra @doanduyhai
Notes on contact_id
•  How to store both types ?
97
#Cassandra @doanduyhai
Notes on contact_id
•  How to store both types ?
•  As text ? ☞ easy solution …
98
#Cassandra @doanduyhai
Notes on contact_id
•  How to store both types ?
•  As text ? ☞ easy solution …
•  … but waste of space !
•  because encoded as UTF-8 or ASCII in Cassandra
99
#Cassandra @doanduyhai
Notes on contact_id
•  Long ☞ 8 bytes
•  Long as text(UTF-8: 1 byte) ☞ "digits count" bytes
100
#Cassandra @doanduyhai
Notes on contact_id
•  UUID ☞ 16 bytes
E81D4C70-A638-11E4-83CB-DEB70BF9330F
•  32 hex chars + 4 hyphens = 36 chars
•  UUID as text(UTF-8: 1 byte) ☞ 36 bytes
•  Bytes overhead = 36 – 16 = 20 bytes
101
#Cassandra @doanduyhai
Notes on contact_id
•  20 bytes wasted per contact uuid
102
#Cassandra @doanduyhai
Notes on contact_id
•  20 bytes wasted per contact uuid
•  × 7 denormalizations = 140 bytes per contact uuid
103
#Cassandra @doanduyhai
Notes on contact_id
•  20 bytes wasted per contact uuid
•  × 7 denormalizations = 140 bytes per contact uuid
•  × 109 contacts = 140 GB wasted
104
😠
not even counting replication factor …
#Cassandra @doanduyhai
Notes on contact_id
•  ☞ just save contact id as byte[ ]
105
#Cassandra @doanduyhai
Notes on contact_id
•  ☞ just save contact id as byte[ ]
•  Achilles @TypeTransformer for automatic conversion
(see later)
106
#Cassandra @doanduyhai
Notes on contact_id
•  ☞ just save contact id as byte[ ]
•  Achilles @TypeTransformer for automatic conversion
(see later)
•  Use blobAsBigInt( ) or blobAsUUID( ) to view data
107
#Cassandra @doanduyhai
Achilles
•  Advanced "object mapper"
•  Fluent API
•  Tons of features
•  TDD friendly
108
#Cassandra @doanduyhai
Achilles
•  Dirty checking, what is it ?
109
#Cassandra @doanduyhai
Achilles
•  Dirty checking, what is it ?
•  1 contact ≈ 8 mutable fields
110
#Cassandra @doanduyhai
Achilles
•  Dirty checking, what is it ?
•  1 contact ≈ 8 mutable fields
•  × 7 denormalizations = 56 update combinations …
111
#Cassandra @doanduyhai
Achilles
•  Dirty checking, what is it ?
•  1 contact ≈ 8 mutable fields
•  × 7 denormalizations = 56 update combinations …
•  and not even counting multiple fields updates … 
112
#Cassandra @doanduyhai
Achilles
•  Are you going to manually generate 56+ prepared
statements for all possible updates ?
113
#Cassandra @doanduyhai
Achilles
•  Are you going to manually generate 56+ prepared
statements for all possible updates ?

•  Or just use dynamic plain string statements and get
some perf penalty ?
114
#Cassandra @doanduyhai
Achilles
•  Dirty check in action
115

//No read-before-write

ContactEntity proxy = manager.forUpdate(ContactEntity.class, contactId);



proxy.setFirstName(…);

proxy.setLastName(…); //type-safe updates

proxy.setAddress(…);


manager.update(proxy);
#Cassandra @doanduyhai
Achilles
116
Empty
Entity
DirtyMap
Proxy Setters interception
PrimaryKey
#Cassandra @doanduyhai
Achilles
•  Dynamic statements generation
117

UPDATE contacts SET firstname=?, lastname=?,address=?

WHERE contact_id=?
prepared statements are cached, of course
#Cassandra @doanduyhai
Achilles
•  Insert strategy, why is it so important ?
118
#Cassandra @doanduyhai
Achilles
•  Simple INSERT prepared statement
119

INSERT INTO 

 
contacts(contact_id,name,age,address,gender,avatar,…) 

VALUES(?, ?, ?, ? … ?);
#Cassandra @doanduyhai
Achilles
•  Runtime values binding
•  some columns are optional
120

preparedStatement.bind(49374,’John DOE’,33, null, null, …, null);
#Cassandra @doanduyhai
Achilles
121
Wait … are you saying inserting null in CQL???
😳
#Cassandra @doanduyhai
Achilles
122
Inserting null creating tombstones
#Cassandra @doanduyhai
Achilles
123
Inserting null creating tombstones
× 7 denormalizations
#Cassandra @doanduyhai
Achilles
124
Inserting null creating tombstones
× 7 denormalizations
× billions of contacts created
😱
not even counting replication factor …
#Cassandra @doanduyhai
Achilles
•  Simple annotation
125

@Entity(table = "contacts_by_id »)

@Strategy(insert = InsertStrategy.NOT_NULL_FIELDS)

public class ContactById {


}
#Cassandra @doanduyhai
Achilles
•  Runtime dynamic INSERT statement
126

INSERT INTO 

 
contacts(contact_id, name, age, address,) 

VALUES(:contact_id, :name, :age, :address);
prepared statements are cached, of course
#Cassandra @doanduyhai
Achilles
•  Remember the contactId ⇄ byte[ ] conversion ?
127
@PartitionKey
@Column(name = "contact_id")
@TypeTransformer(valueCodecClass = ContactIdToBytes.class)
private ContactId contactId;
BYOC ☞ Bring Your Own Codec
#Cassandra @doanduyhai
Achilles
128
public interface Codec<FROM, TO> {

Class<FROM> sourceType();

Class<TO> targetType();

TO encode(FROM fromJava)

FROM decode(TO fromCassandra);
}
#Cassandra @doanduyhai
Achilles
•  Dynamic logging in action
129

2014-12-01 14:25:20,554 Bound statement : [INSERT INTO
contacts.contacts_by_modification_date(user_id,month_bucket,modification_date,...) VALUES
(:user_id,:month_bucket,:modification_date,...) USING TTL :ttl;] with CONSISTENCY LEVEL [LOCAL_QUORUM]

2014-12-01 14:25:20,554 bound values : [222130151, 2014-12, e13d0d50-7965-11e4-af38-90b11c2549e0, ...]



2014-12-01 14:25:20,701 Bound statement : [SELECT birthday,middlename,avatar_size,... FROM
contacts.contacts_by_modification_date WHERE user_id=:user_id AND month_bucket=:month_bucket AND
(modification_date)>=(:modification_date) ORDER BY modification_date ASC;] with CONSISTENCY LEVEL

[LOCAL_QUORUM]

2014-12-01 14:25:20,701 bound values : [222130151, 2014-10, be6bc010-6109-11e4-b385-000038377ead]
#Cassandra @doanduyhai
Achilles
•  Dynamic logging
•  runtime activation
•  no need to recompile/re-deploy
•  save us hours of debugging
•  TRACE log level ☞ query tracing
130
#Cassandra @doanduyhai
Take Away
#Cassandra @doanduyhai
Conditions for success
•  Data modeling is crucial
132
#Cassandra @doanduyhai
Conditions for success
•  Data modeling is crucial
•  Double-run strategy & timestamp trick FTW
133
#Cassandra @doanduyhai
Conditions for success
•  Data modeling is crucial
•  Double-run strategy & timestamp trick FTW
•  Data type conversion can be tricky
134
#Cassandra @doanduyhai
Conditions for success
•  Data modeling is crucial
•  Double-run strategy & timestamp trick FTW
•  Data type conversion can be tricky
•  Benchmark !
135
#Cassandra @doanduyhai
Conditions for success
•  Data modeling is crucial
•  Double-run strategy & timestamp trick FTW
•  Data type conversion can be tricky
•  Benchmark !
•  Mindset shifts for the team
136
#Cassandra @doanduyhai
Thank You
! ""

More Related Content

What's hot (20)

PPTX
Multi-Cluster and Failover for Apache Kafka - Kafka Summit SF 17
Gwen (Chen) Shapira
 
PDF
Interact2019 ws2019 s2d_IN05
Hiroshi Matsumoto
 
PPTX
Apache Cassandra at the Geek2Geek Berlin
Christian Johannsen
 
PDF
Cassandra 101
Nader Ganayem
 
PPTX
Cassandra
Upaang Saxena
 
PDF
How to Build a Scylla Database Cluster that Fits Your Needs
ScyllaDB
 
PDF
Disaster Recovery and High Availability with Kafka, SRM and MM2
Abdelkrim Hadjidj
 
PDF
Streaming all over the world Real life use cases with Kafka Streams
confluent
 
PDF
redis 소개자료 - 네오클로바
NeoClova
 
PDF
Intro to Cassandra
DataStax Academy
 
PDF
Cassandra background-and-architecture
Markus Klems
 
PPTX
Apache Arrow: In Theory, In Practice
Dremio Corporation
 
PDF
MongoDB vs. Postgres Benchmarks
EDB
 
PPSX
Apache Flink, AWS Kinesis, Analytics
Araf Karsh Hamid
 
PDF
Microservice Architecture Patterns, by Richard Langlois P. Eng.
Richard Langlois P. Eng.
 
PPTX
Apache Kafka
Saroj Panyasrivanit
 
PDF
Apache Kafka Architecture & Fundamentals Explained
confluent
 
PPTX
Configuring Aerospike - Part 2
Aerospike, Inc.
 
PPTX
Introduction to Apache ZooKeeper
Saurav Haloi
 
Multi-Cluster and Failover for Apache Kafka - Kafka Summit SF 17
Gwen (Chen) Shapira
 
Interact2019 ws2019 s2d_IN05
Hiroshi Matsumoto
 
Apache Cassandra at the Geek2Geek Berlin
Christian Johannsen
 
Cassandra 101
Nader Ganayem
 
Cassandra
Upaang Saxena
 
How to Build a Scylla Database Cluster that Fits Your Needs
ScyllaDB
 
Disaster Recovery and High Availability with Kafka, SRM and MM2
Abdelkrim Hadjidj
 
Streaming all over the world Real life use cases with Kafka Streams
confluent
 
redis 소개자료 - 네오클로바
NeoClova
 
Intro to Cassandra
DataStax Academy
 
Cassandra background-and-architecture
Markus Klems
 
Apache Arrow: In Theory, In Practice
Dremio Corporation
 
MongoDB vs. Postgres Benchmarks
EDB
 
Apache Flink, AWS Kinesis, Analytics
Araf Karsh Hamid
 
Microservice Architecture Patterns, by Richard Langlois P. Eng.
Richard Langlois P. Eng.
 
Apache Kafka
Saroj Panyasrivanit
 
Apache Kafka Architecture & Fundamentals Explained
confluent
 
Configuring Aerospike - Part 2
Aerospike, Inc.
 
Introduction to Apache ZooKeeper
Saurav Haloi
 

Viewers also liked (20)

PDF
Bulk Loading Data into Cassandra
DataStax
 
PDF
Cassandra Summit 2014: Apache Cassandra Best Practices at Ebay
DataStax Academy
 
PPTX
Cassandra Community Webinar | Make Life Easier - An Introduction to Cassandra...
DataStax
 
PPTX
Webinar: DataStax Training - Everything you need to become a Cassandra Rockstar
DataStax
 
PPTX
Webinar: Eventual Consistency != Hopeful Consistency
DataStax
 
PPTX
Webinar: Don't Leave Your Data in the Dark
DataStax
 
PDF
Webinar | How Clear Capital Delivers Always-on Appraisals on 122 Million Prop...
DataStax
 
PPTX
How much money do you lose every time your ecommerce site goes down?
DataStax
 
PPTX
Webinar | Target Modernizes Retail with Engaging Digital Experiences
DataStax
 
PDF
Cassandra Community Webinar | In Case of Emergency Break Glass
DataStax
 
PPTX
Webinar: ROI on Big Data - RDBMS, NoSQL or Both? A Simple Guide for Knowing H...
DataStax
 
PPTX
Webinar | Introducing DataStax Enterprise 4.6
DataStax
 
PPTX
Cassandra Community Webinar: Back to Basics with CQL3
DataStax
 
PPTX
Webinar: Dyn + DataStax - helping companies deliver exceptional end-user expe...
DataStax
 
PPTX
Don't Let Your Shoppers Drop; 5 Rules for Today’s eCommerce
DataStax
 
PDF
Cassandra TK 2014 - Large Nodes
aaronmorton
 
PPT
Webinar: 2 Billion Data Points Each Day
DataStax
 
PPT
Webinar: Getting Started with Apache Cassandra
DataStax
 
PDF
Cassandra Community Webinar | Practice Makes Perfect: Extreme Cassandra Optim...
DataStax
 
PPTX
Webinar | From Zero to 1 Million with Google Cloud Platform and DataStax
DataStax
 
Bulk Loading Data into Cassandra
DataStax
 
Cassandra Summit 2014: Apache Cassandra Best Practices at Ebay
DataStax Academy
 
Cassandra Community Webinar | Make Life Easier - An Introduction to Cassandra...
DataStax
 
Webinar: DataStax Training - Everything you need to become a Cassandra Rockstar
DataStax
 
Webinar: Eventual Consistency != Hopeful Consistency
DataStax
 
Webinar: Don't Leave Your Data in the Dark
DataStax
 
Webinar | How Clear Capital Delivers Always-on Appraisals on 122 Million Prop...
DataStax
 
How much money do you lose every time your ecommerce site goes down?
DataStax
 
Webinar | Target Modernizes Retail with Engaging Digital Experiences
DataStax
 
Cassandra Community Webinar | In Case of Emergency Break Glass
DataStax
 
Webinar: ROI on Big Data - RDBMS, NoSQL or Both? A Simple Guide for Knowing H...
DataStax
 
Webinar | Introducing DataStax Enterprise 4.6
DataStax
 
Cassandra Community Webinar: Back to Basics with CQL3
DataStax
 
Webinar: Dyn + DataStax - helping companies deliver exceptional end-user expe...
DataStax
 
Don't Let Your Shoppers Drop; 5 Rules for Today’s eCommerce
DataStax
 
Cassandra TK 2014 - Large Nodes
aaronmorton
 
Webinar: 2 Billion Data Points Each Day
DataStax
 
Webinar: Getting Started with Apache Cassandra
DataStax
 
Cassandra Community Webinar | Practice Makes Perfect: Extreme Cassandra Optim...
DataStax
 
Webinar | From Zero to 1 Million with Google Cloud Platform and DataStax
DataStax
 
Ad

Similar to Migration Best Practices: From RDBMS to Cassandra without a Hitch (20)

PDF
Libon cassandra summiteu2014
Duyhai Doan
 
PPTX
SAS Institute on Changing All Four Tires While Driving an AdTech Engine at Fu...
ScyllaDB
 
PDF
Migration from MySQL to Cassandra for millions of active users
Andrey Panasyuk
 
PPTX
When and how to migrate from a relational database to Cassandra
Ben Slater
 
PDF
Cassandra Summit 2015 - A Change of Seasons
Eiti Kimura
 
PDF
Movile Internet Movel SA: A Change of Seasons: A big move to Apache Cassandra
DataStax Academy
 
PPT
Evolutionary db development
Open Party
 
PDF
Migrating to Cassandra
Instaclustr
 
PPTX
Cassandra Community Webinar: MySQL to Cassandra - What I Wish I'd Known
DataStax
 
PPTX
Hindsight is 20/20: MySQL to Cassandra
Michael Kjellman
 
PPTX
C* Summit 2013 - Hindsight is 20/20. MySQL to Cassandra by Michael Kjellman
DataStax Academy
 
PDF
How to Effectively Migrate Data From Legacy Apps
CloverDX
 
PDF
DataStax GeekNet Webinar - Apache Cassandra: Enterprise NoSQL
DataStax
 
PDF
CTO Leadership Series: Schema Evolution Patterns
BrittanyShear
 
PDF
CTO Leadership Series: Schema Evolution Patterns
Aggregage
 
PPTX
20131017 - en - presentation damn data
pietercalle
 
PDF
C*ollege Credit: Is My App a Good Fit for Cassandra?
DataStax
 
PDF
Instaclustr: When and how to migrate from a relational database to Cassandra
DataStax Academy
 
PDF
Cassandra nice use cases and worst anti patterns no sql-matters barcelona
Duyhai Doan
 
PDF
Agile Oracle to PostgreSQL migrations (PGConf.EU 2013)
Gabriele Bartolini
 
Libon cassandra summiteu2014
Duyhai Doan
 
SAS Institute on Changing All Four Tires While Driving an AdTech Engine at Fu...
ScyllaDB
 
Migration from MySQL to Cassandra for millions of active users
Andrey Panasyuk
 
When and how to migrate from a relational database to Cassandra
Ben Slater
 
Cassandra Summit 2015 - A Change of Seasons
Eiti Kimura
 
Movile Internet Movel SA: A Change of Seasons: A big move to Apache Cassandra
DataStax Academy
 
Evolutionary db development
Open Party
 
Migrating to Cassandra
Instaclustr
 
Cassandra Community Webinar: MySQL to Cassandra - What I Wish I'd Known
DataStax
 
Hindsight is 20/20: MySQL to Cassandra
Michael Kjellman
 
C* Summit 2013 - Hindsight is 20/20. MySQL to Cassandra by Michael Kjellman
DataStax Academy
 
How to Effectively Migrate Data From Legacy Apps
CloverDX
 
DataStax GeekNet Webinar - Apache Cassandra: Enterprise NoSQL
DataStax
 
CTO Leadership Series: Schema Evolution Patterns
BrittanyShear
 
CTO Leadership Series: Schema Evolution Patterns
Aggregage
 
20131017 - en - presentation damn data
pietercalle
 
C*ollege Credit: Is My App a Good Fit for Cassandra?
DataStax
 
Instaclustr: When and how to migrate from a relational database to Cassandra
DataStax Academy
 
Cassandra nice use cases and worst anti patterns no sql-matters barcelona
Duyhai Doan
 
Agile Oracle to PostgreSQL migrations (PGConf.EU 2013)
Gabriele Bartolini
 
Ad

More from DataStax Academy (20)

PDF
Forrester CXNYC 2017 - Delivering great real-time cx is a true craft
DataStax Academy
 
PPTX
Introduction to DataStax Enterprise Graph Database
DataStax Academy
 
PPTX
Introduction to DataStax Enterprise Advanced Replication with Apache Cassandra
DataStax Academy
 
PPTX
Cassandra on Docker @ Walmart Labs
DataStax Academy
 
PDF
Cassandra 3.0 Data Modeling
DataStax Academy
 
PPTX
Cassandra Adoption on Cisco UCS & Open stack
DataStax Academy
 
PDF
Data Modeling for Apache Cassandra
DataStax Academy
 
PDF
Coursera Cassandra Driver
DataStax Academy
 
PDF
Production Ready Cassandra
DataStax Academy
 
PDF
Cassandra @ Netflix: Monitoring C* at Scale, Gossip and Tickler & Python
DataStax Academy
 
PPTX
Cassandra @ Sony: The good, the bad, and the ugly part 1
DataStax Academy
 
PPTX
Cassandra @ Sony: The good, the bad, and the ugly part 2
DataStax Academy
 
PDF
Standing Up Your First Cluster
DataStax Academy
 
PDF
Real Time Analytics with Dse
DataStax Academy
 
PDF
Introduction to Data Modeling with Apache Cassandra
DataStax Academy
 
PDF
Cassandra Core Concepts
DataStax Academy
 
PPTX
Enabling Search in your Cassandra Application with DataStax Enterprise
DataStax Academy
 
PPTX
Bad Habits Die Hard
DataStax Academy
 
PDF
Advanced Data Modeling with Apache Cassandra
DataStax Academy
 
PDF
Advanced Cassandra
DataStax Academy
 
Forrester CXNYC 2017 - Delivering great real-time cx is a true craft
DataStax Academy
 
Introduction to DataStax Enterprise Graph Database
DataStax Academy
 
Introduction to DataStax Enterprise Advanced Replication with Apache Cassandra
DataStax Academy
 
Cassandra on Docker @ Walmart Labs
DataStax Academy
 
Cassandra 3.0 Data Modeling
DataStax Academy
 
Cassandra Adoption on Cisco UCS & Open stack
DataStax Academy
 
Data Modeling for Apache Cassandra
DataStax Academy
 
Coursera Cassandra Driver
DataStax Academy
 
Production Ready Cassandra
DataStax Academy
 
Cassandra @ Netflix: Monitoring C* at Scale, Gossip and Tickler & Python
DataStax Academy
 
Cassandra @ Sony: The good, the bad, and the ugly part 1
DataStax Academy
 
Cassandra @ Sony: The good, the bad, and the ugly part 2
DataStax Academy
 
Standing Up Your First Cluster
DataStax Academy
 
Real Time Analytics with Dse
DataStax Academy
 
Introduction to Data Modeling with Apache Cassandra
DataStax Academy
 
Cassandra Core Concepts
DataStax Academy
 
Enabling Search in your Cassandra Application with DataStax Enterprise
DataStax Academy
 
Bad Habits Die Hard
DataStax Academy
 
Advanced Data Modeling with Apache Cassandra
DataStax Academy
 
Advanced Cassandra
DataStax Academy
 

Recently uploaded (20)

PDF
Automating Feature Enrichment and Station Creation in Natural Gas Utility Net...
Safe Software
 
PPTX
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
PDF
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
PDF
The Rise of AI and IoT in Mobile App Tech.pdf
IMG Global Infotech
 
PDF
Transforming Utility Networks: Large-scale Data Migrations with FME
Safe Software
 
PDF
How do you fast track Agentic automation use cases discovery?
DianaGray10
 
PPT
Ericsson LTE presentation SEMINAR 2010.ppt
npat3
 
PDF
“Squinting Vision Pipelines: Detecting and Correcting Errors in Vision Models...
Edge AI and Vision Alliance
 
PDF
Peak of Data & AI Encore AI-Enhanced Workflows for the Real World
Safe Software
 
PPTX
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
PDF
NASA A Researcher’s Guide to International Space Station : Physical Sciences ...
Dr. PANKAJ DHUSSA
 
PDF
The 2025 InfraRed Report - Redpoint Ventures
Razin Mustafiz
 
PDF
Future-Proof or Fall Behind? 10 Tech Trends You Can’t Afford to Ignore in 2025
DIGITALCONFEX
 
PDF
UPDF - AI PDF Editor & Converter Key Features
DealFuel
 
PPTX
Designing_the_Future_AI_Driven_Product_Experiences_Across_Devices.pptx
presentifyai
 
DOCX
Python coding for beginners !! Start now!#
Rajni Bhardwaj Grover
 
PPTX
Agentforce World Tour Toronto '25 - Supercharge MuleSoft Development with Mod...
Alexandra N. Martinez
 
PDF
CIFDAQ Market Wrap for the week of 4th July 2025
CIFDAQ
 
PPTX
Future Tech Innovations 2025 – A TechLists Insight
TechLists
 
PPTX
Mastering ODC + Okta Configuration - Chennai OSUG
HathiMaryA
 
Automating Feature Enrichment and Station Creation in Natural Gas Utility Net...
Safe Software
 
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
The Rise of AI and IoT in Mobile App Tech.pdf
IMG Global Infotech
 
Transforming Utility Networks: Large-scale Data Migrations with FME
Safe Software
 
How do you fast track Agentic automation use cases discovery?
DianaGray10
 
Ericsson LTE presentation SEMINAR 2010.ppt
npat3
 
“Squinting Vision Pipelines: Detecting and Correcting Errors in Vision Models...
Edge AI and Vision Alliance
 
Peak of Data & AI Encore AI-Enhanced Workflows for the Real World
Safe Software
 
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
NASA A Researcher’s Guide to International Space Station : Physical Sciences ...
Dr. PANKAJ DHUSSA
 
The 2025 InfraRed Report - Redpoint Ventures
Razin Mustafiz
 
Future-Proof or Fall Behind? 10 Tech Trends You Can’t Afford to Ignore in 2025
DIGITALCONFEX
 
UPDF - AI PDF Editor & Converter Key Features
DealFuel
 
Designing_the_Future_AI_Driven_Product_Experiences_Across_Devices.pptx
presentifyai
 
Python coding for beginners !! Start now!#
Rajni Bhardwaj Grover
 
Agentforce World Tour Toronto '25 - Supercharge MuleSoft Development with Mod...
Alexandra N. Martinez
 
CIFDAQ Market Wrap for the week of 4th July 2025
CIFDAQ
 
Future Tech Innovations 2025 – A TechLists Insight
TechLists
 
Mastering ODC + Okta Configuration - Chennai OSUG
HathiMaryA
 

Migration Best Practices: From RDBMS to Cassandra without a Hitch