MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

रूबी ऑन रेल्स 3.2 में मोंगो डीबी सत्र भंडारण का उपयोग करते समय पुराने/पुराने सत्रों को कैसे साफ़ करें?

इसे हल करने की कुंजी यह समझना है कि डायरेक्ट Mongoid का उपयोग करना तरीके जब आपके रेल 3 एप्लिकेशन का session_store mongoid_store . पर सेट है इस तरह के प्रत्यक्ष डेटाबेस इंटरैक्शन को कभी नहीं होने देंगे।

तो इसके बजाय, केवल मूल डेटाबेस कनेक्शन के लिए Mongoid का उपयोग करके लेकिन फिर वास्तव में Moped के साथ इंटरैक्ट करते हुए सीधे चालक संचालन स्तर पर मोंगोइड का मूल, वही कार्यक्षमता आसानी से प्राप्त की जा सकती है! यहाँ मोंगोइड/मोपेड rake है जिस कार्य के साथ मैं आया वह काफी अच्छा काम करता है:

namespace :sessions do
  stale_window = 7
  desc "Clear stale DB sessions older than #{ stale_window } days."
  task :cleanup => :environment do
    db = Mongoid::Sessions.default
    begin
      db[:sessions].where('updated_at' => { '$lt' => stale_window.days.ago }).sort(updated_at: 1).no_timeout.remove_all
    rescue Moped::Errors::SocketError => e
      # Rescue here if needed. If not, the screwed up process dies silently.
    end
  end
end

कनेक्शन db = Mongoid::Sessions.default . के माध्यम से सेट किया गया है और जादू लाइन में होता है:

db[:sessions].where('updated_at' => { '$lt' => stale_window.days.ago }).sort(updated_at: 1).no_timeout.remove_all

मैंने एक stale_window सेट किया है चर ताकि मैं आसानी से इस कार्य की सीमा को समायोजित कर सकूं; DB मान के साथ-साथ विवरण भी सेट करता है। इसका उपयोग करने के लिए मैं इसे कोडबेस पथ से इस तरह चलाता हूं:

RAILS_ENV=production bundle exec rake sessions:cleanup

और निश्चित रूप से बस RAILS_ENV बदलें उस वातावरण से मेल खाने के लिए मूल्य, जिस पर आप इस कार्य को करना चाहते हैं; जैसे staging , development या जो कुछ भी आप अपने पर्यावरण का नाम दे सकते हैं। उस rake को चलाने के बाद कार्य, sessions संग्रह तालिका वास्तविक दुनिया के उपयोग के साथ कुछ अधिक यथार्थवादी हो जाती है और समग्र डेटाबेस आकार से निपटने के लिए अधिक उचित है।




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB:उसी दस्तावेज़ से डेटा का उपयोग करके दस्तावेज़ों को अद्यतन करना

  2. उल्का/मोंगो के माध्यम से उप-दस्तावेज़ सरणी लौटाना

  3. नेवला एकत्रीकरण इनपुट तिथि के अनुसार फ़िल्टर नहीं करता है

  4. दिनांक प्रश्नों के बीच मूल $gte, $lte, आदि

  5. निष्पादित प्रश्नों को देखने के लिए MongoDB डेटाबेस की रूपरेखा तैयार करना