किस प्रकार का डेटाबेस `अपडेटब` और` पता` का उपयोग करता है?


25

locateके कार्यक्रम findutilsस्कैन एक या फ़ाइल नाम और प्रदर्शित करता है किसी भी मैचों में से अधिक डेटाबेस। findयदि फ़ाइल अंतिम फ़ाइल नाम डेटाबेस अद्यतन के दौरान मौजूद थी, तो इसे बहुत तेज़ आदेश के रूप में उपयोग किया जा सकता है ।

आजकल कई तरह के डेटाबेस हैं,

तो किस तरह का डेटाबेस updatedbअद्यतन और locateउपयोग करता है ?

धन्यवाद।


यह पता लगाने के बावजूद कि क्या वास्तव में बर्कलीडीबी का उपयोग किया गया है, यह आपके लिए जांच के लायक है - यह एक बहुत पुराना, सरल, प्रभावी डिस्क-आधारित कुंजी-मूल्य स्टोर है।
pjc50

@ pjc50 मुझे अच्छा लगेगा। डेटाबेस के लिए फाइलें कहां हैं? मुझे उनकी सामग्री कैसे देखनी चाहिए?
टिम

का पता लगाने के लिए? serverfault.com/questions/454127/…
pjc50

"पृष्ठ नहीं मिला", लिंक serverfault.com/questions/454127/…
टिम

तो डेटाबेस में "कुंजी" और "मान" क्या दर्शाते हैं? अगर मुझे स्टीफन किट की टिप्पणी unix.stackexchange.com/questions/379725/… सही ढंग से समझ में आती है, तो डेटाबेस कुंजी-मूल्य नहीं है।
टिम

जवाबों:


29

सामान्य डेटाबेस इंजन के बजाय locate/ updatedbउनकी आवश्यकताओं के अनुरूप विशिष्ट डेटाबेस का कार्यान्वयन / आमतौर पर उपयोग होता है। आप प्रत्येक कार्यान्वयन द्वारा प्रलेखित उन विशिष्ट डेटाबेसों को पाएंगे; उदाहरण के लिए:

  • GNU findutils'में प्रलेखित किया गया है locatedb(5), और यह केवल फाइलों की एक सूची (एक विशिष्ट संपीड़न एल्गोरिथ्म के साथ) के लिए बहुत अधिक है;
  • mlocateमें प्रलेखित है mlocate.db(5), और इसे निर्देशिका और फ़ाइलों की सूची भी माना जा सकता है (मेटाडेटा के साथ)।

धन्यवाद। विशिष्ट आवश्यकताओं के अनुरूप विशिष्ट डेटाबेस को डिजाइन करने और लागू करने के सिद्धांतों को मैं कहां और कैसे सीख सकता हूं? मैं पढ़ने के लिए किसी भी संदर्भ की सराहना करता हूँ।
टिम

11
डिजाइनिंग डेटाबेस डेटा संरचनाओं को डिजाइन करने के लिए उबलता है, इसलिए उन लोगों के बारे में जानें, और फिर आकार-बनाम-गति डिजाइन व्यापार-नापसंद के बारे में ... मुझे एक विशिष्ट संसाधन का पता नहीं है जो अच्छा होगा, शायद प्रोग्रामिंग पर्ल जैसा कुछ होगा। इन विषयों के बारे में सोचने के तरीके का एक अच्छा परिचय (और उन्हें बहुत ज्यादा नहीं सोचना)।
स्टीफन किट

धन्यवाद। मैंने डेटा संरचनाओं के बारे में कुछ सीखा है, और अगला सवाल डेटा संरचनाओं से डेटाबेस तक जाने के लिए संदर्भ और तरीके खोजने का होगा।
टिम

2
डेटाबेस के रूप में उपयोग किए locateजाने वाले डेटा केवल डिस्क पर संग्रहीत डेटा संरचनाएं हैं, इसलिए डेटा संरचनाओं से संबंधित डेटाबेस में जाना अपेक्षाकृत सीधा है। डेटाबेस में जाना क्योंकि आपका प्रश्न उन्हें प्रस्तुत करता है पूरी तरह से एक और बात है; उन विषयों के लिए समर्पित किताबें और पाठ्यक्रम हैं। एक डेटाबेस प्रबंधन प्रणाली जैसे कि MongoDB या PostgreSQL को डिजाइन और विकसित करना आज कंप्यूटर विज्ञान और सॉफ्टवेयर इंजीनियरिंग में कठिन समस्याओं में से एक है, खासकर जब आप चीजों के वितरित पक्ष में फेंक देते हैं।
स्टीफन किट

2
मैंने वर्षों में स्थित और mlocate.db के साथ एक निष्पक्ष सा काम किया है। मैं मूल रूप dlocateसे डेबियन में अपने कार्यक्रम के लिए एक जगह बनाने के लिए पर्ल कोड था । मैंने यह पता लगाना समाप्त कर दिया कि एक टेक्स्ट फ़ाइल को केवल एक ग्रिप की खोज की तुलना में कई गुना तेज किया गया था, और इन दिनों डिस्क के आकार को देखते हुए फ़ाइल आकार की बचत महत्वहीन थी। इसलिए मैंने सिर्फ grep पर स्विच किया। मेरे पास एक स्थानीय क्रोन जॉब भी है, जो एमएलओटेट क्रोन जॉब के चलने के बाद, सादे टेक्स्ट को mlocate.db डंप करता है, जिसे मैं स्थानीय qlocateशेल स्क्रिप्ट के साथ खोजता हूं .... दौड़ने की तुलना में बहुत तेज mlocateऔर कुछ उपयोगी अतिरिक्त विकल्प भी हैं।
कैस

