के साथ संबंधपरक अखंडता को संरक्षित करना मैं हाल ही में एरलांग में डाइविंग कर रहा हूं, और मैंने अपना डेटाबेस काम करने के लिए मेनेसिया का उपयोग करने का फैसला किया है, यह किसी समस्या के बिना किसी भी प्रकार की एरलांग डेटा संरचना को स्टोर कर सकता है, आसानी से स्केल कर सकता है, सूची के साथ उपयोग किया जा सकता है समझ, आदिमैनेशिया
मानक एसक्यूएल डेटाबेस से आ रहा है, अधिकतर पंक्तियों को प्राथमिक कुंजी द्वारा पहचाना जा सकता है और आमतौर पर एक ऑटो-वृद्धिशील पूर्णांक द्वारा पहचाना जाना चाहिए। डिफ़ॉल्ट रूप से मेनेसिया अपनी कुंजी होने के लिए पंक्ति के पहले क्षेत्र को मानता है। जहां तक मुझे पता है कि ऑटो-इंक्रिमेंटिंग इंटीजर कुंजी रखने का कोई तरीका नहीं है।
को देखते हुए मैं इन काल्पनिक रिकॉर्ड मेरी टेबल का प्रतिनिधित्व किया है:
-record(user, {name, salt, pass_hash, email}).
-record(entry, {title, body, slug}).
-record(user_entry, {user_name, entry_title}).
मैं, उपयोगकर्ता नाम का उपयोग प्रविष्टि शीर्षक के साथ के रूप में कुछ प्रयोजनों के लिए काफी अच्छा हो सकता है समझ, संसाधन को पहचान करने के लिए है, लेकिन कैसे करना है मैं ईमानदारी बनाए रखने के बारे में जाना?
कहें कि उपयोगकर्ता इसका नाम बदलता है, या एंट्री का शीर्षक संपादन के बाद बदल जाता है। मैं कैसे सुनिश्चित करूं कि मेरा डेटा अभी भी सही ढंग से संबंधित है? जब उपयोगकर्ता बदलता है तो उपयोगकर्ता नाम का उपयोग करके प्रत्येक तालिका को अद्यतन करना एक भयानक विचार की तरह लगता है इससे कोई फर्क नहीं पड़ता कि यह कैसे रखा जाता है।
मैनेशिया में किसी प्रकार की प्राथमिक कुंजी प्रणाली को लागू करने का सबसे अच्छा तरीका क्या होगा?
इसके अलावा, यदि पहली फ़ील्ड आमतौर पर कुंजी है तो 'user_entry' जैसी मध्यस्थ तालिका कैसे होगी? अन्यथा, मेनेसिया में कई से अधिक रिश्ते का प्रतिनिधित्व करने का बेहतर तरीका क्या होगा?
यह वास्तव में अच्छा तरीका है? ऐसा लगता है कि make_ref/0 खोल को पुनरारंभ करने के बाद इसकी गणना को रीसेट करता है और इसमें कई समान मान होंगे। इसका मतलब यह नहीं होगा कि सर्वर पुनरारंभ करने के बाद आपको खराब कुंजियां मिल सकती हैं? इसे अब/0 के साथ जोड़ना, शायद मदद कर सकता है। –
वास्तव में अब/0 को नोड/0 के साथ जोड़ना बेहतर है। –
या उस मामले के लिए, आप केवल यूयूआईडी मॉड्यूल का उपयोग कर सकते हैं: http://github.com/travis/erlang-uuid/tree/master –