DataBases
Amazon DataBases
-
Storing data on disk (EFS, EBS, EC2 Instance Store, S3) can have its limits
-
Sometimes, you want to store data in database...
-
You can structure the data
-
You build indexes to efficiently query / search through the data
-
you define relationships between your datasets
-
Databases are optimized for a purpose and come with different features, shapes and constraints
Relational Databases
- Looks just like Excel spreadsheets, with links between them!
- EX.: Students sheet and Dept ID -> Departments sheet and Dept ID
- Can use the SQL language to perform queries / lookups
NoSQL Databases
-
NoSQL = non-SQL = non relational databases
-
NoSQL databases are purpose built for specific data models and have flexible schemas for building modern applications.
-
Benefits:
- Flexibility: easy to envolve data model
- Scalability: designed to scale-out by using distributed clusters
- High-performance: optimized for a specific data model
- Highly functional: types optimized for the data model
-
Examples: Key-value, document, graph, in-memory, search databases
-
NoSQL data example: JSON: JSON = JavaScript Object Notation JSON is a common form of data that fits into a NoSQL model Data can be nested Fields can change over time Support for new types: arrays, etc...
{
"name": "John",
"age": 30,
"cars": [
"Ford",
"BMW",
"Fiat"
],
"address": {
"type": "house",
"number": 23,
"street": "Dream Road"
}
}
Databases & Shared Responsibility on AWS
- AWS offers use to manage different databases
- Benefits include:
- Quick Provisioning, High Availability, Vertical and Horizontal Scaling
- Automated Backup & Restore, Operations, Upgrades
- Operating System Patching is handled by AWS
- Monitoring, alerting
- Note: Many databases technologies could be run on EC2, but you must handle yourself the resiliency, backup, patching high availability, fault, tolerance, scaling...
Amazon RDS Overview
- RDS stands for Relational Database Service
- It's a managed DB service for DB use SQL as a query language.
- It allows you to create databases in the cloud that are managed by AWS
- Postgres
- MySQL
- MariaDB
- Oracle
- Microsoft SQL Server
- IBM DB2
- Aurora (AWS Proprietary database)
- Advantage over using RDS versus deploying DB on EC2
- RDS is a managed service:
- Automated provisioning, OS patching
- Continuous backups and restore to specific timestamp (Point in Time Restore)
- Monitoring dashboards
- Read replicas for improved read performance
- Multi AZ setup for DR (Disaster Recovery)
- Maintenance windows for upgrades
- Scaling capability ( vertical and horizontal)
- Storage backend by EBS
- BUT you can't SSH into your instances
- RDS is a managed service:
Amazon Aurora
- Aurora is a proprietary technology from AWS (not open sourced)
- PostgreSQL and MySQL are both supported as Aurora DB
- Aurora is "AWS cloud optimized" and claims 5x performance improvement over MySQL on RDS, over 3x the performance of Postgres on RDS
- Aurora storage automatically grows in increments of 10GB, up to 128TB
- Aurora costs more than RDS (20% more) - but is more efficient
- Not in the free tier
Amazon Aurora Serverless
- Automated database instantiation and auto-scaling based on actual usage
- PostgreSQL and MySQL are both supported as Aurora Serverless DB
- No capacity planning needed
- Least management overhead
- Pay per second, can be more cost-effective
- Use cases: good for infrequent, intermittent or unpredictable workloads...
RDS Deployments: Read Replicas, Multi-AZ
- Read Replicas:
- Scale the read workload of your DB
- Can create up to 15 Read Replicas
- Data is only written to the main DB
- Multi AZ:
- Failover in case of AZ outage (high availability)
- Data is only read/written to the main database
RDS Deployments: Multi-Region
- Multi-Region (Read Replicas)
- Disaster recovery in case of region issue
- Local performance for global reads
- Replication cost
Amazon ElastiCache
- The same way RDS is to get managed Relation Databases...
- ElastiCache is to get managed Redis or Memcached
- Caches are in-memory databases with high performance, low latency
- Helps reduce load of databases for read intensive workloads
- AWS takes care of OS maintenance / patching, optimizations, setup, configuration, monitoring, failure recovery and backups
DynamoDB
- Fully Managed Highly available with replication across 3 AZ
- NoSQL database - not a relational database
- Millions of requests per seconds, trillions of row, 100s of TB of storage
- Fast and consistent in performance
- Single-digit millisecond latency - Low latency retrieval
- Integrated with IAM for security, authorization and administration
- Low cost and auto scaling capabilities
- Standard & Infrequent Access (IA) Table Class
DynamoDB - Type of data
- DynamoDB is a key/value database
DynamoDB Accelerator - DAX
- Fully Managed in memory cache for DynamoDB
- 10x performance improvement - single - digit millisecond latency to microseconds latency - when accessing your DynamoDB tables
- Secure, highly scalable & highly available
- Difference with ElastiCache at the CCP level: DAX is only used for and is integrated with DynamoDB, while ElastiCache can be used for other databases
DynamoDB - Global Tables
- Make a DynamoDB table accessible with low latency in multiple-regions
Redshift
- Redshift is base on PostgreSQL, but it's not used for OLTP
- it's OLAP - online analytical processing (analytics and data warehousing)
- Load data once every hour, not every second
- 10x better performance than other data warehouses, scale to PBs of data
- Columnar storage of data (instead of row based)
- Massively Parallel Query Execution (MPP), highly available
- Pay as you go based on the instances provisioned
- Has a SQL interface for performing the queries
- BI tools such as AWS Quicksight or Tableau integrate with it
Redshift Serverless
- Automatically provisions and scales data warehouses underlying capacity
- Run analytics workloads without managing data warehouse infrastructure
- Pay only for what you use (save costs)
- Use cases: Reporting, dashboarding applications, real-time analytics...
Amazon EMR
- EMR stands for "Elastic MapReduce"
- EMR helps creating Hadoop clusters (Big Data) to analyze and process vast amount of data
- The clusters can be made of hundreds of EC2 instances
- Also supports Apache Spark, HBase, Presto, Flink...
- EMR takes care of all the provisioning and configuration
- Auto-scaling and integrated with Spot instances
- Use cases: data processing, machine learning, web indexing, big data...
Amazon Athena
-
Serverless query service to perform analytics against S3 objects
-
Uses standard SQL language to query the files
-
Supports CSV, JSON, ORC, Avro, and Parquet (built on Presto)
-
Pricing: $5.00 per TB of data scanned
-
Use compressed of columnar data for cost-savings (less scan)
-
Use cases: Business intelligence / analytics / reporting, analyze & query VPC Flow Logs, ELB Logs, CloudTrail trails, etc...
-
Exam Tips: analyze data in S3 using serverless SQL, use Athena
Amazon QuickSight
- Serverless machine leaning-powered business intelligence service to create interactive dashboards
- Fast, automatically scalable, embeddable, with per-session pricing
- Use cases:
- Business analytics
- Building visualizations
- Perform ad-hoc analysis
- Get business insights using data
- Integrated with RDS, Aurora, Athena, Redshift, S3...
DocumentDB
-
Aurora is an "AWS-implementation" of PostgreSQL / MySQL...
-
DocumentDB is the same for MongoDB(which is a NoSQL database)
-
MongoDB is used to store, query, and index JSON data
-
Similar "deployment concepts" as Aurora
-
Fully Managed, highly available with replication across 3 AZ
-
DocumentDB storage automatically grows in increments of 10GB
-
Automatically scales to workloads with millions of request per seconds
Amazon Neptune
- Fully managed graph database
- A popular graph dataset would be a social network
- Users have friends
- Post have comments
- Comments have likes from users
- Users share and like posts...
- Highly available across 3AZ, with up to 15 read replicas
- Build and run applications working with highly connected datasets - optimized for these complex and hard queries
- Can store up to billions of relations and query the graph with milliseconds latency
- Highly available with replications across multiple AZs
- Great for knowledge graphs ( Wikipedia), fraud detection, recommendations engines, social networking
Amazon Timestream
- Fully managed, fast, scalable, serverless time series database
- Automatically scales up/down to adjust capacity
- Store and analyze trillions of events per day
- 1000s times faster & 1/10th the cost of relational databases
- Built-in time series analytics functions (helps you identify patterns in your data in near real-time)
Amazon QLDB
-
QLDB stands for "Quantum Ledger Database"
-
A ledger is a book recording financial transactions
-
Fully Managed, Serverless, High available, Replication across 3 AZ
-
Used to review history of all the changes made to your application data over time
-
Immutable system: no entry can be removed or modified, cryptographically verifiable
-
2-3× better performance than common ledge blockchain frameworks, manipulate data using SQL
-
Difference with Amazon Managed Blockchain: no decentralization component, in accordance with financial regulations rules
Amazon Managed Blockchain
- Blockchain makes it possible to build applications where multiple parties can execute transactions without the need for a trusted, central authority
- Amazon Managed Blockchain is a managed service to:
- Join public blockchain networks
- Or create your own scalable private network
- Compatible with the frameworks Hyperledger Fabric & Ethereum
AWS Glue
- Managed extract, transform, and load (ETL) service
- Useful to prepare and transform data for analytics
- Fully serverless service
Glue Data Catalog: catalog of datasets
- Can be used by Athena, Redshift, EMR
DMS - Database Migration Service
-
Quickly and securely migrate databases to AWS, resilient, self healing
-
The source database remains available during the migration
-
Supports:
- Homogeneous migrations: ex Oracle to Oracle
- Heterogeneous migrations: ex Microsoft SQL Server to Aurora