Thursday, November 21, 2024

[AWS] Databases

-

Choosing the Right Database

AWS cung cấp nhiều loại cơ sở dữ liệu quản lý để lựa chọn phù hợp với kiến ​​trúc của bạn. Khi lựa chọn một cơ sở dữ liệu, cần cân nhắc các câu hỏi sau để chọn đúng cơ sở dữ liệu:

  • Workload có tính chất read-heavy, write-heavy hay balanced workload? Yêu cầu về thông lượng (throughput) như thế nào? Các yêu cầu thông lượng có thay đổi hay không? Cần scale hay giảm scale trong khoảng thời gian nào trong ngày?
  • Khối lượng dữ liệu cần lưu trữ và thời gian lưu trữ là bao lâu? Các đối tượng (object) được truy cập như thế nào? Kích thước trung bình của đối tượng là bao nhiêu?
  • Độ bền của dữ liệu (data durability)? Cơ sở dữ liệu nào sẽ là nguồn sự thật (source of truth) cho dữ liệu?
  • Yêu cầu về độ trễ (latency)? Số người dùng đồng thời (concurrent users) là bao nhiêu?
  • Mô hình dữ liệu là gì? Làm thế nào để truy vấn dữ liệu? Join như thế nào? Cấu trúc của dữ liệu có đơn giản hay phức tạp (semi-structured)? Sử dụng RDBMS hay NoSQL?
  • Chi phí về giấy phép sử dụng? Có nên chuyển sang sử dụng Cloud Native DB như Aurora hay không?

Qua đó, bạn có thể chọn được cơ sở dữ liệu phù hợp với nhu cầu của mình và đảm bảo cho việc lưu trữ và truy xuất dữ liệu hiệu quả, tiết kiệm chi phí và thời gian.

Database Types

Đây là danh sách các loại cơ sở dữ liệu do Amazon quản lý trên nền tảng AWS và mô tả tóm tắt về chúng:

  • RDBMS (= SQL / OLTP): Amazon RDS và Aurora – tốt cho các truy vấn phức tạp và các truy vấn sử dụng “join”.
  • NoSQL: DynamoDB (~JSON), ElastiCache (key / value pairs), Neptune (graphs), DocumentDB (for MongoDB), Keyspaces (for Apache Cassandra) – không hỗ trợ “join” hoặc SQL, dữ liệu được tổ chức theo dạng key / value hoặc JSON.
  • Object Store: Amazon S3 (lưu trữ các đối tượng lớn) / Glacier (lưu trữ sao lưu / bản ghi lưu trữ).
  • Data Warehouse (= SQL Analytics / BI): Amazon Redshift (OLAP), Athena, EMR.
  • Search: OpenSearch (JSON) – dùng để tìm kiếm văn bản không cấu trúc.
  • Graphs: Amazon Neptune – dùng để hiển thị các quan hệ giữa dữ liệu.
  • Ledger: Amazon Quantum Ledger Database – dùng để lưu trữ các thông tin tài chính như tiền tệ và thông tin tài khoản.
  • Time series: Amazon Timestream – dùng để lưu trữ các thông tin về thời gian theo dạng chuỗi thời gian.

Lưu ý rằng một số cơ sở dữ liệu được đề cập trong phần Dữ liệu và Phân tích dữ liệu. Mỗi loại cơ sở dữ liệu có tính năng và mục đích sử dụng khác nhau, vì vậy khi lựa chọn cơ sở dữ liệu phù hợp cho dự án của bạn, bạn cần xem xét các yêu cầu cụ thể về hiệu suất, khả năng mở rộng, tính sẵn sàng, cấu trúc dữ liệu, phân tích dữ liệu, chi phí và các yếu tố khác.

Amazon RDS – Summary

RDS (Relational Database Service) là dịch vụ quản lý cơ sở dữ liệu quan hệ được cung cấp bởi AWS. Nó cung cấp quản lý dữ liệu, đảm bảo tính sẵn sàng, bảo mật và độ tin cậy của cơ sở dữ liệu. RDS hỗ trợ các cơ sở dữ liệu quan hệ phổ biến như PostgreSQL, MySQL, Oracle, SQL Server và MariaDB.

Khi sử dụng RDS, người dùng có thể tùy chỉnh kích thước và loại ổ đĩa EBS để phù hợp với nhu cầu lưu trữ của mình. Ngoài ra, RDS cung cấp khả năng tự động mở rộng lưu trữ và hỗ trợ đọc đa vùng và đa khu vực.

RDS cũng hỗ trợ tính năng bảo mật thông qua IAM, Security Groups, KMS và SSL trong quá trình truyền dữ liệu. Nó cũng cung cấp tính năng sao lưu tự động và phục hồi điểm thời gian (lên đến 35 ngày) để đảm bảo tính sẵn sàng và độ tin cậy của cơ sở dữ liệu.

