2010-03-04 10 views
6

क्या स्थानीय लेखन और वैश्विक पढ़ने ( प्रतिकृति के बिना) मिनेसिया का उपयोग करने का कोई तरीका है। उदाहरण: नोड ए अपने स्थानीय डीबी और नोड बी को लिखता है नोड ए के डीबी से पढ़ता है। नोड बी के पास स्थानीय स्तर पर संग्रहीत स्कीमा जानकारी के अलावा, स्वयं का कोई डेटा नहीं है।मेनेसिया: {local_content, true} मोड में दूरस्थ नोड डेटा पढ़ना

प्रलेखन के अनुसार, {local_content, true} मुझे लगता है कि मुझे क्या उपयोग करने की ज़रूरत है, लेकिन मैं नोड ए के डेटा को पढ़ने के लिए नोड बी प्राप्त करने में असफल रहा हूं।

इस तरह मेरे स्कीमा और तालिका विन्यास देखो:

nodeA @ IP1 पर:

net_adm:ping('[email protected]'). 
    rd(user, {name, nick}). 
    mnesia:create_schema([node()|nodes()]). 
    mnesia:start(). 
    mnesia:create_table(user, [ {local_content, true}, 
           {disc_copies, [node()]}, 
           {attributes,record_info(fields, user) }]). 

%% insert data and list rows on nodeA 
%% WORKS 

nodeB @ IP2 पर:

mnesia:start(). 
    %% code to list rows from user table on nodeA 
    %% throws an ERROR saying table does not exist. 

विन्यास गलत है या यह किया जा सकता है किसी अन्य तरीके से?

+0

स्थानीय आरक्यूसी कॉल को स्थानीय रूप से किया जाना चाहिए। यह सवाल अमान्य बनाता है। – Abhijith

उत्तर

1

मुझे नहीं लगता कि आप इसका उल्लेख कर सकते हैं। ऐसा करने का एक और तरीका शायद एनडी ए को आरपीसी कॉल करना होगा और डेटा को इस तरह से प्राप्त करना होगा। नोड बी से पढ़ने के लिए मेनेसिया का उपयोग करने में कोई बात नहीं है क्योंकि यह अनिवार्य रूप से सिर्फ आरपीसी ही करेगा।

तो नोड बी होना चाहिए:

rpc:call([email protected], mnesia, read, ....). 

आशा क्या [कुछ हद तक] की जरूरत क्या है।

संपादित करें: ओह और मैं यह उल्लेख करना भूल गया कि आपको काम करने के लिए दोनों नोड्स पर स्कीमा की आवश्यकता नहीं है। यह माना जा रहा है कि नोड बी वास्तव में नोड ए के साथ किसी अन्य डेटा को साझा करने की परवाह नहीं करता है, यह सिर्फ इसे पढ़ता है; दूसरे शब्दों में बस नोड ए पर सभी मैनेशिया सामान रखें और नोड बी

+0

सच है। दस्तावेज़ीकरण कहता है, स्थानीय_कंटेंट टेबल तक पहुंच स्थानीय रूप से की जानी चाहिए। तो मुझे लगता है कि मेरा सवाल मंथन है। – Abhijith

0

आपको स्कीमा की extra_db_nodes कॉन्फ़िगरेशन चीज़ में नोड बी जोड़ने की आवश्यकता हो सकती है। यदि आपको डिस्क आधारित डीबी है, तो आपको ऐसा करने की ज़रूरत नहीं है, लेकिन राम में यह करना अनिवार्य है कि आप जो चाहते हैं उसे करें।

विनिर्देशों के बारे में निश्चित नहीं है, मैं भ्रमित हो सकता हूं कि सामान कहां रखना है। मैं मैनेसिया के साथ बहुत अनुभवी नहीं हूं, लेकिन दस्तावेज़ बताते हैं कि आपको यह करना चाहिए।

+0

धन्यवाद। मैं कोशिश करता हूं और देखता हूं कि मुझे क्या मिलता है। – Abhijith

+0

extra_db_nodes मदद नहीं करता है। फिर भी धन्यवाद। – Abhijith

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