मुझे विभिन्न अनुमानों के साथ PostGIS रेखापुंज डेटा का प्रबंधन कैसे करना चाहिए?


10

मुझे पुरातात्विक भूभौतिकी डेटा को संग्रहीत करने और प्रबंधित करने की आवश्यकता है जो नमूनों की आयताकार सरणी के रूप में एकत्र की जाती है - एक रेखापुंज छवि।

  • प्रत्येक रेखापुंज आमतौर पर 20x20 या 30x30 फ़्लोटिंग-पॉइंट नमूने होते हैं, आमतौर पर 1m अंतराल पर नमूने लिए जाते हैं।
  • एक सर्वेक्षण में दिए गए स्थान में इनमें से एक या अधिक चित्र होंगे।
  • यह संभव है कि दो अलग-अलग सर्वेक्षण अलग-अलग देशों, या विभिन्न अनुमानों का उपयोग करने वाले क्षेत्रों में हो सकते हैं, लेकिन प्रत्येक सर्वेक्षण एक और केवल एक प्रक्षेपण का उपयोग करेगा।
  • वे कभी भी एक साथ देखे जाने की संभावना नहीं रखते हैं, प्रत्येक सर्वेक्षण आमतौर पर खुद ही बैठेगा।
  • डेटा केवल एक कस्टम फ्रंट-एंड द्वारा एक्सेस किया जाएगा, इसलिए कोई भी उपयोगकर्ता इसके द्वारा psqlया इसके समान प्रत्यक्ष नियंत्रण प्राप्त नहीं करेगा ।
  • प्रत्येक नमूने को संग्रहीत करने की आवश्यकता है क्योंकि इसे एकत्र किया गया था, इसलिए मैं इसे वेब सीआरकेटर जैसे एक सामान्य सीआरएस में फिर से अस्वीकार नहीं कर सकता क्योंकि एक नमूना मूल प्रक्षेपण की तुलना में अधिक या कम क्षेत्र को कवर कर सकता है, और विश्लेषण करने की आवश्यकता होगी डेटा पर।

पोस्टगिस रैस्टर डेटाबेस में मुझे डेटा को कैसे स्टोर करना चाहिए? मैं जिन विकल्पों के साथ आया हूं वे हैं:

  1. SRID बाधाओं को अनदेखा करें और एक सुसंगत तरीके से डेटा में हेरफेर से निपटने के लिए मेरे सामने के कोड को लिखने के लिए एक तालिका में सभी डेटा संग्रहीत करें।
  2. सभी डेटा को एक तालिका में संग्रहीत करें, और SRID बाधा को SRID और सर्वेक्षण ID के एक यौगिक के रूप में फिर से लिखें।
  3. तालिका विरासत के माध्यम से, प्रत्येक नए SRID के लिए एक नई तालिका बनाएं।
  4. तालिका विरासत के माध्यम से, प्रत्येक सर्वेक्षण के लिए एक नई तालिका बनाएं।

1 और 2 पोस्टजीआईएस के कुछ अच्छे स्वचालित भागों को तोड़ते हैं, लेकिन अन्यथा फ्रंट-एंड कोड में छिपाए जाएंगे। लेकिन पूछताछ में शायद थोड़ा अधिक समय लगेगा।

3 और 4 टेबल के विस्फोट के साथ समाप्त हो सकते हैं जो एफके बाधाओं और इतने पर प्रबंधन करना कठिन बना देगा।

व्यावहारिक रूप से, प्रति सर्वेक्षण में आपदाओं की संख्या कहीं भी 1 से 100 या उससे अधिक है, और सर्वेक्षणों की संख्या सैकड़ों में चलने की संभावना है। लेकिन अलग-अलग अनुमानों की संख्या बहुत कम रहने की संभावना है, जो 3 का पक्ष लेते हैं।

जवाबों:


7

मैंने आपके प्रश्न को एक विचार दिया है और अंततः इस निष्कर्ष पर पहुंचा हूं कि मैं प्रत्येक सर्वेक्षण को अपने डेटाबेस में संग्रहीत करूंगा ।

ध्यान दें : डेटाबेस से मेरा मतलब है कि यहां दिए गए पोस्टग्रेज शब्दावली के अनुसार एक एकल डेटाबेस डेटाबेस क्लस्टर के अंदर बनाया गया डेटाबेस , अपने स्वयं के उपयोगकर्ताओं, टेम्पलेट 1, आदि के साथ एक पूरी तरह से अलग पोस्टग्रेज प्रक्रिया नहीं है।

