क्या व्यक्तिगत जियोडैट डेटाबेस फ़ाइल जियोडैट डेटाबेस की तुलना में अनुक्रमित विशेषताओं को जल्दी से क्वेरी करने के लिए बेहतर अनुकूल हैं?


11

मैं एक ArcGIS इंजन एप्लिकेशन के लिए डेटा तैयार कर रहा हूं जो किसी पते की खोज करने के लिए डेटा को क्वेरी करता है। कभी-कभी हम सड़क के नाम के मैदान पर, केवल घर के नंबर के मैदान पर, या दोनों पर खोज करते हैं। व्यक्तिगत जियोडैट डेटाबेस या एसडीई जियोडैट डेटाबेस का उपयोग करते समय, कोई एकल-कॉलम इंडेक्स के अलावा एक बहु-स्तंभ विशेषता सूचकांक जोड़ सकता है। किसी कारण से, फ़ाइल बनाने के गुणांक ESRI लेख के अनुक्रमणिका के अनुसार, फ़ाइल जियोडैट डेटाबेस का उपयोग करते समय बहु-स्तंभ विशेषता सूचकांक संभव नहीं हैं। वे इस बात का उल्लेख नहीं करते हैं कि ऐसा क्यों है - हो सकता है कि फ़ाइल जियोडैट डेटाबेस किसी कारण से उनकी आवश्यकता न हो?

घर के नंबर फ़ील्ड और स्ट्रीट नाम फ़ील्ड पर एक मल्टी-कॉलम इंडेक्स को सैद्धांतिक रूप से मेरी क्वेरी के प्रदर्शन में सुधार करना चाहिए, जब दोनों फ़ील्ड को एक साथ खोजा जाता है , लेकिन क्या यह व्यक्तिगत जियोडैटबेस का उपयोग करने के लिए स्विच करने योग्य है? मुझे लगता है कि व्यक्तिगत जियोडेटाबेस का उपयोग करने का डाउनसाइड मल्टी-कॉलम इंडेक्स के लाभों को नकार सकता है।

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


1
आइए जानते हैं कि डेटाबेस कितना बड़ा होगा और तालिका में अन्य विशेषताएँ कितनी होंगी? सिर्फ एक टेबल?
विधायक

इस विशेष इंस्टॉलेशन के लिए, डेटाबेस 20 फ़ीचर क्लासेस के साथ एक 200MB फ़ाइल जियोडैटेबेस है, और एड्रेस फ़ीचर क्लास में 27 फ़ील्ड और 886,000 रिकॉर्ड हैं। हालाँकि, यह एक विशेष ग्राहक के इंस्टॉलेशन के लिए है - एक अलग क्लाइंट के डेटा के साथ इस ArcEngine एप्लिकेशन के अन्य इंस्टॉलेशन में बहुत अधिक या कम डेटा हो सकता है।
टेनर

जवाबों:


6

आपके प्रश्न के पहले भाग का उत्तर देने के लिए, मुझे लगता है कि मल्टी-कॉलम इंडेक्स के बारे में फ़ाइल बनाना एट्रीब्यूट इंडेक्स में अतिरिक्त पाठ को देखने में मदद करता है।

जिस क्रम में फ़ील्ड एक बहुरंगी सूचकांक में दिखाई देते हैं वह महत्वपूर्ण है। स्तंभ ए के साथ बहुरंगी सूचकांक में पूर्ववर्ती कॉलम बी, कॉलम ए का उपयोग प्रारंभिक खोज को संचालित करने के लिए किया जाएगा। इसके अलावा, इस तरह के सूचकांक कॉलम ए से जुड़े प्रश्नों के लिए बहुत अधिक उपयोगी होंगे, यह केवल कॉलम बी से जुड़े प्रश्नों के लिए होगा।
A और B पर एक बहुरंगी सूचकांक बनाएँ। यह सूचकांक दोनों स्तंभों से जुड़े प्रश्नों के लिए आमतौर पर अधिक कुशल होगा। केवल A से जुड़े प्रश्नों के लिए, यह सूचकांक केवल A पर अनुक्रमणिका की तुलना में धीमा होगा। यह सूचकांक केवल बी से जुड़े प्रश्नों के लिए बहुत कम उपयोग होगा। क्षतिपूर्ति के लिए, आप बी पर एक अतिरिक्त सूचकांक बना सकते हैं।

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

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

