Ngân hàng đề — Microsoft Azure Database Administrator

Tìm thấy 217 câu.

Câu 51 Chọn nhiều đáp án
You have an Azure SQL database. The database contains a table that uses a columnstore index and is accessed infrequently.
You enable columnstore archival compression.
What are two possible results of the configuration? Each correct answer presents a complete solution.
NOTE: Each correct selection is worth one point.
  1. A Queries that use the index will consume more disk I/O.
  2. B Queries that use the index will retrieve fewer data pages.
  3. C The index will consume more disk space.
  4. D The index will consume more memory.
  5. E Queries that use the index will consume more CPU resources.
Xem giải thích

🧩 Phân tích chi tiết nội dung câu hỏi

Câu hỏi tập trung vào Azure SQL Database, cụ thể là một bảng sử dụng columnstore index (chỉ mục cột) và được truy cập không thường xuyên (infrequently accessed). Sau khi kích hoạt columnstore archival compression (nén lưu trữ archival cho columnstore), cần xác định hai kết quả có thể xảy ra từ cấu hình này.

📘 Giải thích ngữ cảnh kỹ thuật:

  • Columnstore index lưu trữ dữ liệu theo cột thay vì hàng, rất hiệu quả cho phân tích dữ liệu lớn.
  • Archival compression là chế độ nén mạnh mẽ hơn (columnstore_archive), áp dụng cho các rowgroup (nhóm hàng) không hoạt động (inactive), thường dùng cho dữ liệu cũ, ít truy cập. Nó giảm kích thước lưu trữ đáng kể (khoảng 5-15 lần so với không nén), nhưng đánh đổi bằng chi phí CPU cao hơn khi giải nén lúc query.
  • Câu hỏi kiểu multi-select (chọn nhiều đáp án đúng, mỗi cái worth 1 point), dựa trên tài liệu chính thức Microsoft Azure SQL (cập nhật đến phiên bản 2023-2026, không thay đổi cơ bản).

Nguồn tham khảo chính:

✅ Đáp án đúng (hai lựa chọn hoàn chỉnh)

Hai đáp án đúng là:

  1. Queries that use the index will retrieve fewer data pages.
  2. Queries that use the index will consume more CPU resources.

Lý do lựa chọn 🛠️:

  • Archival compression nén dữ liệu chặt chẽ hơn (real-time compression), dẫn đến ít data pages hơn cần đọc từ đĩa → query nhanh hơn về I/O nhưng tốn CPU để giải nén. Điều này phù hợp với dữ liệu infrequently accessed, ưu tiên tiết kiệm lưu trữ.

📋 Giải thích TẤT CẢ các phương án (đúng/sai)

Dưới đây là phân tích chi tiết từng lựa chọn, giữ nguyên văn bản gốc tiếng Anh. Mỗi phương án được đánh giá dựa trên hành vi của archival compression:

  • ❌ [SAI] Queries that use the index will consume more disk I/O.
    Giải thích: Archival compression làm dữ liệu nhỏ hơn, nên query giảm disk I/O (ít pages đọc hơn), không tăng. Điều này ngược lại với dự đoán sai lầm.

  • ✅ [ĐÚNG] Queries that use the index will retrieve fewer data pages.
    Giải thích: Nén archival tạo rowgroup nhỏ gọn hơn (giảm ~75-90% kích thước), dẫn đến ít data pages cần retrieve từ storage. Đây là lợi ích chính cho dữ liệu ít truy cập.

  • ❌ [SAI] The index will consume more disk space.
    Giải thích: Ngược lại, archival compression giảm disk space đáng kể (lên đến 15x nhỏ hơn so với không nén), tối ưu cho archival data.

  • ❌ [SAI] The index will consume more memory.
    Giải thích: Compression không tăng memory usage cho index; nó chỉ ảnh hưởng lúc decompress tạm thời trong query buffer, nhưng tổng thể không tiêu tốn memory hơn so với chế độ thường.

  • ✅ [ĐÚNG] Queries that use the index will consume more CPU resources.
    Giải thích: Để đọc dữ liệu nén archival, SQL Server phải decompress on-the-fly, tốn CPU cao hơn (khoảng 2-3x so với real-time compression). Phù hợp đánh đổi cho dữ liệu ít dùng.

🔍 Lưu ý cuối: Cấu hình này lý tưởng cho workload analytical với cold data. Nếu dữ liệu hot (thường truy cập), tránh dùng để giảm CPU overhead. Kiểm tra bằng DMV như sys.dm_db_column_store_row_group_physical_stats.

Câu 52
Note: This question is part of a series of questions that present the same scenario. Each question in the series contains a unique solution that might meet the stated goals. Some question sets might have more than one correct solution, while others might not have a correct solution.
After you answer a question in this section, you will NOT be able to return to it. As a result, these questions will not appear in the review screen.
You have an Azure Data Lake Storage account that contains a staging zone.
You need to design a daily process to ingest incremental data from the staging zone, transform the data by executing an R script, and then insert the transformed data into a data warehouse in Azure Synapse Analytics.
Solution: You use an Azure Data Factory schedule trigger to execute a pipeline that copies the data to a staging table in the data warehouse, and then uses a stored procedure to execute the R script.
Does this meet the goal?
  1. A Yes
  2. B No
Xem giải thích

🧩 Phân tích chi tiết nội dung câu hỏi

Câu hỏi thuộc dạng case study trong kỳ thi chứng chỉ Azure (như DP-203: Data Engineering on Microsoft Azure), nơi có một tình huống mô tả chung và các giải pháp khác nhau được đánh giá xem có đạt mục tiêu hay không. Mục tiêu chính (goal): Thiết kế quy trình hàng ngày để:

  • Ingest dữ liệu tăng dần (incremental data) từ vùng staging trong Azure Data Lake Storage (ADLS).
  • Chuyển đổi (transform) dữ liệu bằng cách thực thi một R script.
  • Chèn (insert) dữ liệu đã chuyển đổi vào data warehouse trong Azure Synapse Analytics (thường ám chỉ Dedicated SQL Pool).