हालांकि यह ध्वनि पर काबू पा सकता है, वास्तव में, कई फायदे प्रदान करता है:

  • प्रबंधनीयता: प्रत्येक सर्वेक्षण में इसकी श्रीड के साथ केवल एक रेखापुंज तालिका होती है जो आपको डेटा प्रबंधित करने के पोस्टगिस मानकों का यथासंभव पालन करने की अनुमति देती है (यानी: raster_columns तालिका या FKs / बाधाओं के साथ कोई गड़बड़ नहीं है। सभी पोस्टगिस फ़ंक्शन अभी भी अपेक्षित रूप से काम करते हैं)।

  • सादगी: जब तक आप अपनाते हैं और एक सुसंगत नामकरण रणनीति को लागू करते हैं, जैसे: प्रत्येक db को srvy_ नाम से पुकारते हैं और फिर सभी रास्टर टेबल और कॉलम के लिए एक ही नाम (यानी सर्वेयडटा ) का पुन: उपयोग करते हैं। यदि आप बहुत उत्सुक हैं (मुझे पता है कि मैं; ​​;-)) आप प्रत्येक डेटाबेस में एक मेटाडेटा तालिका भी जोड़ सकते हैं, जिसमें बताया गया है कि उस डेटाबेस में किस तरह का डेटा संग्रहीत किया जाता है, जब इसे अंतिम बार अपडेट किया गया था और इसी तरह। ऐसे सुसंगत नामकरण के साथ डेटाबेस संरचना की स्क्रिप्टिंग / क्वेरी करना आसान (और सुखद) होगा।

  • यह आपकी आवश्यकताओं के अनुसार काम करता है, जब तक कि प्रत्येक सर्वेक्षण अपने स्वयं के श्रीड का उपयोग करता है

  • स्केलेबिलिटी: यह तराजू है क्योंकि आप डेटाबेस (विभिन्न तालिकाओं पर उन्हें आवंटित करके ) को अलग-अलग स्पिंडल (या डिस्क, पूल, लून, स्टोरेज वेंडर पर निर्भर करता है) पर स्थानांतरित कर सकते हैं ताकि I / O को समानांतर किया जा सके। एक ही डेटाबेस से अलग-अलग डिस्क पर टेबल को स्थानांतरित करना अधिक कठिन होगा

  • सुरक्षा: आप डेटाबेस सुरक्षा का उपयोग करके विभिन्न सर्वेक्षणों को अलग-अलग अनुमतियाँ प्रदान कर सकते हैं (आवेदन के ऊपर एक अतिरिक्त परत के रूप में)

  • परीक्षण किया गया: एक उदाहरण पर हजारों डेटाबेस को संभालने वाले पोस्टग्रेट्स की रिपोर्ट मिली है, इसे संदर्भ के लिए देखें

  • [यह परीक्षण किया जाना है, मुझे पता है कि यह ज्यामितीय के लिए काम करता है, आपदाओं के लिए नहीं जानता] आप अभी भी निम्नलिखित की तरह दृश्य बनाकर एक ही बार में सभी आपदाओं को क्वेरी (और रूपांतरित) कर सकते हैं:

create or replace view v_all_surveys_as_wgs84 as select ST_Transform(raster, 4326) as raster_wgs84 from srvy_number1.rasterdata union all select ST_Transform(raster, 4326) as raster_wgs84 from srvy_number2.rasterdata [...]

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


धन्यवाद unicoletti, मुझे यह विचार काफी पसंद है! डेटाबेस के बजाय एक अलग स्कीमा में मेरे पास प्रत्येक सर्वेक्षण हो सकता है क्योंकि अंतिम योजना अलग-अलग ग्राहकों को एक केंद्रीय सर्वर पर अपने सर्वेक्षणों को संग्रहीत करने की है, और इसलिए मैं प्रत्येक ग्राहक के लिए एक अलग डेटाबेस रख सकता हूं। लेकिन किसी भी तरह से, यह निश्चित रूप से स्तंभ बाधाओं के साथ खिलवाड़ करता है! मुझे यकीन नहीं था कि डेटाबेस की संख्या के लिए एक व्यावहारिक सीमा थी, लेकिन यह केवल फ़ाइल सिस्टम सीमाओं द्वारा सीमित है।
10:00 पर MerseyViking

धन्यवाद! मेरा मतलब था डेटाबेस = स्कीमा डेटाबेस = उदाहरण नहीं। शर्तें थोड़ी अस्पष्ट हैं, मैं अपना उत्तर स्पष्ट करूँगा।
unicoletti

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