2010-09-18 14 views
59

संपादित करें: मैं कुछ महीनों के लिए पोस्टगिस के साथ पोस्टग्रेस का उपयोग कर रहा हूं, और मैं संतुष्ट हूं।जीआईएस: पोस्टजीआईएस/पोस्टग्रेएसक्यूएल बनाम MySQL बनाम एसक्यूएल सर्वर?

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

इस डेटा के लिए अंतर्निहित डेटा स्टोर के लिए कौन सा डेटाबेस सबसे अच्छा है? यहाँ मेरी इच्छाओं है:

  • मैं डीबीएमएस से परिचित हूँ। मैं PostgreSQL के साथ सबसे कमजोर हूं, लेकिन मैं यह जानने के लिए तैयार हूं कि बाकी सब कुछ जांचता है या नहीं।
  • यह जीआईएस प्रश्नों के साथ अच्छा करता है। Google खोजों से पता चलता है कि PostgreSQL + PostGIS सबसे मजबूत हो सकता है? कम से कम बहुत सारे उत्पाद इसका उपयोग करते हैं। MySQL का स्थानिक एक्सटेंशन तुलनात्मक रूप से न्यूनतम लगता है?
  • कम लागत। एसक्यूएल सर्वर एक्सप्रेस 2008 आर 2 में 10 जीबी डीबी सीमा के बावजूद, मुझे यकीन नहीं है कि मैं इस संस्करण और मुफ्त संस्करण की अन्य सीमाओं के साथ रहना चाहता हूं।
  • माइक्रोसॉफ्ट .NET Framework के साथ विरोधी नहीं है। कनेक्टर/नेट 6.3.4 के लिए धन्यवाद, MySQL अच्छी तरह से सी # और .NET Framework 4 प्रोग्राम काम करता है। यह पूरी तरह से .NET 4 की इकाई फ्रेमवर्क का समर्थन करता है। मुझे कोई गैर-वाणिज्यिक पोस्टग्रेएसक्यूएल समतुल्य नहीं मिल रहा है, हालांकि मैं पोस्टग्रेएसक्यूएल व्यावसायिक संस्करण के लिए देवर्ट के डॉटकनेक्ट के लिए $ 180 का भुगतान करने का विरोध नहीं कर रहा हूं।
  • आर के साथ संगत यह प्रतीत होता है कि इनमें से 3 ओडीबीसी का उपयोग कर आर के साथ बात कर सकते हैं, इसलिए कोई समस्या नहीं हो सकती है।

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

+1

पोस्टजीआईएस विकल्पों में से सबसे परिपक्व होगा। –

+2

पोस्टजीआईएस अब तक का सबसे परिपक्व जीआईएस समाधान है। और यदि आप आर का उपयोग कर रहे हैं, तो आप आर में संग्रहित प्रक्रियाओं को लिखने के लिए पीएल/आर का उपयोग भी कर सकते हैं। MySQL स्थानिक एक्सटेंशन बहुत पतले हैं और आईएमओ कोशिश करने लायक नहीं है, एसक्यूएल सर्वर जीआईएस संभावनाएं काफी नए हैं और कुछ हद तक सीमित हैं लेकिन मेरे पास है इसके साथ अभी तक कोई अनुभव नहीं है। – Wolph

+7

उत्कृष्ट और महत्वपूर्ण सवाल। तथ्यों के आधार पर राय मूल्यवान हैं। बंद नहीं किया जाना चाहिए था। – ErichBSchulz

उत्तर

47

यदि आप पूरी तरह से तुलना में रूचि रखते हैं, तो मैं "Cross Compare SQL Server 2008 Spatial, PostgreSQL/PostGIS 1.3-1.4, MySQL 5-6" और/या "Compare SQL Server 2008 R2, Oracle 11G R2, PostgreSQL/PostGIS 1.5 Spatial Features" बोस्टन जीआईएस द्वारा अनुशंसा करता हूं।

अपने अंक को ध्यान में रखते:

  • मैं डीबीएमएस से परिचित हूँ: विंडोज पर एक PostGIS डेटाबेस की स्थापना के लिए आसान है, PgAdmin3 प्रबंधन का उपयोग सीधी-सपाट है भी
  • यह साथ अच्छी तरह से करता है जीआईएस प्रश्न: पोस्टजीआईएस तीनों में से सबसे मजबूत है, केवल ओरेकल स्पेटियल तुलनीय होगा लेकिन अगर आपको लगता है कि इसकी लागत
  • कम लागत: पोस्टगिस एफ के लिए +1 या सुनिश्चित करें
  • माइक्रोसॉफ्ट के साथ विरोधी नहीं है।नेट फ्रेमवर्क: आप कम से कम ODBC के माध्यम से कनेक्ट करने के लिए सक्षम होना चाहिए (see Postgres wiki)
  • आर के साथ संगत: तीन