13

सी संरचनाओं का एक सपाट फ़ाइल लगता है, जिसे Gnu LibC OBSTACKS मैक्रोज़ का उपयोग करके लिखा / पढ़ा जाता है

स्रोत देखें

https://github.com/msekletar/mlocate/blob/master/src/updatedb.c#L720

https://github.com/msekletar/mlocate/blob/master/src/locate.c#L413

आप के साथ कुछ इसी तरह मिल सकता है

find / -xdev -type f -not -path \*\.git\/\* | gzip -9 > /tmp/files.gz
zgrep file_i_want /tmp/files.gz

2
धन्यवाद। अंत में दो आदेश क्या हैं?
टिम

2
@Tim फर्स्ट कमांड findरूट फाइल ( ) /डायरेक्टरी को रूट ( ) डायरेक्टरी से सर्च कर रही है , अन्य फाइलसिस्टम ( -xdev), रेगुलर फाइल्स ( -type f) में *.gitडायरेक्ट्री में नहीं, डिरेक्ट्री में नहीं -not -path \*\.git\/\*। यह आउटपुट ( | gzip -9) को संपीड़ित करता है और इसे फ़ाइल /tmp/files.gz( > /tmp/files.gz) में सहेजता है । अगली पंक्ति संपीड़ित फ़ाइल के अंदर zgrepफ़ाइल के लिए खोज रही हैfile_i_want/tmp/files.gz
piotrekkr

2

जहां तक ​​मुझे पता है कि बर्कले डीबी है, जो कुंजी / मूल्य बेमानी डेटाबेस है। अधिक जानकारी के लिए लिंक का अनुसरण करें। विकिपीडिया से निकालें:

बर्कले DB (BDB) एक सॉफ्टवेयर लाइब्रेरी है जिसका उद्देश्य कुंजी / मान डेटा के लिए एक उच्च-प्रदर्शन एम्बेडेड डेटाबेस प्रदान करना है। बर्कले DB को C ++, C #, जावा, पर्ल, PHP, पायथन, रूबी, स्मॉलटॉक, Tcl और कई अन्य प्रोग्रामिंग भाषाओं के लिए एपीआई बाइंडिंग के साथ सी में लिखा गया है। BDB बाइट सरणियों के रूप में मनमानी कुंजी / डेटा जोड़े को संग्रहीत करता है, और एक कुंजी के लिए कई डेटा आइटम का समर्थन करता है। बर्कले DB एक संबंधपरक डेटाबेस नहीं है।

आरएचईएल / सेंटोस में डेटाबेस का स्थान /var/lib/mlocate/mlocate.db(अन्य वितरण के बारे में निश्चित नहीं है)। आदेश locate --statisticsआपको स्थान और डेटाबेस के कुछ आंकड़ों (उदाहरण) के बारे में जानकारी देगा:

Database /var/lib/mlocate/mlocate.db:
        16,375 directories
        242,457 files
        11,280,301 bytes in file names
        4,526,116 bytes used to store database

यहाँ मिलीलीटर फॉर्मेट के लिए मैन पेज प्रमुख है:

एक mlocate डेटाबेस एक फ़ाइल हेडर के साथ शुरू होता है: मैजिक नंबर के लिए 8 बाइट्स (एक सी शाब्दिक तरह "\ 0mlo- केट"), बड़े एंडियन में कॉन्फ़िगरेशन ब्लॉक आकार के लिए 4 बाइट्स, फ़ाइल फॉर्मेट संस्करण के लिए 1 बाइट (0, 1) बाइट के लिए "दृश्यता की आवश्यकता" ध्वज (0 या 1), 2 बाइट्स पैडिंग, और डेटाबेस के रूट का एक एनयूएल-टर्मिनेटेड पथ नाम।

हेडर एक कॉन्फ़िगरेशन ब्लॉक द्वारा पीछा किया जाता है, यह सुनिश्चित करने के लिए शामिल है कि डेटाबेस का पुन: उपयोग नहीं किया जाता है यदि कुछ कॉन्फ़िगरेशन परिवर्तन उनकी सामग्री को प्रभावित कर सकते हैं। बाइट्स में कॉन्फ़िगरेशन ब्लॉक का आकार फ़ाइल हेडर में संग्रहीत होता है। कॉन्फ़िगरेशन ब्लॉक वेरिएबल असाइनमेंट का एक क्रम है, जिसे वेरिएबल नेम द्वारा क्रम दिया गया है। प्रत्येक चर-सक्षम असाइनमेंट में एक एनयूएल-टर्मिनेटेड वैरिएबल नाम और एनयूएल-टर्मिनेटेड वैल्यूज की एक ऑर्डर की गई सूची होती है। मान सूची को एक और NUL वर्ण द्वारा समाप्त किया जाता है। उपयोग किए गए ऑर्डर को स्ट्रैम्प () फ़ंक्शन द्वारा परिभाषित किया गया है।


2
यह locate/ updatedb... के कार्यान्वयन पर निर्भर करता है ...
स्टीफन किट

2
mlocateसबसे निश्चित रूप से बर्कले DB का उपयोग नहीं करता है।
स्टीफन किट

1
क्या आपके पास अपने बर्कलेबीडी दावे का कोई स्रोत है? आपके उत्तर का दूसरा भाग इसके विपरीत है।
Mat
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.