Bỏ qua

06.StorageRefresher

🗂️ Tổng Quan Storage Cơ Bản trên AWS: Block, File, Object & Hiệu Năng


1. Một số thuật ngữ storage quan trọng

image

1.1. Direct Attached Storage (DAS) / Local Attached

  • Định nghĩa: Ổ đĩa vật lý gắn trực tiếp vào máy (laptop/server).
  • AWS: Instance Store (đĩa gắn trực tiếp vào EC2 host).
  • Ưu điểm: Rất nhanh (super fast).
  • Nhược điểm:
  • Mất dữ liệu nếu ổ cứng hoặc host bị hỏng.
  • Mất dữ liệu nếu EC2 instance di chuyển host.

1.2. Network Attached Storage (NAS)

  • Định nghĩa: Storage truy cập qua mạng.
  • AWS: Elastic Block Store (EBS)
  • Ưu điểm: Persistent (dữ liệu bền vững), tách biệt với EC2 host, highly resilient.

1.3. Ephemeral vs Persistent Storage

  • Ephemeral Storage: Storage tạm thời, không đảm bảo lưu lâu dài (ví dụ: Instance Store).
  • Persistent Storage: Storage tồn tại bền vững, ngay cả khi instance bị terminate (ví dụ: EBS).

2. Các loại storage chính trên AWS

image

2.1. Block Storage

  • Định nghĩa: Tập hợp các block dữ liệu không có cấu trúc (structure), OS sẽ tạo file system trên đó.
  • AWS: EBS Volumes
  • Điểm cần nhớ:
    • Có thể boot OS từ EBS volume (bootable).
    • Dùng cho: OS, databases, workloads cần hiệu năng cao.
    • Có cả SSD & HDD.

2.2. File Storage

  • Định nghĩa: File system chia sẻ, truy cập qua mạng.
  • AWS: Amazon EFS
  • Điểm cần nhớ:
    • Nhiều server có thể mount cùng 1 file system (shared access).
    • Không boot được từ file storage.
    • Dùng cho: Dữ liệu chia sẻ giữa nhiều app/server.

2.3. Object Storage

  • Định nghĩa: Lưu trữ dạng object (key-value), không có hierarchy.
  • AWS: Amazon S3
  • Điểm cần nhớ:
    • Siêu scalable, truy cập bằng key.
    • Không mount được, không boot được.
    • Dùng cho: Backup, media, static web, data lake.

3. Các chỉ số đánh giá hiệu năng storage

image

3.1. IO/Block Size-kích cỡ bánh xe

  • Ý nghĩa: Kích thước mỗi lần đọc/ghi (4KB, 16KB, v.v.)
  • Ảnh hưởng: Block size lớn → cần ít IOPS hơn cho cùng throughput.

3.2. IOPS (Input/Output Operations per Second)-tốc độ xe

  • Ý nghĩa: Số lượng thao tác đọc/ghi mỗi giây (đơn vị: operations/second).
  • Ảnh hưởng: IOPS cao → tốt cho workload random access (ví dụ: database).

3.3. Throughput-tốc độ tổng thể của xe

  • Ý nghĩa: Tổng lượng dữ liệu truyền mỗi giây (MB/s).
  • Công thức: Throughput = Block Size × IOPS.
  • Ảnh hưởng: Quan trọng cho workload đọc/ghi tuần tự lớn (data warehouse, analytics).

4. Chọn loại storage nào cho từng bài toán?

Nhu cầu Loại AWS storage nên chọn
Boot EC2 instance EBS (Block Storage)
In-memory database (Redis) EBS (Block Storage)
Chia sẻ file giữa nhiều server/app EFS (File Storage)
Lưu trữ object, media, backup lớn S3 (Object Storage)
Ứng dụng cần nhiều IOPS (database OLTP) EBS SSD (Block Storage)
Workload tuần tự, backup lớn EBS HDD (Block Storage), S3

5. Tips đi thi & thực tế

5.1. Đặc điểm từng loại storage (nhớ cho exam/interview)

  • Block (EBS): Bootable, OS tạo file system, hiệu năng cao.
  • File (EFS): Chia sẻ giữa nhiều server, không boot được.
  • Object (S3): Lưu object, scale tốt, không boot/mount được.

5.2. Hiệu năng storage

  • IOPS: Cực quan trọng cho transactional (database, logs).
  • Throughput: Cực quan trọng cho sequential workload (data warehouse).
  • Block size: Ảnh hưởng throughput, block càng lớn → throughput càng cao (nếu IOPS đủ lớn).

5.3. Câu hỏi exam hay gặp

  1. "Storage nào ephemeral?" → Instance Store
  2. "Storage nào boot được EC2?" → EBS (Block)
  3. "Storage chia sẻ nhiều server?" → EFS (File)
  4. "Lưu trữ web-scale, scalable object?" → S3 (Object)

6. Best Practices thực tế

  • EC2 production: Luôn dùng EBS cho boot, S3 cho backup, EFS cho file share.
  • Database: Luôn chọn EBS SSD, monitor IOPS.
  • Scale-out app: Lưu logs/data tạm ở Instance Store, dữ liệu quan trọng ở EBS hoặc S3.
  • Big Data/Analytics: Dùng S3 làm data lake, ETL input/output.
