Quay lại bộ đề
Question #62 Topic 1
Your company uses a proprietary system to send inventory data every 6 hours to a data ingestion service in the cloud. Transmitted data includes a payload of several fields and the timestamp of the transmission. If there are any concerns about a transmission, the system re-transmits the data. How should you deduplicate the data most efficiency?
Công ty của bạn sử dụng một hệ thống độc quyền để gửi dữ liệu tồn kho sau mỗi 6 giờ đến một dịch vụ tiếp nhận dữ liệu trên đám mây. Dữ liệu được truyền bao gồm phần tải tin (payload) của một số trường dữ liệu và dấu thời gian (timestamp) của lượt truyền. Nếu có bất kỳ lo ngại nào về một lượt truyền, hệ thống sẽ truyền lại dữ liệu. Bạn nên loại bỏ trùng lặp (deduplicate) dữ liệu như thế nào để đạt hiệu quả cao nhất?
A
Assign global unique identifiers (GUID) to each data entry.
Gán các định danh duy nhất toàn cầu (GUID) cho mỗi mục nhập dữ liệu.
B
Compute the hash value of each data entry, and compare it with all historical data.
Tính toán giá trị băm (hash value) của mỗi mục nhập dữ liệu và so sánh nó với tất cả dữ liệu lịch sử.
C
Store each data entry as the primary key in a separate database and apply an index.
Lưu trữ mỗi mục nhập dữ liệu dưới dạng khóa chính trong một cơ sở dữ liệu riêng biệt và áp dụng chỉ mục.
D
Maintain a database table to store the hash value and other metadata for each data entry.
Duy trì một bảng cơ sở dữ liệu để lưu trữ giá trị băm và siêu dữ liệu (metadata) khác cho mỗi mục nhập dữ liệu.
Giải thích & Tài liệu tham khảo
Câu hỏi đặt ra về việc deduplicate (loại bỏ trùng lặp) dữ liệu một cách hiệu quả trong một hệ thống truyền dữ liệu tồn kho định kỳ. Dữ liệu có thể được truyền lại nếu có vấn đề. Khi xem xét các lựa chọn:
- A: Assign global unique identifiers (GUID) to each data entry. (Gán định danh duy nhất toàn cầu (GUID) cho mỗi mục dữ liệu). Đây là phương pháp hiệu quả nhất để deduplicate dữ liệu. Nếu mỗi bản ghi dữ liệu (ví dụ: một giao dịch tồn kho cụ thể) được gán một GUID tại nguồn, thì khi dữ liệu được gửi lại, GUID vẫn giữ nguyên. Hệ thống tiếp nhận có thể dễ dàng kiểm tra sự tồn tại của GUID đó để xác định xem đây là dữ liệu mới hay dữ liệu đã được xử lý trước đó. Các dịch vụ như Pub/Sub có khả năng cung cấp ID tin nhắn, nhưng trong trường hợp này, GUID cần phải là một thuộc tính của chính dữ liệu tồn kho để định danh duy nhất một bản ghi tồn kho cụ thể, không phải định danh duy nhất của lượt truyền.
- B: Compute the hash value of each data entry, and compare it with all historical data. (Tính giá trị băm của mỗi mục dữ liệu và so sánh nó với tất cả dữ liệu lịch sử). Mặc dù băm có thể giúp nhận diện dữ liệu trùng lặp, việc so sánh với tất cả dữ liệu lịch sử là một hoạt động rất tốn kém và không hiệu quả về mặt tính toán và lưu trữ, đặc biệt khi lượng dữ liệu lớn và liên tục. Ngoài ra, việc so sánh hash có thể dẫn đến va chạm (hash collision) mặc dù xác suất thấp.
- C: Store each data entry as the primary key in a separate database and apply an index. (Lưu trữ mỗi mục dữ liệu dưới dạng khóa chính trong một cơ sở dữ liệu riêng và áp dụng chỉ mục). Lưu trữ mỗi mục dữ liệu làm khóa chính thường không khả thi vì khóa chính phải là một trường hoặc tập hợp các trường. Nếu ý là sử dụng toàn bộ payload làm khóa chính, điều này sẽ rất không hiệu quả. Nếu ý là sử dụng một trường của payload làm khóa chính, thì lại không đảm bảo tính duy nhất cho toàn bộ bản ghi. Hơn nữa, việc lưu trữ toàn bộ bản ghi chỉ với mục đích deduplication là tốn tài nguyên.
- D: Maintain a database table to store the hash value and other metadata for each data entry. (Duy trì một bảng cơ sở dữ liệu để lưu trữ giá trị băm và các siêu dữ liệu khác cho mỗi mục dữ liệu). Cách này tốt hơn B, vì chỉ lưu trữ giá trị băm thay vì toàn bộ dữ liệu. Tuy nhiên, nó vẫn yêu cầu quản lý và truy vấn một bảng riêng để kiểm tra trùng lặp. So với việc sử dụng GUID được tạo tại nguồn, phương pháp này vẫn phức tạp hơn một chút vì việc tính toán hash thường diễn ra ở phía tiếp nhận và có thể chậm hơn so với việc chỉ cần kiểm tra một GUID đã có sẵn trong payload.
Trong bối cảnh dữ liệu tồn kho cần được định danh duy nhất và có thể được truyền lại, việc gán GUID cho mỗi bản ghi dữ liệu tại hệ thống nguồn (phía gửi) là phương pháp hiệu quả và đáng tin cậy nhất để xử lý trùng lặp ở phía tiếp nhận.
(Đáp án được gợi ý bởi AI)