Dịch vụ của tôi có số lượng lớn các sự kiện người dùng đang diễn ra và chúng tôi muốn thực hiện những việc như "sự xuất hiện của loại sự kiện T kể từ ngày D. "
Chúng tôi đang cố gắng đưa ra hai quyết định cơ bản:
Lưu trữ gì? Lưu trữ mọi sự kiện so với chỉ lưu trữ tổng hợp
- (Kiểu nhật ký sự kiện) ghi nhật ký mọi sự kiện và đếm chúng sau, vs.
- (Kiểu chuỗi thời gian) lưu trữ một "tổng số sự kiện E cho ngày D " tổng hợp cho mỗi ngày
Nơi lưu trữ dữ liệu
- Trong cơ sở dữ liệu quan hệ (đặc biệt là MySQL)
- Trong cơ sở dữ liệu không liên quan (NoQuery)
- Trong tệp nhật ký phẳng (được thu thập tập trung qua mạng qua
syslog-ng
)
Thực hành tiêu chuẩn là gì / tôi có thể đọc thêm về việc so sánh các loại hệ thống khác nhau ở đâu?
Chi tiết bổ sung:
- Tổng số luồng sự kiện lớn, có khả năng hàng trăm ngàn mục nhập mỗi ngày
- Nhưng nhu cầu hiện tại của chúng tôi chỉ là đếm một số loại sự kiện trong đó
- Chúng tôi không nhất thiết cần truy cập thời gian thực vào dữ liệu thô hoặc kết quả tổng hợp
IMHO, "ghi nhật ký tất cả các sự kiện vào tệp, thu thập dữ liệu sau đó để lọc và tổng hợp luồng" là một cách UNIX khá chuẩn, nhưng đồng bào Rails-y của tôi dường như nghĩ rằng không có gì là thật trừ khi nó có trong MySQL.
SELECT...GROUP BY
, có thể dễ dàng lưu trữ kết quả của SELECT
s), 2) bằng cách sử dụng Graphite để tổng hợp và hiển thị quy mô lớn đơn giản, và 3) ghi nhật ký đầy đủ các sự kiện để tham khảo và để xem chi tiết về luồng dữ liệu trong thời gian thực. Mỗi cái đã thực sự có giá trị theo những cách khác nhau.