2011-11-04 24 views
5

Tôi hiện đang có một ứng dụng trò chơi xã hội bằng cách sử dụng mongodb cho cơ sở dữ liệu của nó. Câu hỏi của tôi là một số gợi ý nếu tôi muốn tạo ra một điểm và hệ thống huy hiệu. Logic kinh doanh cho các thành tích/huy hiệu có thể trở nên khá phức tạp và rất đặc biệt để việc trao huy hiệu thời gian thực dường như không hiệu quả. Tôi đang tưởng tượng thêm các hành động được theo dõi vào hàng đợi ở đâu đó, tức là SQS của Amazon hoặc chỉ sử dụng nguồn cấp dữ liệu hoạt động của người dùng làm hàng đợi và có một quy trình công nhân ngoại tuyến khác trải qua và xử lý các tác động của mọi hành động/hoạt động bất kỳ huy hiệu cụ thể nào đều bị gạch chéo.làm thế nào để thành tựu kiến ​​trúc sư và badging với nosql

Nỗi lo lắng của tôi với phương pháp này là dường như các truy vấn huy hiệu có thể trở nên khá chuyên sâu và tôi cũng phải theo dõi một số lượng lớn các hành động. Tôi có thể hình dung các thành tích khác nhau từ những thứ như huy hiệu cho người nào đó đã giành được vị trí thứ 2 mỗi tuần trong 4 tuần qua hoặc huy hiệu cho người nào đó có bạn bè ở mọi quốc gia trong số 50 tiểu bang ... v.v.

Có nhiều phương pháp thanh lịch hoặc đã thử và đúng cho loại nội dung này không? Bạn có nên sử dụng cơ sở dữ liệu khác cho thành tích/nguồn cấp dữ liệu hoạt động/bảng xếp hạng bên cạnh mongo, tạo môi trường lai hỗn hợp db/mongo khác không?

Các lựa chọn như Redis, Neo4J hay chỉ là SQL Server đơn giản cũ là lựa chọn tốt cho giải pháp lai? Tôi thích Mongo như vậy sẽ ở lại như db chính của chúng tôi, nhưng tò mò muốn xem nếu thêm một db để trộn sẽ giúp đỡ.

Trả lời

3

Đây là một ứng cử viên tốt để chạy bản đồ giảm trên cơ sở dữ liệu. bạn có thể chạy chúng ít thường xuyên hơn, sử dụng chúng để tính toán ngoại tuyến dữ liệu mà bạn muốn.

http://www.mongodb.org/display/DOCS/MapReduce

Bạn có thể sử dụng các công cụ khác để làm điều này, nhưng trong bản tóm tắt của bạn tôi không thể nhìn thấy bất kỳ lý do thuyết phục để thêm phức tạp ở giai đoạn này. Tôi sẽ khám phá bản đồ giảm, dùng thử và sau đó nếu nó không đáp ứng nhu cầu của bạn, hãy mở rộng các lựa chọn của bạn. nhưng tại thời điểm đó, ít nhất bạn cũng đã xác định được những tắc nghẽn cụ thể, nếu có.

0

Chỉ một số lưu ý về việc sử dụng biểu đồ-db như Neo4j. Vì thông tin huy hiệu của bạn luôn là? được truy vấn cho người dùng cụ thể, đây là các truy vấn cục bộ và không phải toàn cục. Vì vậy, nếu bạn có thể mô hình tên miền của mình dưới dạng mạng các đối tượng (như nó có thể là) và biểu thị logic huy hiệu của bạn như là một tập hợp traversals hoặc graph-queries bắt đầu từ người dùng thì nó hoạt động mà không có sự bền bỉ bất kể kích thước tập dữ liệu.

Điều dễ nhất là tạo một PoC có thời gian để xem liệu nó có phù hợp với bạn hay không. Kết nối chéo hai cửa hàng bằng cách lưu trữ id người dùng của bạn trong chỉ mục đồ thị-db và thuộc tính trên nút sẽ hoạt động khá dễ dàng. Bạn có thể đồng bộ hóa của db trên cam kết/lưu móc hoặc không đồng bộ. Có lẽ nó sẽ là hợp lý để di chuyển dữ liệu "mạng xã hội" khác vào biểu đồ và giữ dữ liệu trò chơi + tài liệu trong mongodb.

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