+2

हे - ओरेकल स्पेटियल $ 1 मिलियन डॉलर का लाइसेंस था, आखिरकार मैंने सुना –

+0

धन्यवाद। दूसरा तुलना लिंक उपयोगी है। मुझे केवल पहले व्यक्ति को मिला क्योंकि मेरे पास मेरे खोज शब्दों में MySQL था। ऐसा लगता है कि यह मेरे लिए PostgreSQL है! –

+30

बस कहना चाहते हैं, लगभग 1.5 साल बाद, पोस्टग्रेस + पोस्टजीआईएस बिल्कुल सही जवाब था। –

16

पोस्टगिस निश्चित रूप से। यहाँ पर क्यों।

  1. Postgres दूर प्रदर्शन में MySQL से बेहतर है। सर्वर अधिक गलती सहनशील है, लोड-बैलेंसिंग, कैशिंग और ऑप्टिमाइज़ेशन के लिए बॉक्स टूल्स से बाहर है।
  2. पोस्ट जीआईएस जीआईएस ऐप्स में मानक बन रहा है।
  3. यह मुफ़्त है।
+0

# 2 ओपन सोर्स जीआईएस सॉफ्टवेयर और ओपन सोर्स स्टैक के लिए निश्चित रूप से सच है, लेकिन मुझे यकीन नहीं है कि यह वाणिज्यिक जीआईएस अनुप्रयोगों के लिए सच है या नहीं। – winwaed

0

बस एक टिप्पणी से किसी के साथ कोई समस्या नहीं होनी चाहिए कि MySQL के अंत में है उचित जीआईएस तर्क में जोड़ा गया।

http://dev.mysql.com/doc/refman/5.6/en/functions-for-testing-spatial-relations-between-geometric-objects.html

लेकिन मैं इस स्तर

+0

यह जीईओएस जैसे स्थानिक पुस्तकालय का उपयोग करने की तरह दिखता है, सभी स्थानिक तर्क 'एसक्यूएल में है/item_geofunc.cc' –

+0

@ माइकट। ठीक है, मुझे पता है, क्योंकि मैं बीटा टेस्टर्स में से एक था। MySQL स्थानिक कार्यक्षमता Posgis से एक बहुत लंबा रास्ता है और ओरेकल ने संभालने के बाद वास्तव में प्रगति नहीं की है। मेरे लिए असली हत्यारा यह था कि कुछ विशेषता प्रकार कार्यक्षमता द्वारा कोई ST_Union (geom) .... समूह नहीं है। केवल एक ST_Union (geom1, geom2)। एक एसआरआईडी से दूसरे में परिवर्तित करने के लिए कोई समर्थन नहीं। और सूची खत्म ही नहीं होती। –

0

PostGIS सबसे अच्छा है, क्योंकि यह इन दिनों जीआईएस अनुप्रयोगों में एक मानक होता जा रहा है और PostGIS नि: शुल्क है पर लागत या प्रदर्शन पर कोई टिप्पणी नहीं कर सकते हैं। यह प्रदर्शन

+0

कहीं भी कोई बेंचमार्क? – j0k

53

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

MySQL

1)। स्थिरता के मुद्दों। 5 वर्षों के दौरान, हमारे पास कई डेटाबेस भ्रष्टाचार के मुद्दे थे, जिन्हें केवल इंडेक्स फ़ाइल पर myismachk चलाने से तय किया जा सकता था, एक प्रक्रिया 450 मिलियन पंक्ति तालिका पर 24 घंटे से अधिक समय ले सकती है।

