2010-07-20 5 views
5

आरडीबीएमएस के दशक में आईडी आमतौर पर साधारण पूर्णांक है कि 0 से जो कुछ भी संख्या के लिए जाना है, लेकिन आम तौर पर आप उन्हें 5 अंक सीमा में रख सकते हैं ताकि आप यूआरएल है कि इसदेवताओं के लिए जो अपने वेब ऐप्स बनाने के लिए मोंगोडब का उपयोग कर रहे हैं, आप लंबी प्राथमिक कुंजी के बारे में क्या करते हैं?

myawesomeblog.com/posts/23456 दिखने लायक बना सकता

लेकिन मोंगोडब के साथ प्रत्येक रिकॉर्ड के लिए अद्वितीय पहचानकर्ता इस तरह दिखते हैं। 47cc67093475061e3d95369d

और निर्माण और अनुप्रयोग पर आधारित है कि इस myawesomeblog.com/posts/47cc67093475061e3d95369d

मुझे लगता है कि पसंद नहीं की तरह यूआरएल के लिए नेतृत्व करेंगे? क्या मोंगो आपको पूर्णांक आधारित अद्वितीय संख्याएं प्रदान करने के लिए वैसे भी है जो कम और अद्वितीय हैं? (MySQL) की तरह

उत्तर

1

यहाँ (और यह काम करने लगता है) की तरह दस्तावेजों के साथ एक दृश्यों संग्रह बनाने के लिए है

http://www.mongodb.org/display/DOCS/Atomic+Operations#AtomicOperations-%22InsertifNotPresent%22 
+0

हाँ मैंने पहले ही देखा है, यह मेरे लिए बहुत समझ में नहीं आया। वह कार्य कहां जाता है? मोंगो स्रोत कोड में? रूबी के लिए लिखा गया? – concept47

+1

यह सब प्रभावी ढंग से कर रहा है प्रत्येक परिणाम और उसके आईडी फ़ील्ड को मूल्य बढ़ाने के लिए खींच रहा है। आप इसे मोंगो में संग्रहीत कर सकते हैं (एक संग्रहीत प्रक्रिया की तरह) और इसे हर बार संदर्भित करें। http://en.wikipedia.org/wiki/MongoDB#Server-Side_JavaScript_Execution http://neovintage.blogspot.com/2010/07/mongodb-stored-javascript-functions.html –

1

एक तरह से डॉक्स से एक incrementing मूल्य बनाने के लिए एक लिंक मैं कोशिश की है है:

{नाम: "पोस्ट", मान: 12345, _ id: ObjectId ("47cc67093475061e3d95369d")}

पहले, आप नाम "पोस्ट" और वेतन वृद्धि के साथ वर्तमान अनुक्रम हड़पने था पोस्ट संग्रह में डालने के लिए इसका मूल्य फिर उस मान का उपयोग अपने नए पोस्ट दस्तावेज़ के लिए यूआरएल अनुकूल आईडी या ऑब्जेक्टआईडी के रूप में करें।

यह दृष्टिकोण प्राथमिक कुंजी के रूप में ओरेकल के चयन seq.NEXTVAL से DUAL का उपयोग करने जैसा है।

सही नहीं है, लेकिन यह संग्रह में सभी दस्तावेज़ों को पकड़ने और कुछ आईडी के अधिकतम मूल्य को प्राप्त करने से बचाता है।

1

कोई भी जो बढ़ती कुंजी बनाता है, आप प्रतिकृति का उपयोग शुरू करने के बाद काम नहीं करेंगे। मैं कुछ ऐसा उपयोग कर रहा हूं जो एक अद्वितीय एसएचए उपसर्ग प्रकार की तरह गिट करता है। यह आपको एक पूर्णांक कुंजी नहीं देता है, लेकिन इसे आसानी से संशोधित किया जा सकता है। यह अद्वितीय होने की भी गारंटी नहीं है, लेकिन आपके पास बहुत वृद्धिशील कुंजी की तुलना में टकराव का कम मौका है। मैं अपने मॉडल में निम्नलिखित सामान मिल गया है:

before_create :set_short_id 

def set_short_id 
    prefix_length = 5 
    sha = Digest::SHA1.hexdigest(self.to_json) 
    short_id = nil 
    while short_id.nil? || Ticket.first(:short_id => short_id) 
    short_id = sha.first(prefix_length) 
    prefix_length += 1 
    end 
    self.short_id = short_id 
end 

def to_param 
    short_id 
end 

इसका मतलब है कि अपने URL myawesomeblog.com/posts/47cc6 जो थोड़ा बेहतर है की तरह लग रहे।

+0

बस उत्सुक ... तो कैसे MySQL autoincrement आईडी प्रतिकृति में काम करते हैं? – concept47

+0

मेरा मानना ​​है कि MySQL प्रतिकृति के बारे में अधिक आक्रामक है। मोंगो एक "अंततः संगत" मॉडल पर काम करता है। मैंने इसमें बहुत गहराई से नहीं देखा है, लेकिन मोंगो प्रतिकृति पर वहां कई स्क्रीनकास्ट हैं जो इस मुद्दे पर कुछ और प्रकाश डाल सकते हैं। – Emily

संबंधित मुद्दे

 संबंधित मुद्दे