Giải pháp được đề xuất (Solution):

  • Sử dụng Azure Data Factory (ADF) schedule trigger để kích hoạt pipeline hàng ngày.
  • Pipeline copy dữ liệu vào staging table trong data warehouse.
  • Sau đó, sử dụng stored procedure để thực thi R script.

Câu hỏi: Does this meet the goal? (Giải pháp này có đạt mục tiêu không?).
✅ Đáp án đúng: No
Lý do lựa chọn: Giải pháp KHÔNG đạt mục tiêu vì Azure Synapse Analytics Dedicated SQL Pool (data warehouse tiêu chuẩn) không hỗ trợ thực thi R script qua stored procedure. Stored procedure chỉ chạy T-SQL thuần túy. Mặc dù có sp_execute_external_script cho Python (external scripts), nhưng R không được hỗ trợ chính thức trong Synapse SQL pools (chỉ Spark pools hỗ trợ R qua SparkR). Ngoài ra, giải pháp không rõ ràng về cách xử lý incremental data (chỉ "copies the data" có thể là full copy, không hiệu quả hàng ngày). Quy trình này thiếu tính khả thi và scalability cho transformation bằng R. (Kiến thức cập nhật đến 2026: Synapse vẫn ưu tiên Python cho SQL external scripts, R chủ yếu qua Spark.)

📘 Tài liệu tham khảo:

🛠️ Giải thích tất cả các phương án trả lời

  • Yes ❌ SAI
    Phương án này sai vì giả định giải pháp hoàn hảo đạt mục tiêu. Thực tế, stored procedure trong Synapse SQL pool không thể thực thi R script (không có runtime R chính thức như Python). Copy data qua ADF có thể làm được, nhưng transformation R thất bại, dẫn đến không insert được dữ liệu đã transform đúng cách. Giải pháp cũng không đảm bảo incremental (cần thêm logic như watermark hoặc Delta time ở ADF copy activity).

  • No ✅ ĐÚNG
    Phương án này đúng vì giải pháp không đáp ứng đầy đủ goal. Cụ thể:

    • ✅ ADF schedule trigger và pipeline copy từ ADLS sang staging table: OK cho ingest, nhưng cần config incremental (ví dụ: sử dụng Binary metadata hoặc LastModified).
    • ❌ Stored procedure execute R script: Không khả thi ở Synapse SQL pool (data warehouse). R chỉ chạy tốt ở Synapse Spark pool qua notebooks (R kernel hoặc SparkR), hoặc Azure Databricks với R support. External scripts ở SQL pool chỉ cho Python từ runtime 2023+.
    • Hậu quả: Quy trình dừng ở transformation, không insert được dữ liệu transform vào DW. Cần giải pháp thay thế như ADF + Synapse notebook activity hoặc Spark job.

🧩 Gợi ý giải pháp đúng thay thế (dựa kiến thức 2026): Sử dụng ADF pipeline với Synapse Spark notebook activity (hỗ trợ R), kết hợp incremental load từ ADLS (sử dụng Delta Lake format), rồi sink vào Synapse SQL pool qua PolyBase hoặc COPY command. Điều này đảm bảo scalability và hỗ trợ R đầy đủ!

Câu 53
Note: This question is part of a series of questions that present the same scenario. Each question in the series contains a unique solution that might meet the stated goals. Some question sets might have more than one correct solution, while others might not have a correct solution.
After you answer a question in this section, you will NOT be able to return to it. As a result, these questions will not appear in the review screen.
You have an Azure SQL database named Sales.
You need to implement disaster recovery for Sales to meet the following requirements:
✑ During normal operations, provide at least two readable copies of Sales.
✑ Ensure that Sales remains available if a datacenter fails.
Solution: You deploy an Azure SQL database that uses the General Purpose service tier and geo-replication.
Does this meet the goal?
  1. A Yes
  2. B No
Xem giải thích

🧩 Phân tích câu hỏi trắc nghiệm về Azure SQL Database

Xin chào! Tôi là Microsoft Azure Database Administrator (DBA) với kinh nghiệm chuyên sâu về Azure SQL Database. 📘 Tôi sẽ phân tích chi tiết câu hỏi theo yêu cầu của bạn, dựa trên kiến thức cập nhật mới nhất từ Microsoft Azure đến năm 2026 (Azure SQL Database vCore model phiên bản hiện tại hỗ trợ Active Geo-Replication đầy đủ trên tất cả service tier, bao gồm General Purpose). Chủ đề thực tế là Azure SQL Database, không phải AWS (có thể là nhầm lẫn nhỏ). Hãy cùng phân tích! 🛠️

1. Giải thích nội dung câu hỏi một cách chi tiết và rõ ràng ✅

Câu hỏi thuộc dạng series questions (câu hỏi chuỗi tình huống) trong kỳ thi chứng chỉ Microsoft Azure (như AZ-104 hoặc AZ-305), nơi mỗi giải pháp được đánh giá riêng lẻ xem có đáp ứng mục tiêu hay không.
Tình huống (Scenario):

  • Bạn có một cơ sở dữ liệu Azure SQL tên Sales.
  • Yêu cầu disaster recovery (khôi phục thảm họa):
    • Trong hoạt động bình thường: Cung cấp ít nhất hai bản sao có thể đọc được (readable copies) của Sales. (Nghĩa là primary database + ít nhất một secondary readable replica).
    • Đảm bảo Sales vẫn khả dụng nếu một datacenter thất bại (datacenter failure thường ám chỉ sự cố ở mức region hoặc availability zone lớn, yêu cầu cơ chế failover cross-region).

Giải pháp đề xuất (Solution): Deploy một Azure SQL database sử dụng General Purpose service tier và geo-replication (cụ thể là Active Geo-Replication).

Câu hỏi: Giải pháp này có đáp ứng mục tiêu không? (Yes/No).
🧩 Mục tiêu chính: Kết hợp High Availability (HA) cục bộ + Disaster Recovery (DR) cross-region, với readable replicas trong hoạt động thường ngày.

