2015-04-21 20 views
5

Giả sử tôi có một bảng nơi lưu trữ thông tin khách truy cập (khách truy cập trang web). Giả sử, cấu trúc bảng bao gồm các lĩnh vực sau:Tổng hợp ngày khôn ngoan xem xét múi giờ của khách hàng từ hàng triệu hàng

  1. ID
  2. visitor_id
  3. visit_time (lưu trữ như mili giây trong UTC kể từ '1970/01/01 00:00:00')

Hàng triệu hàng trong bảng này và nó vẫn đang phát triển.

Trong trường hợp đó, Nếu tôi muốn xem báo cáo (ngày vs khách) từ bất kỳ múi giờ sau đó một giải pháp là:

Giải pháp # 1:

  1. Lấy múi giờ của trình xem báo cáo (ví dụ: khách hàng)
  2. Tổng hợp dữ liệu từ bảng này xem múi giờ của khách hàng
  3. Hiển thị ngày kết quả khôn ngoan

Nhưng trong trường hợp đó, hiệu suất sẽ bị giảm. Một giải pháp khác có thể như sau:

Giải pháp # 2:

  • Sử dụng bảng/bảng tóm tắt Pre-tổng hợp nơi múi giờ của khách hàng bị bỏ qua

Nhưng trong cả hai trường hợp có một trade off between performance and correctness .

Giải pháp # 1 đảm bảo tính chính xác và Giải pháp # 2 đảm bảo hiệu suất tốt hơn.

Tôi muốn biết thực hành tốt nhất trong trường hợp cụ thể này là gì?

Trả lời

0

Vấn đề về thời gian xử lý tăng lên đáng kể khi bạn tham gia vào các hệ thống phân tán, người dùng và sự kiện phù hợp giữa các nguồn dữ liệu khác nhau.

Tôi thực sự khuyên bạn nên đảm bảo tất cả các hệ thống đăng nhập đều sử dụng UTC. Điều này cho phép thu thập từ nhiều máy chủ khác nhau (tất cả hy vọng được đồng bộ hóa theo quan điểm của họ về thời gian UTC hiện tại) ở bất kỳ nơi nào trên thế giới.

Sau đó, khi có yêu cầu, bạn có thể chuyển đổi từ múi giờ của người dùng thành UTC. Tại thời điểm này, bạn có cùng một quyết định - thực hiện truy vấn thời gian thực hoặc có thể truy cập một số dữ liệu đã được tóm tắt trước đó.

Có hay không bạn muốn tổng hợp dữ liệu trước sẽ phụ thuộc vào nhiều thứ. Một số trong số này có thể kéo theo khả năng giảm lượng dữ liệu được lưu giữ, giảm số lượng xử lý để hỗ trợ truy vấn, tần suất truy vấn sẽ được thực hiện hoặc thậm chí chi phí xây dựng hệ thống so với số lượng sử dụng có thể thấy.

Đối với các phương pháp hay nhất - hãy giữ các đặc tính hiển thị (ví dụ: múi giờ) độc lập với việc xử lý dữ liệu.

Nếu bạn chưa có, hãy đảm bảo bạn xem xét thời gian tồn tại của dữ liệu bạn đang giữ. Bạn sẽ cần mười năm dữ liệu trở lại có sẵn? Hy vọng là không. Bạn có một chiến lược để hủy bỏ dữ liệu cũ khi nó không còn cần thiết? Bạn có biết số lượng dữ liệu bạn sẽ có nếu bạn lưu trữ mọi bản ghi (ước tính với tốc độ tăng trưởng lưu lượng truy cập khác nhau) không?

Một lần nữa, cách thực hành tốt nhất cho tập dữ liệu lớn hơn là hiểu cách bạn sẽ giải quyết kích thước và cách bạn quản lý dữ liệu đó theo thời gian. Điều này có thể liên quan đến việc lưu trữ, xóa hoặc lưu trữ dài hạn để tóm tắt biểu mẫu.

Ồ, và để trượt trong một tương tự Ma trận, những gì thực sự sẽ nướng mì của bạn trong điều khoản của "đúng đắn" là một thực tế là sự chính xác không phải là vấn đề ở đây. Mỗi múi giờ có chế độ xem lưu lượng truy cập khác nhau trong một "ngày" trong vùng của riêng họ và mỗi một trong số đó là "đúng". Ngay cả những múi giờ kỳ quặc khác với múi giờ của bạn chỉ bằng một điều chỉnh không được đo chỉ trong vài giờ.

Các vấn đề liên quan