2)। हाल ही में केवल MyISAM तालिकाओं ने स्थानिक डेटा प्रकार का समर्थन किया। इसका मतलब है कि यदि आप लेनदेन समर्थन चाहते हैं तो आप भाग्य से बाहर हैं। InnoDB तालिका प्रकार अब स्थानिक प्रकारों का समर्थन करता है, लेकिन उन पर इंडेक्स नहीं, जो स्थानिक डेटा सेट के सामान्य आकार दिए गए हैं, बहुत उपयोगी नहीं हैं। देखें http://dev.mysql.com/doc/refman/5.0/en/innodb-restrictions.html सम्मेलनों में जाने से मेरा अनुभव यह था कि स्थानिक बहुत ही बाद में विचार किया गया था - हमने प्रतिकृति, विभाजन, आदि लागू किया है, लेकिन यह स्थानिक के साथ काम नहीं करता है। संपादित करें: upcoming 5.7.5 release में इनो डीबी अंततः स्थानिक कॉलम पर इंडेक्स का समर्थन करेगा, जिसका अर्थ है कि एसीआईडी, विदेशी कुंजी और स्थानिक इंडेक्स अंततः उसी इंजन में उपलब्ध होंगे।

3)। पोस्टगिस और एसक्यूएल सर्वर स्थानिक दोनों की तुलना में स्थानिक कार्यक्षमता बेहद सीमित है। वहाँ अभी भी कोई ST_Union समारोह है कि एक पूरे ज्यामिति मैदान पर कार्य करता है, प्रश्नों मैं सबसे अधिक बार चलाने के लिए, यानी में से एक हैं, तो आप नहीं लिख सकते हैं:

select attribute, ST_Union(geom) from some_table group by some_attribute 

जो एक जीआईएस संदर्भ में बहुत उपयोगी है। Select ST_Union(geom1, const_geom) from some_table, यानी, ज्यामिति में से एक हार्ड-कोडित स्थिर ज्यामिति तुलना में थोड़ा सीमित है।

4)। रास्टर्स के लिए कोई समर्थन नहीं। एक डीबी के भीतर संयुक्त वेक्टर-रास्टर विश्लेषण करने में सक्षम होने के नाते बहुत उपयोगी जीआईएस कार्यक्षमता है।

5)। एक स्थानिक संदर्भ प्रणाली से दूसरे में रूपांतरण के लिए कोई समर्थन नहीं।

6)। ओरेकल द्वारा अधिग्रहण के बाद से, स्थानिक वास्तव में पकड़ पर रखा गया है।

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

PostGIS

मुद्दों हम MySQL के साथ किया था देखते हुए, हम अंत में PostGIS में बदला। इस अनुभव के मुख्य बिंदु रहे हैं।

1)। चरम स्थिरता। 5 वर्षों में कोई डेटा भ्रष्टाचार नहीं है और अब हमारे पास लोड की अलग-अलग डिग्री के तहत सेंटोस वर्चुअल मशीनों पर लगभग 25 पोस्टग्रेस/जीआईएस बॉक्स हैं।

2)। विकास की तीव्र गति - रास्टर, टोपोलॉजी, 3 डी समर्थन इस के हालिया उदाहरण हैं।

3)। बहुत सक्रिय समुदाय। पोस्टगिस आईआरसी चैनल और मेलिंग सूची उत्कृष्ट संसाधन हैं। Postgis संदर्भ मैनुअल भी उत्कृष्ट है। http://postgis.net/docs/manual-2.0/

4)। ओएसजीओ छतरी, जैसे जिओसेवर और जीडीएएल के तहत अन्य अनुप्रयोगों के साथ बहुत अच्छी तरह से खेलता है।

5)। संग्रहीत प्रक्रियाओं को कई भाषाओं में लिखा जा सकता है, डिफ़ॉल्ट पीपीजीएसक्ल के अलावा, जैसे कि पायथन या आर

5)। पोस्टग्रेज़ एक बहुत ही मानक अनुपालनशील है, पूरी तरह से फीचर्ड आरडीबीएमएस, जिसका उद्देश्य एएनएसआई मानकों के करीब रहना है।

6)। विंडो फ़ंक्शन और रिकर्सिव क्वेरीज़ के लिए समर्थन - MySQL में नहीं, लेकिन SQL सर्वर में। इसने लेखन को अधिक जटिल स्थानिक प्रश्न क्लीनर बना दिया है।

SQL सर्वर।

मैंने केवल SQL Server 2008 स्थानिक कार्यक्षमता का उपयोग किया है, और उस रिलीज की कई परेशानियां - एक सीआरएस से दूसरे में रूपांतरणों के समर्थन की कमी, स्थानिक इंडेक्स में अपने पैरामीटर जोड़ने की आवश्यकता - अब है हल किया गया है।

