एक बड़े रिकॉर्ड पर आधारित गणितीय डेटाबेस के लिए क्या मंच है?


11

नमस्ते, मैं प्रोग्रामिंग के कुछ अनुभव के साथ एक सिविल इंजीनियर हूं लेकिन मैं आज उपलब्ध विकल्पों की विशाल रेंज से परिचित नहीं हूं। आशा है कि आप मुझे आगे बढ़ने का सबसे अच्छा तरीका बता सकते हैं।

मैं एक ग्रिड प्रारूप में जमीनी स्तर के सर्वेक्षण माप का डेटाबेस बनाना और क्वेरी करना चाहता हूं। अर्थमूविंग जॉब के माध्यम से प्रत्येक ग्रिड स्थान के लिए कई बार कई माप होंगे ताकि समय का 4 आयाम हो।

टिप्पणियों को संभवतः एक पाठ फ़ाइल से पढ़ा जाएगा। प्रत्येक रिकॉर्ड में एक (2 x पूर्णांक) ग्रिड स्थिति (पंक्ति और स्तंभ) एक (फ्लोटिंग पॉइंट) ग्राउंड स्तर और विभिन्न स्ट्रिंग सूचना कोड (शायद कुल 30 वर्ण तक) होंगे।

ग्रिड लगभग 10000 पंक्तियों x 10000 स्तंभों वाली हो सकती है। ग्रिड के प्रत्येक स्थान का प्रत्येक सर्वेक्षण में एक रिकॉर्ड नहीं होगा, लेकिन वे आमतौर पर सौ रिकॉर्ड तक होंगे। बहुत सारे ग्रिड स्थानों पर कोई रिकॉर्ड नहीं होगा (साइट पूरी तरह से आयताकार नहीं होगी)।

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

मैं मंच के लिए संभावित विकल्पों के बारे में सोच रहा हूं -

  1. डेटाबेस प्रोग्राम का उपयोग करें। मैं इस बात से परिचित नहीं हूं कि ये कितने शक्तिशाली हो सकते हैं लेकिन मुझे लगता है कि वे GUI के साथ बहुत अधिक हो जाएंगे।

  2. SQL का उपयोग करें? मैं इसके बारे में ज्यादा नहीं जानता, लेकिन यह डेटाबेस के लिए भाषा लगती है। मैंने हमेशा घोषणा के बजाय अनिवार्य भाषाओं का उपयोग किया है और जैसा कि मैं विकिपीडिया से समझता हूं कि एसक्यूएल घोषणात्मक है मैं बदलाव से थोड़ा घबरा गया हूं। मैं इसे इस्तेमाल करने की प्रक्रिया को पूरी तरह से नहीं समझता। क्या कोई संकलक है जो कंसोल प्रोग्राम बनाता है? क्या डेटाबेस डिस्क पर संग्रहीत है? इस तरह के बेवकूफ सवालों के लिए क्षमा करें।

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

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

एक आधुनिक पीसी पर चलने वाली खिड़कियों पर घंटों (अधिमानतः सेकंड) मिनटों में सैकड़ों लाखों रिकॉर्ड होने की संभावना है और मैं उन्हें क्वेरी और प्रोसेस करने में सक्षम होना चाहता हूं। अधिक विशिष्ट होने के लिए एक i7 प्रोसेसर है जिसमें 6 जीबी रैम और 120 जीबी एसएसडी के साथ विंडोज 7 64 बिट चल रहा है।

आशा है कि किसी के पास एक नौसिखिया के साथ ज्ञान के दोहे साझा करने का समय होगा।


यदि आप दोपहर 1 से 5 के बीच कुछ समय के लिए ऑनलाइन हो सकते हैं (या बाद में भी महान होंगे) तो हम आपकी मदद करने के लिए आपसे चैट करना पसंद करेंगे। chat.stackexchange.com/rooms/179/the-heap (बेशक उस समय से पहले कुछ साथी भंग हो सकते हैं)। मेरे पास कुछ विशिष्ट विचार हैं जैसे भौगोलिक सूचना प्रणाली मदद करने में सक्षम हो सकती है।
jcolebrand

जवाबों:


9

कई विकल्प हैं और कृपया अपने आप को मेरे उत्तर तक सीमित न रखें। विशेष रूप से आपको मदद के लिए सरणी-मूल डेटाबेस मिल सकता है। मेरा उत्तर विशेष रूप से SQL- आधारित डेटाबेस पर आपके प्रश्नों के बारे में है।

यह मुझे ऐसा लगता है जैसे यह भू-स्थानिक जानकारी का प्रश्न है। SQL- आधारित डेटाबेस वास्तव में ऐसे क्षेत्रों में काफी अच्छी तरह से उपयोग किए जाते हैं, लेकिन यह डेटाबेस के भीतर एक विशेषज्ञ क्षेत्र भी है।

