Quay lại bộ đề
Question #41 Topic 1
You need to choose a database to store time series CPU and memory usage for millions of computers. You need to store this data in one-second interval samples. Analysts will be performing real-time, ad hoc analytics against the database. You want to avoid being charged for every query executed and ensure that the schema design will allow for future growth of the dataset. Which database and data model should you choose?
Bạn cần chọn một cơ sở dữ liệu để lưu trữ chuỗi thời gian (time series) về việc sử dụng CPU và bộ nhớ cho hàng triệu máy tính. Bạn cần lưu trữ dữ liệu này theo các mẫu khoảng thời gian một giây. Các nhà phân tích sẽ thực hiện phân tích ad hoc thời gian thực trên cơ sở dữ liệu này. Bạn muốn tránh bị tính phí cho mỗi truy vấn được thực thi và đảm bảo rằng thiết kế lược đồ sẽ cho phép tập dữ liệu phát triển trong tương lai. Bạn nên chọn cơ sở dữ liệu và mô hình dữ liệu nào?
A
Create a table in BigQuery, and append the new samples for CPU and memory to the table
Tạo một bảng trong BigQuery và thêm (append) các mẫu mới cho CPU và bộ nhớ vào bảng
B
Create a wide table in BigQuery, create a column for the sample value at each second, and update the row with the interval for each second
Tạo một bảng rộng (wide table) trong BigQuery, tạo một cột cho giá trị mẫu tại mỗi giây, và cập nhật hàng với khoảng thời gian cho mỗi giây
C
Create a narrow table in Bigtable with a row key that combines the Computer Engine computer identifier with the sample time at each second
Tạo một bảng hẹp (narrow table) trong Bigtable với một row key kết hợp mã định danh máy tính Compute Engine với thời gian mẫu tại mỗi giây
D
Create a wide table in Bigtable with a row key that combines the computer identifier with the sample time at each minute, and combine the values for each second as column data.
Tạo một bảng rộng (wide table) trong Bigtable với một row key kết hợp mã định danh máy tính với thời gian mẫu tại mỗi phút, và kết hợp các giá trị của mỗi giây dưới dạng dữ liệu cột.
Giải thích & Tài liệu tham khảo
Yêu cầu đặt ra là lưu trữ dữ liệu chuỗi thời gian (time series) về CPU và RAM từ hàng triệu máy tính với tần suất 1 giây/mẫu, hỗ trợ phân tích ad-hoc thời gian thực, không muốn bị tính phí trên mỗi truy vấn, và thiết kế lược đồ tối ưu cho sự phát triển dữ liệu dài hạn.
- C. Tạo một bảng hẹp (narrow table) trong Bigtable với row key kết hợp computer_id và timestamp:
- Chọn Bigtable thay vì BigQuery: Cloud Bigtable là cơ sở dữ liệu NoSQL được tối ưu hóa cao cho dữ liệu chuỗi thời gian (time series) ở quy mô cực lớn. Khác với BigQuery tính phí dựa trên lượng dữ liệu quét qua mỗi truy vấn (on-demand querying cost), Bigtable tính phí theo số lượng node được cung cấp và dung lượng lưu trữ, giúp tránh được việc phát sinh chi phí cho mỗi truy vấn của các nhà phân tích.
- Thiết kế bảng hẹp (narrow table): Theo các tài liệu thực hành tốt nhất về thiết kế schema cho dữ liệu chuỗi thời gian của Google Cloud Bigtable, thiết kế bảng "hẹp và cao" (tall and narrow) với row key kết hợp định danh thiết bị và dấu thời gian (ví dụ:
computer_id#timestamp) là mô hình chuẩn. Mỗi hàng lưu trữ một điểm dữ liệu duy nhất tại một giây cụ thể. Thiết kế này giúp việc ghi dữ liệu đạt hiệu năng tối đa và cho phép quét (scan) dữ liệu theo phạm vi thời gian của một máy tính cụ thể cực kỳ hiệu quả nhờ tính chất sắp xếp lexicographical của Bigtable.
Các lựa chọn khác không phù hợp:
- A & B: BigQuery sẽ tính phí trên mỗi truy vấn được thực thi (đối với gói on-demand), điều này vi phạm yêu cầu tránh bị tính phí trên mỗi câu truy vấn.
- D: Việc tạo bảng rộng (wide table) lưu trữ toàn bộ dữ liệu 60 giây trong một hàng bằng cách cập nhật liên tục hoặc tạo cột động cho mỗi giây có cấu trúc phức tạp và không tối ưu cho hiệu năng ghi của Bigtable đối với dòng dữ liệu streaming tốc độ cao.
(Đáp án được gợi ý bởi AI)