Tôi sử dụng MongoDB và Tornado. Tuy nhiên, một số bài viết nói rằng MongoDB không làm bộ nhớ đệm.
Tôi không biết ai nhưng MongoDB có cách để truy vấn bộ nhớ cache, trên thực tế nó sử dụng LRU của hệ điều hành để lưu vào bộ nhớ cache vì nó không tự quản lý bộ nhớ.
Miễn là bộ làm việc của bạn phù hợp với LRU mà không cần hệ điều hành phải lật trang hoặc hoán đổi liên tục, bạn nên đọc truy vấn này từ bộ nhớ nhiều nhất. Vì vậy, có, MongoDB có thể cache nhưng về mặt kỹ thuật nó không; hệ điều hành.
Trên thực tế, 99 trong số các truy vấn đó là lãng phí năng lượng máy tính.
Cơ chế lưu trữ để giải quyết các loại vấn đề này giống nhau trên hầu hết các công nghệ cho dù là MongoDB hay SQL. Tất nhiên, điều này chỉ quan trọng nếu nó là một vấn đề, bạn có lẽ vi tối ưu hóa nếu bạn hỏi tôi; trừ khi bạn nhận được lưu lượng truy cập Facebook hoặc Google hoặc Youtube.
Chủ đề bộ nhớ đệm đi vào một chủ đề lớn nằm trong các truy vấn bộ nhớ đệm trong MongoDB/Memcache/Redis tổng hợp trước để lưu trữ HTML và các tài nguyên web khác để làm ít công việc nhất có thể ở cuối máy chủ.
Kịch bản của bạn, cá nhân như tôi đã nói, có vẻ như bạn đang nghĩ sai về sức mạnh máy tính bị lãng phí. Ngay cả khi bạn đã lưu trữ truy vấn này trong bộ sưu tập/công nghệ khác, bạn có thể sử dụng cùng một lượng năng lượng và tài nguyên để lấy kết quả từ công nghệ đó nếu bạn không bận tâm. Tuy nhiên giả định rằng đi xuống đến bạn có chỉ số đúng, lược đồ, thiết lập, vv
tôi khuyên bạn nên đọc một số liên kết trên thiết kế giản đồ tốt và tạo chỉ mục:
Tạo HTML tĩnh, được lưu trong bộ nhớ cache với một cái gì đó như Nginx không được ưa thích, bởi vì tôi muốn hiển thị một trang được cá nhân hóa bởi Tornado mỗi lần.
Tôi nghĩ rằng bằng cách cố gắng lo lắng về truy vấn bộ nhớ đệm, bạn đang tối ưu hóa trước, đặc biệt là nếu bạn không muốn cất cánh, 90% tải trên máy chủ của bạn mỗi lần là gì; tải trang của chính nó.
Tôi sẽ tập trung vào giản đồ và chỉ mục của bạn và sau đó lo lắng về bộ nhớ đệm nếu bạn thực sự cần nó.
Cảm ơn câu trả lời của bạn! Tuy nhiên tôi nghĩ rằng câu trả lời của Josh phù hợp với tôi nhiều hơn. Nhưng tôi vẫn sẽ xem xét vấn đề lập chỉ mục. Cảm ơn bạn :) –
@MKYung Hmm một mô-đun có truy vấn mới trong bộ nhớ, tạo danh sách mới sử dụng kết quả của nó (gây IO) và sau đó tạo truy vấn trên danh sách đó, bây giờ có hai bộ sưu tập chứa nhiều dữ liệu giống nhau trong bộ nhớ cùng một lúc cho đến khi LRU cần trang bộ nhớ ... Tôi không thấy điểm hoàn chỉnh của mô-đun đó nhưng ok :) – Sammaye
Chúng tôi không biết câu hỏi của OP mất bao lâu để tạo ra mỗi trang để không thể nói từ thông tin được cung cấp cho dù anh ta đang tối ưu hóa sớm hay tối ưu hóa vi mô. – frankster