Quay lại bộ đề
Question #258 Topic 1
You are using Bigtable to persist and serve stock market data for each of the major indices. To serve the trading application, you need to access only the most recent stock prices that are streaming in. How should you design your row key and tables to ensure that you can access the data with the simplest query?
Bạn đang sử dụng Bigtable để lưu trữ lâu dài và phục vụ dữ liệu thị trường chứng khoán cho từng chỉ số chính. Để phục vụ ứng dụng giao dịch, bạn chỉ cần truy cập vào giá cổ phiếu mới nhất đang được stream vào. Bạn nên thiết kế row key và các bảng của mình như thế nào để đảm bảo có thể truy cập dữ liệu bằng câu truy vấn đơn giản nhất?
A
Create one unique table for all of the indices, and then use the index and timestamp as the row key design.
Tạo một bảng duy nhất cho tất cả các chỉ số, sau đó sử dụng chỉ số và dấu thời gian (timestamp) làm thiết kế row key.
B
Create one unique table for all of the indices, and then use a reverse timestamp as the row key design.
Tạo một bảng duy nhất cho tất cả các chỉ số, sau đó sử dụng dấu thời gian đảo ngược (reverse timestamp) làm thiết kế row key.
C
For each index, have a separate table and use a timestamp as the row key design.
Đối với mỗi chỉ số, tạo một bảng riêng biệt và sử dụng dấu thời gian làm thiết kế row key.
D
For each index, have a separate table and use a reverse timestamp as the row key design.
Đối với mỗi chỉ số, tạo một bảng riêng biệt và sử dụng dấu thời gian đảo ngược làm thiết kế row key.
Giải thích & Tài liệu tham khảo
Khi thiết kế cơ sở dữ liệu Cloud Bigtable để phục vụ ứng dụng giao dịch cần truy cập nhanh vào giá cổ phiếu mới nhất:
- Nguyên tắc thiết kế bảng: Bigtable hoạt động hiệu quả nhất khi bạn lưu trữ toàn bộ dữ liệu có liên quan trong một bảng duy nhất (single-table design). Việc gộp tất cả các chỉ số vào một bảng duy nhất (như Lựa chọn A và B) giúp tận dụng tối đa khả năng tự động phân vùng (tablet splitting) và phân phối tải đều của Bigtable.
- Thiết kế Row Key: Thiết kế row key dạng
index#timestamp(Lựa chọn A) cho phép truy vấn dữ liệu của một chỉ số cụ thể cực kỳ đơn giản và hiệu quả thông qua việc quét tiền tố (prefix scan) hoặc lấy các bản ghi mới nhất. - Lưu ý về Hotspotting: Nếu chỉ sử dụng timestamp đứng đầu làm row key (như
timestamp#index), các dòng dữ liệu mới ghi vào cùng một thời điểm sẽ tập trung vào một phân vùng duy nhất, gây ra hiện tượng nghẽn cổ chai (hotspotting). Đưa định danh chỉ số (index) lên trước timestamp trong row key sẽ phân tán các lượt ghi đều ra các vùng lưu trữ khác nhau. - Tại sao chọn A thay vì B: Mặc dù dấu thời gian đảo ngược (
reverse timestamp) rất tốt để lấy các bản ghi gần đây nhất, đề bài yêu cầu thiết kế đơn giản nhất cho luồng dữ liệu stream mới nhất. Thiết kếindex#timestampkết hợp với cấu hình Bigtable garbage collection để giữ lại số lượng phiên bản mong muốn (ví dụ: chỉ giữ lại 1 cell mới nhất) sẽ cho phép truy vấn trực tiếp giá trị hiện tại một cách đơn giản nhất mà không cần tính toán đảo ngược thời gian.
(Đáp án được gợi ý bởi AI)