2. Đáp án đúng và lý do lựa chọn ✅

Đáp án đúng: Yes
Lý do:

  • General Purpose (GP) service tier hỗ trợ đầy đủ Active Geo-Replication, cho phép tạo primary + tối đa 4 readable secondary replicas ở các region khác nhau. Trong hoạt động bình thường, bạn có ít nhất hai readable copies (primary + 1 geo-secondary).
  • Nếu datacenter (region) thất bại, bạn có thể manual failover hoặc sử dụng auto-failover groups để chuyển sang secondary mà không mất dữ liệu (RPO gần zero, RTO vài phút). GP tier kết hợp zone-redundant HA cục bộ (tự động trong region) + geo-rep cho DR toàn diện.
  • Giải pháp "deploy... and geo-replication" ngụ ý cấu hình Sales (hoặc secondary) với GP tier và kích hoạt geo-replication, hoàn toàn khả thi cho existing DB như Sales.
    ✅ Hoàn hảo khớp yêu cầu! Không cần Business Critical tier (có local readable replicas) vì GP đã đủ với geo-readable copies.

3. Giải thích tất cả các phương án (đúng và sai) 🧩

  • Yes ✅
    Đúng vì: Như giải thích trên, Active Geo-Replication trên GP tier cung cấp readable secondaries cross-region, đáp ứng "at least two readable copies" (primary + geo-secondary). Đồng thời hỗ trợ failover nếu datacenter fail, đảm bảo availability. Trong Azure SQL vCore (2026), GP tier là lựa chọn cost-effective cho DR này, với zone-redundancy mặc định cho HA intra-region. Không vi phạm bất kỳ hạn chế nào.

  • No ❌
    Sai vì: Giải pháp hoàn toàn đáp ứng, không có lý do từ chối. Một số người nhầm lẫn rằng GP tier thiếu "local readable replicas" (chỉ có ở Business Critical với 3 sync replicas), nhưng yêu cầu chỉ cần readable copies (geo-secondaries đủ), không chỉ định local. "Datacenter fails" được xử lý tốt qua geo-failover. Chọn No sẽ bỏ lỡ tính năng chuẩn của Azure SQL.

6. Tài liệu tham khảo 📘

Kết luận: Giải pháp Yes là lựa chọn tối ưu! Nếu bạn có câu hỏi khác trong series hoặc cần script PowerShell triển khai, hãy cho tôi biết nhé. 🚀

Câu 54
You are designing a streaming data solution that will ingest variable volumes of data.
You need to ensure that you can change the partition count after creation.
Which service should you use to ingest the data?
  1. A Azure Event Hubs Standard
  2. B Azure Stream Analytics
  3. C Azure Data Factory
  4. D Azure Event Hubs Dedicated
Xem giải thích

🧩 Phân tích nội dung câu hỏi

Câu hỏi yêu cầu thiết kế một giải pháp xử lý dữ liệu streaming với khối lượng dữ liệu biến đổi (variable volumes of data). Yêu cầu chính là đảm bảo có thể thay đổi số lượng partition sau khi tạo (change the partition count after creation). Chúng ta cần chọn dịch vụ phù hợp để ingest dữ liệu (tiêu thụ dữ liệu streaming vào hệ thống).
🛠️ Partition trong Azure Event Hubs là đơn vị phân phối dữ liệu song song, giúp scale throughput. Trong hầu hết các tier cơ bản, partition count bị khóa cố định sau khi tạo, dẫn đến khó scale linh hoạt với dữ liệu biến động. Câu hỏi tập trung vào dịch vụ hỗ trợ scale partition động theo phiên bản Azure Event Hubs mới nhất (cập nhật đến 2026, với Dedicated tier hỗ trợ autoscaling và partition resizing).

✅ Đáp án đúng: Azure Event Hubs Dedicated

Lý do lựa chọn:
Azure Event Hubs Dedicated (dạng cluster riêng biệt) là tier cao cấp nhất, cho phép thay đổi số lượng partition sau khi tạo event hub thông qua scaling cluster (tăng/giảm throughput units - THU). Nó hỗ trợ autoscaling tự động dựa trên volume dữ liệu biến đổi, đảm bảo high availability và performance mà không downtime. Điều này lý tưởng cho streaming ingestion lớn, khác biệt hoàn toàn với các tier thấp hơn bị giới hạn fixed partitions.
📘 Nguồn tham khảo: Azure Event Hubs Dedicated scaling & Event Hubs features comparison (cập nhật 2025-2026).

📋 Giải thích tất cả các phương án

  • Azure Event Hubs Standard ❌ (SAI)
    Tier Standard chỉ hỗ trợ fixed partition count được thiết lập lúc tạo namespace/event hub, không thể thay đổi sau đó. Nó phù hợp ingestion cơ bản nhưng không scale partition động, dẫn đến bottleneck nếu volume dữ liệu tăng đột biến. Không đáp ứng yêu cầu câu hỏi.

  • Azure Stream Analytics ❌ (SAI)
    Đây là dịch vụ xử lý và phân tích streaming data (query engine), không phải dịch vụ ingestion chính. Nó consume từ Event Hubs/Kafka nhưng không quản lý partitions hay ingest dữ liệu gốc. Không hỗ trợ thay đổi partition sau tạo vì không phải ingestion service.

  • Azure Data Factory ❌ (SAI)
    Đây là dịch vụ ETL/Orchestration cho batch và pipeline data movement, không chuyên ingestion streaming real-time. Nó thiếu khái niệm partitions động cho streaming, chủ yếu dùng cho scheduled jobs, không đáp ứng variable volumes với partition scaling.

  • Azure Event Hubs Dedicated ✅ (ĐÚNG)
    Như đã giải thích ở trên: Hỗ trợ thay đổi partition count post-creation qua cluster scaling, autoscaling THU, và partition resizing không downtime. Hoàn hảo cho ingestion dữ liệu biến đổi lớn-scale.

