मैंने सुना है कि बी-ट्री डेटाबेस हैश टेबल की तुलना में तेज़ हैं, इसलिए मैंने अपने प्रोजेक्ट के लिए बी-ट्री डेटाबेस का उपयोग करने के बारे में सोचा। क्या पाइथन में कोई मौजूदा ढांचा है जो हमें ऐसी डेटा संरचना का उपयोग करने की अनुमति देता है या क्या मुझे स्क्रैच से कोड करना होगा?क्या पाइथन में कोई बी-ट्री डेटाबेस या ढांचा है?
उत्तर
एक हैश तालिका पर बी-ट्री चुनने का एकमात्र कारण, स्मृति में या ब्लॉक स्टोरेज (डेटाबेस में) के साथ, बराबर के अलावा अन्य प्रश्नों का समर्थन करना है। एक बी-पेड़ आपको अच्छे प्रदर्शन के साथ रेंज पूछताछ करने की अनुमति देता है। कई कुंजी-मूल्य भंडार (जैसे बर्कले डीबी) इस बाहरी रूप से दृश्यमान नहीं होते हैं, हालांकि, क्योंकि वे अभी भी चाबियाँ हैं, लेकिन यह आपको अभी भी पूरे डेटासेट को तेज़ी से और स्थिर रूप से फिर से चालू करने देता है (अगर जोड़े जोड़े जाते हैं तो भी यह मान्य रहता है या हटा दिया जाता है, या पेड़ को पुनर्वित्त किया जाना चाहिए)।
यदि आपको सीमा प्रश्नों की आवश्यकता नहीं है, और आपको समवर्ती पुनरावृत्ति की आवश्यकता नहीं है, तो आपको बी-पेड़ की आवश्यकता नहीं है, हैश तालिका का उपयोग करें, यह किसी भी पैमाने पर तेज़ होगा।
संपादित करें: मेरे ऊपर उपरोक्त वास्तव में सत्य होने का मौका मिला है; इसके लिए, blist
पैकेज एक क्रमबद्ध कंटेनर लाइब्रेरी का सबसे पूर्ण कार्यान्वयन प्रतीत होता है।
बर्कले डीबी निश्चित रूप से आपको कर्सर के साथ रेंज पूछताछ करने देता है। Http://docs.oracle.com/cd/E17076_02/html/gsg/CXX/Positioning.html – Gurgeh
"एक हैश तालिका पर बी-ट्री चुनने का एकमात्र कारण, या तो मेमोरी में या ब्लॉक स्टोरेज के बारे में विशेषता ... बराबर के अलावा अन्य प्रश्नों का समर्थन करना है "गलत है। रेंज गुणों के अलावा, बी-पेड़ कुशल आदेशित ट्रैवर्सल प्रदान करते हैं। यह बहुत महत्वपूर्ण हो सकता है। – Christopher
"ऑर्डर ट्रैवर्सल" एक अवधारणा है जो सीमा प्रश्नों से निकटता से संबंधित है, और इसलिए मैं उन्हें अपने उत्तर में एक साथ लंप रहा हूं। – SingleNegationElimination
प्रोग्राम जो आप पहले करने की कोशिश कर रहे हैं, फिर आवश्यक होने पर अनुकूलित करें। अवधि।
संपादित करें: अजगर की सूची में बनाया के लिए प्रतिस्थापन में
http://pypi.python.org/pypi/blist
ड्रॉप।
तकनीकी रूप से यह मेरे कार्यक्रम का हिस्सा है, मैं नहीं चाहता MySQL जैसे पारंपरिक डीबी का उपयोग करने के लिए .. और मुझे यह ध्यान में रखने के लिए कहा गया है कि डेटा सम्मिलन बड़े सेट – Rahul
में होगा, इसलिए हैश टेबल द्वारा ऑफ़र किया गया निरंतर लुकअप/एक्सेस टाइम तेज़ नहीं है जो आप कर रहे हैं और आप देख रहे हैं बी-पेड़ों की ओर चीजों को गति देने के लिए? मैं उनके बारे में प्रश्न पूछने से पहले बी-पेड़ और हैंश के बारे में पढ़ने का सुझाव देता हूं। – user318904
अच्छी तरह से मैंने कुछ बुनियादी साहित्य सर्वेक्षण किया और इस http://www.igvita.com/2009/02/13/tokyo-cabinet-beyond-key-value-store/ पर दिए गए आंकड़ों ने मुझे बी के लिए जाने के लिए प्रेरित किया -Trees, दुर्भाग्य से कार्यक्रम के एक अजगर कार्यान्वयन नहीं है। – Rahul
SQLite3 आंतरिक रूप से बी + पेड़ का उपयोग करता है, लेकिन ऐसा लगता है कि आप एक कुंजी-मूल्य स्टोर चाहते हैं। इसके लिए बर्कले डीबी आज़माएं। यदि आपको लेनदेन की आवश्यकता नहीं है, तो HDF5 आज़माएं। यदि आप एक वितरित कुंजी-मूल्य स्टोर चाहते हैं, तो http://scalien.com/keyspace/ भी है, लेकिन यह एक सर्वर-क्लाइंट प्रकार प्रणाली है जो सभी प्रकार के NoSQL कुंजी-मूल्य स्टोर खोल देगा।
इन सभी प्रणालियों में प्रवेश (पुनर्प्राप्ति और पुनर्प्राप्ति) के लिए ओ (लॉग (एन)) होगा, इसलिए वे शायद वर्तमान में उपयोग कर रहे हैंश टेबल की तुलना में धीमे हो जाएंगे।
क्योटो कैबिनेट एक हैश पेड़ प्रदान करता है, ताकि आप जो भी देख रहे हों, उससे अधिक हो सकता है क्योंकि यह सम्मिलन और पुनर्प्राप्ति के लिए ओ (1) होना चाहिए, लेकिन अगर आपको इसकी आवश्यकता हो तो आप इन-ऑर्डर ट्रैवर्सल नहीं कर सकते (हालांकि आप वर्तमान में हैश पेड़ का उपयोग कर रहे हैं, यह एक मुद्दा नहीं होना चाहिए)।
http://fallabs.com/kyotocabinet/
आप प्रदर्शन के लिए देख रहे हैं, तो आप गति महत्वपूर्ण एक संकलित भाषा में लागू आइटम नहीं हैं करने के लिए और उसके बाद अजगर में एक आवरण एपीआई है की आवश्यकता होगी।
आप mxBeeBase पर एक नज़र डालना चाहते हैं जो ईजिनिक्स एमएक्स बेस वितरण का हिस्सा है। इसमें एक तेज ऑन-डिस्क बी + ट्री कार्यान्वयन शामिल है और स्टोरेज क्लास प्रदान करता है जो पाइथन में ऑन-डिस्क शब्दकोश या डेटाबेस बनाने की अनुमति देता है।
Here एक अच्छा बीटी शुद्ध पायथन कार्यान्वयन है। यदि आवश्यक हो तो आप इसे अनुकूलित कर सकते हैं।
आपको वास्तव में ज़ोडब को देखना चाहिए। http://www.zodb.org/en/latest/
मैं के बारे में यह लंबे समय से जाने एक monography बनाया है, हालांकि अंग्रेजी में अपने स्पेनिश http://sourceforge.net/projects/banta/files/Labs/zodb/Monografia%20-%20ZODB.pdf/download
सूचना हर जगह है।
- 1. क्या Python में कोई उत्पादन तैयार वेब अनुप्रयोग ढांचा है?
- 2. क्या कोई निरंतर परिनियोजन ढांचा है?
- 3. क्या कोई उद्देश्य-सी वेब ढांचा है?
- 4. क्या कोई चैटबॉट ढांचा उपलब्ध है?
- 5. क्या ऐसा कोई सीएसएस ढांचा है?
- 6. क्या पाइथन में कोई काम है?
- 7. क्या कोई ढांचा है जो वायरस परिभाषा डेटाबेस को अद्यतन करने जैसा तरीका काम करता है?
- 8. एक ढांचा क्या है?
- 9. क्या रूबी या पर्ल में कोई अच्छी प्रक्रिया निगरानी और नियंत्रण ढांचा है?
- 10. क्या पाइथन या wxPython
- 11. स्विंग में एक सीआरयूडी यूआई उत्पन्न करने के लिए कोई उपकरण या ढांचा है?
- 12. क्या कोई पाइथन भाषा विनिर्देश है?
- 13. एक अच्छी सुरक्षा ढांचा या एपीआई क्या है?
- 14. क्या कोई वेब ढांचा या प्रोजेक्ट है जो "वॉल" प्रदान करता है जैसे
- 15. क्या Grails के अलावा कोई हल्का Groovy वेब ढांचा है?
- 16. क्या हास्केल के लिए कोई एमवीसी वेब ढांचा है?
- 17. बेहतर क्या है, एक जावास्क्रिप्ट ढांचा, या एकाधिक ढांचे
- 18. "कमजोर ढांचा संदर्भ" क्या है?
- 19. क्या पाइथन में मैक के लिए कोई sendKey है?
- 20. क्या XPath चयनकर्ताओं में कोई "या" है?
- 21. ASP.Net एक स्क्रिप्टिंग भाषा या ढांचा है?
- 22. क्या आईफोन एप्लिकेशन के भीतर प्राथमिकताओं को सेट करने के लिए कोई पुस्तकालय या ढांचा है?
- 23. घुमावदार (asynch सर्वर) बनाम Django (या कोई अन्य ढांचा)
- 24. क्या कोई ऑनलाइन उपयोगकर्ता एजेंट डेटाबेस है?
- 25. जावास्क्रिप्ट में मल्टीप्लेयर बोर्ड गेम के लिए कोई ढांचा है?
- 26. क्या पाइथन में लिखा गया कोई GEDCOM पार्सर है?
- 27. क्या पाइथन कक्षा का उपयोग करने में कोई फायदा है?
- 28. जांचें कि कोई पैरामीटर पाइथन मॉड्यूल है या नहीं?
- 29. क्या कोई डेटाबेस है कि आपके पास डेटाबेस में कितनी टेबल हो सकती है?
- 30. क्या पाइथन में नेस्टेड या फिर से उठाए गए अपवादों तक पहुंचने का कोई तरीका है?
यह आपके आवेदन को समय-समय पर अनुकूलित करने से बचने के लिए एक अच्छा अवसर है। बस एक कामकाजी आवेदन प्राप्त करें और फिर कैंडी कैरेट होने पर प्रदर्शन में सुधार के अवसरों की तलाश करे। वैसे, आप हमेशा अपने प्रश्न के उत्तर के लिए Google में 'पायथन बी-पेड़' डालने का प्रयास कर सकते हैं। –
अच्छी तरह से मेरे पास मेरे आवेदन का प्रोटोटाइप है, लेकिन समस्या यह है कि मुझे डेटा सेट जो मुझे संभालना है, सचमुच लाखों के करीब है, परंपरागत हैशिंग मुझे इतनी तेज गति नहीं दे सकती .. इसलिए बी-पेड़ तक पहुंचने का विचार किया गया। – Rahul
सभी डाउनवॉट्स के साथ क्या हो रहा है? (मैं सिर्फ काउंटर करने के लिए उभरा।) यदि आपको लगता है कि यह प्रश्न और उत्तर बराबर नहीं हैं, तो कृपया टिप्पणी करें। –