चूंकि व्यक्तिगत GDB पर फ़ाइल GDB के साथ पहले से ही महत्वपूर्ण प्रदर्शन लाभ हैं, यह शायद बहु-स्तंभ सूचकांक को लागू करने के लायक नहीं था।

दोनों GDB प्रकारों के साथ काम करने के अपने अनुभव में, मैंने व्यक्तिगत GDB को फ़ाइल से लगभग 50% बड़ा देखा है। यदि आप अपनी फ़ाइल GDB से संबंधित डेटा प्रदान करते हैं, तो आप एक PGDB में परिवर्तित होने के आधार पर, आप शायद ~ 300MB व्यक्तिगत GDB के साथ समाप्त हो जाएंगे। मैंने जो देखा है, एमएस एक्सेस डेटाबेस के साथ काम करना, दोनों ईएसआरआई उत्पादों के भीतर, और अलग-अलग, यह है कि आप प्रदर्शन में गिरावट देखना शुरू करते हैं एक बार ".mdb" फाइलें 100 एमबी से अधिक आकार में बढ़ जाती हैं।

दूसरा मुद्दा यह होगा कि यदि आप अपनी विशेषता खोजों को गति दे सकते हैं, तो भी आपको डेटा फ़्रेम में घूमने और दृश्य को ताज़ा करने से संबंधित एक बड़ा प्रदर्शन हिट होगा। यदि यह PGDB में होता तो परत केवल इतनी तेज़ नहीं खींचती। जियोडैट डेटाबेस के प्रकारों की तुलना करने वाला यह लेख प्रदर्शन अंतर के बारे में अधिक जानकारी देता है।

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


मुद्दे के गहन विश्लेषण के लिए धन्यवाद। मैंने इससे बहुत कुछ सीखा। मैं फ़ाइल gdb के साथ चिपके रहने की ओर झुक रहा था, इसलिए मुझे लगता है कि मैं अभी उसी के साथ रहूंगा।
टान्नर

5

पर्सनल जियोडेटाबेस पर फाइल जियोडैटेबेस का उपयोग करने के कम से कम 9 शीर्ष कारण हैं। दुर्भाग्य से, पुराने पीजीडीबी को बनाए रखने के लिए अभी भी बहुत सारे कारण हैं; आपकी दुविधा उनमें से एक है। (इस विषय पर कोई ईएसआरआई प्रकाशन नहीं)

मेरा मानना ​​है कि PGDB पर FGDB का प्राथमिक उद्देश्य भंडारण क्षमता और स्थानिक डेटा (ड्राइंग गति, पुनर्प्राप्ति, स्थानिक अनुक्रमण, स्थानिक क्वेरी, आदि) का प्रदर्शन है, कार्यक्षमता के बजाय बहु-स्तंभ "विशेषता" अनुक्रमित और अन्य उन्नत SQL फ़ंक्शन जो आम तौर पर किसी भी DBMS का ऐसा अभिन्न अंग हैं। (कौन सा MS Access आधारित PGDB है और ESRI मूल FGDB नहीं है) एक साइड नोट के रूप में; MS Access डेटाबेस की अधिकतम फ़ाइल आकार सीमा 2GB है जो कि किसी एकल PGDB का अधिकतम आकार भी है। इसके विपरीत, FGDB फ़ाइल आकार सीमा 1TB 256TB के लिए व्यय योग्य है।

ईएसआरआई यह भी बताता है कि: SQL अभिव्यक्ति बनाने के लिए आप जिस वाक्यविन्यास का उपयोग करते हैं, वह डेटा स्रोत के आधार पर भिन्न होता है। ऐसा इसलिए है क्योंकि SQL एक मानक है, सभी डेटाबेस सॉफ़्टवेयर SQL की समान बोली को लागू नहीं करते हैं। और फ़ाइल-आधारित डेटा को क्वेरी करने के लिए, जिसमें फ़ाइल जियोडेट डेटाबेस, कवरेज, शेपफाइल्स, INFO टेबल, dBASE टेबल, CAD और VPF डेटा शामिल हैं, आप ArcGIS के भीतर कार्यान्वित SQL की एक बोली का उपयोग करते हैं जो व्यक्तिगत और उपलब्ध सुविधाओं और कार्यों के सबसेट का समर्थन करती है ArcSDE जियोडैट डेटाबेस।