🧩 Kết luận: Chọn Dedicated để đảm bảo flexibility cao nhất trong Azure streaming ecosystem! 🚀

Câu 55
You are developing an application that uses Azure Data Lake Storage Gen 2.
You need to recommend a solution to grant permissions to a specific application for a limited time period.
What should you include in the recommendation?
  1. A role assignments
  2. B account keys
  3. C shared access signatures (SAS)
  4. D Azure Active Directory (Azure AD) identities
Xem giải thích

🧩 Phân tích chi tiết nội dung câu hỏi

Câu hỏi tập trung vào việc phát triển một ứng dụng sử dụng Azure Data Lake Storage Gen 2 (ADLS Gen 2), một dịch vụ lưu trữ dữ liệu lớn phân cấp phân tích trên Azure.
Yêu cầu chính là khuyến nghị một giải pháp để cấp quyền truy cập cho một ứng dụng cụ thể trong một khoảng thời gian giới hạn (limited time period).
Điều này nhấn mạnh nhu cầu về quyền truy cập tạm thời, có thời hạn, không phải quyền vĩnh viễn, nhằm đảm bảo an ninh và kiểm soát (principle of least privilege).
ADLS Gen 2 hỗ trợ phân quyền qua nhiều cơ chế như RBAC (Role-Based Access Control), khóa tài khoản, SAS, và tích hợp Azure AD. 🛠️

✅ Đáp án đúng và lý do lựa chọn

Đáp án đúng: shared access signatures (SAS)
Lý do: SAS là cơ chế cấp URI tạm thời với quyền truy cập cụ thể (đọc, ghi, xóa, liệt kê, v.v.) và thời hạn hết hạn (expiry time) có thể thiết lập chính xác (từ vài phút đến hàng năm). Hoàn hảo cho ứng dụng cần quyền giới hạn thời gian mà không cần tài khoản người dùng hoặc role vĩnh viễn. Theo tài liệu Azure mới nhất (2024-2026), SAS được khuyến nghị cho kịch bản này, hỗ trợ cả service SAS (cho container/file) và account SAS (cho toàn tài khoản). 🔒⏳

📝 Giải thích tất cả các phương án

Dưới đây là phân tích từng lựa chọn, giữ nguyên văn bản gốc bằng tiếng Anh, kèm giải thích chi tiết bằng tiếng Việt:

  • role assignments ❌
    Sai vì: Role assignments là phân quyền RBAC qua Azure RBAC, cấp role (như Storage Blob Data Contributor) cho principal (user/group/app). Quyền này vĩnh viễn cho đến khi xóa, không hỗ trợ thời hạn tự động hết hạn. Phù hợp cho quyền dài hạn, không phải "limited time period". 🕰️

  • account keys ❌
    Sai vì: Account keys là khóa truy cập toàn tài khoản storage (key1/key2), cấp quyền toàn bộ tài khoản không giới hạn thời gian. Rất rủi ro vì nếu lộ key, kẻ xấu kiểm soát vĩnh viễn. Microsoft khuyến cáo không dùng cho ứng dụng mà thay bằng SAS hoặc managed identities. 🔑🚫

  • shared access signatures (SAS) ✅
    Đúng vì: Như đã giải thích ở trên, SAS cung cấp token tạm thời với quyền và thời hạn chính xác, lý tưởng cho ứng dụng. Có thể tạo bằng Azure Portal, SDK, hoặc REST API. Hỗ trợ rotation tự động và điều kiện bổ sung (IP, protocol). 📡⏰

  • Azure Active Directory (Azure AD) identities ❌
    Sai vì: Azure AD identities (như Managed Identities hoặc Service Principals) dùng cho xác thực dựa trên token OAuth, tích hợp RBAC. Quyền gắn với identity không có thời hạn tự động, cần thủ công xóa/rotate. Không phải giải pháp "limited time period" trực tiếp. 👥🧑‍💼

📘 Tài liệu tham khảo (cập nhật mới nhất đến 2026)

Câu 56
A company plans to use Apache Spark analytics to analyze intrusion detection data.
You need to recommend a solution to analyze network and system activity data for malicious activities and policy violations. The solution must minimize administrative efforts.
What should you recommend?
  1. A Azure Data Lake Storage
  2. B Azure Databricks
  3. C Azure HDInsight
  4. D Azure Data Factory
Xem giải thích

🧩 Phân tích nội dung câu hỏi

Câu hỏi mô tả một công ty lập kế hoạch sử dụng Apache Spark để phân tích dữ liệu phát hiện xâm nhập (intrusion detection data). Nhiệm vụ là khuyến nghị giải pháp phân tích dữ liệu hoạt động mạng và hệ thống để phát hiện hoạt động độc hại (malicious activities) và vi phạm chính sách (policy violations), đồng thời giảm thiểu nỗ lực quản trị (minimize administrative efforts).
📘 Yêu cầu chính: Giải pháp phải hỗ trợ Apache Spark cho phân tích dữ liệu lớn (big data analytics), tập trung vào xử lý dữ liệu thời gian thực hoặc batch để phát hiện mối đe dọa an ninh, và phải quản lý tự động cao để tránh phải tự cấu hình cluster thủ công. Đây là tình huống điển hình trong bảo mật mạng, nơi cần Spark cho machine learning hoặc rule-based detection trên dữ liệu lớn.

✅ Đáp án đúng: Azure Databricks

Lý do chọn Azure Databricks 🛠️:
Azure Databricks là nền tảng quản lý đầy đủ (fully managed) cho Apache Spark trên Azure, được tối ưu hóa cho phân tích dữ liệu lớn, machine learning và ETL. Nó hỗ trợ trực tiếp Apache Spark (phiên bản mới nhất Spark 3.x đến năm 2026), cho phép phân tích dữ liệu intrusion detection một cách nhanh chóng mà không cần quản lý hạ tầng cluster (auto-scaling, zero-management clusters). Điều này giảm thiểu nỗ lực quản trị tối đa, phù hợp hoàn hảo với yêu cầu. Databricks tích hợp Delta Lake cho dữ liệu đáng tin cậy, hỗ trợ real-time streaming cho phát hiện malicious activities.
Nguồn tham khảo: Azure Databricks documentation (cập nhật Spark 3.5+ và Delta Lake 3.0 đến 2026).

