Upload
eduardo-bohrer
View
1.668
Download
3
Embed Size (px)
DESCRIPTION
Slides presenting a little explanation about NoSQL and AWS DynamoDB
Citation preview
What ?
• Database
• NoSQL
• AWS
• SaaS
What ?
•Database• NoSQL
• AWS (IaaS, Paas)
What is a database ?
Dammit!This is not for you!
What ?
• Database
•NoSQL• AWS (IaaS, Paas)
What do you mean?
NoSQL vs NewSQL
• NoSQL is a really bad label
• It’s not about SQL
• It’s about better performance or scalability
• Sometimes we can live without ACID
ACID ?
ACID
The cap theoremIt’s impossible to simultaneously provide
Consistency
Availability
Partition tolerance
Without partition tolerance guarantee
We can be available (the data) and consistent
RDBMS: Oracle, Postgres, MySQL, SQLServer, etc.
Without availability guarantee
We can be highly scalable
Big Table, Hypertable, HBase, MongoDB, Berkley DB, Memcache, Redis
Without consistency guarantee
We can be highly replicable
DynamoDB, Voldemort, Cassandra, SimpleDB, CouchDB, Riak
NoREL
• ACID & JOINS are considered relational (unsupported)
• Key-Value model
• Column-oriented model
• Document-oriented model
What ?
• Database
• NoSQL
•AWS (IaaS, PaaS)
AWS
AWS
• IaaS (Infrastructure as a Service)
• PaaS (Platform as a Service)
•Full managed DynamoDB service
• Pay-as-you-go
DynamoDB
• Fast
• Full managed
• Coast effective
• Pay by throughput (reserved)
The good parts
• Table based (each table is independent)
• Schema free (except the Key)
• Really fast to find using Primary and Range Keys
• Support for complex queries (Scan)
The “must know” parts
• Eventual consistency by default, with high costs to ensure consistency.
• Must use SDK/API to access
• 64K is the max “row” size
• Complex queries are made using Sequential/Full Table Scan (high cost)
The bad parts
• Very limited data types (text, number, binary)
• No way to join tables
• More than 64k of data per item requires “workarounds”
• It’s not possible to copy a table to another one
Final considerations
• Really fast using IDs
• Really cost effective
• Full managed is a good idea
• A good option for key-value situations
• Very limited with types and joins
• Complex queries are costly
Pros: Cons