2011-11-05 11 views
5

मैंने थोड़ी देर के लिए मैनेशिया का उपयोग किया है। मुझे कबूल करना है कि मुझे लगता है कि मैं mnesia:wait_for_tables/2 की अवधारणा को बिल्कुल समझ नहीं पा रहा हूं। नीचे दिए गए दस्तावेज का उद्धरण यह कहता है: मेनेसिया: wait_for_tables/2, क्या मैं वास्तव में इसे समझता हूं?

 
Some applications need to wait for certain tables to be accessible in order to do
useful work. mnesia:wait_for_tables/2 hangs until all tables in the Tab List are
accessible, or until timeout is reached.
अब, मेरे द्वारा विकसित किए गए सभी अनुप्रयोगों के लिए, मुझे अपना बैकएंड शुरू करते समय इसे कॉल करना पड़ा है। उपर्युक्त दस्तावेज में, "Some applications" का संदर्भ अच्छी तरह से विस्तारित नहीं किया गया था और जहां मेरा प्रश्न है।

ये मेरे विचार कर रहे हैं:
1. इस पद्धति में प्रतीक्षा कर रहा है इसका मतलब है कि हम mnesia टेबल लोड कर रहे हैं का कहना है कि से (Disc_copies के मामले)
2. मैं व्यक्तिगत रूप से लगता है कि राम को डिस्क है कि अगर अपने आवेदन इसमें केवल RAM (ram_copies) टेबल शामिल हैं, तो मुझे अपने कोड में इस विधि की आवश्यकता नहीं है। अब, मुझे यह सोचने का अधिकार है कि अगर मेरे पास केवल disc_only_copies है, तो मुझे इस फ़ंक्शन की भी आवश्यकता नहीं है।
3. इसके अलावा, मुझे नेटवर्क से मैनेशिया टेबल लोड होने पर इस फ़ंक्शन की आवश्यकता होती है, खासकर जब मेरी टेबल दोहराई जाती है, इसलिए मेरे ऐप्स को इन टेबल को तैयार करने के लिए शुरू होने पर मैनेशिया की प्रतीक्षा करने की आवश्यकता होती है। लेकिन यह अभी भी केवल disc_copies प्रकार की तालिकाओं के लिए लागू होता है, क्योंकि डिस्क पर पूरी तरह से चलने वाला एप्लिकेशन या पूरी तरह से RAM में क्यों टेबल और प्रतीक्षा करने की आवश्यकता होती है?

सवाल:
सहायता और जांच अपने विचारों को 1, 2 और 3 सामान्य तौर पर इस समारोह केवल जरूरत है जब mnesia तालिका प्रकार के साथ काम कर: disc_copies के बाद से इस प्रकार के डेटा डिस्क और रैम पर नकल के साथ कुछ है?

यदि मेरी टेबल सभी खंडित हैं, (मैंने हमेशा यह सुनिश्चित करने के लिए प्रत्येक विधि के लिए यह विधि कहा है कि मैनेशिया इसे मेरे ऐप्स के लिए तैयार करता है), क्या मुझे प्रति टुकड़े विधि को कॉल करना है? एटीओएमआईसी या ट्रांजैक्शनल विधि है यदि मैं इसे एक मैनेशिया लेनदेन के भीतर बुलाता हूं (जिसका अर्थ है कि अगर मैं केवल बेस टेबल निर्दिष्ट करता हूं तो मैनेशिया स्वचालित रूप से सभी टेबल टुकड़े लोड कर देगा)? क्या मेरे टुकड़ों का टेबल प्रकार भी इस समारोह से संबंधित है?

उत्तर

3

मेनेसिया शुरू करते समय, मैनेशिया बस सभी टेबलों को कतारबद्ध करता है जिन्हें डिस्क से या नेटवर्क से लोड किया जाना चाहिए।

मैनेशिया: wait_for_tables/2 आपको सिंक्रनाइज़ेशन पॉइंट देता है ताकि तालिका का उपयोग करने के लिए तैयार होने पर मतदान न हो।

आप डिस्क और कोई प्रतिकृति, उपयोग नहीं करते हैं (अर्थात् स्कीमा हमेशा शुरुआत के दौरान खाली है) आप wait_for_tables उपयोग करने की आवश्यकता नहीं है।

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