2011-11-06 5 views
5

के माध्यम से SQLite कितनी तेज़ है, यदि कोई पाइथन लिपि में उपयोग के लिए एक शब्दकोश (ब्रूट फोर्स में) स्टोर करने के लिए SQLite का उपयोग कर रहा है तो मैं केवल इतना उत्सुक था कि एक कुशल विधि थी। जबकि मैं पाइथन के लिए अपेक्षाकृत नया हूं, मेरे पास अन्य प्रोग्रामिंग भाषाओं के साथ काफी अनुभव है और मैं वर्तमान में बैकट्रैक में उपयोग करने के लिए एक पेंटस्टिंग टूल पर काम कर रहा हूं। अब तक मैं पाइथन की गति और सादगी से काफी प्रभावित हूं, और मेरे एसक्यूएल प्रश्न मेरे ब्रूट फोर्स टूल के लिए आवश्यक उपसर्गों को वापस करने के लिए आदर्श रूप से काम कर रहे हैं। हालांकि, मुझे लगता है कि मैं क्या सोच रहा हूं कि पाइथन में बड़ी डेटा फ़ाइलों को संग्रहीत करने के लिए मानक क्या है? क्या मैं एसक्यूएल के साथ अपने आराम के कारण बस अपने उपसर्गों को संग्रहित करने का एक बेहतर (तेज़) तरीका देख रहा हूं? कृपया ध्यान रखें कि मैं पाइथन का उपयोग आईडी के माध्यम से आईडी 0 से पूछने के लिए नहीं कर रहा हूं और उनका उपयोग करता हूं, बल्कि मैं संभावनाओं को कम करने और मानदंडों से मेल खाने वाली उन शब्दकोश प्रविष्टियों को क्वेरी करने के लिए पायथन का उपयोग कर रहा हूं। किसी भी मदद या राय की सराहना की जाएगी!पाइथन

+0

आप इसे कितनी तेजी से पसंद करेंगे? डेटासेट एमबी, जीबी, टीबी कितना बड़ा है? "उपसर्ग" से आपका क्या मतलब है "उपसर्ग पेड़" (trie) में है? डेटा पर आप कितने अच्छे प्रदर्शन मॉडल के अनुरूप हैं? – jfs

उत्तर

3

हां, एसक्लाइट एक शब्दकोश को लागू करने के लिए एक उचित विकल्प है। गति के लिए, स्मृति: विकल्प का उपयोग करें और अपने लुकअप और प्रश्नों के लिए उचित अनुक्रमणिका बनाना सुनिश्चित करें।

बड़े, लगातार डेटाबेस के लिए यह भी अच्छी तरह से काम करता है। गति के लिए, प्रति-कुंजी के बजाय बड़े लेनदेन करने की देखभाल करें। SQLite के लिए

सुझाव दिया और उचित उपयोग करता है के रूप में एक डेटासंग्रह अपनी वेबसाइट पर कवर किया जाता है: http://www.sqlite.org/features.html

1

रेमंड Hettinger भी SQLite सिफारिश की गई है, तो उस शायद आपका सर्वश्रेष्ठ दांव है।

लेकिन मूल पाइथन समाधान "अचार" फ़ाइल का उपयोग करना होगा। आप एक पायथन dict बनाएंगे जो डेटा रखता है, फिर "पिकल" dict; बाद में आप ताना "अनपिक" कर सकते थे। यदि आपके पास केवल एक कुंजी है जिसे आपको खोजना है, तो यह संभवतः जाने का एक अच्छा तरीका हो सकता है।

पायथन 2.x के लिए आप शायद cPickle मॉड्यूल का उपयोग करना चाहेंगे। पायथन 3.x के लिए, केवल pickle है, लेकिन मेरा मानना ​​है कि यह cPickle जितना तेज़ है।

http://docs.python.org/library/pickle.html

दूसरी ओर यदि आपके डेटा सेट सही मायने में बड़े, इतनी बड़ी है कि SQLite कई छोटे SQLite फाइलों में यह बंटवारे और उन्हें प्रबंधित करने का उस पर गला घोंटना करने के लिए शुरू कर रहा है, तो बजाय है, यह कर सकता है पोस्टग्रेएसक्यूएल जैसे वास्तविक डेटाबेस में सबकुछ डंप करने के लिए समझें।

1

अर्ध ऑफ-विषय, यहां कुछ उपयोगी लिंक दिए गए हैं।

THC-Hydra: पी

इसके अलावा यहां पासवर्ड नीतियों पर एक महान वीडियो और जानवर बल के लिए तो उपयोग कर रहा है।

http://www.irongeek.com/i.php?page=videos/hack3rcon2/martin-bos-your-password-policy-sucks