Skip to content

Commit

Permalink
add aws database services
Browse files Browse the repository at this point in the history
Signed-off-by: mzafari2 <[email protected]>
  • Loading branch information
mzafari2 committed Oct 31, 2024
1 parent 55bd840 commit 97c6d56
Show file tree
Hide file tree
Showing 3 changed files with 169 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
# Amazon DynamoDB

## Overview

Amazon DynamoDB is a fully managed NoSQL database service that provides single-digit millisecond response times, making it ideal for high-traffic applications. DynamoDB supports both key-value and document data models, allowing for flexible and dynamic data structures.

## Data Model

- **Key-Value:** Optimized for handling large volumes of simple key-value data.
- **Document-Based:** Suitable for more complex, semi-structured data.

## Key Features

- **On-Demand and Provisioned Capacity:** Choose between automatic scaling or pre-allocated capacity for more predictable costs.
- **Global Tables:** Multi-region, fully replicated tables for fast, consistent access across the globe.
- **DynamoDB Streams:** Enable real-time processing of data changes.
- **Integration with AWS Lambda:** Allows for seamless, serverless processing triggered by DynamoDB changes.

## Use Cases

DynamoDB is ideal for:

- Applications needing high throughput and low-latency response times
- Real-time data processing and analytics
- Scalable applications like gaming, IoT, and e-commerce platforms

## Create a table in DynamoDB

You can create a table using:

- AWS Management Console
- AWS CLI
- AWS SDK

Checkout the link below for steps on how to get started:

- **[Create a table in DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/getting-started-step-1.html)**

See the example below on how to create a table using AWS SDK for python(boto3):

```python
import boto3

# Get the service resource.
dynamodb = boto3.resource('dynamodb')

# Create the DynamoDB table.
table = dynamodb.create_table(
TableName='users',
KeySchema=[
{
'AttributeName': 'username',
'KeyType': 'HASH'
},
{
'AttributeName': 'last_name',
'KeyType': 'RANGE'
}
],
AttributeDefinitions=[
{
'AttributeName': 'username',
'AttributeType': 'S'
},
{
'AttributeName': 'last_name',
'AttributeType': 'S'
},
],
ProvisionedThroughput={
'ReadCapacityUnits': 5,
'WriteCapacityUnits': 5
}
)

# Wait until the table exists.
table.wait_until_exists()

# Print out some data about the table.
print(table.item_count)
```

## 📚 Further Reading

- **[AWS DynamoDB](https://aws.amazon.com/dynamodb/)**
An overview of the service

- **[Getting started with DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GettingStartedDynamoDB.html)**
A step by step Guide on how to start and manage your DynamoDB table

- **[Boto3 RDS Service Reference](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/dynamodb.html)**
Boto3 documentation for interacting with AWS DynamoDB using the AWS SDK for Python (Boto3).
44 changes: 44 additions & 0 deletions src/software/cloud-computing/AWS/Database Services/RDS/README.MD
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# Amazon Relational Database Service (RDS)

## Overview

Amazon RDS (Relational Database Service) is a fully managed service that simplifies the setup, operation, and scaling of relational databases in the cloud. RDS supports popular database engines, enabling users to choose the one that best fits their application’s needs.

## Supported Database Engines

Amazon RDS supports several database engines:

- MySQL
- PostgreSQL
- Oracle
- Microsoft SQL Server
- MariaDB
- Amazon Aurora (MySQL and PostgreSQL compatible)

## Key Features

- **Automated Backups:** Automatically managed, including point-in-time recovery.
- **Monitoring and Metrics:** Integration with Amazon CloudWatch for detailed insights.
- **High Availability with Multi-AZ:** Ensures reliability through automatic failover and replication.
- **Performance and Scaling:** Easily modify instance types or storage capacity without downtime.

## Use Cases

Amazon RDS is suitable for applications that require:

- Complex queries and transactions
- High data integrity with ACID compliance
- Enterprise applications needing strong data consistency

## Creating a DB instance

You can create an Amazon RDS DB instance using the AWS Management Console, the AWS CLI, or the RDS API.
To Read more about this, please refer to the documentation [here](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CreateDBInstance.html)

## 📚 Further Reading

- **[AWS RDS](https://aws.amazon.com/rds/)**
An overview of the service

- **[Boto3 RDS Service Reference](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/rds.html#client)**
Boto3 documentation for interacting with AWS RDS using the AWS SDK for Python (Boto3).
33 changes: 33 additions & 0 deletions src/software/cloud-computing/AWS/Database Services/README.MD
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# AWS Databases

## Overview of Cloud Databases

Cloud databases provide a modern solution for data storage and management. By hosting databases on the cloud, AWS allows businesses to focus on utilizing their data rather than managing database infrastructure. AWS databases offer a range of features that make them accessible, scalable, and efficient.

### Benefits of Cloud Databases

- **Scalability:** Cloud databases scale resources up or down easily to match demand, ensuring optimal performance.
- **Cost Efficiency:** Pay only for what you use with AWS’s flexible pricing model.
- **Reliability:** AWS databases provide high availability and redundancy for dependable uptime.
- **Managed Services:** AWS takes care of database maintenance, backups, patching, and updates.
- **Security:** AWS databases come with robust encryption, access control, and monitoring options.

### Types of Databases on AWS

AWS offers various database types, each offering features to specific workloads and application needs.

1. **Relational Databases**

- Structured with predefined schemas, relational databases are ideal for managing structured data and supporting complex transactions.
- **Example:** Amazon RDS (supports MySQL, PostgreSQL, and more).

2. **Non-Relational Databases (NoSQL)**
- Schema-less and designed to handle large volumes of unstructured or semi-structured data, NoSQL databases offer flexibility and speed.
- **Example:** Amazon DynamoDB, optimized for applications with high scalability and low-latency needs.

For detailed information on specific AWS database offerings, please refer to the subdirectories on [Amazon RDS](./RDS/README.md) and [DynamoDB](./DynamoDB/README.md).

## 📚 Further Reading

- **[AWS Database Services](https://aws.amazon.com/free/database/?gclid=Cj0KCQjw1Yy5BhD-ARIsAI0RbXa24yxekzxUIL2IxfomIdvleV5C2vz_6vw9aknU7JGhCQ_2H1VL2xgaAtJwEALw_wcB&trk=b54801f4-057b-4340-b0a5-1ee26130ff8f&sc_channel=ps&ef_id=Cj0KCQjw1Yy5BhD-ARIsAI0RbXa24yxekzxUIL2IxfomIdvleV5C2vz_6vw9aknU7JGhCQ_2H1VL2xgaAtJwEALw_wcB:G:s&s_kwcid=AL!4422!3!548725068184!e!!g!!aws%20database!11346198399!112250784918)**
An overview of Amazon Database Services, including Free Product Offers.

0 comments on commit 97c6d56

Please sign in to comment.