Ngoài ra, RDS còn cung cấp tính năng bảo mật với xác thực IAM và tích hợp với Secrets Manager để quản lý thông tin xác thực. Nó cũng cung cấp tính năng tùy chỉnh để truy cập và tùy chỉnh các truy vấn cơ sở dữ liệu đối với những cơ sở dữ liệu quan hệ như Oracle và SQL Server.

RDS được sử dụng để lưu trữ các tập dữ liệu quan hệ, thực hiện các truy vấn SQL và giao dịch, phù hợp với các ứng dụng OLTP (Online Transaction Processing) như các ứng dụng thương mại điện tử, quản lý khách hàng, quản lý tài sản, quản lý kho và nhiều ứng dụng khác.

Amazon Aurora – Summary

Amazon Aurora là một dịch vụ cơ sở dữ liệu quan hệ do Amazon cung cấp, với tính năng tương thích API cho PostgreSQL và MySQL. Aurora được thiết kế để cung cấp hiệu suất, độ sẵn sàng cao và khả năng mở rộng tự động, đồng thời giảm thiểu các tác vụ quản lý cơ sở dữ liệu. Sau đây là một số đặc điểm của Aurora:

  • Lưu trữ: Dữ liệu được lưu trữ trên 6 bản sao (replicas) trong 3 khu vực khác nhau, giúp cải thiện tính khả dụng và tự phục hồi. Aurora cũng hỗ trợ tự động mở rộng lưu trữ khi dữ liệu tăng.
  • Tính toán: Aurora sử dụng một cụm các DB Instance ở nhiều khu vực khác nhau để cung cấp tính toán. Aurora cũng hỗ trợ tự động mở rộng các bản sao đọc (Read Replicas) để cải thiện hiệu suất đọc.
  • Cụm: Aurora cung cấp các endpoint tùy chỉnh cho các instance ghi và đọc. Điều này cho phép các ứng dụng đọc và ghi dữ liệu vào cùng một cụm cơ sở dữ liệu Aurora.
  • Bảo mật / giám sát / bảo trì: Aurora cung cấp các tính năng bảo mật, giám sát và bảo trì giống như RDS. Ví dụ: AWS Identity and Access Management (IAM), Security Groups, Key Management Service (KMS), SSL trong transit, Backup tự động với khả năng phục hồi tại thời điểm nhất định (lên đến 35 ngày).
  • Aurora Serverless: Aurora cũng hỗ trợ Aurora Serverless, một tùy chọn dựa trên nhu cầu tính toán linh hoạt và không cần lập kế hoạch cho khối lượng công việc không ổn định hoặc ngắn hạn.
  • Aurora Multi-Master: Aurora cung cấp Aurora Multi-Master để cải thiện tính sẵn sàng của các ứng dụng yêu cầu liên tục ghi dữ liệu và sự cố phát sinh khi các bản sao chính (Primary) bị lỗi.
  • Aurora Global: Aurora hỗ trợ Aurora Global, cho phép sao chép dữ liệu đến 16 bản sao đọc trong cùng một khu vực và khả năng sao chép dữ liệu trong vòng một giây.
  • Aurora Machine Learning: Aurora hỗ trợ Aurora Machine Learning, cho phép bạn sử dụng các dịch vụ Amazon SageMaker và Amazon Comprehend để thực hiện

Amazon ElastiCache – Summary

  • Managed Redis / Memcached là các dịch vụ tương tự như RDS, nhưng được dùng để lưu trữ cache.
  • Đây là các hệ thống lưu trữ dữ liệu trong bộ nhớ, với độ trễ thấp hơn một mili giây.
  • Cần phải cung cấp một loại EC2 instance type để sử dụng dịch vụ.
  • Hỗ trợ cho Clustering (Redis) và Multi AZ, Read Replicas (sharding).
  • Các tính năng bảo mật bao gồm IAM, Security Groups, KMS, Redis Auth.
  • Có tính năng Backup / Snapshot / Point in time restore.
  • Cần thay đổi một số mã ứng dụng để sử dụng tối ưu dịch vụ này.
  • Các trường hợp sử dụng: Lưu trữ Key / Value, đọc thường xuyên, ghi ít, lưu kết quả cache cho các truy vấn cơ sở dữ liệu, lưu trữ dữ liệu phiên cho các trang web, không thể sử dụng SQL.

Amazon DynamoDB – Summary

