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

SQLite से Redis में पोर्ट करना

मुझे लगता है कि आरडीबीएमएस से रेडिस में कुछ पोर्ट करते समय रिलेशनल मॉडल से चिपके रहने से बचने के लिए सबसे अच्छी सलाह है। और मॉडल से परे, एक महत्वपूर्ण अंतर डेटा एक्सेस पथों के साथ-साथ डेटा संरचनाओं पर ध्यान केंद्रित करना है।

रेडिस में एक क्वेरी भाषा शामिल नहीं है (बल्कि एक ला मेम्केड को कमांड करता है), और इसलिए मनमाने प्रश्नों का उत्तर नहीं दे सकता है। यदि डेटा तक पहुंच पथ डेटा संरचना का हिस्सा नहीं है, तो डेटा को कुशलता से पुनर्प्राप्त नहीं किया जा सकता है।

जब मनमानी प्रश्नों का समर्थन करने की बात आती है तो रेडिस सबसे अच्छा नोएसक्यूएल स्टोर नहीं है। उदाहरण के लिए, आपको MongoDB जैसी किसी चीज़ द्वारा बेहतर सेवा दी जाएगी।

अब, यदि आप वास्तव में रेडिस के साथ अपनी सामग्री को लागू करना चाहते हैं, तो आप टैगिंग इंजन के समान रणनीति का उपयोग करने का प्रयास कर सकते हैं। आपके रिकॉर्ड हैश ऑब्जेक्ट्स में संग्रहीत किए जा सकते हैं। मनमाना प्रश्नों के प्रत्येक कॉलम भाग के लिए आपको समर्थन की आवश्यकता है, आप सेट का उपयोग करके रिवर्स इंडेक्स बनाते हैं।

उदाहरण के लिए:

# Set up the records: one hash object per record
hmset user:1 name Bilbo type Hobbit job None
hmset user:2 name Frodo type Hobbit job None
hmset user:3 name Gandalf type Maiar job Wizard
hmset user:4 name Aragorn type Human job King
hmset user:5 name Boromir type Human job Warrior

# Set up the indexes: one set per value per field
sadd name:Bilbo 1
sadd name:Frodo 2
sadd name:Gandalf 3
sadd name:Aragorn 4
sadd name:Boromir 5
sadd type:Hobbit 1 2
sadd type:Maiar 3
sadd type:Human 4 5
sadd job:None 1 2
sadd job:Wizard 3
sadd job:King 4
sadd job:Warrior 5

# Perform a query: we want the humans who happen to be a king
# We just have to calculate the intersection of the corresponding sets
sinterstore tmp type:Human job:King
sort tmp by nosort get user:*->name get user:*->job get user:*->type
1) "Aragorn"
2) "King"
3) "Human"

संघ, प्रतिच्छेदन, अंतर को मिलाकर अधिक जटिल प्रश्नों को लागू किया जा सकता है। गैर असतत मानों के लिए, या श्रेणी आधारित प्रश्नों के लिए, आदेशित सेट (zset) का उपयोग करना होगा (और सामान्य सेट के साथ जोड़ा जा सकता है)।

यदि मान पर्याप्त रूप से विभेदक हैं तो यह विधि आमतौर पर काफी तेज होती है। कृपया ध्यान दें कि आपके पास आरडीबीएमएस की लचीलापन नहीं है, हालांकि (कोई नियमित अभिव्यक्ति नहीं, कोई उपसर्ग खोज नहीं, श्रेणी प्रश्नों से निपटने के लिए दर्द होता है, आदि ...)




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. बैकएंड के रूप में रेडिस के साथ स्प्रिंग सत्र का उपयोग करते समय डिफ़ॉल्ट सत्र टाइमआउट क्या है और इसे कैसे कॉन्फ़िगर करें

  2. C++ Redis मॉड्यूल बनाना - RedisModule_OnLoad () प्रतीक को निर्यात नहीं करता है

  3. पायथन से रेडिस से कनेक्शन का प्रबंधन

  4. रेडिस में सभी कुंजी कैसे प्राप्त करें

  5. अजवाइन श्रमिकों के लिए गपशप, मिलना-जुलना और दिल की धड़कन को अक्षम करने के क्या परिणाम हैं?