Giới thiệu
Trong một ứng dụng thì Database luôn là phần quan trọng nhất, nếu ta chỉ xây dựng một ứng dụng đơn giản thì việc tự cài đặt Database không gì khó khắn. Nhưng nếu để xây dựng một ứng dụng phục vụ được hàng triệu người dùng thì để tự cài và quản lý được cụm Database là một công việc không hề dễ dàng. Do đó nếu điều kiện cho phép thì các bạn nên sử dụng các dịch vụ Database của Amazon Web Services, nó sẽ giúp công việc của ta trở nên dễ dàng hơn rất nhiều.
AWS cung cấp cho ta khá nhiều các dịch vụ Database khác nhau, và để biết được AWS có các dịch vụ Database nào thì hãy cùng nhau tìm hiểu trong bài này.
AWS Database
Database trên AWS sẽ có các loại như sau:
- Relational Database
- Document Database
- Wide-column store Database
- Indexing and search services
- In-memory Database
- Graph Database
- Time-series Database
Relational Database
Đây là loại Database rất quen thuộc với chúng ta, đối với loại Database này thì AWS cung cấp cho chúng ta dịch vụ Amazon Relational Database Service (AWS RDS).
Những tính năng nổi bật của AWS RDS là dễ dàng sử dụng, có chế độ primary và replicas để tăng tốc tốc độ truy vấn vào Database, tính khả dụng cao, bảo mật cao, …
AWS RDS có 3 loại:
- Community (Postgres, MySQL, MariaDB): Amazon cung cấp RDS với ba dịch vụ mã nguồn mở khác nhau là Postgres, MySQL, MariaDB. Đây là những Database rất phổ biến trong cộng đồng.
- Aurora (Postgres, MySQL): Đây là loại Database mà AWS phát triển dựa trên Postgres, MySQL. Aurora sẽ có các tính năng nổi trội hơn khi ta sử dụng AWS RDS Postgres và MySQL thông thường, như là: tốc độ xử lý nhanh hơn 5.x so với MySQL và 3.x so với Postgres thông thường.
- Commercial (Oracle, SQLServer): Hai loại này thì khá đặc thù một chút, các bạn cũng biết là mối quan hệ của AWS và Oracle cũng không tốt đẹp mấy
:)))
. Nhưng ta vẫn có thể sử dụng Oracle và SQLServer trên Amazon.
Document Database
Đây là loại Database xuất hiện sau relational Database, thường được gọi tới với cái tên là NoSQL Database, dữ liệu trong Document Database được lưu dưới dạng structured hoặc semi-structured.
Ví dụ như là dạng Extensible Markup Language (XML), JavaScript Object Notation (JSON), hoặc Binary JavaScript Object Notation (BSON), đây đều là các định dạng phổ biến.
Ta thường sử dụng Document Database cho:
- Content management systems
- E-commerce applications
- Analytics
- Blogging applications
Không nên sử dụng cho:
- Các dữ liệu có quan hệ lồng kép nhau và yêu cầu viết câu truy vấn phức tạp
- Ứng dụng OLTP
Đối với Document Database thì AWS cung cấp cho ta dịch vụ AWS Dynamo DB.
Một số tính năng nổi bật của Dynamo DB:
- Truy vấn nhanh, có thể lên tới hàng microsecond nếu sử dụng với DynamoDB Accelerator (DAX)
- Có thể triển khai ở multi region
- Multi-master
- Có hỗ trợ ACID transactions
Nếu biết sử dụng thì Dynamo DB có thể hỗ trợ tới 20 triệu request mỗi giây.
Wide-column store Database
Loại Database này thì có thể không quen thuộc với nhiều người. Có thể nói Wide-column Database cũng là một dạng của NoSQL Database, khác biệt ở chỗ là dữ liệu nó lữu trữ có thể lên tới hàng Petabyte.
Ta thường sử dụng Wide-column Database cho:
- Sensor logs và IoT
- Ứng dụng ghi logs
- Dữ liệu cần ghi nhiều nhưng ít khi cập nhật
- Ứng dụng yêu cầu độ trễ thấp
Không nên sử dụng cho:
- Ứng dụng mà yêu cầu joins table quá nhiều
- Ứng dụng yêu cầu thay đổi liên tục
- Ứng dụng OLTP
Đối với Wide-column Database thì AWS cung cấp cho ta dịch vụ Amazon Managed Apache Cassandra Service (AWS MCS, Amazon Keyspaces).
Một số tính năng nổi bật của Amazon Keyspaces:
- Tự động mở rộng
- Tính khả dụng cao
- Độ trễ thấp
Searching Database
Đây là loại Database chuyên dùng cho tìm kiếm. Thông thường trong một ứng dụng thì khi tìm kiếm trong một dữ liệu cực kì lớn thì ta sẽ không dùng Database như Postgres, MySQL hoặc MongoDB, mà ta sẽ lưu các dữ liệu đó vào searching Database và khi tìm kiếm dữ liệu thì ta sẽ truy vấn vào Database này, một thằng searching Database rất nổi tiếng là Elasticsearch.
Đối với searching Database thì AWS cung cấp cho ta dịch vụ AWS Opensearch.
Đây là dịch vụ mà AWS phát triển dựa trên Open Source Elasticsearch.
In-memory Database
Loại Database này sẽ lưu dữ liệu trong RAM thay vì trong ổ cứng, mục đích của việc này là để tăng tốc độ truy cập dữ liệu. Khi ta phát triển ứng dụng với hàng triệu người dùng thì ta không chỉ sử dụng Database thông thường mà cần phải kết hợp với In-memory Database nữa.
Ví dụ khi ta truy vấn một dữ liệu phức tạp và tốn thời gian thì thay vì lần nào ta cũng phải thực hiện lại câu truy vấn, thì ta chỉ việc lưu kết quả của câu truy vấn vào trong In-memory Database và lần sau nếu cần thì ta chỉ cần lấy ra sử dụng. Một vài In-memory Database nổi tiếng là Redis và Memcached.
Đối với In-memory Database thì AWS cung cấp cho ta dịch vụ AWS ElastiCache. AWS ElastiCache hỗ trợ cho ta cả hai Database là Redis và Memcached.
Graph Database
Chắc chúng ta cũng hay nghe tới thuật ngữ GraphQL, nhưng GraphQL không phải là Graph Database. Graph Database là một dạng cơ sở dữ liệu dạng Graph, thường được sử dụng khi các dữ liệu của ta có mối quan hệ với nhau khá phức tạp. Ví dụ như phần bạn bè và gợi ý kết bạn trên Facebook có thể sử dụng Graph Database để thực hiện.
Đối với Graph Database thì AWS cung cấp cho ta dịch vụ AWS Neptune. Một số tính năng nổi bật của AWS Neptune là:
- Hỗ trợ read replicas
- Backup sử dụng Amazon S3
- Point-in-time recovery
Khi sử dụng AWS Neptune thì các công việc mà ta thường làm bằng tay như hardware provisioning, software patching, software setup thì AWS sẽ làm cho ta.
Time-series Database
Đây là loại Database được thiết kế để lưu trữ dữ liệu dạng sự kiện, ví dụ như là Prometheus cũng là một dạng Time-series Database, nó được dùng để lưu trữ dữ liệu về tình trạng của hệ thống ở một thời điểm nhất định.
Thông thường dữ liệu trong Time-series Database sẽ được dùng để ta biết được ở thời điểm đó việc gì đã xảy ra và xảy ra trong bao lâu.
Đối với Time-series Database thì AWS cung cấp cho ta dịch vụ Amazon Timestream, ra mắt vào năm 2020 nhưng thật sự thì dịch vụ này rất ít người biết tới.
Ta có thể sử dụng Amazon Timestream kết hợp với các dịch vụ khác như là AWS Kinesis, AWS MSK để thiết kế một ứng dụng theo kiến trúc Event Driven.
Kết luận
Ở trên là các dịch vụ Database phổ biến của AWS mà mình đã tìm hiểu và nghe nói qua.
Tác giả Quân Huỳnh
Nếu bài viết có gì sai hoặc cần cập nhật thì liên hệ Admin.
Tham gia nhóm chat của DevOps VN tại Telegram.
Kém tiếng Anh và cần nâng cao trình độ giao tiếp: Tại sao bạn học không hiệu quả?