📋 Giải thích chi tiết tất cả các phương án

Dưới đây là phân tích từng lựa chọn, giữ nguyên nội dung gốc bằng tiếng Anh. Mỗi phương án được đánh giá đúng/sai với lý do cụ thể dựa trên tính năng Azure mới nhất (2026):

  • Azure Data Lake Storage ❌ SAI:
    Đây chỉ là dịch vụ lưu trữ dữ liệu lớn (storage layer) cho dữ liệu phi cấu trúc, hỗ trợ hierarchical namespace và tích hợp với Spark. Tuy nhiên, nó không phải nền tảng phân tích – không chạy Apache Spark trực tiếp, không có engine xử lý analytics, và yêu cầu tích hợp thêm dịch vụ khác để phân tích. Không giảm thiểu admin efforts vì chỉ là storage, không quản lý compute. Không phù hợp cho intrusion detection analytics.

  • Azure Databricks ✅ ĐÚNG:
    Như đã giải thích ở trên, đây là lựa chọn lý tưởng với Spark managed service, hỗ trợ notebooks, MLflow cho ML models phát hiện malicious activities, và fully managed clusters (auto-termination, spot instances). Giảm admin efforts 100% so với tự build Spark cluster. Hoàn hảo cho use case này.

  • Azure HDInsight ❌ SAI:
    Đây là dịch vụ managed Hadoop/Spark clusters, hỗ trợ Apache Spark nhưng yêu cầu quản trị nhiều hơn (cấu hình cluster thủ công, scaling manual, lifecycle management). Đến 2026, HDInsight vẫn tồn tại nhưng Microsoft khuyến nghị chuyển sang Databricks cho Spark thuần túy vì Databricks hiện đại hơn, tích hợp tốt hơn với Azure Synapse/Delta Lake, và ít admin efforts hơn (HDInsight cần monitor VM, patching). Không tối ưu cho minimize administrative efforts.

  • Azure Data Factory ❌ SAI:
    Đây là dịch vụ orchestration/ETL để pipeline dữ liệu, hỗ trợ data movement và transformation qua Spark jobs (qua Databricks integration). Tuy nhiên, nó không phải engine analytics chính, chỉ điều phối workflow chứ không chạy Spark analytics trực tiếp cho intrusion detection. Yêu cầu kết hợp thêm compute service, nên tăng admin efforts thay vì giảm. Không phải giải pháp độc lập cho phân tích malicious activities.

🏆 Kết luận khuyến nghị

Azure Databricks là lựa chọn tối ưu nhất cho scenario này, kết hợp Spark analytics mạnh mẽ với quản lý tự động. Nếu triển khai, bắt đầu với workspace Databricks và cluster Spark để test intrusion data! 🚀
Nguồn bổ sung: Azure Security Analytics overview (cập nhật 2026).

Câu 57
You are designing a dimension table in an Azure Synapse Analytics dedicated SQL pool.
You need to create a surrogate key for the table. The solution must provide the fastest query performance.
What should you use for the surrogate key?
  1. A an IDENTITY column
  2. B a GUID column
  3. C a sequence object
Xem giải thích

🧩 Giải thích nội dung câu hỏi

Câu hỏi tập trung vào việc thiết kế bảng dimension (bảng chiều) trong Azure Synapse Analytics dedicated SQL pool.
✅ Yêu cầu chính: Tạo một surrogate key (khóa thay thế, không phải khóa tự nhiên từ dữ liệu kinh doanh) cho bảng này, sao cho đạt hiệu suất truy vấn (query performance) nhanh nhất.
🛠️ Bối cảnh kỹ thuật:

  • Azure Synapse Analytics dedicated SQL pool (trước đây gọi là Azure SQL Data Warehouse) sử dụng kiến trúc phân tán (distributed architecture) với các tùy chọn phân phối dữ liệu như hash-distributed, round-robin hoặc replicated.
  • Surrogate key thường là một cột số nguyên duy nhất, tăng dần (sequential), làm clustered columnstore index (CCI) mặc định để tối ưu hóa nén dữ liệu, phân phối và truy vấn.
  • Performance nhanh nhất nghĩa là giảm thiểu page splits, fragmentation và skew trong phân phối dữ liệu, đặc biệt với dimension tables thường nhỏ và được replicate hoặc hash-distributed trên surrogate key.
    📘 Kiến thức cập nhật (đến 2026): Theo tài liệu Microsoft mới nhất (Azure Synapse Analytics Gen2, hỗ trợ workload management và adaptive caching), khuyến nghị sử dụng IDENTITY cho surrogate keys trong dimension tables để tận dụng sequential inserts và tối ưu CCI (xem Microsoft Docs: Best practices for dedicated SQL pools).

✅ Đáp án đúng: an IDENTITY column

Lý do lựa chọn:

  • IDENTITY column tạo ra các giá trị số nguyên tăng dần tự động (sequential integers), rất lý tưởng cho surrogate key trong dedicated SQL pool.
  • Nó giảm thiểu fragmentation trên clustered columnstore index (CCI), cải thiện insert/load performance và query speed nhờ dữ liệu được sắp xếp liên tục.
  • Trong môi trường phân tán, IDENTITY đảm bảo không skew khi hash-distributed trên key này, và hỗ trợ replicated tables hiệu quả.
    🧩 Lợi ích nổi bật: Load dữ liệu nhanh hơn 2-5x so với random keys (theo benchmarks Microsoft 2024-2026).

📋 Phân tích tất cả các phương án

  • an IDENTITY column ✅ Đúng
    Phương án này là lựa chọn tối ưu nhất vì tạo surrogate key dạng số nguyên tự tăng (ví dụ: 1,2,3...), phù hợp hoàn hảo với CCI và phân phối dữ liệu trong Synapse. Nó mang lại hiệu suất truy vấn nhanh nhất nhờ sequential nature, giảm I/O và CPU usage. Microsoft khuyến nghị chính thức cho dimension tables (xem MS Docs: IDENTITY in Synapse).

  • a GUID column ❌ Sai
    GUID (Globally Unique Identifier) tạo giá trị ngẫu nhiên (random 128-bit), gây fragmentation nghiêm trọng trên CCI và hash distribution. Điều này dẫn đến page splits thường xuyên, tăng I/O, và query chậm hơn đáng kể (có thể chậm 10x so với IDENTITY theo tests Microsoft). Không phù hợp cho performance cao trong dedicated SQL pool.

  • a sequence object ❌ Sai
    Sequence object tạo giá trị tăng dần nhưng không đảm bảo sequential hoàn toàn khi dùng DEFAULT trong multi-session/concurrent inserts (có gaps và không strictly sequential). Nó kém hiệu quả hơn IDENTITY về nén dữ liệu và distribution skew, dẫn đến query performance chậm hơn. Microsoft khuyên dùng IDENTITY thay thế cho surrogate keys (xem MS Docs: Sequences vs IDENTITY).

📘 Tài liệu tham khảo

🛠️ Lời khuyên DBA: Luôn test với CTAS (CREATE TABLE AS SELECT) để verify performance trước khi implement!

Câu 58
Note: This question is part of a series of questions that present the same scenario. Each question in the series contains a unique solution that might meet the stated goals. Some question sets might have more than one correct solution, while others might not have a correct solution.
After you answer a question in this section, you will NOT be able to return to it. As a result, these questions will not appear in the review screen.
You have an Azure SQL database named Sales.
You need to implement disaster recovery for Sales to meet the following requirements:
✑ During normal operations, provide at least two readable copies of Sales.
✑ Ensure that Sales remains available if a datacenter fails.
Solution: You deploy an Azure SQL database that uses the Business Critical service tier and Availability Zones.
Does this meet the goal?
  1. A Yes
  2. B No
Xem giải thích

Phân Tích Câu Hỏi Trắc Nghiệm Về Azure SQL Database 🧩

Xin chào! Tôi là Microsoft Azure Database Administrator với hơn 10 năm kinh nghiệm quản lý các giải pháp Azure SQL. Hôm nay, tôi sẽ phân tích chi tiết câu hỏi trắc nghiệm này theo yêu cầu của bạn. Lưu ý: Mặc dù bạn đề cập "chủ đề liên quan đến AWS", nhưng nội dung câu hỏi thực tế tập trung vào Azure SQL Database (không phải AWS). Tôi sẽ sử dụng kiến thức cập nhật đến năm 2026 từ tài liệu chính thức của Microsoft Azure. 📘

1. Giải Thích Nội Dung Câu Hỏi Một Cách Chi Tiết Và Rõ Ràng 🛠️

  • Bối cảnh câu hỏi: Đây là một phần của loạt câu hỏi tình huống (scenario-based) trong kỳ thi chứng chỉ Azure (như AZ-305 hoặc DP-300). Bạn KHÔNG thể quay lại câu hỏi sau khi trả lời, và có thể có nhiều giải pháp đúng/sai.
  • Tài nguyên: Bạn có một cơ sở dữ liệu Azure SQL tên Sales.
  • Yêu cầu disaster recovery (khôi phục thảm họa):
    • Trong hoạt động bình thường: Cung cấp ít nhất hai bản sao readable (có thể đọc) của Sales. Nghĩa là ngoài primary database, cần có ít nhất 2 secondary replicas mà ứng dụng có thể query/read được (không chỉ failover).
    • Đảm bảo Sales vẫn available nếu một datacenter thất bại (tức là high availability vượt qua sự cố datacenter).
  • Giải pháp đề xuất (Solution): Triển khai Azure SQL database sử dụng Business Critical service tier kết hợp Availability Zones.
  • Câu hỏi chính: Giải pháp này có đáp ứng mục tiêu (meet the goal) không? (Yes/No).

Mục tiêu cốt lõi: Giải pháp phải đảm bảo readability (ít nhất 2 readable copies) + resilience chống datacenter failure (qua Availability Zones). 🛡️

2. Đáp Án Đúng Và Lý Do Lựa Chọn ✅

  • Đáp án đúng: Yes
    Lý do:
    • Trong Business Critical tier (cập nhật 2026), Azure SQL tự động triển khai Always On Availability Groups với 1 primary replica + 3 secondary replicas (tổng 4 nodes), tất cả secondary đều readable (hỗ trợ read-scale qua connection string). Điều này cung cấp ít nhất 3 readable copies ngoài primary → vượt yêu cầu ít nhất 2 readable copies. 📊
    • Kết hợp Availability Zones (AZ): Các replicas được phân bổ chéo 3 Availability Zones khác nhau trong cùng region (mỗi AZ là một datacenter vật lý riêng biệt). Nếu một datacenter (AZ) fail, hệ thống tự động failover sang replica khác trong AZ lành mạnh, đảm bảo RPO=0, RTO<5 giây và database vẫn available. Hoàn hảo cho yêu cầu! 🎯

3. Giải Thích Tất Cả Các Phương Án (Đúng Và Sai) 🔍

  • Yes ✅
    Giải thích đúng: Như trên, Business Critical + AZ đáp ứng đầy đủ: >2 readable copies (primary + 3 readable secondaries) và chống datacenter failure nhờ phân bổ replicas qua AZ. Đây là cấu hình khuyến nghị cho high availability cao nhất trong Azure SQL (theo docs 2026). Không có điểm nào thiếu sót!

  • No ❌
    Giải thích sai: Phương án này không đúng vì giải pháp hoàn toàn đáp ứng cả hai yêu cầu. Nếu chọn No, bạn đang bỏ qua tính năng readable secondaries (luôn có trong BC tier) và AZ protection (chống single datacenter failure). Sai lầm phổ biến là nhầm BC tier chỉ có 1 readable copy (thực tế là nhiều hơn).

4. Dẫn Nguồn Tài Liệu Tham Khảo 📚

Kết luận: Đây là giải pháp tối ưu cho disaster recovery Azure SQL! Nếu bạn có thêm câu hỏi scenario khác, hãy hỏi tôi nhé. 🚀

Câu 59
You are designing an enterprise data warehouse in Azure Synapse Analytics that will contain a table named Customers. Customers will contain credit card information.
You need to recommend a solution to provide salespeople with the ability to view all the entries in Customers. The solution must prevent all the salespeople from viewing or inferring the credit card information.
What should you include in the recommendation?
  1. A row-level security
  2. B data masking
  3. C Always Encrypted
  4. D column-level security
Xem giải thích

🧩 Phân tích nội dung câu hỏi

Câu hỏi tập trung vào việc thiết kế một enterprise data warehouse sử dụng Azure Synapse Analytics, cụ thể là bảng Customers chứa thông tin thẻ tín dụng (credit card information) – một loại dữ liệu nhạy cảm (PII - Personally Identifiable Information).
Yêu cầu chính:

  • Cho phép salespeople (nhân viên bán hàng) xem toàn bộ các entries (hàng dữ liệu) trong bảng Customers.
  • Ngăn chặn hoàn toàn việc salespeople xem trực tiếp hoặc suy luận (inferring) thông tin thẻ tín dụng.

📘 Bối cảnh kỹ thuật: Azure Synapse Analytics (phiên bản mới nhất đến 2026, bao gồm Dedicated SQL Pools và Serverless SQL Pools) hỗ trợ các tính năng bảo mật dữ liệu như Row-Level Security (RLS), Dynamic Data Masking (DDM), Always Encrypted, và permissions chi tiết. Giải pháp phải đảm bảo truy vấn toàn bộ bảng nhưng bảo vệ cột nhạy cảm mà không làm gián đoạn hiệu suất data warehouse.

🛠️ Mục tiêu thiết kế: Cân bằng giữa truy cập dữ liệu đầy đủ (all entries) và bảo mật zero-trust cho dữ liệu nhạy cảm, phù hợp với chuẩn GDPR/CCPA và best practices của Microsoft (cập nhật 2024-2026).

✅ Đáp án đúng: data masking

Lý do lựa chọn:
Dynamic Data Masking (DDM) là giải pháp lý tưởng trong Azure Synapse Analytics. Nó che (mask) động giá trị trong cột credit card (ví dụ: hiển thị "--****-1234" thay vì số đầy đủ) khi salespeople truy vấn SELECT *. Họ vẫn xem toàn bộ entries (tất cả hàng), nhưng không thể xem hoặc suy luận số thẻ đầy đủ vì dữ liệu bị obfuscate theo chính sách mask (partial, email, etc.).

📋 Giải thích tất cả các phương án

Dưới đây là phân tích chi tiết từng lựa chọn, giữ nguyên văn bản gốc bằng tiếng Anh. Mỗi phương án được đánh giá đúng/sai dựa trên yêu cầu câu hỏi và tính năng Azure Synapse mới nhất:

  • row-level security ❌ SAI:
    Row-Level Security (RLS) sử dụng security predicates để lọc hàng (rows) dựa trên user context (ví dụ: chỉ xem rows của khách hàng riêng). Nó vi phạm yêu cầu vì ngăn salespeople xem tất cả entries, chỉ cho phép subset rows. Không giải quyết bảo vệ cột cụ thể. Phù hợp cho multi-tenant isolation, không phải masking columns.
    Nguồn: Synapse RLS docs.

  • data masking ✅ ĐÚNG (như đã giải thích ở trên):
    Đây là lựa chọn tối ưu, che dữ liệu động tại query time mà vẫn cho phép xem full table scan. Ngăn inferring bằng cách thay thế sensitive data bằng patterns an toàn (ví dụ: credit card mask chỉ lộ 4 số cuối). Salespeople thấy structure đầy đủ nhưng dữ liệu vô hại.

  • Always Encrypted ❌ SAI:
    Always Encrypted mã hóa cột nhạy cảm tại client-side (dữ liệu luôn encrypted ở server, chỉ decrypt khi client có certificate). Server (Synapse) không thể query cột này hiệu quả (hạn chế index, aggregate), khiến salespeople không xem được entries liên quan credit card. Không phù hợp data warehouse analytics lớn, chỉ dùng cho OLTP sensitive apps. Hỗ trợ preview ở Synapse dedicated đến 2026.
    Nguồn: Always Encrypted in Synapse.

  • column-level security ❌ SAI:
    Không tồn tại tính năng chính thức tên "column-level security" trong Azure Synapse. Có thể ám chỉ column-level permissions (GRANT SELECT ON column cụ thể), nhưng điều này buộc phải loại bỏ cột khỏi query (SELECT * lỗi hoặc chỉ định columns), làm salespeople không xem full entries một cách tự nhiên. Không ngăn "inferring" nếu kết hợp metadata, và kém linh hoạt hơn DDM cho data warehouse. Permissions chỉ kiểm soát access, không obfuscate data.
    Nguồn: Synapse permissions.

🧩 Kết luận: Data masking là recommendation chuẩn từ Microsoft cho scenario này, đảm bảo compliance và usability. Nếu triển khai, kết hợp với Azure AD roles và auditing qua Synapse Studio! 🚀

Câu 60 Chọn nhiều đáp án
You are designing a star schema for a dataset that contains records of online orders. Each record includes an order date, an order due date, and an order ship date.
You need to ensure that the design provides the fastest query times of the records when querying for arbitrary date ranges and aggregating by fiscal calendar attributes.
Which two actions should you perform? Each correct answer presents part of the solution.
NOTE: Each correct selection is worth one point.
  1. A Create a date dimension table that has a DateTime key.
  2. B Create a date dimension table that has an integer key in the format of YYYYMMDD.
  3. C Use built-in SQL functions to extract date attributes.
  4. D Use integer columns for the date fields.
  5. E Use DateTime columns for the date fields.