दूसरे शब्दों में (और PGDB और ArcSDE GDB इसका एक प्रमाण है) यदि DBMS के अंतर्निहित geodatabase इस कार्यक्षमता का समर्थन करता है तो यह उपलब्ध होना चाहिए । यह संभावना है कि आप PGDB में एक बहु-स्तंभ अनुक्रमणिका बनाने में सक्षम हैं, जिसमें एक अंतर्निहित MS एक्सेस डेटाबेस है। एक अंतर्निहित DBMS जो इस कार्यक्षमता का समर्थन करता है के साथ किसी भी ArcSDE geodatabase के साथ।

फ़ाइल जियोडैबेस के रूप में ; पर 9.2 FGDB रिहाई ESRI ने इशारा किया कि इन सुविधाओं और कार्यों में से कुछ के हवाले से भविष्य FGDB विज्ञप्ति में जोड़ा जा सकता है; "फाइल जियोडेट डेटाबेस व्यक्तिगत जियोडेट डेटाबेस के लिए उपलब्ध सभी सुविधाओं और कार्यों का समर्थन नहीं करता है। आर्कगिस 9.2 पर, फाइल जियोडैट डेटाबेस द्वारा समर्थित नहीं किए जाने वाले सबसे अधिक इस्तेमाल किए जाने वाले कार्यों में DISTINCT, GROUP BY और ORDER BY शामिल हैं, और सेट कार्य AVG, COUNT, MIN शामिल हैं। MAX, और SUM उप-श्रेणियों के बाहर समर्थित नहीं हैं। इनमें से कुछ के लिए समर्थन भविष्य के रिलीज़ में जोड़े जाने की संभावना है। "

चार साल बाद संस्करण 10 में इनमें से कोई भी कार्य और सुविधाएँ उपलब्ध नहीं हैं। ( उपलब्ध कार्यों की सूची )

ऐसा लगता है कि FGDB प्रगति में एक कार्य है और इसे बहु-स्तंभ अनुक्रमण क्षमताओं की आवश्यकता है क्योंकि इसमें सभी आवश्यक SQL DBMS फ़ंक्शन की आवश्यकता होती है। मुझे लगता है कि जब तक ईएसआरआई डेवलपर्स यह तय नहीं कर लेते कि एफजीडीबी के लिए अपनी कार्यक्षमता बढ़ाना महत्वपूर्ण है, तब तक हम पीजीडीबी के साथ फंसे रहेंगे।


विस्तृत विवरण, शानदार उत्तर के लिए धन्यवाद। चूंकि मेरी सबसे बड़ी चिंता ड्राइंग गति पर है, मुझे लगता है कि मैं एफजीडीबी के साथ रहूंगा। यह जानना अच्छा है कि PGDB में अधिक मजबूत SQL कार्यक्षमता है।
टान्नर

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

अच्छा जवाब। मुझे अलग-अलग SQL बोलियों के बारे में थोड़ा देखकर खुशी हुई। यह उस अनवारों के पार चलने के लिए एक वास्तविक समय सिंक है (हाँ, यह गड्ढे के नीचे से एक आवाज़ है!)।
मैट विल्की

2

इस थ्रेड / मुद्दे को पुनर्जीवित करते हुए, मैंने पाया कि यह जहाँ संभव हो, FGDB और PGDB को मिलाने के लिए उपयोगी हो सकता है। उदाहरण के लिए, एक खरोंच-जियोडैटेबल्स बनाएं जिसमें पीजीडीबी प्रश्नों के प्रदर्शन में बहुत मदद करता है। पीजीडीबी का आकार बहुत अधिक नहीं बढ़ना चाहिए, जैसा कि ऊपर बताया गया है।

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