Amazon DynamoDB là một cơ sở dữ liệu không có quan hệ và được quản lý dưới dạng dịch vụ của AWS. Đây là công nghệ độc quyền của AWS, cung cấp khả năng lưu trữ và truy xuất dữ liệu với độ trễ chỉ tính bằng mili giây. DynamoDB có thể thay thế cho ElastiCache như một kho lưu trữ key/value (lưu trữ dữ liệu phi cấu trúc dưới dạng key/value như dữ liệu phi cấu trúc trong phiên của người dùng, sử dụng tính năng TTL để xóa dữ liệu), hoặc được sử dụng cho các ứng dụng serverless như hệ thống quản lý phiên, hoặc như một cơ sở dữ liệu cho các ứng dụng web đơn giản.

DynamoDB hoạt động dựa trên các mode capacity, bao gồm provisioned capacity với tùy chọn tự động mở rộng hoặc on-demand capacity. Nó được cấu hình với tính sẵn sàng cao, multi AZ theo mặc định, Read và Writes được phân tách và hỗ trợ tính năng transaction capability. Nó cung cấp cụm DAX cho bộ nhớ đệm đọc, độ trễ đọc microsecond.

DynamoDB hỗ trợ việc xử lý sự kiện thông qua DynamoDB Streams để tích hợp với AWS Lambda hoặc Kinesis Data Streams. Nó có tính năng Global Table cho cài đặt active-active. Nó cũng cung cấp các tính năng sao lưu tự động lên đến 35 ngày với tính năng Point-in-Time Restore (khôi phục đến bảng mới), hoặc các sao lưu theo yêu cầu.

DynamoDB cho phép xuất dữ liệu ra S3 mà không cần sử dụng RCU trong cửa sổ PITR, hoặc nhập dữ liệu từ S3 mà không cần sử dụng WCU. Nó rất hữu ích để phát triển các schema nhanh chóng. DynamoDB không có sẵn ngôn ngữ truy vấn SQL, do đó sử dụng phương thức truy vấn trực tiếp.

Tóm lại, DynamoDB là một lựa chọn tốt cho các ứng dụng serverless, ứng dụng web đơn giản hoặc các hệ thống lưu trữ dữ liệu phi cấu trúc dưới dạng key/value. Nó không hỗ trợ ngôn ngữ truy vấn SQL, nhưng cung cấp nhiều tính năng và lựa chọn về mode capacity để đáp ứng các nhu cầu khác nhau.

Amazon S3 – Summary

S3 (Simple Storage Service) là một dịch vụ lưu trữ đối tượng (object storage) của AWS, được thiết kế để lưu trữ và truy xuất các đối tượng như file, hình ảnh, video, tài liệu… S3 là một dịch vụ serverless, tức là không cần quản lý máy chủ, có khả năng tự động mở rộng vô hạn, cho phép lưu trữ các đối tượng có kích thước lên tới 5 TB.

S3 có các lớp lưu trữ như S3 Standard, S3 Infrequent Access, S3 Intelligent, S3 Glacier, cho phép tùy chỉnh chi phí và tính sẵn sàng của dữ liệu. S3 có các tính năng như phiên bản, mã hóa, sao chép, truy cập thông qua các chính sách, xác thực IAM, Object/Vault Lock. S3 cũng hỗ trợ mã hóa bảo vệ dữ liệu bằng SSE-S3, SSE-KMS, SSE-C, mã hóa trên phía khách hàng, TLS.

S3 cung cấp các tính năng tối ưu hiệu suất như upload đa phần, S3 Transfer Acceleration, S3 Select cho phép lấy ra một phần của tập tin, và S3 Event Notifications (SNS, SQS, Lambda, EventBridge) cho phép tự động hóa các hành động dựa trên sự kiện trên S3.

S3 được sử dụng để lưu trữ các tập tin tĩnh, cũng như là key value store cho các file lớn, lưu trữ hình ảnh, video, dữ liệu của trang web, cho phép phân quyền truy cập, và tự động sao lưu.

DocumentDB

Aurora và DocumentDB là 2 dịch vụ cơ sở dữ liệu được cung cấp bởi AWS. Aurora được hiểu như một “AWS-implementation” của PostgreSQL / MySQL, trong khi DocumentDB cung cấp dịch vụ quản lý cơ sở dữ liệu MongoDB.

MongoDB là một cơ sở dữ liệu NoSQL được sử dụng để lưu trữ, truy vấn và tạo chỉ mục cho dữ liệu JSON. DocumentDB có những khái niệm triển khai tương tự như Aurora, nghĩa là nó được quản lý hoàn toàn và đảm bảo sẵn sàng cao với tính sẵn sàng cao thông qua sao chép trên 3 khu vực địa lý khác nhau.

DocumentDB tự động mở rộng lưu trữ theo khoảng cách tăng lên 10GB, lên tới 64TB. Nó có khả năng tự động điều chỉnh với tải công việc hàng triệu yêu cầu mỗi giây, đảm bảo hiệu suất và sẵn sàng của dịch vụ.

Amazon Neptune

