Erlang 21

mnesia_frag_hash




erlang

mnesia_frag_hash

मॉड्यूल

mnesia_frag_hash

मॉड्यूल सारांश

परिभाषित mnesia_frag_hash कॉलबैक व्यवहार

विवरण

यह मॉड्यूल खंडित तालिकाओं के उपयोगकर्ता-परिभाषित हैश कार्यों के लिए कॉलबैक व्यवहार को परिभाषित करता है।

कौन सा मॉड्यूल जो एक विशेष खंडित तालिका के लिए mnesia_frag_hash व्यवहार को लागू करने के लिए चुना गया है, अन्य frag_properties साथ एक साथ निर्दिष्ट किया गया है। hash_module मॉड्यूल नाम को परिभाषित करता है। hash_state प्रारंभिक हैश राज्य को परिभाषित करता है।

यह मॉड्यूल डायनेमिक हैशिंग को लागू करता है, जो एक तरह का हैशिंग है, जो नए टुकड़े जुड़ने पर अच्छी तरह से बढ़ता है। यह स्केलेबल हैश टेबल के लिए अच्छी तरह से अनुकूल है।

निर्यात

init_state (टैब, राज्य) -> NewState | गर्भपात (कारण)

प्रकार

शुरू होता है जब एक खंडित तालिका फंक्शन mnesia:create_table/2 के साथ बनाई mnesia:create_table/2 या जब एक सामान्य (अनफैग्मेंटेड) टेबल को mnesia:change_table_frag/2 साथ एक खंडित टेबल में बदल दिया जाता है mnesia:change_table_frag/2

ध्यान दें कि टेबल बनाने की प्रक्रिया के एक भाग के रूप में फ़ंक्शन add_frag/2 को अन्य टुकड़ों (नंबर 1 को छोड़कर) में से प्रत्येक के लिए एक बार शुरू किया जाता है।

State hash_state frag_property का प्रारंभिक मूल्य है। hash_state को अन्य frag_properties बीच hash_state रूप में संग्रहीत किया जाता है।

add_frag (राज्य) -> {NewState, IterFrags, ExtraLockFrags} | गर्भपात (कारण)

प्रकार

अच्छी तरह से पैमाने पर, यह सुनिश्चित करना एक अच्छा विचार है कि रिकॉर्ड समान रूप से सभी टुकड़ों पर वितरित किए जाते हैं, जिसमें नया भी शामिल है।

hash_state को अन्य frag_properties बीच hash_state रूप में संग्रहीत किया जाता है।

add_frag प्रक्रिया के एक भाग के रूप में, Mnesia IterFrags संख्याओं के अनुरूप सभी टुकड़ों पर पुनरावृत्ति करता है और प्रत्येक रिकॉर्ड के लिए key_to_frag_number(NewState,RecordKey) शुरू key_to_frag_number(NewState,RecordKey) । यदि नया टुकड़ा पुराने टुकड़े से भिन्न होता है, तो रिकॉर्ड को नए टुकड़े में ले जाया जाता है।

जैसा कि add_frag प्रक्रिया स्कीमा लेनदेन का एक हिस्सा है, Mnesia प्रभावित तालिकाओं पर लेखन ताले प्राप्त करता है। यही है, दोनों टुकड़े IterFrags अनुरूप हैं और जो कि IterFrags अनुरूप हैं।

del_frag (राज्य) -> {NewState, IterFrags, ExtraLockFrags} | गर्भपात (कारण)

प्रकार

hash_state को अन्य frag_properties बीच hash_state रूप में संग्रहीत किया जाता है।

del_frag प्रक्रिया के एक भाग के रूप में, Mnesia IterFrags संख्याओं के अनुरूप सभी टुकड़ों पर पुनरावृत्ति करता है और प्रत्येक रिकॉर्ड के लिए key_to_frag_number(NewState,RecordKey) शुरू key_to_frag_number(NewState,RecordKey) । यदि नया टुकड़ा पुराने टुकड़े से भिन्न होता है, तो रिकॉर्ड को नए टुकड़े में ले जाया जाता है।

ध्यान दें कि अंतिम खंड में सभी रिकॉर्ड को किसी अन्य टुकड़े में ले जाना चाहिए, क्योंकि संपूर्ण टुकड़ा हटा दिया गया है।

जैसा कि del_frag प्रक्रिया स्कीमा लेनदेन का एक हिस्सा है, Mnesia प्रभावित तालिकाओं पर लिखने के ताले प्राप्त करता है। यही है, दोनों टुकड़े IterFrags अनुरूप हैं और जो कि IterFrags अनुरूप हैं।

key_to_frag_number (राज्य, कुंजी) -> FragNum | गर्भपात (कारण)

प्रकार

शुरू होता है जब भी Mnesia को यह निर्धारित करने की आवश्यकता होती है कि एक निश्चित रिकॉर्ड किस टुकड़े का है। यह आमतौर पर read , write और delete शुरू किया जाता है।

match_spec_to_frag_numbers (राज्य, माचिस) -> FragNums | गर्भपात (कारण)

प्रकार

इस फ़ंक्शन को कहा जाता है जब भी मानेसिया को यह निर्धारित करने की आवश्यकता होती है कि मैचस्पेक के लिए कौन से टुकड़े की आवश्यकता है। यह आमतौर पर select और match_object द्वारा बुलाया जाता है।

यह भी देखें

mnesia(3)