1)। चूंकि SQL सर्वर में स्थानिक ऑब्जेक्ट मूल रूप से सीएलआर ऑब्जेक्ट्स हैं, इसलिए सिंटैक्स पीछे की ओर महसूस करता है। ST_Area (geom) के बजाय आप geom.STArea() लिखते हैं और जब आप चेन फ़ंक्शन एक साथ करते हैं तो यह और भी स्पष्ट हो जाता है। फ़ंक्शन नामों में अंडरस्कोर को छोड़ना केवल मामूली परेशानी है।

2)। मेरे पास कई अवैध बहुभुज हैं जिन्हें SQL सर्वर द्वारा स्वीकार किया गया है, और ST_MakeValid फ़ंक्शन की कमी से यह थोड़ा दर्दनाक हो सकता है।

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

अद्यतन: एसक्यूएल सर्वर 2012 के साथ थोड़ा सा खेला, मैं कह सकता हूं कि यह काफी सुधार हुआ है। अब एक अच्छा ज्यामिति सत्यापन समारोह है, भौगोलिक डेटा प्रकार के लिए एक अच्छा समर्थन है, जिसमें पूर्ण ग्लोब ऑब्जेक्ट भी शामिल है, जो एक से अधिक गोलार्द्ध पर कब्जा करने वाले ऑब्जेक्ट्स का प्रतिनिधित्व करने और Compound Curves and Circular Strings के लिए समर्थन प्रदान करता है जो आर्क के सटीक और कॉम्पैक्ट प्रस्तुतिकरणों के लिए उपयोगी है (और मंडल) अन्य चीजों के साथ। एक सीआरएस से दूसरे में समन्वय को बदलने के लिए अभी भी तीसरे पक्ष के पुस्तकालयों में किया जाना चाहिए, हालांकि यह अधिकांश अनुप्रयोगों में एक शो स्टॉपर नहीं है।

मैंने पोस्टगिस/माईएसक्यूएल के साथ एक की तुलना करने के लिए बड़े पर्याप्त डेटासेट के साथ SQL सर्वर का उपयोग नहीं किया है, लेकिन जो मैंने देखा है, उससे कार्य सही ढंग से व्यवहार करते हैं, और पोस्टगिस के रूप में पूरी तरह से प्रदर्शित नहीं होने पर, यह एक विशाल है MySQL के प्रसाद पर सुधार।

इतने लंबे उत्तर के लिए खेद है, मुझे उम्मीद है कि पिछले कुछ वर्षों में मुझे जो दर्द और खुशी मिली है, वह किसी की मदद कर सकती है।

+0

मेरे पास एक सारणी है जिसमें भूगोल डेटा प्रकार में अक्षांश और देशांतर बिंदु शामिल है और एक कॉलम में बिंदु के डेटाटाइम शामिल हैं। हम कुछ दिनांक सीमा के साथ रिकॉर्ड और 1000 मीटर से कम या किसी भी बिंदु को छेड़छाड़ करना चाहते हैं या नहीं? यदि हमारे टेबल में 99 लाख रिकॉर्ड हैं तो कौन सा प्रदर्शन बेहतर होगा? कृपया मुझे सुझाव दें .. मैं इसे पिछले 7 दिनों से खोज रहा हूं और पोस्टजीआईएस और एसक्यूएल सर्वर पर परीक्षण किया है और मैंने एक स्थानिक इंडेक्स बनाया है। एसक्यूएल सर्वर की तरह इसकी पोस्ट पोस्टजीआईएस से बेहतर है लेकिन मैंने कभी भी MYSQL पर शब्द नहीं लिखा है, इसलिए मुझे नहीं पता कि MYSQL के साथ तुलना कैसे करें। कृपया मुझे बताएं कि कौन सा बेहतर है? –

+0

@ संदीपकुमार। यह संभवतः बेहतर होता है यदि आप एक नया प्रश्न पूछते हैं कि आपने अभी तक क्या प्रयास किया है, प्रदर्शन कैसे किया गया था, आपके पास कौन सी अनुक्रमणिका है, आदि। एक अच्छा जवाब देने के लिए बहुत सारे अज्ञात हैं। पोस्टग्रेस के पास तिथि सीमा प्रश्नों के लिए अच्छा समर्थन है। सामान्य रूप से MySQL, स्थानिक के लिए बहुत अच्छा नहीं है, लेकिन उपरोक्त प्रश्नों के लिए ठीक हो सकता है। –

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