Amazon Neptune là một cơ sở dữ liệu đồ thị được quản lý hoàn toàn. Một tập dữ liệu đồ thị phổ biến có thể là một mạng xã hội, với người dùng có bạn bè, các bài đăng có bình luận, các bình luận có lượt thích từ người dùng, người dùng chia sẻ và thích các bài đăng,… Cơ sở dữ liệu Neptune được thiết kế để tối ưu hóa cho những truy vấn phức tạp liên quan đến các tập dữ liệu kết nối mạnh mẽ. Nó có thể lưu trữ đến hàng tỷ quan hệ và truy vấn đồ thị với độ trễ tính bằng mili giây. Neptune được phân phối trên nhiều khu vực và có tính sẵn sàng cao nhờ khả năng sao lưu dữ liệu trên nhiều khu vực và sao chép đọc đến 15 bản. Neptune rất phù hợp cho các ứng dụng đòi hỏi xử lý các tập dữ liệu đồ thị lớn, chẳng hạn như các hệ thống phát hiện gian lận, các hệ thống đề xuất và các hệ thống mạng xã hội.

Amazon Keyspaces (for Apache Cassandra)

• Apache Cassandra là một cơ sở dữ liệu phân tán NoSQL mã nguồn mở
• Là một dịch vụ cơ sở dữ liệu tương thích với Apache Cassandra được quản lý bởi AWS
• Serverless, có khả năng mở rộng, hoàn toàn được quản lý bởi AWS
• Tự động thay đổi quy mô bảng lên/xuống dựa trên lưu lượng của ứng dụng
• Bảng được sao chép 3 lần trên nhiều AZ
• Sử dụng ngôn ngữ truy vấn Cassandra (CQL)
• Độ trễ đơn chữ số trong mili giây ở mọi quy mô, hàng ngàn yêu cầu mỗi giây
• Khả năng: Chế độ yêu cầu hoặc chế độ cung cấp với tự động thay đổi quy mô
• Mã hóa, sao lưu, khôi phục điểm thời gian (PITR) lên đến 35 ngày
• Các trường hợp sử dụng: lưu trữ thông tin thiết bị IoT, dữ liệu chuỗi thời gian, …

Amazon QLDB

QLDB là viết tắt của “Quantum Ledger Database”. Một cuốn sổ cái (ledger) là một cuốn sách ghi lại các giao dịch tài chính. QLDB là một dịch vụ cơ sở dữ liệu hoàn toàn quản lý, serverless, khả dụng cao, được sao chép trên 3 khu vực khác nhau (AZ). QLDB được sử dụng để xem lại lịch sử của tất cả các thay đổi được thực hiện trên dữ liệu ứng dụng của bạn theo thời gian. Hệ thống không thể bị sửa đổi hoặc loại bỏ, và có thể được xác minh mật mã hóa. QLDB cung cấp hiệu suất tốt hơn gấp 2-3 lần so với các khung blockchain ledger thông thường, và cho phép bạn thao tác dữ liệu bằng cách sử dụng SQL. QLDB khác với Amazon Managed Blockchain ở chỗ không có thành phần phi tập trung, phù hợp với các quy tắc quy định tài chính.

Amazon Timestream

Amazon Timestream là một dịch vụ cơ sở dữ liệu chuỗi thời gian, được quản lý hoàn toàn bởi AWS. Dịch vụ này được thiết kế để lưu trữ và phân tích các sự kiện theo thời gian, như dữ liệu từ các cảm biến IoT hoặc các ứng dụng vận hành. Amazon Timestream tự động điều chỉnh khả năng chứa dữ liệu của nó để đáp ứng với nhu cầu sử dụng, giúp bạn lưu trữ và phân tích hàng ngàn tỷ sự kiện mỗi ngày.

So với cơ sở dữ liệu quan hệ truyền thống, Amazon Timestream có tốc độ truy vấn gấp hàng nghìn lần và chi phí chỉ bằng khoảng một phần mười của cơ sở dữ liệu quan hệ. Nó hỗ trợ truy vấn định kỳ, ghi đa đo lường, tương thích với SQL và nhiều tính năng khác.

Dữ liệu trong Amazon Timestream được phân chia thành hai tầng lưu trữ: tầng lưu trữ mới nhất được giữ trong bộ nhớ và tầng lưu trữ lịch sử được giữ trong kho lưu trữ tối ưu chi phí. Nó cũng đi kèm với các tính năng tích hợp để phân tích chuỗi thời gian, giúp bạn xác định các mẫu trong dữ liệu của mình gần như ngay lập tức. Amazon Timestream cũng cung cấp mã hóa trong quá trình chuyển và lưu trữ dữ liệu.

Một số ứng dụng của Amazon Timestream bao gồm các ứng dụng IoT, các ứng dụng vận hành và phân tích thời gian thực.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories