Ngân hàng đề — Google Cloud Associate Data Practitioner
Tìm thấy 333 câu.
A media company needs a centralized, scalable repository to store a wide variety of raw data assets, including high-resolution video files, audio recordings, PDF (Portable Document Format) documents, and application log files.
Which Google Cloud service is the most appropriate choice for storing this type of unstructured data?
- A Bigtable
- B Cloud Storage
- C Cloud SQL
- D BigQuery
Xem giải thích
Đáp án
B — Cloud Storage.
Vì sao đúng
Đề liệt kê video độ phân giải cao, bản ghi âm, tệp PDF, tệp nhật ký ứng dụng — tất cả đều là dữ liệu PHI CẤU TRÚC, và Cloud Storage là kho đối tượng của Google Cloud cho đúng loại này.
⚠ Điểm mấu chốt — kho đối tượng cho tệp phi cấu trúc:
Video, âm thanh, PDF, log thô
↓
Không có lược đồ
Kích thước rất lớn
Chỉ cần LƯU và LẤY RA
↓
CLOUD STORAGE
↓
- dung lượng KHÔNG GIỚI HẠN
- đối tượng tới 5 TB mỗi tệp
- độ bền 11 số 9
- giá rất rẻ, có nhiều lớp lưu trữ
⚠ Vì sao ba phương án kia đều sai loại:
BIGQUERY
→ kho PHÂN TÍCH cho dữ liệu
CÓ CẤU TRÚC
→ nhét video vào là sai mục đích
và cực đắt
CLOUD SQL
→ CSDL GIAO DỊCH
→ lưu BLOB làm phình CSDL,
sao lưu chậm, giá cao
BIGTABLE
→ NoSQL khoá-giá trị cho
GHI CỰC LỚN, chuỗi thời gian
→ không phải nơi lưu tệp lớn
⚠ Mẫu chuẩn — tệp ở kho đối tượng, siêu dữ liệu ở CSDL:
CLOUD STORAGE
gs://media/video/{uuid}.mp4
↓
BIGQUERY hoặc CLOUD SQL
id, tieu_de, thoi_luong, tac_gia,
uri = 'gs://media/video/{uuid}.mp4'
↓
⚠ Truy vấn siêu dữ liệu bằng SQL
⚠ Lấy tệp bằng đường dẫn
⚠ KHÔNG BAO GIỜ nhét tệp vào CSDL
Xem thêm câu #12998 (lô 135): nhận diện dữ liệu phi cấu trúc. Và #13057, #13062 (cùng lô): ánh xạ từng loại dữ liệu vào đúng dịch vụ. Ba câu nhất quán.
Vì sao các phương án khác sai
-
D (BigQuery) — đây là phương án dễ nhầm nhất vì nó cũng chứa được lượng dữ liệu khổng lồ, nhưng nó là kho PHÂN TÍCH cho dữ liệu CÓ CẤU TRÚC; lưu video trong đó vừa sai mục đích vừa rất đắt.
-
C (Cloud SQL) — CSDL giao dịch; lưu tệp lớn dạng BLOB làm phình CSDL và chậm sao lưu.
-
A (Bigtable) — NoSQL cho ghi cực lớn và chuỗi thời gian, giới hạn kích thước ô nhỏ, không phải nơi lưu tệp media.
Ghi nhớ
⚠ Chọn kho theo LOẠI DỮ LIỆU — bảng phải thuộc: | Loại dữ liệu | Kho | |---|---| | Phi cấu trúc: video, ảnh, PDF, log thô | Cloud Storage | | Có cấu trúc, PHÂN TÍCH | BigQuery | | Có cấu trúc, GIAO DỊCH | Cloud SQL / AlloyDB / Spanner | | Bán cấu trúc, ứng dụng di động | Firestore | | NoSQL ghi cực lớn, chuỗi thời gian | Bigtable | | Bộ nhớ đệm | Memorystore |
Từ khoá nhận diện:
"video, âm thanh, PDF, tệp lớn" → Cloud Storage "phân tích hàng tỉ dòng" → BigQuery "giao dịch ứng dụng" → Cloud SQL "IoT, chuỗi thời gian, ghi hàng triệu điểm/giây" → Bigtable "lưu tệp trong CSDL" → luôn là phương án SAI
| Cloud Storage — thông số cần nhớ | Thông số |
|---|---|
| Kích thước tối đa mỗi đối tượng | 5 TB |
| Số đối tượng | không giới hạn |
| Độ bền | 11 số 9 |
| Bốn lớp lưu trữ | Standard, Nearline, Coldline, Archive |
| Ba kiểu vị trí | region, dual-region, multi-region |
| Độ trễ | mili giây ở MỌI lớp |
| Quản lý kho media lớn | Việc |
|---|---|
| Lifecycle rule | chuyển lớp theo tuổi |
| Cloud CDN | phục vụ video, ảnh nhanh và rẻ |
| Signed URL | chia sẻ có hạn dùng |
| Đặt tên có cấu trúc | loai/nam/thang/{uuid}.ext |
| Object Versioning | chống ghi đè nhầm |
| Storage Insights | phân tích dung lượng |
| Với tệp NHẬT KÝ — hai lựa chọn | Lựa chọn |
|---|---|
| Cloud Storage | lưu thô, rẻ, giữ lâu |
| Cloud Logging log bucket | tìm kiếm, cảnh báo, Log Analytics |
| Sink sang BigQuery | phân tích bằng SQL |
| Mẫu thường dùng | Logging để vận hành + GCS để lưu trữ dài hạn |
| Đề này | log là "raw data asset" → Cloud Storage |
| Phân tích dữ liệu phi cấu trúc | Cách |
|---|---|
| Object table | bảng BigQuery trỏ vào TỆP |
| Hàm suy luận của Vertex AI | phân tích ảnh, video từ SQL |
| Speech-to-Text, Video Intelligence | trích xuất nội dung |
| Document AI | trích xuất từ PDF |
| Kết quả | đưa siêu dữ liệu trích xuất vào BigQuery |
Ba việc kiểm chứng: | Việc | Cách | |---|---| | Bucket đang tốn bao nhiêu | gcloud storage du -s gs://bucket | | Phân bố theo lớp lưu trữ | billing export, nhóm theo SKU | | Có lifecycle rule chưa | gcloud storage buckets describe → lifecycle |
Và một quy ước nên thống nhất ngay khi lập kho media: cách đặt tên đối tượng. Dùng một cấu trúc có ý nghĩa (loai/nam/thang/{uuid}.ext) thay vì tên tệp gốc do người dùng đặt — tên gốc trùng nhau, chứa ký tự lạ, và không cho biết tệp thuộc về đâu khi bạn cần dọn dẹp hoặc áp lifecycle rule theo tiền tố về sau.
A startup is developing a new regional blogging platform. They need a standard, fully-managed relational database to store user profiles, blog posts, and comments. The application requires a general-purpose, reliable backend and the team has experience with MySQL.
Which Google Cloud service is the most appropriate default choice for this kind of transactional workload?
- A Firestore
- B AlloyDB
- C Cloud SQL
- D Spanner
Xem giải thích
Đáp án
C — Cloud SQL.
Vì sao đúng
Đề mô tả một ứng dụng hoàn toàn thông thường: CSDL quan hệ được quản lý, lưu hồ sơ người dùng, bài viết và bình luận, phạm vi khu vực, đội quen MySQL, và cần backend đáng tin cậy, đa dụng. Cloud SQL là lựa chọn mặc định.
⚠ Điểm mấu chốt — không có ràng buộc nào đòi hỏi hơn:
"nền tảng blog KHU VỰC"
→ KHÔNG cần nhiều Region
→ không cần Spanner
"đội quen MYSQL"
→ Cloud SQL for MySQL, giữ nguyên
kỹ năng và công cụ
"đa dụng, đáng tin cậy"
→ không nêu nút thắt hiệu năng
→ không cần AlloyDB
"CSDL QUAN HỆ được quản lý"
→ không phải NoSQL
→ không phải Firestore
↓
→ Cloud SQL là câu trả lời
⚠ Cloud SQL cho blog — cấu hình nên có:
- Cấu hình HA (regional)
→ chịu được hỏng một zone
- Sao lưu tự động + PITR
→ quay lại trước lệnh DELETE nhầm
- Read replica
→ giảm tải đọc khi lượng truy cập tăng
- Private IP + Cloud SQL Auth Proxy
→ không lộ ra Internet
- Deletion protection
⚠ Nguyên tắc chọn CSDL — đi từ đơn giản lên:
Bắt đầu bằng CLOUD SQL
↓
Gặp nút thắt hiệu năng PostgreSQL?
→ ALLOYDB
↓
Cần nhiều Region + nhất quán mạnh?
→ SPANNER
↓
⚠ Đừng chọn công cụ mạnh nhất
ngay từ đầu — chi phí và độ phức tạp
tăng theo cấp số
Xem thêm câu #13066 (cùng lô): khoá AlloyDB vì ở đó ứng dụng đang gặp nút thắt hiệu năng và cần PostgreSQL hiệu năng cao. Và #12914 (lô 133): cũng khoá Cloud SQL cho ứng dụng thông thường. Ba câu, hai khoá, phân biệt bằng YÊU CẦU HIỆU NĂNG — hoàn toàn nhất quán.
Vì sao các phương án khác sai
-
B (AlloyDB) — đây là phương án gần nhất về mặt "CSDL quan hệ được quản lý mạnh hơn", nhưng nó tương thích PostgreSQL (đội quen MySQL), đắt hơn, và đề không nêu vấn đề hiệu năng nào cần tới nó.
-
D (Spanner) — cho quy mô toàn cầu và nhất quán mạnh đa Region; chi phí tối thiểu cao hơn nhiều và không phải MySQL.
-
A (Firestore) — NoSQL dạng tài liệu; đề nói rõ cần CSDL QUAN HỆ.
Ghi nhớ
⚠ Chọn CSDL quan hệ — bảng phải thuộc: | Dịch vụ | Dùng khi | |---|---| | Cloud SQL | MẶC ĐỊNH — MySQL/PostgreSQL/SQL Server, một Region | | AlloyDB | PostgreSQL cần hiệu năng cao hơn | | Spanner | nhiều Region, nhất quán mạnh, mở rộng ngang | | BigQuery | phân tích, không phải giao dịch | | Thứ tự | Cloud SQL → AlloyDB → Spanner |
Từ khoá nhận diện:
"ứng dụng thông thường, một khu vực, quen MySQL" → Cloud SQL "PostgreSQL nhưng cần nhanh hơn nhiều" → AlloyDB "nhiều Region + nhất quán mọi lúc" → Spanner "tài liệu JSON, đồng bộ thời gian thực" → Firestore "phân tích" → BigQuery
| Cloud SQL — điều cần nhớ | Nội dung |
|---|---|
| Động cơ | MySQL, PostgreSQL, SQL Server |
| HA | regional — máy dự phòng ở zone khác |
| Read replica | cùng Region hoặc Region khác |
| Sao lưu tự động + PITR | quay lại thời điểm bất kỳ |
| Kết nối riêng tư | Private Service Access, Auth Proxy |
| Bảo trì | đặt cửa sổ bảo trì chủ động |
| Cấu hình cho ứng dụng sản xuất | Cấu hình |
|---|---|
--availability-type=REGIONAL |
HA |
--enable-point-in-time-recovery |
PITR |
--deletion-protection |
chống xoá nhầm |
| Private IP | không lộ ra Internet |
| Connection pooling | rất quan trọng — tránh cạn kết nối |
| Cảnh báo | CPU, bộ nhớ, số kết nối, replication lag |
| Khi nào cần nâng cấp khỏi Cloud SQL | Dấu hiệu |
|---|---|
| Vượt trần ghi của một node | → Spanner |
| Cần nhất quán mạnh đa Region | → Spanner |
| PostgreSQL chậm dù đã tối ưu | → AlloyDB |
| Khối lượng phân tích nặng | → tách sang BigQuery |
| Nếu chưa có dấu hiệu nào | Cloud SQL là đủ và rẻ nhất |
| Sai lầm hay gặp với startup | Sai lầm |
|---|---|
| Chọn Spanner "cho tương lai" | chi phí tối thiểu rất cao |
| Chạy báo cáo trên CSDL sản xuất | làm chậm ứng dụng |
| Không dùng connection pool | cạn kết nối khi tải tăng |
| Không bật PITR | mất dữ liệu khi xoá nhầm |
| Nguyên tắc | bắt đầu đơn giản, nâng cấp khi có bằng chứng |
Ba việc kiểm chứng: | Việc | Cách | |---|---| | Instance có bật HA không | gcloud sql instances describe <ten> → availabilityType | | PITR đã bật chưa | cùng lệnh → pointInTimeRecoveryEnabled | | Số kết nối có gần trần không | chỉ số trong Cloud Monitoring |
Và một cấu hình nên bật trước cả HA khi mới dựng CSDL cho ứng dụng thật: point-in-time recovery. Với một nền tảng blog, sự cố dễ xảy ra nhất không phải hỏng phần cứng mà là một lệnh DELETE chạy nhầm phạm vi — và PITR là thứ duy nhất đưa bạn về đúng giây trước lệnh đó.
A business analyst, who does not have developer permissions, is creating a report in Looker. They need to create a new field by concatenating two existing dimensions (first_name and last_name) into a full_name field. This calculation must be performed by the database before any aggregations are applied.
Which Looker feature is designed for this specific purpose?
- A Editing the LookML (Looker Modeling Language)
- B Creating a Table Calculation
- C Creating a Custom Field
- D Using an Authorized View in BigQuery
Xem giải thích
Đáp án
C — Tạo một Custom Field.
Vì sao đúng
Đề nêu ba điều: người tạo là nhà phân tích KHÔNG có quyền developer, cần tạo trường mới bằng cách nối hai dimension, và phép tính phải được CSDL thực hiện TRƯỚC khi tổng hợp. Custom Field khớp cả ba.
⚠ Điểm mấu chốt — Custom Field được ĐẨY XUỐNG CSDL:
Custom Field (loại custom dimension)
↓
Looker đưa biểu thức vào SQL sinh ra
↓
SELECT CONCAT(first_name, ' ', last_name)
AS full_name, ...
FROM ...
GROUP BY 1
↓
⚠ CSDL tính TRƯỚC khi tổng hợp
→ đúng yêu cầu của đề
⚠ Vì sao Table Calculation KHÔNG đúng ở đây:
Table Calculation
↓
Tính TRÊN KẾT QUẢ đã trả về
↓
⚠ Chạy SAU khi CSDL đã tổng hợp
→ không thể dùng làm chiều để
GOM NHÓM
↓
Đề nói rõ "TRƯỚC khi tổng hợp"
⚠ Ba nơi tính toán — phân biệt dứt điểm:
LOOKML
→ Developer viết, trong CSDL,
vĩnh viễn, toàn tổ chức
CUSTOM FIELD ← đề này
→ NGƯỜI DÙNG tạo, TRONG CSDL,
thuộc một Explore/Look
TABLE CALCULATION
→ người dùng tạo, TRÊN KẾT QUẢ,
sau khi tổng hợp
⚠ Hai loại Custom Field:
CUSTOM DIMENSION
→ tạo CHIỀU mới
→ dùng để cắt lớp, gom nhóm
→ ví dụ: CONCAT(first_name, last_name)
CUSTOM MEASURE
→ tạo CHỈ SỐ tổng hợp mới
→ dựa trên dimension có sẵn
↓
Đề này cần CUSTOM DIMENSION
Xem thêm câu #13070 (cùng lô): khoá LookML vì cần chỉ số vĩnh viễn, được quản trị toàn tổ chức. Và #13079 (cùng lô): khoá Table Calculation vì tính trên kết quả đã trả về. Ba câu, ba khoá, phân biệt bằng AI TẠO và TÍNH Ở ĐÂU — hoàn toàn nhất quán.
Vì sao các phương án khác sai
-
B (Table Calculation) — đây là phương án gần nhất vì cũng do người dùng tạo, nhưng nó tính SAU khi CSDL đã tổng hợp — trái yêu cầu "trước khi tổng hợp", và không dùng làm chiều gom nhóm được.
-
A (sửa LookML) — nhà phân tích KHÔNG có quyền developer; và với một trường tạm thời cho một báo cáo, sửa LookML là quá nặng.
-
D (dùng authorized view trong BigQuery) — là cơ chế bảo mật, không phải cách tạo trường tính toán; và cũng cần quyền mà nhà phân tích không có.
Ghi nhớ
⚠ Ba nơi tính toán trong Looker — bảng phải thuộc: | Nơi | Ai tạo | Tính ở đâu | Dùng làm chiều gom nhóm? | |---|---|---|---| | LookML | Developer | CSDL | CÓ | | Custom Field | người dùng | CSDL | CÓ | | Table Calculation | người dùng | kết quả đã trả về | KHÔNG |
Từ khoá nhận diện:
"người dùng tạo, tính trong CSDL, trước khi tổng hợp" → Custom Field "tính trên kết quả, ví dụ % của tổng" → Table Calculation "chỉ số chính thức toàn công ty" → LookML "không có quyền developer" → loại bỏ phương án LookML "nối hai chiều thành một" → custom dimension
| Custom Field — điều cần nhớ | Nội dung |
|---|---|
| Hai loại | custom dimension và custom measure |
| Được đẩy vào SQL | tính ở CSDL |
| Dùng được như trường thường | lọc, gom nhóm, sắp xếp |
| Lưu trong Look/dashboard | không phải trong LookML |
| Chia sẻ được | nhưng không có quản lý phiên bản |
| Quyền cần | create_custom_fields — không cần quyền developer |
| Table Calculation — điều cần nhớ | Nội dung |
|---|---|
| Tính TRÊN KẾT QUẢ đã trả về | không đẩy xuống CSDL |
| Hàm | percent_of_total, running_total, rank, offset |
| Không dùng làm chiều gom nhóm | vì tính sau |
| Ưu điểm | rất nhanh, không tốn thêm truy vấn |
| Hạn chế | chỉ tính trên số dòng đã trả về |
| Bẫy kinh điển của Table Calculation | Bẫy |
|---|---|
| Kết quả bị giới hạn số dòng (row limit) | |
→ percent_of_total tính sai |
vì tổng chỉ là tổng của phần đã trả về |
| Khắc phục | tăng row limit, hoặc dùng LookML measure |
| Với dữ liệu lớn | luôn cân nhắc tính ở CSDL |
| Kiểm tra | so kết quả với truy vấn tổng hợp riêng |
| Khi nào nên đưa Custom Field vào LookML | Dấu hiệu |
|---|---|
| Nhiều người cùng tạo một trường giống nhau | |
| Trường trở thành số liệu chính thức | |
| Cần nhất quán và kiểm toán | |
| Cần dùng ở nhiều Explore | |
| Mẫu tốt | thử bằng Custom Field, chốt thì đưa vào LookML |
Ba việc kiểm chứng: | Việc | Cách | |---|---| | Trường được tính ở đâu | xem SQL sinh ra trong tab SQL | | Kết quả có đúng không | so với truy vấn viết tay | | Có bị giới hạn dòng không | kiểm tra row limit của Look |
Và một cách kiểm tra nhanh mỗi khi phân vân giữa Custom Field và Table Calculation: mở tab SQL trong Explore. Nếu biểu thức xuất hiện trong câu SQL gửi xuống CSDL, đó là Custom Field và bạn dùng nó làm chiều gom nhóm được; nếu không thấy, phép tính đang chạy trên kết quả và sẽ sai khi số dòng bị giới hạn.
A developer needs to perform a one-time upload of a 0.9 GB (gigabyte) directory of log files from their local workstation to a Cloud Storage bucket as part of a custom automation script. The transfer does not require complex features like scheduling or bandwidth management.
What is the most direct and appropriate tool for this ad-hoc, scripted task?
- A Storage Transfer Service
- B Transfer Appliance
- C The gcloud storage command-line tool
- D Cloud Storage FUSE
Xem giải thích
Đáp án
C — Công cụ dòng lệnh gcloud storage.
Vì sao đúng
Đề nêu bốn điều: 0,9 GB, một lần duy nhất, từ máy trạm cá nhân, trong một script tự động hoá tuỳ chỉnh, và KHÔNG cần tính năng phức tạp như lịch chạy hay quản lý băng thông. Công cụ dòng lệnh là mức vừa đủ.
⚠ Điểm mấu chốt — khối lượng nhỏ, một lần, trong script:
gcloud storage cp -r ./thu-muc-log \
gs://bucket/log/
↓
⚠ Một dòng lệnh
⚠ Chạy được ngay trong script
⚠ Không dựng gì, không cấu hình gì
↓
0,9 GB qua đường truyền văn phòng
→ vài phút là xong
⚠ Vì sao Storage Transfer Service là quá tay ở đây:
Storage Transfer Service
↓
Sinh ra cho:
- khối lượng LỚN (TB trở lên)
- chạy THEO LỊCH, lặp lại
- cần thử lại tự động, báo cáo
- nguồn TẠI CHỖ cần AGENT
↓
⚠ Với 0,9 GB một lần trong script,
dựng agent pool và job là
nhiều bước hơn hẳn giá trị mang lại
⚠ gcloud storage — vài cờ đáng biết:
-r → đệ quy cả thư mục
-m (với gsutil) → song song; gcloud storage
tự song song
--gzip-in-flight → nén khi truyền
rsync → đồng bộ, chỉ chép phần khác
↓
⚠ gcloud storage NHANH HƠN gsutil
đáng kể — nên dùng cho việc mới
Xem thêm câu #12933 (lô 134): khoá Storage Transfer Service vì 10 TB từ S3, cần dịch vụ được quản lý. #12939 (lô 134): khoá Transfer Appliance vì 500 TB, băng thông không đủ. #13010 (lô 135): STS với agent pool vì nguồn tại chỗ và ràng buộc vùng. Bốn câu, bốn khoá, phân biệt bằng KHỐI LƯỢNG và YÊU CẦU — hoàn toàn nhất quán.
Vì sao các phương án khác sai
-
A (Storage Transfer Service) — đây là phương án gần nhất và hoàn toàn làm được, nhưng nó là dịch vụ cho khối lượng lớn, chạy theo lịch, cần agent với nguồn tại chỗ — quá nhiều bước cho một lần chép 0,9 GB.
-
B (Transfer Appliance) — thiết bị vật lý cho hàng trăm TB; gửi ổ cứng qua bưu điện cho 0,9 GB là vô lý.
-
D (Cloud Storage FUSE) — gắn bucket như một hệ thống tệp để ứng dụng đọc ghi liên tục; không phải công cụ chép một lần.
Ghi nhớ
⚠ Chọn công cụ theo KHỐI LƯỢNG và TẦN SUẤT — bảng phải thuộc: | Tình huống | Công cụ | |---|---| | Vài GB, một lần, trong script | gcloud storage cp / rsync | | TB, từ đám mây khác hoặc tại chỗ, có lịch | Storage Transfer Service | | Hàng trăm TB, băng thông không đủ | Transfer Appliance | | Ứng dụng cần đọc bucket như thư mục | Cloud Storage FUSE | | Nạp vào BigQuery | bq load / LOAD DATA |
Từ khoá nhận diện:
"vài GB, một lần, script tuỳ chỉnh" →
gcloud storage"TB, theo lịch, được quản lý" → Storage Transfer Service "băng thông không đủ, hàng trăm TB" → Transfer Appliance "gắn bucket như thư mục" → Cloud Storage FUSE "đồng bộ hai bên" →rsynchoặc STS
gcloud storage ↔ gsutil |
Nội dung |
|---|---|
gcloud storage |
thế hệ mới, NHANH HƠN đáng kể |
gsutil |
công cụ cũ, vẫn dùng được |
gcloud storage cp |
↔ gsutil cp |
gcloud storage rsync |
↔ gsutil rsync |
| Khuyến nghị | dùng gcloud storage cho việc mới |
| Đề thi | vẫn hỏi cả hai |
cp ↔ rsync — chọn cái nào |
Nội dung |
|---|---|
cp |
chép, ghi đè nếu đã có |
rsync |
chỉ chép phần KHÁC NHAU |
Dùng rsync khi |
đồng bộ lặp lại, hoặc chạy lại sau khi đứt |
| Cờ hữu ích | -r đệ quy, -d xoá ở đích cái không còn ở nguồn |
⚠ -d |
rất nguy hiểm — thử với -n (dry run) trước |
| Cloud Storage FUSE — dùng khi nào | Nội dung |
|---|---|
| Việc | gắn bucket như hệ thống tệp POSIX |
| Dùng cho | ứng dụng cũ chỉ biết đọc ghi tệp |
| Hạn chế | hiệu năng kém hơn API gốc, ngữ nghĩa POSIX không đầy đủ |
| Hợp với | huấn luyện ML đọc nhiều tệp nhỏ |
| Không phải | công cụ chuyển dữ liệu một lần |
| Với script tự động — thực hành tốt | Thói quen |
|---|---|
| Kiểm tra mã thoát | if ! gcloud storage cp ...; then |
| Ghi log kết quả | biết chuyển được bao nhiêu |
| Xác thực bằng service account | không dùng tài khoản cá nhân |
rsync để chạy lại an toàn |
không chép lại cái đã có |
| Đối chiếu sau khi xong | so số tệp và dung lượng |
Ba việc kiểm chứng: | Việc | Cách | |---|---| | Đã chép đủ chưa | gcloud storage ls -r gs://bucket/log/ \| wc -l | | Dung lượng có khớp không | gcloud storage du -s so với du -sh cục bộ | | Có tệp nào lỗi không | mã thoát và thông báo của lệnh |
Và một nguyên tắc đáng nhớ cho mọi câu hỏi dạng "chọn công cụ chuyển dữ liệu": đọc con số khối lượng trước tiên. Vài GB thì một lệnh CLI là đúng mức; vài TB thì cần dịch vụ được quản lý; vài trăm TB với đường truyền yếu thì mới tới thiết bị vật lý — và chọn sai mức luôn có nghĩa là làm quá nhiều hoặc quá ít.
A startup wants to migrate its application servers from its own data center to the cloud. Their primary requirement is to have full control over the operating system (e.g., choosing a specific Linux distribution and kernel version) and all installed software, while offloading the management of physical hardware and networking infrastructure to the cloud provider.
Which cloud service model best fits their needs?
-
A
Platform as a Service (PaaS)
-
B
Function as a Service (FaaS)
-
C
Software as a Service (SaaS)
-
D
Infrastructure as a Service (IaaS)
Xem giải thích
Đáp án
D — Infrastructure as a Service (IaaS — hạ tầng như một dịch vụ).
Vì sao đúng
Đề nêu hai vế rất rõ: đội muốn TOÀN QUYỀN kiểm soát hệ điều hành (chọn bản phân phối Linux, phiên bản kernel) và mọi phần mềm cài đặt, đồng thời giao phần cứng và mạng cho nhà cung cấp. Đó chính là ranh giới của IaaS.
⚠ Điểm mấu chốt — ai quản lý tới đâu:
IaaS ← đề này
Nhà cung cấp: phần cứng, ảo hoá,
mạng vật lý, điện, làm mát
BẠN: HỆ ĐIỀU HÀNH, runtime,
phần mềm, ứng dụng, dữ liệu
↓
→ Compute Engine
PaaS
Nhà cung cấp: + hệ điều hành, runtime,
mở rộng, vá lỗi
BẠN: chỉ ứng dụng và dữ liệu
↓
→ App Engine, Cloud Run
SaaS
Nhà cung cấp: TẤT CẢ
⚠ "Chọn bản phân phối Linux và phiên bản kernel" là dấu hiệu quyết định:
Kiểm soát tới mức KERNEL
↓
⚠ PaaS KHÔNG cho điều này
→ nhà cung cấp quyết định
hệ điều hành và runtime
↓
→ chỉ IaaS mới cho phép
⚠ Cái giá của quyền kiểm soát:
Với IaaS bạn PHẢI tự lo:
- vá lỗi hệ điều hành
- cấu hình tường lửa và bảo mật
- cài và cập nhật phần mềm
- giám sát, sao lưu
- tự co giãn (MIG, autoscaling)
↓
⚠ Đây là đánh đổi có ý thức,
không phải "tiện thì chọn"
⚠ "Lift and shift" — mẫu chuyển đổi của đề này:
Máy chủ ứng dụng tại trung tâm dữ liệu
↓
Migrate to Virtual Machines
↓
VM trên Compute Engine
↓
→ chuyển nhanh, ít rủi ro
→ nhưng KHÔNG tận dụng được
lợi thế của đám mây ngay
↓
Bước tiếp theo thường là
"improve and move" → container, PaaS
Xem thêm câu #13058 (cùng lô): khoá PaaS vì ở đó đội KHÔNG muốn quản lý hệ điều hành. Hai câu là hai mặt của cùng một trục — hoàn toàn nhất quán.
Vì sao các phương án khác sai
-
A (PaaS) — đây là phương án gần nhất và cũng giao hạ tầng cho nhà cung cấp, nhưng với PaaS bạn KHÔNG chọn được bản phân phối Linux hay phiên bản kernel — nhà cung cấp quản lý tầng đó.
-
B (FaaS) — mức trừu tượng cao nhất: bạn chỉ viết hàm, không kiểm soát gì về môi trường.
-
C (SaaS) — phần mềm dùng sẵn; không chạy được ứng dụng riêng của công ty.
Ghi nhớ
⚠ Bốn mô hình dịch vụ — bảng phải thuộc: | Mô hình | Bạn quản lý | Ví dụ trên GCP | |---|---|---| | IaaS | hệ điều hành, runtime, ứng dụng, dữ liệu | Compute Engine | | PaaS | ứng dụng và dữ liệu | App Engine, Cloud Run | | FaaS | chỉ hàm | Cloud Run functions | | SaaS | chỉ dữ liệu và cấu hình | Google Workspace | | Mẹo nhớ | càng lên cao, kiểm soát càng ít, việc càng nhẹ |
Từ khoá nhận diện:
"chọn hệ điều hành, kernel, phần mềm hệ thống" → IaaS "chỉ viết mã, không quản hệ điều hành" → PaaS "chỉ một hàm theo sự kiện" → FaaS "dùng phần mềm có sẵn" → SaaS "lift and shift máy chủ" → IaaS / Compute Engine
| Khi nào thật sự cần IaaS | Trường hợp |
|---|---|
| Phần mềm cần quyền kernel | driver, module hệ thống |
| Giấy phép ràng buộc phần cứng | Oracle, một số phần mềm doanh nghiệp |
| Lift and shift nhanh | chưa kịp tái kiến trúc |
| Cấu hình mạng đặc thù | |
| GPU/TPU với cấu hình riêng | |
| Nếu không có lý do nào | PaaS thường tốt hơn |
| Trách nhiệm chung về bảo mật | Nội dung |
|---|---|
| Google lo | bảo mật CỦA đám mây — hạ tầng, phần cứng, mạng vật lý |
| Bạn lo | bảo mật TRONG đám mây |
| Với IaaS | bạn lo thêm VÁ HỆ ĐIỀU HÀNH |
| Với PaaS | Google vá hệ điều hành và runtime |
| Dữ liệu và IAM | LUÔN là trách nhiệm của bạn |
| Giảm gánh nặng khi buộc phải dùng IaaS | Cách |
|---|---|
| OS Config / VM Manager | quản lý bản vá tập trung |
| Managed instance group | co giãn và tự chữa |
| Custom image / Packer | máy dựng lại được, đồng nhất |
| OS Login | quản lý SSH bằng IAM |
| Shielded VM | chống rootkit |
| Ops Agent | log và chỉ số |
| Lộ trình hiện đại hoá | Bước |
|---|---|
| 1 | Lift and shift → Compute Engine |
| 2 | Container hoá → Cloud Run hoặc GKE |
| 3 | Thay thành phần bằng dịch vụ được quản lý |
| 4 | Tái kiến trúc khi có nhu cầu rõ ràng |
| Nguyên tắc | chuyển lên trước, tối ưu sau |
Ba việc kiểm chứng: | Việc | Cách | |---|---| | VM đang chạy hệ điều hành nào | gcloud compute instances describe <vm> → licenses | | Bản vá có được cập nhật không | VM Manager → OS patch management | | Có thể chuyển sang container không | rà soát phụ thuộc mức hệ điều hành |
Và một câu hỏi đáng đặt ra ngay sau khi hoàn tất "lift and shift": có thật sự cần quyền kiểm soát tới kernel nữa không? Rất nhiều ứng dụng được chuyển lên IaaS vì đó là cách nhanh nhất, rồi ở lại đó nhiều năm — trong khi phần lớn chúng chạy tốt trên Cloud Run và có thể tiết kiệm cả chi phí lẫn công vá lỗi hằng tháng.
A development team is creating a new real-time chat application for web and mobile devices. They need a serverless, managed database that can easily handle a flexible data structure for messages and user profiles. A key feature is the ability to automatically push updates to connected clients in real time whenever new messages are added.
Which database is the best fit for these requirements?
- A Firestore
- B AlloyDB
- C Cloud SQL
- D Spanner
Xem giải thích
Đáp án
A — Firestore.
Vì sao đúng
Đề nêu bốn điều: ứng dụng chat thời gian thực cho web và di động, CSDL không máy chủ, được quản lý, cấu trúc dữ liệu LINH HOẠT, và — quan trọng nhất — tự động ĐẨY cập nhật tới các máy khách đang kết nối. Chỉ Firestore có tính năng cuối.
⚠ Điểm mấu chốt — real-time listener là thứ không CSDL nào khác có:
Firestore
↓
Máy khách ĐĂNG KÝ LẮNG NGHE
một truy vấn hoặc tài liệu
↓
Có tin nhắn mới được ghi
↓
⚠ Firestore TỰ ĐẨY thay đổi
tới MỌI máy khách đang lắng nghe
↓
→ không phải polling
→ không phải tự dựng WebSocket
↓
Đúng yêu cầu "tự động đẩy cập nhật"
⚠ Bốn đặc điểm khớp với ứng dụng chat:
1. REAL-TIME LISTENER
→ tin nhắn xuất hiện ngay
2. LƯỢC ĐỒ LINH HOẠT (tài liệu)
→ tin nhắn có thể có ảnh, file,
emoji, trả lời — cấu trúc khác nhau
3. SDK CHO DI ĐỘNG VÀ WEB
→ Android, iOS, Web, Flutter
→ có CHẾ ĐỘ NGOẠI TUYẾN
4. KHÔNG MÁY CHỦ, TỰ CO GIÃN
→ không quản lý gì
⚠ Chế độ ngoại tuyến — điểm cộng lớn cho ứng dụng chat:
Máy khách mất mạng
↓
SDK Firestore vẫn cho ĐỌC từ
bộ nhớ đệm cục bộ
và GHI vào hàng đợi
↓
Có mạng lại
↓
→ tự đồng bộ lên máy chủ
↓
⚠ Người dùng gần như không thấy gián đoạn
Xem thêm câu #13072 (cùng lô): khoá Cloud SQL cho ứng dụng blog quan hệ, thông thường. Và #12563 (lô 133): khoá Spanner cho nhiều Region, nhất quán mạnh. Ba câu, ba khoá, phân biệt bằng MÔ HÌNH DỮ LIỆU và YÊU CẦU — hoàn toàn nhất quán.
Vì sao các phương án khác sai
-
D (Spanner) — đây là phương án gần nhất về mặt "CSDL được quản lý, mở rộng tốt", nhưng nó là CSDL QUAN HỆ với lược đồ cố định, không có real-time listener, không có SDK di động với chế độ ngoại tuyến, và chi phí tối thiểu cao hơn nhiều.
-
C (Cloud SQL) và B (AlloyDB) — đều là CSDL quan hệ lược đồ cố định, không đẩy cập nhật thời gian thực, và ứng dụng phải tự dựng cơ chế WebSocket.
Ghi nhớ
⚠ Chọn CSDL theo mô hình và yêu cầu — bảng phải thuộc: | Nhu cầu | Dịch vụ | |---|---| | Thời gian thực, di động, lược đồ linh hoạt | Firestore | | Quan hệ, thông thường, một Region | Cloud SQL | | PostgreSQL hiệu năng cao | AlloyDB | | Quan hệ, nhiều Region, nhất quán mạnh | Spanner | | NoSQL ghi cực lớn, chuỗi thời gian | Bigtable | | Phân tích | BigQuery |
Từ khoá nhận diện:
"chat, thông báo, đồng bộ thời gian thực" → Firestore "ứng dụng di động có chế độ ngoại tuyến" → Firestore "giao dịch quan hệ thông thường" → Cloud SQL "toàn cầu + nhất quán mạnh" → Spanner "hàng triệu điểm dữ liệu mỗi giây" → Bigtable
| Firestore — điều cần nhớ | Nội dung |
|---|---|
| Mô hình | tài liệu (document) trong collection |
| Real-time listener | đẩy thay đổi tới máy khách |
| Chế độ ngoại tuyến | SDK đệm cục bộ |
| Security Rules | phân quyền NGAY Ở TẦNG CSDL |
| Hai chế độ | Native (ứng dụng) và Datastore (tương thích cũ) |
| ⚠ Chọn chế độ | KHÔNG đổi được sau khi tạo |
| Chỉ mục | tự động cho trường đơn; hỗn hợp phải khai |
| Security Rules — điểm rất mạnh của Firestore | Nội dung |
|---|---|
| Phân quyền ngay trong CSDL | không cần tầng backend riêng |
| Ví dụ | chỉ người trong phòng chat mới đọc được tin nhắn |
| Tích hợp | Firebase Authentication |
| Lợi ích | ứng dụng di động gọi thẳng CSDL an toàn |
| Bẫy | quy tắc quá lỏng — luôn kiểm thử |
| Thiết kế dữ liệu chat trong Firestore | Nội dung |
|---|---|
/phong/{phongId}/tin_nhan/{tinNhanId} |
subcollection |
| Giới hạn 1 MB mỗi tài liệu | tin nhắn nhỏ, không vấn đề |
| Tệp đính kèm | lưu ở Cloud Storage, tài liệu giữ đường dẫn |
| Phân trang | orderBy + limit + startAfter |
| Chỉ mục hỗn hợp | khai trong firestore.indexes.json |
| Chi phí Firestore — cách tính khác CSDL thường | Nội dung |
|---|---|
| Tính theo số THAO TÁC ĐỌC/GHI/XOÁ | không theo giờ máy |
| Real-time listener | mỗi tài liệu thay đổi là một lượt đọc |
| Tối ưu | đọc ít tài liệu hơn, dùng phân trang |
| Lưu trữ và băng thông | tính riêng |
| Cẩn thận | listener trên collection lớn có thể tốn nhanh |
Ba việc kiểm chứng: | Việc | Cách | |---|---| | Security Rules có chặt không | Firestore emulator và bộ kiểm thử rules | | Chi phí đọc bao nhiêu | Firestore usage dashboard | | Chỉ mục có đủ không | lỗi truy vấn thường kèm sẵn link tạo chỉ mục |
Và một khoản chi phí rất dễ vượt dự toán với ứng dụng chat trên Firestore: listener đặt trên một collection quá rộng. Mỗi tài liệu thay đổi trong phạm vi lắng nghe đều tính là một lượt đọc cho từng máy khách — nên hãy lắng nghe đúng phòng chat đang mở, kèm giới hạn số tin nhắn, thay vì lắng nghe toàn bộ lịch sử.
When configuring the metadata cache for a BigLake table to balance query performance and data freshness, what is the valid range you can set for the cache's stale time?
- A It is not configurable; it is fixed at 1 hour.
- B From 1 minute to 24 hours.
- C From 1 day to 30 days.
- D From 30 minutes to 7 days.
Xem giải thích
Đáp án
D — Từ 30 phút tới 7 ngày.
Vì sao đúng
Với BigLake table, max_staleness khai mức "cũ" tối đa mà bạn chấp nhận cho bộ nhớ đệm siêu dữ liệu, và BigQuery cho phép đặt trong khoảng 30 phút tới 7 ngày.
⚠ Điểm mấu chốt — đánh đổi giữa TỐC ĐỘ và ĐỘ TƯƠI:
max_staleness NHỎ (gần 30 phút)
↓
→ dữ liệu mới xuất hiện nhanh
→ nhưng cache làm mới thường xuyên
→ tốn hơn, ít lợi ích hơn
max_staleness LỚN (gần 7 ngày)
↓
→ truy vấn rất nhanh
→ nhưng tệp mới có thể chưa thấy
trong nhiều ngày
↓
⚠ Chọn theo TẦN SUẤT dữ liệu mới về
⚠ Cấu hình:
CREATE EXTERNAL TABLE `du_an.lake.su_kien`
WITH CONNECTION `du_an.asia-southeast1.ket-noi`
OPTIONS (
format = 'PARQUET',
uris = ['gs://lake/su-kien/*.parquet'],
max_staleness = INTERVAL 1 HOUR,
metadata_cache_mode = 'AUTOMATIC'
);
↓
AUTOMATIC → BigQuery tự làm mới
MANUAL → bạn gọi
BQ.REFRESH_EXTERNAL_METADATA_CACHE
⚠ Vì sao metadata cache lại quan trọng đến vậy:
Data lake có HÀNG TRIỆU tệp
↓
Không có cache
↓
→ mỗi truy vấn phải LIỆT KÊ tệp
và đọc thống kê
→ phần lớn thời gian truy vấn
dành cho việc này
↓
Có cache
↓
→ danh sách tệp và thống kê đã sẵn
→ truy vấn nhanh hơn NHIỀU LẦN
Xem thêm câu #13069 (cùng lô): về BigLake table và các tính năng bảo mật của nó. Câu này đi sâu vào cấu hình hiệu năng. Hai câu bổ sung nhau. Và #12980 (lô 134) cũng về BigLake.
Vì sao các phương án khác sai
-
B (từ 1 phút tới 24 giờ) — đây là phương án gần nhất và nghe rất hợp lý, nhưng cận dưới thực tế là 30 phút và cận trên là 7 ngày, không phải 24 giờ.
-
A (không cấu hình được, cố định 1 giờ) — sai:
max_stalenesslà tuỳ chọn khai được. -
C (từ 1 ngày tới 30 ngày) — sai cả hai đầu.
Ghi nhớ
⚠ Metadata cache của BigLake — bảng phải thuộc: | Tham số | Nội dung | |---|---| | max_staleness | 30 PHÚT tới 7 NGÀY | | metadata_cache_mode = 'AUTOMATIC' | BigQuery tự làm mới | | metadata_cache_mode = 'MANUAL' | bạn tự gọi làm mới | | Làm mới thủ công | BQ.REFRESH_EXTERNAL_METADATA_CACHE | | Áp dụng cho | BigLake table, và object table | | Lợi ích | tăng tốc truy vấn trên data lake nhiều tệp |
Từ khoá nhận diện:
"cache siêu dữ liệu BigLake" → 30 phút – 7 ngày "tự làm mới" →
AUTOMATIC"làm mới ngay sau khi nạp tệp" →MANUAL+ gọi thủ tục "truy vấn data lake chậm" → bật metadata caching "external table thường" → không có metadata cache
Chọn max_staleness theo nhịp dữ liệu |
Nhịp |
|---|---|
| Tệp mới về mỗi giờ | INTERVAL 30 MINUTE – 1 HOUR |
| Tệp mới về mỗi ngày | INTERVAL 6 HOUR – 12 HOUR |
| Dữ liệu lịch sử, ít đổi | INTERVAL 1 DAY trở lên |
| Pipeline có bước nạp rõ ràng | MANUAL + làm mới sau khi nạp |
| Nguyên tắc | đủ tươi cho nghiệp vụ, đủ lâu để có lợi |
| Chế độ MANUAL — mẫu dùng rất tốt | Bước |
|---|---|
| 1 | Pipeline ghi tệp mới vào GCS |
| 2 | Gọi BQ.REFRESH_EXTERNAL_METADATA_CACHE |
| 3 | Báo cáo truy vấn — thấy ngay dữ liệu mới |
| Ưu điểm | kiểm soát chính xác thời điểm |
| Hợp với | pipeline theo lô có lịch rõ ràng |
| Các cách tăng tốc truy vấn data lake | Cách |
|---|---|
| Metadata caching | hiệu quả nhất với nhiều tệp |
| Định dạng Parquet/ORC | lưu theo cột, có thống kê |
| Tệp 128 MB – 1 GB | tránh hàng vạn tệp nhỏ |
| Phân vùng theo thư mục | Hive partitioning nam=2026/thang=09/ |
| Sắp xếp theo cột hay lọc | predicate pushdown hiệu quả hơn |
| Gộp tệp định kỳ (compaction) |
| BigLake ↔ external table thường | Nội dung |
|---|---|
| Metadata caching | BigLake CÓ, external thường KHÔNG |
| Row/column-level security | BigLake CÓ |
| Quyền trên bucket | BigLake KHÔNG cần cho người dùng cuối |
| Đọc nhiều đám mây | BigLake hỗ trợ S3, Azure |
| Khuyến nghị | dùng BigLake cho data lake có quản trị |
Ba việc kiểm chứng: | Việc | Cách | |---|---| | Cache cấu hình thế nào | bq show --format=prettyjson <bảng> → maxStaleness | | Truy vấn có nhanh hơn không | so thời gian trước và sau khi bật cache | | Dữ liệu có bị cũ không | so MAX(<cột thời gian>) với tệp mới nhất trong bucket |
Và một mẫu rất đáng áp dụng với pipeline theo lô: đặt metadata_cache_mode = 'MANUAL' rồi gọi làm mới ngay sau bước nạp tệp. Cách đó cho bạn cả tốc độ của cache lẫn sự chắc chắn rằng báo cáo chạy ngay sau pipeline sẽ thấy đúng dữ liệu vừa được ghi.
A company needs to conduct a security audit to identify and classify sensitive data across its entire Google Cloud project. The goal is to automatically scan hundreds of Cloud Storage buckets and BigQuery tables to find any instances of PII (Personally Identifiable Information), such as email addresses and phone numbers, and generate a report of the findings.
Which service is designed for this automated data discovery and classification task?
- A Data Catalog
- B IAM (Identity and Access Management)
- C Cloud Data Loss Prevention (DLP)
- D Cloud KMS (Key Management Service)
Xem giải thích
Đáp án
C — Cloud Data Loss Prevention (DLP), nay là Sensitive Data Protection.
Vì sao đúng
Đề nêu bốn điều: quét tự động hàng trăm bucket và bảng BigQuery, tìm PII như email và số điện thoại, phân loại, và sinh báo cáo kết quả. Đó chính là công việc của Sensitive Data Protection.
⚠ Điểm mấu chốt — phát hiện tự động bằng bộ nhận dạng dựng sẵn:
Sensitive Data Protection
↓
Hơn 150 INFOTYPE dựng sẵn:
EMAIL_ADDRESS
PHONE_NUMBER
CREDIT_CARD_NUMBER
PERSON_NAME
IP_ADDRESS
VIETNAM_NATIONAL_ID_NUMBER
... và nhiều loại theo quốc gia
↓
Quét CLOUD STORAGE, BIGQUERY, DATASTORE
↓
→ báo cáo: cột nào, tệp nào,
loại PII gì, mức tin cậy bao nhiêu
⚠ Hai chế độ quét:
DISCOVERY (khám phá)
→ quét LIÊN TỤC toàn tổ chức
→ tự lập hồ sơ dữ liệu
→ cảnh báo khi phát hiện PII mới
↓
Hợp với "kiểm toán toàn project"
INSPECTION JOB
→ quét MỘT nguồn cụ thể theo yêu cầu
→ kết quả ghi ra BigQuery hoặc Pub/Sub
⚠ Kết quả dùng để làm gì tiếp:
Báo cáo phát hiện PII
↓
→ biết cột nào cần GẮN POLICY TAG
→ biết bucket nào cần siết quyền
→ biết dữ liệu nào cần che hoặc mã hoá
↓
⚠ Phát hiện là BƯỚC ĐẦU;
hành động là bước sau
Xem thêm câu #13080 (cùng lô): dùng Dataflow template tích hợp DLP để PHÁT HIỆN VÀ CHE ngay trên đường nạp. Hai câu bổ sung nhau: câu này là kiểm toán tĩnh, câu kia là bảo vệ động. Và #12965 (lô 134): dùng policy tag để chặn cột — hành động sau khi đã phát hiện.
Vì sao các phương án khác sai
-
A (Data Catalog / Dataplex) — đây là phương án gần nhất vì cũng lập danh mục dữ liệu toàn tổ chức, nhưng nó không tự quét NỘI DUNG để tìm PII; nó quản lý siêu dữ liệu và policy tag. (Hai dịch vụ làm việc cùng nhau: DLP phát hiện, Catalog gắn tag.)
-
B (IAM) — kiểm soát AI được truy cập, không phát hiện dữ liệu nhạy cảm nằm ở đâu.
-
D (Cloud KMS) — quản lý khoá mã hoá, không quét nội dung.
Ghi nhớ
⚠ Vòng đời bảo vệ dữ liệu nhạy cảm — bảng phải thuộc: | Bước | Công cụ | |---|---| | PHÁT HIỆN PII ở đâu | Sensitive Data Protection (DLP) | | PHÂN LOẠI mức nhạy cảm | policy tag trong Dataplex Catalog | | CHẶN hoặc CHE | column-level security, dynamic masking | | LỌC DÒNG | row-level security | | MÃ HOÁ trong cột | AEAD | | THEO DÕI truy cập | Data Access audit log |
Từ khoá nhận diện:
"quét tự động tìm PII, phân loại, báo cáo" → Sensitive Data Protection "tìm dữ liệu bằng thuật ngữ nghiệp vụ" → Dataplex Catalog "che PII trên đường nạp" → Dataflow + DLP template "chặn cột nhạy cảm" → policy tag "ai được truy cập" → IAM
| Sensitive Data Protection — ba nhóm chức năng | Nhóm |
|---|---|
| Inspection | PHÁT HIỆN dữ liệu nhạy cảm |
| De-identification | CHE, thay thế, token hoá, dịch chuyển ngày |
| Risk analysis | k-anonymity, l-diversity — đo rủi ro tái định danh |
| Nguồn quét | Cloud Storage, BigQuery, Datastore, dữ liệu gửi trực tiếp |
| Kết quả | BigQuery, Pub/Sub, Security Command Center |
| Các kỹ thuật khử định danh | Kỹ thuật |
|---|---|
| Redaction | xoá hẳn giá trị |
| Masking | thay bằng ký tự che |
| Tokenization (FPE) | giữ định dạng, ánh xạ ngược được |
| Crypto hashing | băm — nối bảng được, không đảo ngược |
| Date shifting | dịch ngày theo độ lệch cố định cho mỗi người |
| Bucketing | tuổi 37 → nhóm 30–39 |
| Kết quả quét — dùng thế nào | Việc |
|---|---|
| Gắn policy tag cho cột phát hiện được | |
| Siết quyền trên bucket có PII | |
| Bật Data Access audit log cho nguồn nhạy cảm | |
| Đưa vào Security Command Center | theo dõi tập trung |
| Quét định kỳ | PII mới xuất hiện liên tục |
| Vì sao phải quét ĐỊNH KỲ | Lý do |
|---|---|
| Nguồn dữ liệu mới được thêm | |
| Trường văn bản tự do | PII lọt vào phần ghi chú |
| Lược đồ thay đổi | cột mới chưa được phân loại |
| Người dùng tạo bảng mới | |
| Cách làm | Discovery chạy liên tục ở cấp tổ chức |
Ba việc kiểm chứng: | Việc | Cách | |---|---| | Quét tìm được gì | kết quả inspection job trong BigQuery | | Cột nào đã gắn tag | bq show --schema --format=prettyjson | | Có nguồn nào chưa quét | cấu hình phạm vi của Discovery |
Và một phát hiện gần như luôn xuất hiện trong lần quét đầu tiên: PII nằm trong các trường văn bản tự do. Số điện thoại trong ô ghi chú, email trong mô tả sản phẩm, tên người trong nội dung phản hồi — đó là những chỗ mà không ai nghĩ tới khi liệt kê "cột nhạy cảm" bằng tay, và cũng là lý do việc quét tự động đáng làm.
An analyst has run a query in Looker that shows total sales by country. They now want to add a new column to the results table that shows each country's percentage of the overall total sales. This calculation should be performed only on the data already returned from the database.
Which Looker feature should they use?
- A A LookML (Looker Modeling Language) measure
- B A Custom Field
- C Dynamic Data Masking
- D A Table Calculation
Xem giải thích
Đáp án
D — Một Table Calculation.
Vì sao đúng
Đề nêu điều kiện quyết định: phép tính phải được thực hiện CHỈ TRÊN DỮ LIỆU ĐÃ TRẢ VỀ từ CSDL. Đó chính là định nghĩa của Table Calculation trong Looker.
⚠ Điểm mấu chốt — tính SAU khi CSDL đã trả kết quả:
Looker chạy truy vấn
↓
CSDL trả về: quốc gia + tổng doanh số
↓
TABLE CALCULATION chạy TRÊN kết quả đó
↓
percent_of_total(${doanh_so})
↓
→ thêm cột phần trăm
↓
⚠ KHÔNG có truy vấn thứ hai
⚠ KHÔNG đẩy gì xuống CSDL
⚠ Các hàm Table Calculation hay dùng:
percent_of_total(${x}) → phần trăm của tổng
running_total(${x}) → cộng dồn
rank(${x}, ${x}) → xếp hạng
offset(${x}, 1) → giá trị dòng sau
offset(${x}, -1) → giá trị dòng trước
${x} / offset(${x}, -1) - 1
→ tăng trưởng so với kỳ trước
row(), pivot_index() → vị trí
⚠ ⚠ Cái bẫy lớn nhất — row limit:
Table Calculation tính trên
SỐ DÒNG ĐÃ TRẢ VỀ
↓
Look có row limit = 500
nhưng thực tế có 2000 quốc gia
↓
⚠ percent_of_total tính trên tổng
của 500 dòng, KHÔNG PHẢI tổng thật
↓
→ mọi phần trăm đều SAI
↓
Khắc phục:
- tăng row limit
- hoặc dùng LOOKML MEASURE
(tính ở CSDL)
Xem thêm câu #13070 (cùng lô): khoá LookML cho chỉ số chính thức, toàn tổ chức. Và #13073 (cùng lô): khoá Custom Field cho phép tính đẩy xuống CSDL trước khi tổng hợp. Ba câu, ba khoá, phân biệt bằng TÍNH Ở ĐÂU — hoàn toàn nhất quán.
Vì sao các phương án khác sai
-
B (Custom Field) — đây là phương án gần nhất vì cũng do người dùng tạo, nhưng Custom Field được ĐẨY XUỐNG CSDL — trái yêu cầu "chỉ tính trên dữ liệu đã trả về".
-
A (LookML measure) — cũng tính trong CSDL, và cần quyền developer; quá nặng cho một cột phần trăm trong một báo cáo.
-
C (Dynamic Data Masking) — là tính năng bảo mật của BigQuery, hoàn toàn không liên quan tới việc tính toán.
Ghi nhớ
⚠ Ba nơi tính toán trong Looker — bảng tổng kết: | Nơi | Ai tạo | Tính ở đâu | Ví dụ điển hình | |---|---|---|---| | LookML | Developer | CSDL | chỉ số chính thức: ARR, CLV | | Custom Field | người dùng | CSDL | nối hai cột thành full_name | | Table Calculation | người dùng | KẾT QUẢ đã trả về | % của tổng, cộng dồn, xếp hạng |
Từ khoá nhận diện:
"tính trên dữ liệu đã trả về" → Table Calculation "% của tổng, cộng dồn, so với dòng trước" → Table Calculation "tính trong CSDL, trước khi tổng hợp" → Custom Field "chỉ số chính thức, được quản trị" → LookML "che dữ liệu nhạy cảm" → masking — chuyện khác hẳn
| Ưu điểm của Table Calculation | Ưu điểm |
|---|---|
| Rất nhanh | không tốn thêm truy vấn |
| Người dùng tự làm | không cần developer |
| Thấy kết quả ngay | sửa và xem lại tức thì |
| Hàm phong phú | offset, rank, running total |
| Hợp với | phép tính trên kết quả bảng |
| Hạn chế phải nhớ | Hạn chế |
|---|---|
| Chỉ tính trên số dòng đã trả về | row limit ảnh hưởng kết quả |
| Không dùng làm chiều gom nhóm | vì tính sau |
| Không lọc được ở CSDL theo nó | chỉ lọc được sau |
| Không tái sử dụng ở Look khác | trừ khi sao chép |
| Nặng khi có rất nhiều dòng | trình duyệt phải tính |
| Khi nào phải chuyển sang LookML measure | Dấu hiệu |
|---|---|
| Kết quả sai vì row limit | dấu hiệu rõ nhất |
| Nhiều người cùng cần phép tính đó | |
| Cần dùng làm chiều để lọc hoặc gom nhóm | |
| Cần đảm bảo nhất quán | |
| Mẫu tốt | thử bằng Table Calculation, chốt thì đưa vào LookML |
| Kiểm tra kết quả Table Calculation | Việc |
|---|---|
| Xem row limit của Look | có bị cắt không |
| So tổng với truy vấn riêng | SELECT SUM(...) toàn bộ |
| Kiểm tra khi có bộ lọc | phần trăm tính trên phạm vi nào |
| Kiểm tra khi pivot | hàm tính theo cột hay theo dòng |
| Nguyên tắc | luôn đối chiếu một lần với con số độc lập |
Ba việc kiểm chứng: | Việc | Cách | |---|---| | Phép tính chạy ở đâu | tab SQL — nếu không thấy trong SQL thì là Table Calculation | | Row limit là bao nhiêu | thiết lập của Look | | Tổng có đúng không | so với truy vấn tổng hợp riêng |
Và một phép kiểm tra bắt buộc mỗi khi dùng percent_of_total: so tổng trong báo cáo với tổng thật của toàn bộ dữ liệu. Nếu Look bị giới hạn số dòng, phần trăm sẽ được tính trên một mẫu chứ không phải toàn bộ — và đó là loại sai lệch cho ra những con số trông hoàn toàn hợp lý nhưng cộng lại vẫn đúng 100%, nên rất khó phát hiện.
A retail company needs to automatically detect and redact PII (such as emails and credit card numbers) in CSV files as they are ingested from Cloud Storage to BigQuery, with minimal custom code and managed scaling.
What should they implement on Google Cloud?
-
A
Encrypt the CSV files with Cloud KMS before uploading to Cloud Storage.
-
B
Use a Dataflow template that integrates with Cloud DLP to inspect and de-identify the data before writing to BigQuery.
-
C
Enable VPC Service Controls around the project handling ingestion.
-
D
Grant the BigQuery Data Editor role to the service account that loads the data.
Xem giải thích
Đáp án
B — Dùng một Dataflow template tích hợp với Cloud DLP để kiểm tra và khử định danh dữ liệu TRƯỚC KHI ghi vào BigQuery.
Vì sao đúng
Đề nêu bốn điều: tự động phát hiện và che PII, trên đường nạp từ Cloud Storage vào BigQuery, ít mã tuỳ chỉnh nhất, và tự co giãn. Template dựng sẵn kết hợp Dataflow với DLP đáp ứng cả bốn.
⚠ Điểm mấu chốt — Google đã có sẵn template cho đúng việc này:
Template "Data Masking/Tokenization
from Cloud Storage to BigQuery
using Cloud DLP"
↓
Đọc CSV từ Cloud Storage
↓
Gọi DLP API để KIỂM TRA và
KHỬ ĐỊNH DANH theo template đã khai
↓
Ghi kết quả đã che vào BigQuery
↓
⚠ Chạy bằng cấu hình, KHÔNG viết mã
⚠ Dataflow tự co giãn
⚠ Vì sao phải che TRƯỚC KHI ghi vào BigQuery:
Nếu nạp thô rồi che sau
↓
⚠ PII ĐÃ NẰM trong kho một khoảng thời gian
⚠ Có thể lọt vào bản sao, snapshot,
time travel
⚠ Ai truy vấn trong khoảng đó đều thấy
↓
Che trên đường nạp
↓
→ PII KHÔNG BAO GIỜ chạm tới kho
→ dễ giải trình với kiểm toán hơn nhiều
⚠ Cấu hình DLP template — quyết định cách che:
DE-IDENTIFY TEMPLATE khai:
- infoType nào cần tìm
(EMAIL_ADDRESS, CREDIT_CARD_NUMBER)
- hành động: redact / mask /
tokenize (FPE) / hash
- ngưỡng tin cậy
↓
⚠ Template lưu riêng, TÁI SỬ DỤNG
cho nhiều pipeline
Xem thêm câu #13078 (cùng lô): dùng DLP để QUÉT PHÁT HIỆN PII trong kho hiện có. Câu này dùng DLP để CHE TRÊN ĐƯỜNG NẠP. Hai câu bổ sung nhau: kiểm toán tĩnh và bảo vệ động. Và #12999 (lô 135): cũng dùng Dataflow che PII giữa Pub/Sub và BigQuery.
Vì sao các phương án khác sai
-
A (mã hoá tệp CSV bằng Cloud KMS trước khi tải lên) — đây là phương án gần nhất về mặt "bảo vệ dữ liệu", nhưng nó bảo vệ CẢ TỆP; khi giải mã để nạp, PII vẫn nguyên vẹn đi vào BigQuery. Không phát hiện và không che gì.
-
C (bật VPC Service Controls) — dựng vành đai chống dữ liệu ra ngoài, nhưng PII vẫn nằm trong BigQuery với đầy đủ giá trị.
-
D (cấp
BigQuery Data Editorcho service account nạp dữ liệu) — chỉ là cấp quyền để nạp; không liên quan gì tới việc che PII.
Ghi nhớ
⚠ Bảo vệ PII theo vị trí trong luồng — bảng phải thuộc: | Vị trí | Công cụ | |---|---| | Trên đường nạp (trước khi vào kho) | Dataflow + DLP template | | Đã ở trong kho — phát hiện | DLP inspection / discovery | | Đã ở trong kho — che khi đọc | dynamic data masking | | Đã ở trong kho — chặn cột | column-level security | | Trong bảng, dạng bản mã | AEAD | | Chống rò rỉ ra ngoài | VPC Service Controls |
Từ khoá nhận diện:
"che PII trên đường nạp, ít mã" → Dataflow template + DLP "quét tìm PII trong kho" → DLP inspection "che theo vai trò người xem" → dynamic data masking "chặn hẳn cột" → column-level security "mã hoá tệp" → không giải quyết bài toán PII trong dữ liệu
| Các template Dataflow dựng sẵn hữu ích | Template |
|---|---|
| GCS Text to BigQuery | nạp cơ bản |
| Data Masking/Tokenization với DLP | che PII trên đường nạp |
| Pub/Sub to BigQuery | luồng |
| Pub/Sub to GCS | lưu trữ |
| JDBC to BigQuery | từ CSDL |
| Lợi ích | chạy bằng cấu hình, không viết mã |
| DLP de-identification — các kỹ thuật | Kỹ thuật |
|---|---|
| Redaction | xoá hẳn giá trị |
| Masking | thay bằng ký tự, giữ vài ký tự cuối |
| Format-preserving tokenization | giữ định dạng, ánh xạ ngược được bằng khoá |
| Crypto hashing | băm — nối bảng được |
| Date shifting | dịch ngày nhất quán theo từng người |
| Bucketing | gom vào khoảng |
| Chọn kỹ thuật theo nhu cầu phân tích | Nhu cầu |
|---|---|
| Không cần dùng giá trị nữa | redaction |
| Cần nối bảng theo giá trị đó | hashing hoặc tokenization |
| Cần khôi phục lại được | tokenization có khoá |
| Cần giữ phân phối để phân tích | bucketing, date shifting |
| Nguyên tắc | che vừa đủ để dữ liệu vẫn hữu dụng |
| Kiểm chứng sau khi triển khai | Việc |
|---|---|
| Quét lại bảng đích bằng DLP | tìm PII còn sót |
| Kiểm tra bản ghi hỏng | dead-letter |
| Đo hiệu năng | gọi DLP API làm chậm pipeline |
| Kiểm tra chi phí | DLP tính theo lượng dữ liệu kiểm tra |
| Định kỳ | quét lại hằng tuần — lược đồ nguồn có thể đổi |
Ba việc kiểm chứng: | Việc | Cách | |---|---| | Bảng đích còn PII không | quét bằng Sensitive Data Protection | | Pipeline có lỗi không | log của job Dataflow | | Chi phí DLP bao nhiêu | billing export, lọc SKU DLP |
Và một phép kiểm chứng nên chạy định kỳ chứ không chỉ một lần khi triển khai: quét lại chính bảng đích để tìm PII còn sót. Cấu hình DLP đúng cho lược đồ hôm nay vẫn có thể bỏ lọt một cột mới được thêm vào tệp nguồn tháng sau — và một lần quét tự động hằng tuần phát hiện điều đó rẻ hơn rất nhiều so với việc để kiểm toán viên tìm thấy trước.