2010-03-31 16 views
8

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

मेरे आवेदन में, सभी डेटाबेस प्रश्नों में इनपुट के रूप में एक बाउंडिंग बॉक्स होगा, और आउटपुट के रूप में मैं उस डेटाबेस के भीतर सभी आकार चाहता हूं। मुझे पता है कि इस तरह के आवेदन के लिए एक स्थानिक सूचकांक वाले डेटाबेस का उपयोग किया जाता है। लेकिन मेरे आवेदन में नहीं होगा "मुझे ऑब्जेक्ट एक्स/वाई ऑब्जेक्ट दें" या अन्य जटिल प्रश्न जो जीआईएस एप्लिकेशन में उपयोगी हैं।

मैं एक स्थानिक सूचकांक के बिना एक डेटाबेस होने के योजना बना रहा हूँ और की तरह लग रही प्रश्न हैं:

SELECT * FROM shapes WHERE x < max_x AND x > min_x AND y < max_y AND y > min_y 

और कॉलम x (double) और y (double) पर एक सूचकांक है। जब तक मैं देख सकता हूं, मुझे वास्तव में एक स्थानिक इंडेक्स के साथ डेटाबेस की आवश्यकता नहीं है, जो भी मेरा एप्लिकेशन उस तरह के अनुप्रयोगों के करीब है।

और यहां तक ​​कि अगर मैं पास के प्रश्न पूछना चाहता हूं, तो मैं उस बिंदु के आस-पास एक बड़ा पर्याप्त बाउंडिंग बॉक्स बना सकता हूं। या इससे खराब प्रदर्शन होगा?

क्या मुझे वास्तव में एक स्थानिक डेटाबेस की आवश्यकता है? और एक स्थानिक सूचकांक कब आवश्यक है?

संपादित करें: खोज प्रश्नों वास्तव में, थोड़ा और अधिक एक मैं ऊपर लिखा था की तुलना में उन्नत किया जाएगा के बाद से मैं ज्यामितीय आकार के साथ सौदा मैं लूंगा इनपुट एक सीमांकन बॉक्स कि एकाधिक आकृतियों (सीमांकन बॉक्स के साथ) वापस आ जाएगी कि क्वेरी में बॉक्स के अंदर या हस्तक्षेप कर रहे हैं। लेकिन मुझे अभी भी लगता है कि मैं सभी अच्छे उत्तरों को पढ़ने के बाद, एक स्थानिक सूचकांक के बिना ऐसा कर सकता हूं।

+0

पोस्टगिस या स्पैटालाइट का उपयोग करने की "लागत" क्या है? मुझे समझ में नहीं आता कि आप उनका उपयोग क्यों नहीं करना चाहते हैं। – TheSteve0

+0

@ TheSteve0: मैंने तय नहीं किया है कि मैं अभी तक किस डीबीएमएस का उपयोग करूंगा। लेकिन मैं एक स्थानिक सूचकांक के साथ एक तक सीमित नहीं होना चाहूंगा। शायद मैं एक आरडीबीएमएस के एक वितरित NoSQL- डेटाबेस istead के लिए जाना। – Jonas

+0

वैसे आपका उपयोग केस क्या है - यदि आपको – TheSteve0

उत्तर

2

क्या मुझे वास्तव में एक स्थानिक डेटाबेस की आवश्यकता है?

ऐसा लगता है कि आप जो कर रहे हैं वह आपके आवेदन के लिए ठीक काम करेगा।

और यहां तक ​​कि मैं पास के प्रश्न हैं चाहते हैं, तो मुझे लगता है कि बिंदु के आसपास एक बड़ा पर्याप्त सीमांकन बॉक्स बना सकते हैं।

आप इसके बजाय Geohash पर एक इंडेक्स बनाने पर विचार करना चाह सकते हैं। Google विधि इंजन पर भौगोलिक-स्थानिक बिंदुओं को अनुक्रमणित करने के लिए इस विधि की अनुशंसा की जाती है, उदाहरण के लिए, जहां अनुक्रमण सुविधाएं सीमित हैं। (Source)

और एक स्थानिक सूचकांक की आवश्यकता कब होती है?