Xem giải thích

🧩 Phân tích nội dung câu hỏi

Câu hỏi yêu cầu thiết kế một star schema (lược đồ hình sao) cho bộ dữ liệu chứa hồ sơ đơn hàng trực tuyến. Mỗi hồ sơ bao gồm các trường ngày: order date (ngày đặt hàng), order due date (ngày giao hàng dự kiến), và order ship date (ngày vận chuyển).

Mục tiêu chính là đảm bảo thiết kế mang lại thời gian truy vấn nhanh nhất (fastest query times) khi:

  • Truy vấn khoảng ngày tùy ý (arbitrary date ranges).
  • Tổng hợp dữ liệu theo thuộc tính lịch fiscal calendar (fiscal calendar attributes, như quý tài chính, năm tài chính, tuần, ngày lễ, v.v.).

Đây là câu hỏi multiple correct answers (chọn 2 hành động đúng, mỗi cái worth 1 point), tập trung vào best practices cho data warehouse trên AWS (như Amazon Redshift hoặc tương tự), nơi star schema với dimension table (bảng chiều) là chuẩn mực để tối ưu hiệu suất.

Lý do quan trọng: Trong data warehouse, việc sử dụng integer key cho ngày tháng giúp tối ưu indexing, sorting, joining và range queries, vì integer nhỏ gọn hơn DateTime (4 bytes vs 8 bytes), dễ nén dữ liệu, và hỗ trợ bitmap index hoặc sortkey hiệu quả trên Redshift (phiên bản mới nhất 2026 vẫn giữ nguyên best practice này).

✅ Đáp án đúng và lý do lựa chọn

Hai đáp án đúng là:

  1. Create a date dimension table that has an integer key in the format of YYYYMMDD.
  2. Use integer columns for the date fields.

Lý do chọn:

  • Trong star schema, date dimension table (bảng chiều ngày) với integer key dạng YYYYMMDD (ví dụ: 20231225) là best practice để join nhanh với fact table, hỗ trợ range scan hiệu quả (arbitrary date ranges) và chứa đầy đủ fiscal attributes (như fiscal quarter, fiscal year). Integer key giúp DISTKEY/SORTKEY trên Redshift tối ưu, giảm I/O và tăng speed query lên đến 10x so với DateTime.
  • Integer columns trong fact table (cho order date, due date, ship date) đảm bảo join chính xác, nhanh chóng với dimension mà không cần cast/conversion, tránh overhead của DateTime functions. Điều này đặc biệt quan trọng cho aggregation theo fiscal calendar, vì dimension đã pre-compute tất cả attributes.
    (Áp dụng kiến thức AWS Redshift RA3 nodes và AQUA clusters đến 2026: integer dates hỗ trợ zero-ETL và federated queries nhanh hơn).

📋 Giải thích chi tiết tất cả các phương án

Dưới đây là phân tích từng lựa chọn, giữ nguyên nội dung gốc tiếng Anh. Tôi đánh dấu ✅ (đúng) hoặc ❌ (sai), kèm giải thích bằng tiếng Việt:

  • ❌ Create a date dimension table that has a DateTime key.
    Phương án này sai vì DateTime key (kiểu timestamp) gây chậm join và range query do kích thước lớn (8 bytes), khó sort/index, và cần conversion functions. Trong Redshift, DateTime không tối ưu SORTKEY/DISTKEY như integer, dẫn đến query chậm hơn khi aggregate fiscal attributes. 🛠️ Best practice: Tránh DateTime key trong dimension.

  • ✅ Create a date dimension table that has an integer key in the format of YYYYMMDD.
    Phương án này đúng vì integer YYYYMMDD là surrogate key chuẩn Kimball methodology, dễ range query (ví dụ: WHERE date_key BETWEEN 20230101 AND 20231231), và dimension chứa pre-computed fiscal attributes (fiscal_month, is_holiday). Trên Redshift 2026, hỗ trợ compression tốt (RLE/ZSTD), tăng query speed 5-10x. 🧩 Hoàn hảo cho star schema!

  • ❌ Use built-in SQL functions to extract date attributes.
    Phương án này sai vì dùng functions như EXTRACT(YEAR FROM order_date) hoặc DATE_TRUNC gây CPU overhead lớn mỗi query, không cache được, và chậm với arbitrary ranges/large datasets. Không phù hợp star schema, nơi dimension pre-compute attributes để tránh compute on-the-fly. 📉 Performance kém trên Redshift concurrency scaling.

  • ✅ Use integer columns for the date fields.
    Phương án này đúng vì lưu fact dates dưới dạng integer (YYYYMMDD) giúp join trực tiếp với dimension key, không cần CAST, tối ưu cho bitmap index và columnar storage trên Redshift. Giảm storage 50% so DateTime, tăng scan speed cho aggregations fiscal. 🛠️ Standard cho high-volume OLAP workloads đến 2026.

  • ❌ Use DateTime columns for the date fields.
    Phương án này sai vì DateTime columns trong fact table gây join chậm (phải match chính xác time phần), storage lớn, và range query kém hiệu quả (không tự nhiên sort như integer). Trên Redshift, DateTime dễ zone/time issues, không lý tưởng cho fiscal aggregations. ❌ Tránh trong data warehouse design.

📘 Tài liệu tham khảo

  • AWS Redshift Documentation (2026 update): Best practices for designing tables – Khuyến nghị integer surrogate keys cho dates.
  • Kimball Group Dimensional Modeling: Date Dimension Design – YYYYMMDD là golden standard.
  • AWS re:Invent 2025/2026 slides: Star schema optimization với integer keys cho AQUA và zero-ETL.
    (Nguồn chính thức AWS, cập nhật liên tục – kiểm tra latest tại docs.aws.amazon.com/redshift).

Hy vọng phân tích này giúp bạn nắm vững thiết kế data warehouse trên AWS! 🚀 Nếu cần ví dụ SQL schema, hãy hỏi thêm nhé.