data lake và ETL input/output

1. Data Lake (Hồ dữ liệu) là gì?

  • Định nghĩa: Data Lake là một kho lưu trữ tập trung cho phép bạn lưu trữ tất cả dữ liệu của mình, dù ở dạng có cấu trúc (structured), bán cấu trúc (semi-structured), hay phi cấu trúc (unstructured), ở bất kỳ quy mô nào.
  • Điểm khác biệt chính:
    • Data Warehouse (Kho dữ liệu): Lưu trữ dữ liệu đã được xử lý, đã có cấu trúc, được tổ chức và tối ưu hóa cho các truy vấn phân tích. Bạn phải xác định lược đồ (schema) trước khi đưa dữ liệu vào.
    • Data Lake: Lưu trữ dữ liệu ở dạng thô (raw data). Bạn có thể đưa dữ liệu vào trước, sau đó mới xác định lược đồ và cấu trúc dữ liệu khi cần sử dụng (schema-on-read).
  • Ưu điểm của Data Lake:
    • Linh hoạt: Hỗ trợ nhiều loại dữ liệu khác nhau, từ dữ liệu kinh doanh thông thường đến dữ liệu từ IoT, mạng xã hội, v.v.
    • Khả năng mở rộng: Có thể mở rộng dung lượng lưu trữ một cách dễ dàng và tiết kiệm chi phí.
    • Tăng tốc độ phân tích: Giúp các nhà khoa học dữ liệu và kỹ sư phân tích có thể khám phá và phân tích dữ liệu nhanh hơn, mà không cần phải chờ đợi quá trình xử lý ETL hoàn chỉnh.
  • Nhược điểm của Data Lake:
    • Nếu không được quản lý cẩn thận, Data Lake có thể trở thành "data swamp" (đầm lầy dữ liệu), nơi dữ liệu lộn xộn, không thể tìm thấy và không có giá trị.

2. ETL (Extract, Transform, Load) Input/Output là gì?

ETL là viết tắt của ba bước chính trong một quy trình xử lý dữ liệu:

  • E - Extract (Trích xuất): Quá trình lấy dữ liệu từ các nguồn khác nhau.
    • ETL Input (Đầu vào của ETL): Đây là các nguồn dữ liệu thô, ban đầu. Chúng có thể là:
      • Cơ sở dữ liệu (ví dụ: Oracle, SQL Server, MySQL)
      • Tệp văn bản (ví dụ: CSV, JSON, XML)
      • Nguồn dữ liệu từ các ứng dụng, API (ví dụ: Salesforce, Google Analytics)
      • Dữ liệu từ các cảm biến IoT, log hệ thống, v.v.
  • T - Transform (Biến đổi): Quá trình làm sạch, chuẩn hóa, và chuyển đổi dữ liệu để phù hợp với mục tiêu cuối cùng.
    • Quá trình xử lý: Tại bước này, dữ liệu được biến đổi (transform) theo nhiều cách, ví dụ:
      • Loại bỏ dữ liệu trùng lặp hoặc không hợp lệ.
      • Định dạng lại dữ liệu (ví dụ: chuyển đổi ngày tháng).
      • Kết hợp dữ liệu từ nhiều nguồn khác nhau.
      • Tạo ra các trường dữ liệu mới (ví dụ: tính tổng doanh thu).
  • L - Load (Tải): Quá trình tải dữ liệu đã được biến đổi vào đích cuối cùng.
    • ETL Output (Đầu ra của ETL): Đây là nơi dữ liệu sau khi đã được xử lý và làm sạch sẽ được lưu trữ. Thường là:
      • Data Warehouse (Kho dữ liệu): Dữ liệu được tổ chức theo các bảng và lược đồ đã định sẵn.
      • Data Mart: Một phiên bản nhỏ hơn của Data Warehouse, tập trung vào một lĩnh vực kinh doanh cụ thể.
      • Data Lake: Mặc dù Data Lake có thể là đầu vào, nó cũng có thể là đầu ra, đặc biệt khi dữ liệu đã được làm sạch và chuẩn hóa một phần (ví dụ: lưu trữ dữ liệu đã được làm sạch để các ứng dụng khác sử dụng).

Tóm lại:

  • Data Lake: Là một kho lưu trữ lớn, chứa dữ liệu ở dạng thô. Nó đóng vai trò là nơi lưu trữ ban đầu cho rất nhiều loại dữ liệu.
  • ETL: Là một quy trình để xử lý dữ liệu.
    • Input (Đầu vào) của ETL: Chính là các nguồn dữ liệu thô, có thể nằm trong Data Lake hoặc các hệ thống khác.
    • Output (Đầu ra) của ETL: Chính là nơi lưu trữ dữ liệu đã được xử lý và sẵn sàng để phân tích, thường là Data Warehouse hoặc Data Mart.

Hai khái niệm này thường đi đôi với nhau trong các kiến trúc dữ liệu hiện đại, nơi Data Lake đóng vai trò là nguồn dữ liệu cho quy trình ETL.


Ghi nhớ:
- Block = Bootable, mount được, performance cao
- File = Shared, không boot được
- Object = Siêu scalable, không mount/boot, truy cập qua key