2010-07-16 8 views
7

Tôi đang tìm cách theo dõi sự kiện trong ứng dụng django (sự kiện thường là nhấp chuột được gắn với id người dùng duy nhất cụ thể).Đề xuất cho các cơ chế theo dõi nhấp chuột/sự kiện (python, django, cần tây, mongo vv)

Những sự kiện này về cơ bản sẽ chứa loại sự kiện như "nhấp" và sau đó mỗi sự kiện nhấp chuột sẽ được gán cho một id duy nhất (nhiều sự kiện có thể đi tới một id) và mỗi sự kiện sẽ có tập dữ liệu bao gồm các mục như liên kết giới thiệu v.v. ...

Tôi đã thử mixpanel, nhưng hiện tại dữ liệu api mà họ đang cung cấp có vẻ quá hạn chế vì tôi dường như không thể tìm cách lấy tất cả dữ liệu của tôi bằng id duy nhất (ngoài sự kiện chinh no).

Tôi đang xem xét sử dụng django-eventracker, nhưng tò mò về bất kỳ người nào khác nghĩ về cách tốt nhất để làm điều này. Mongo hoặc CouchDb có vẻ như là một lựa chọn tuyệt vời ở đây, nhưng cần tây/thỏmq trông thực sự hấp dẫn với mongo. Việc bơm các sự kiện này vào các ứng dụng hiện có db có vẻ hạn chế tại thời điểm này.

Anyways, đây chỉ là một chủ đề để xem những gì người khác nghĩ là về vấn đề này và làm thế nào họ đã thực hiện một cái gì đó như thế này ...

chụp

+0

mongodb viết nhanh hơn couchdb. mongodb là sự lựa chọn ở đó. – panchicore

Trả lời

3

Tôi không quen thuộc với các giải pháp đóng gói sẵn bạn đề cập đến. Để tôi thiết kế điều này từ đầu, tôi có một JS đơn giản thu thập thông tin về các lần nhấp và đăng nó trở lại máy chủ qua Ajax (sử dụng bất kỳ khung công tác JS nào bạn đang sử dụng), và ở phía máy chủ tôi chỉ cần nối thêm thông tin đó cho tệp nhật ký để xử lý "ngoại tuyến" sau này - vì vậy sẽ là độc lập với django hoặc khung công tác phía máy chủ khác, về cơ bản.

Việc thêm tệp nhật ký là hành động rất nhẹ, trong khi các DB dành cho sử dụng web thường được tối ưu hóa cho hoạt động đọc chuyên sâu (không viết), vì vậy tôi đồng ý với bạn rằng (khi nó lừa) vào DB của ứng dụng hiện tại không có khả năng mang lại hiệu suất tốt.

+0

Tôi sẽ cần khả năng phân tích nhiều hơn về dữ liệu so với tệp nhật ký sẽ cung cấp nhưng tệp nhật ký không phải là ý tưởng tồi. Các sự kiện được xử lý thông qua máy chủ thông qua các cuộc gọi ajax, nhưng tôi thích ý tưởng về một hàng đợi nhiệm vụ tại thời điểm này .... – jmat

+2

@jmat - không thực sự có giới hạn về những gì bạn có thể và không thể đưa vào tệp nhật ký ... như @Alex đã đề cập, bạn luôn có thể phân tích dữ liệu đó "ngoại tuyến" thành bất kỳ loại cấu trúc nào bạn cần để thực hiện phân tích thực sự của mình. –

+1

@jmat, như @Matthew cho biết, việc ghi nhật ký cung cấp chính xác các khả năng tương tự cho "phân tích dữ liệu" như bạn có được bằng cách bơm dữ liệu trực tiếp vào bất kỳ chương trình nào - nhật ký chỉ _stays_ trong một khoảng thời gian, vì vậy nó có thể được xử lý (nhiều hơn một lần, nếu cần) khi thuận tiện nhất để làm như vậy (ví dụ, một trọng lượng nhẹ, xử lý nhanh được thực hiện cùng một lúc bằng cách xem daemon cho một số công cụ đơn giản bạn cần biết cùng một lúc, kho lưu trữ kỹ lưỡng hơn nhé - bất cứ điều gì!). –

1

Nếu bằng cách nhấp, bạn có nghĩa là nhấp vào liên kết tải trang mới (hoặc thực hiện yêu cầu AJAX), thì những gì bạn định làm là khá đơn giản. Máy chủ web có xu hướng giữ nhật ký thuần túy về yêu cầu - với thông tin về người dùng, thời gian/ngày, liên kết giới thiệu, trang được yêu cầu, v.v. Bạn có thể kiểm tra các nhật ký này và khai báo thống kê bạn cần.

Mặt khác, nếu bạn có ứng dụng web trong đó các nhấp chuột không nhất thiết tạo yêu cầu máy chủ, thì việc thu thập thông tin nhấp chuột với javascript là cách tốt nhất của bạn.

+0

Các nhấp chuột này có thể đến từ nhiều miền nội bộ và bên ngoài, vì vậy nói chung js là câu trả lời duy nhất ở đây ... đã hoạt động, tôi quan tâm nhiều hơn đến cách lưu trữ lượng lớn dữ liệu này mà không ảnh hưởng đến nhấp chuột và tải trang. – jmat

2

Bạn có thể muốn giữ định dạng linh hoạt cho nhật ký của mình để dự đoán nhu cầu hoặc thay đổi trong tương lai. Theo nghĩa này, các cơ sở dữ liệu hướng lược đồ tài liệu ít hơn là tốt đẹp. Một lợi thế là cấu trúc dữ liệu của bạn sẽ gần với nhu cầu ứng dụng của bạn cho bất kỳ phân tích nào bạn thực hiện sau này (vì vậy, tránh một số công việc phân tích cú pháp/dữ liệu không thể tránh khỏi).

Nếu bạn đang suy nghĩ về việc sử dụng mysql, postgresql hoặc như vậy, thì bạn nên xem xét một cái gì đó như rsyslog để đệm ghi và tránh các hình phạt hiệu suất với khai thác gỗ nặng. (Tôi không thể nói nhiều về cần tây và các cơ chế xếp hàng khác cho loại điều này, nhưng chúng có vẻ đầy hứa hẹn.)

Mongodb có một số tính năng tuyệt vời giúp bạn dễ dàng ghi nhật ký như capped collections. Bản tóm tắt có thể được tìm thấy trong this post.

+0

Liên kết cuối cùng mà bạn cung cấp là một trong những lý do chính tôi đang xem bằng cách sử dụng mongo cho mục đích này..thx. – jmat