EngineeringSenior DeveloperSQL Deep Dive

Các case study thực tế cho SQL Server

1. Xử lý khối lượng đơn hàng cao (200k/h)

Kiến trúc

  • Database per Service: OrderServiceDB (Azure SQL Managed Instance).
  • Partitioning: Bảng Orders được partition theo OrderDate (monthly).
  • CDC + Azure Data Factory: CDC bật trên Orders, ADF copy CDC sang Data Lake mỗi 5 phút.
  • Synapse DW: Đọc dữ liệu từ Data Lake, tạo view vw_OrderStats để phân tích thời gian thực.
  • Backup: PITR + LTR (30 ngày) cho OLTP, weekly full + differential cho DW.

Kết quả

  • Latency ghi < 30 ms, throughput > 10 k TPS.
  • Analytic query trả về < 2 s nhờ partition và column‑store.
  • RPO = 5 phút, RTO = 15 phút.

2. Multi‑tenant SaaS với cách ly dữ liệu

Kiến trúc

  • Elastic Pool chứa nhiều database nhỏ, mỗi tenant có database riêng (Tenant_123, Tenant_456).
  • Shared Schema: mỗi DB có cùng schema (dbo.Customers, dbo.Orders).
  • Backup: Full backup cho từng DB hàng ngày, log backup mỗi 10 phút.
  • Restore: Khi tenant yêu cầu khôi phục, dùng RESTORE DATABASE Tenant_123 FROM DISK = ... WITH REPLACE.
  • Security: Managed Identity cho App Service, Role‑Based Access Control trên mỗi DB.

Kết quả

  • Isolation mạnh, không có cross‑tenant lock.
  • Chi phí tối ưu nhờ Elastic Pool.
  • Thời gian restore < 3 phút cho mỗi tenant.

3. GDPR dữ liệu xóa an toàn

Kiến trúc

  • Row‑Level Security (RLS) để chỉ cho phép truy cập dữ liệu của tenant.
  • Soft‑Delete: Thêm cột IsDeleted BIT, DeletedAt DATETIME2.
  • Scheduled Job (SQL Agent hoặc Azure Automation) chạy mỗi ngày, xóa vĩnh viễn các bản ghi IsDeleted = 1 và DeletedAt < DATEADD(day, -30, GETUTCDATE()).
  • Backup Encryption: Sử dụng WITH ENCRYPTION và TDE.

Kết quả

  • Tuân thủ GDPR, dữ liệu được xóa hoàn toàn sau 30 ngày.
  • Không ảnh hưởng tới hiệu năng truy vấn do index trên IsDeleted.

4. Data Lake ingestion cho báo cáo lịch sử

Kiến trúc

  • SQL Server (on‑prem) → Self‑hosted IR → ADF Copy sang ADLS raw (Parquet).
  • Mapping Data Flow chuyển đổi, làm sạch, lưu vào curated layer.
  • Synapse Serverless query trực tiếp từ curated layer để tạo báo cáo Power BI.
  • Retention: raw giữ 30 ngày, curated 2 năm.

Kết quả

  • Giảm tải trên OLTP DB 30 % nhờ offload báo cáo.
  • Thời gian cập nhật báo cáo < 5 phút.
  • Chi phí lưu trữ tối ưu bằng tiering.

File thuộc mục SQL Deep‑Dive của senior‑dotnet‑wiki.