Vì vậy, BuddyMedia đang sử dụng một số trong số này. Gilt Groupe đã làm được điều gì đó khá tuyệt vời với Hummingbird (node.js + MongoDB).
Từng làm việc cho một nhà quảng cáo trực tuyến lớn trong không gian Truyền thông xã hội, tôi có thể chứng thực rằng báo cáo theo thời gian thực thực sự là một điều khó khăn. Cố gắng "tổng hợp" 500 triệu lần hiển thị mỗi ngày đã là một thách thức, nhưng cố gắng thực hiện theo thời gian thực đã có tác dụng, nhưng nó có một số hạn chế đáng kể. (giống như nó thực sự bị trì hoãn 5 phút :)
Thành thật mà nói, loại vấn đề này là một trong những lý do tôi bắt đầu sử dụng MongoDB. Và tôi không phải là người duy nhất. Mọi người đang sử dụng MongoDB cho tất cả các loại phân tích thời gian thực: giám sát máy chủ , ghi nhật ký tập trung , cũng như báo cáo trang tổng quan.
Chìa khóa thực sự khi thực hiện loại báo cáo này là hiểu rằng cấu trúc dữ liệu hoàn toàn khác với MongoDB, bạn sẽ tránh các truy vấn "tổng hợp", do đó, các truy vấn và biểu đồ đầu ra sẽ khác nhau. Có một số công việc mã hóa bổ sung ở phía máy khách.
Đây là chìa khóa có thể chỉ cho bạn hướng đi đúng để thực hiện việc này với MongoDB. Hãy xem cấu trúc dữ liệu sau:
{
date: "20110430",
gender: "M",
age: 1, // 1 is probably a bucket
impression_hour: [ 100, 50, ...], // 24 of these
impression_minute: [ 2, 5, 19, 8, ... ], // 1440 of these
clicks_hour: [ 10, 2, ... ],
...
}
Rõ ràng là có một số chỉnh sửa ở đây, các chỉ mục phù hợp, có thể đưa dữ liệu + giới tính + tuổi vào một _id
. Nhưng đó là loại cấu trúc cơ bản của phân tích nhấp chuột với MongoDB. Thực sự dễ dàng cập nhật số lần hiển thị và số lần nhấp { $inc : { clicks_hour.0 : 1 } }
. Bạn có thể cập nhật toàn bộ tài liệu một cách nguyên tử. Và nó thực sự khá tự nhiên để báo cáo. Bạn đã có một mảng chứa các điểm dữ liệu cấp giờ hoặc cấp phút.
Hy vọng rằng đó là hướng bạn đi đúng hướng.