हास्केल में इन-मेमोरी डाटस्टोर


9

मैं हास्केल में एक वेब सेवा के लिए एक इन-मेमोरी डेटास्टोर को लागू करना चाहता हूं। मैं STMमोनाड में लेनदेन चलाना चाहता हूं ।

जब मैं गूगल हैश टेबल स्टीम हास्केल मैं केवल यह प्राप्त करता हूं: Data. BTree. HashTable. STM.मॉड्यूल नाम और जटिलताएं बताती हैं कि यह एक पेड़ के रूप में लागू किया गया है। मुझे लगता है कि म्यूट हैश टेबल के लिए एक सरणी अधिक कुशल होनी चाहिए।

क्या STMहैशटेबल के लिए एक सरणी का उपयोग करने से बचने का कोई कारण है ? क्या मुझे इस स्टीम हैश टेबल के साथ कुछ भी हासिल होता है या क्या मुझे सिर्फ स्टी रेफरी का उपयोग करना चाहिए IntMap?


ध्यान दें, यदि आप
डैनियल ग्रैज़र जूल

@jozefg तुम्हारा क्या मतलब है?
साइमन बर्गोट

ओह क्षमा करें, जाहिरा तौर पर मैंने बाकी को खो दिया, मैं यह कहने जा रहा था कि आपको भद्दा समानता मिलेगी क्योंकि मोडिंग Store ! blahऔर Store ! bazअनुक्रमिक होना होगा
डैनियल ग्रैज़र

जब आप "इन-इन-मेमोरी डेटस्टोर" कहते हैं, तो क्या आपका मतलब एसिड-स्टेट जैसा है ?
पथरियन की लौ १६ ’’

@ Ptharien'sFlame मैं वास्तव में उस से अधिक सरल कुछ के लिए देख रहा हूँ। वास्तव में मैं एक साधारण परिवर्तनशील मानचित्र की तलाश कर रहा हूं जो stm monad में चलता है। मुझे पता है कि मेरे पास इसके लिए कई विकल्प हैं, और मैं यह मूल्यांकन करने की कोशिश कर रहा हूं कि कौन सा बेहतर है।
साइमन बर्गोट

जवाबों:


1

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

बहुत समय पहले नहीं था कि हैश अर्रे मैप्ड ट्राई नामक एक अन्य एल्गोरिथ्म का उदय हुआ, जिसने कार्यात्मक भाषाओं जैसे क्लोजर, स्काला और निश्चित रूप से हस्केल को "अनियंत्रित कंटेनरों" और "हैमटैम्प" पुस्तकालयों के साथ लगातार समर्थन के कारण काफी लोकप्रियता हासिल की। डेटा संरचनाएं।

बहुत समय पहले मैंने "एसटीएम-कंटेनर" नामक एल्गोरिथ्म पर आधारित एसटीएम-विशेष कंटेनरों की लाइब्रेरी जारी की थी , जो आपके कार्य को पूरी तरह से फिट करना चाहिए। आप लाइब्रेरी के पीछे एक प्रेरणा को कवर करने और बेंचमार्क प्रदान करने के लिए एक परिचयात्मक ब्लॉग पोस्ट भी देख सकते हैं ।


जवाब के लिए धन्यवाद! मैंने आपके पैकेज का परीक्षण नहीं किया है लेकिन यह दिलचस्प लग रहा है। मैं बाद में इसकी जांच करूंगा, लेकिन आपकी पोस्ट के आधार पर मैं यह मानने के लिए तैयार हूं कि यह मेरे शुरुआती लक्ष्य के अनुकूल है।
साइमन बर्गोट ने

1

आपके द्वारा संदर्भित कार्यान्वयन समवर्ती बी-ट्री को लागू करने के लिए एक पैकेज का हिस्सा है। हैशटेबल खुद Data.Map ऑब्जेक्ट के TVars की एक सरणी के रूप में कार्यान्वित किया जाता है।

उद्धृत जटिलता मूल्य सबसे खराब स्थिति में हैं । याद रखें कि आमतौर पर हैशटैब ओ (एन) लुकअप, इंसर्शन और डिलीशन के लिए सबसे खराब स्थिति है। बाल्टियों के लिए मानचित्र का उपयोग करना इसे O (लॉग (N)) तक ले जाता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.