ऐसे कई परिदृश्य हैं जहां एक स्थानिक सूचकांक उपयोगी है। सबसे पहले, स्थानिक इंडेक्स न केवल अंक के साथ सौदा कर सकते हैं, लेकिन पॉलिलाइन, बहुभुज, और अन्य आकारों के साथ। इसके अतिरिक्त, जैसा कि आपने पहले ही उल्लेख किया है, वहां कई जटिल क्वेरी ऑपरेशंस हैं जिन्हें स्थानिक डेटा पर लागू किया जा सकता है, जहां एक उचित स्थानिक सूचकांक आवश्यक होगा।

+0

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

2

नहीं, आपको इसके लिए एक स्थानिक सूचकांक की आवश्यकता नहीं है।

ऑब्जेक्ट्स के बीच दूरी की गणना करने के लिए स्थानिक सूचकांक की आवश्यकता होती है, यह देखते हुए कि कोई बिंदु किसी अन्य बिंदु के किसी निश्चित त्रिज्या के भीतर है या नहीं ... अधिकतर जब आपको भौगोलिक निर्देशांक को ध्यान में रखना होगा। दक्षिणी गोलार्ध, उत्तरी गोलार्द्ध, आदि ... जब आप पृथ्वी के वक्र को ध्यान में रखते हैं तो यह सब कुछ दूरी को बदल देता है।

यदि आप हमेशा एक ही समय में दोनों वस्तुओं पर एक इंडेक्स रखने से लाभ प्राप्त करते हैं तो आप हमेशा x और y दोनों की तलाश में हैं। तो ... कॉलम एक्स पर एक सूचकांक और कॉलम वाई पर एक सूचकांक नहीं है, लेकिन कॉलम एक्स और वाई पर एक सूचकांक संयुक्त है।

+0

एक संयुक्त सूचकांक के स्पष्टीकरण और सुझाव के लिए धन्यवाद। – Jonas

1

यदि आप जो भी कर रहे हैं उससे परे नहीं जाते हैं, तो आपको उस मामले के लिए स्थानिक सूचकांक और न ही एक जीआईएस की आवश्यकता नहीं है। हालांकि, मैं सावधानीपूर्वक विचार करता हूं कि आपकी आवश्यकताओं क्या हैं और जीआईएस सिस्टम की आवश्यकता के लिए बढ़ रहे आवेदन की संभावनाएं हैं। यह इस संक्रमण के लिए बाद में योजना से पहले बेहतर है।

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

यदि आपके पास वास्तविक जीआईएस पर्यावरण है तो आपको केवल स्थानिक इंडेक्स की आवश्यकता होगी।यदि आप जीआईएस पर्यावरण चुनते हैं, तो, स्थानिक इंडेक्स का उपयोग करें - आप वास्तव में उनके बिना काम नहीं करना चाहते हैं।

+0

धन्यवाद! मैं अपने आवेदन को ध्यान से डिजाइन करूंगा। मैं उन्नत प्रक्रियाओं को फ्रंट-एंड सॉफ़्टवेयर में रखने की कोशिश करूंगा और बैक-एंड स्टोरेज को सरल रखूंगा, इसलिए मैं आसान स्केल कर सकता हूं। – Jonas

2

मौजूदा उत्कृष्ट उत्तरों में जोड़ने के लिए, प्रदर्शन यहां महत्वपूर्ण या महत्वपूर्ण नहीं हो सकता है।

यदि आप x और y axes के लिए दो रेंज क्वेरी करके और परिणामों के छेड़छाड़ करके एक स्थानिक इंडेक्स रेंज क्वेरी अनुकरण करते हैं, तो आप दो प्रश्न पूछ रहे हैं जो छेड़छाड़ से पहले आवश्यकतानुसार अधिक डेटा लौटा सकते हैं।

दूसरी ओर, ऐसी क्वेरी मूल रूप से स्थानिक सूचकांक द्वारा समर्थित है और इस तरह उत्तरदायी उत्तर दिया जाएगा।

सब कुछ, यदि आपके स्थानिक प्रश्न बाधाएं हैं, तो आपको एक स्थानिक सूचकांक का उपयोग करने की आवश्यकता होगी।

संबंधित मुद्दे