इस क्षेत्र में SQL डेटाबेस में, PostGreSQL, PostGIS ऐड-ऑन के साथ सबसे अच्छे में से एक माना जाता है। अगर मैं तुम होते, तो यह वह जगह होती जहां मैं शुरू करता। एसक्यूएल का प्राथमिक लाभ यह है कि यह आपके डेटा के फिर से उपयोग के बारे में सड़क के लचीलेपन को संरक्षित करता है जिसके उपयोग के बारे में आपने अभी तक नहीं सोचा है। अच्छा भू-स्थानिक समर्थन के साथ ऐसा करने का मतलब है कि आप गोलाकार ट्रिगर की बारीकियों के बारे में चिंता किए बिना एक बड़े क्षेत्र में दूरी की गणना कर सकते हैं।

बेशक यह केवल बहुत बड़े ग्रिड के साथ एक कारक बन जाता है। छोटे ग्रिडों के लिए, जहां पृथ्वी की वक्रता की अवहेलना की जा सकती है, पोस्टग्रेएसक्यूएल में ज्यामितीय प्रकारों की एक सीमा भी है जिसमें एक समन्वय प्रणाली पर अंक शामिल हैं जिनका उपयोग किया जा सकता है। मैं इसका उल्लेख करता हूं क्योंकि यह स्पष्ट नहीं है कि किसी क्षेत्र का कितना बड़ा सर्वेक्षण किया जा रहा है और क्या कोई विमान ज्यामिति मान सकता है या नहीं।

फिर भी PostGIS 3- और 4-आयामी ज्यामितीय समन्वय प्रणालियों पर प्रतिनिधित्व और गणना की अनुमति देकर चीजों को सरल बना सकता है।

यह भी ध्यान दें कि आप कहते हैं कि आपकी साइटें वर्गाकार नहीं हैं। PostgreSQL में एक चीज जो आप कर सकते हैं (या तो ज्यामितीय प्रकार या PostGIS का उपयोग करके) प्रत्येक साइट के लिए एक गैर-आयताकार सीमा को परिभाषित करता है ताकि आप मापने से पहले यह सुनिश्चित कर सकें कि कोई बिंदु साइट की सीमा के अंदर है।

घोषणात्मक भाषा प्रभाव

मुझे लगता है कि यह चिंता का विषय है। लोग एसक्यूएल क्वेश्चन लिख और कर सकते हैं जैसे कि वे जिस प्रोग्राम से उन्हें बुला रहे हैं उसकी अनिवार्य भाषा का एक हिस्सा है। आपके अधिकांश प्रश्नों के लिए यह मायने नहीं रखेगा।

एक घोषणात्मक भाषा से लोगों को क्या मतलब है कि एक क्वेरी के भीतर, संरचना डेटाबेस को बताती है कि आपको क्या जानकारी चाहिए, कैसे नहीं। यह महत्वपूर्ण है जब आप डेटाबेस से जटिल जानकारी चाहते हैं क्योंकि मूल रूप से इसका मतलब है कि यदि आप सही प्रश्न पूछ सकते हैं (और आपका डेटा मान्य है) तो आपको सही उत्तर मिलेगा।

हालांकि जो बड़ा अंतर होता है वह यह है कि लंबी एसक्यूएल क्वेरी लंबी इंपॉर्टेंट सबरूटीन्स की तुलना में डिबग करना आसान होती है, सिर्फ इसलिए कि जहां क्वेरी में खराबी होती है, वहां व्यक्ति जल्दी से कम संकीर्ण हो सकता है।

यह कैसे काम करेगा

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

संक्षेप में आप RDBMS को एक "गणित इंजन" के रूप में सोच सकते हैं जो आपके डेटा का प्रबंधन करता है, और आपका कार्यक्रम आपके साथ वह करता है जो आपको चाहिए।


1
देर से जवाब के लिए खेद है कि मैं बहुत व्यस्त रहा हूँ। मैं वास्तव में आपके सुगम विस्तृत सलाह देने की सराहना करता हूं। मैं SQL के साथ शुरू कर रहा हूँ, O'Reilly किताब के साथ सीखना और अभी तक mySQl को डाउनलोड किया है जैसा कि पुस्तक द्वारा अनुशंसित है। मैं पोस्टग्रेएसक्यूएल जीआईएस एक्सटेंशन के उपयोग पर ध्यान दूंगा और शायद बाद की तारीख में सी # से एसक्यूएल तक पहुंच सकता हूं। धन्यवाद फिर से, मैं वापस आ जाएगा!
user19109
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.