मेरी राय में, नहीं। अधिकांश परिदृश्यों के लिए प्रदर्शन अंतर नगण्य होगा (पेजिंग को छोड़कर ), लेकिन
- सरोगेट प्राथमिक कुंजी की पुरानी चर्चा सामने आती है। एक "स्लग" एक बहुत ही स्वाभाविक कुंजी नहीं है। हां, यह अद्वितीय होना चाहिए, लेकिन जैसा कि आपने पहले ही बताया है, स्लग को बदलना असंभव नहीं होना चाहिए। यह अकेला मुझे परेशान करने से रोकेगा...
- एक मोनोटोनिक
_id
key आपको कई सिरदर्दों से बचा सकती है, सबसे महत्वपूर्ण बात यह है किskip
. के माध्यम से महंगे पेजिंग से बचें औरtake
($lt
का उपयोग करें /$gt
_id
. पर इसके बजाय)। - मोंगोडब में अधिकतम अनुक्रमणिका लंबाई की एक सीमा है कम से कम से 1024 बाइट्स। जबकि सुंदर नहीं, URL को बहुत लंबा . अगर किसी ने लंबे स्लग में प्रवेश किया है, तो वह नहीं मिलेगा क्योंकि इसे चुपचाप इंडेक्स से हटा दिया गया है।
- एक सुसंगत इंटरफ़ेस होना एक अच्छा विचार है, अर्थात एक ही प्रकार के
_id
का उपयोग करना सभी पर, या कम से कम, आपकी अधिकांश वस्तुओं पर। मेरे कोड में, मेरे पास एक अपवाद है जहां मैं आईडी के रूप में एक विशेष हैश का उपयोग कर रहा हूं क्योंकि मूल्य नहीं बदल सकता है, संग्रह में अत्यधिक उच्च लेखन दर है और यह बड़ी है। - मान लें कि आप अपने प्रबंधन इंटरफ़ेस में लेख से लिंक करना चाहते हैं (सार्वजनिक साइट नहीं), आप किस लिंक का उपयोग करेंगे? आम तौर पर आईडी, लेकिन अब आईडी और स्लग बराबर हैं। अब एक साधारण बग (जैसे खाली स्लग की अनुमति देना) से उबरना मुश्किल होगा, क्योंकि उपयोगकर्ता अब प्रबंधन इंटरफ़ेस पर भी नहीं जा सकता।
- आप चारसेट मुद्दों से निपटेंगे। मेरा सुझाव है कि लेख को देखने के लिए स्लग का उपयोग न करें, लेकिन स्लग के हैश ।
अनिवार्य रूप से, आप एक स्कीमा के साथ समाप्त होंगे जैसे
{ "_id" : ObjectId("a237b45..."), // PK
"slug" : "mongodb-is-fun", // not indexed
"hash" : "5af87c62da34" } // indexed, unique