Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

Oracle से PostgreSQL में माइग्रेट करने के शीर्ष दस कारण

Oracle रिलेशनल डेटाबेस मैनेजमेंट सिस्टम (RDBMS) का बड़े संगठनों द्वारा व्यापक रूप से उपयोग किया गया है और इसे अब तक बाजार में उपलब्ध सबसे उन्नत डेटाबेस तकनीक माना जाता है। यह आमतौर पर अन्य डेटाबेस उत्पादों के साथ सबसे अधिक बार तुलना की जाने वाली RDBMS है जो किसी उत्पाद की पेशकश के मानक "डी-फैक्टो" के रूप में कार्य करती है। इसे db-engines.com द्वारा आज बाजार में उपलब्ध #1 RDBMS के रूप में स्थान दिया गया है।

PostgreSQL को #4 RDBMS के रूप में स्थान दिया गया है, लेकिन इसका मतलब यह नहीं है कि PostgreSQL में माइग्रेट करने के कोई लाभ नहीं हैं। PostgreSQL 1989 के आसपास रहा है और 1996 में ओपन-सोर्स किया गया था। PostgreSQL ने 2017 और 2018 से लगातार दो वर्षों में वर्ष का DBMS जीता। यह सिर्फ इंगित करता है कि बड़ी संख्या में उपयोगकर्ताओं और बड़े संगठनों को आकर्षित करने से रोकने का कोई संकेत नहीं है।

पोस्टग्रेएसक्यूएल ने बहुत ध्यान आकर्षित करने के कारणों में से एक यह है कि लोग ओरेकल के विकल्प की तलाश में हैं ताकि वे संगठनों को उच्च लागत में कटौती कर सकें और विक्रेता लॉक-इन से बच सकें।

कार्यशील और उत्पादक Oracle डेटाबेस से आगे बढ़ना एक कठिन काम हो सकता है। कंपनी की टीसीओ (स्वामित्व की कुल लागत) जैसी चिंताएं एक कारण है कि कंपनियां ओरेकल को छोड़ने या न करने के अपने फैसले को खींचती हैं।

इस ब्लॉग में हम कुछ मुख्य कारणों पर एक नज़र डालेंगे कि क्यों कंपनियां Oracle को छोड़कर PostgreSQL में माइग्रेट करना चुन रही हैं।

कारण एक:यह एक सच्चा ओपन सोर्स प्रोजेक्ट है

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

यदि आप डेटाबेस सॉफ़्टवेयर का लाभ उठाना चाहते हैं, तो इसका अर्थ है कि आप PostgreSQL डेटाबेस की सभी उपलब्ध सुविधाएँ निःशुल्क प्राप्त कर सकते हैं। PostgreSQL डेटाबेस की दुनिया में परिपक्वता के 30 साल से अधिक पुराना है और 1996 से ओपन-सोर्स के रूप में टच आधारित है। इसने दशकों से डेवलपर्स को एक्सटेंशन बनाने के लिए काम किया है। यह, अपने आप में, डेवलपर्स, संस्थानों और संगठनों को एंटरप्राइज़ अनुप्रयोगों के लिए PostgreSQL का चयन करता है; प्रमुख व्यवसाय और मोबाइल एप्लिकेशन को सशक्त बनाना।

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

PostgreSQL अक्सर बहुत अधिक जटिलता जोड़े बिना उन कार्यों को पूरा करता है। इसका डिज़ाइन अतिरिक्त सुविधाओं के माध्यम से अतिरिक्त आईटी वातावरण के प्रबंधन जैसे संसाधनों को बर्बाद किए बिना डेटाबेस को संभालने पर सख्ती से केंद्रित है। यह उन चीजों में से एक है जो इस ओपन-सोर्स सॉफ़्टवेयर के उपभोक्ता ओरेकल से पोस्टग्रेएसक्यूएल में माइग्रेट करते समय पसंद करते हैं। Oracle डेटाबेस कैसे काम करता है, या ऑप्टिमाइज़ और ट्यून अप कैसे करें, इसके बारे में जटिल तकनीक का अध्ययन करने में घंटों खर्च करना इसके महंगे समर्थन के साथ समाप्त हो सकता है। यह संस्थानों या संगठनों को एक विकल्प खोजने के लिए लुभाता है जो लागत पर कम सिरदर्द हो सकता है और लाभ और उत्पादकता लाता है। कृपया हमारे पिछले ब्लॉग को देखें कि Oracle के सिंटैक्स के साथ SQL सिंटैक्स उपस्थिति का मिलान करने के लिए PostgreSQL कितना सक्षम है।

कारण दो:कोई लाइसेंस नहीं और एक बड़ा समुदाय

Oracle RDBMS प्लेटफॉर्म के उपयोगकर्ताओं के लिए, किसी भी प्रकार का सामुदायिक समर्थन प्राप्त करना मुश्किल है जो मुफ़्त है या बिना किसी भारी शुल्क के। संस्थान, संगठन और डेवलपर्स अक्सर एक वैकल्पिक जानकारी ऑनलाइन ढूंढते हैं जो उनकी समस्याओं के उत्तर या समाधान मुफ्त में पेश कर सकती है।

Oracle का उपयोग करते समय, किसी विशिष्ट उत्पाद पर निर्णय लेना कठिन होता है या उत्पाद समर्थन के साथ जाना है या नहीं क्योंकि (आमतौर पर) बहुत सारा पैसा शामिल होता है। आप इसका परीक्षण करने के लिए एक विशिष्ट उत्पाद की कोशिश कर सकते हैं, इसे खरीदना समाप्त कर सकते हैं, बस यह महसूस करने के लिए कि यह आपकी मदद नहीं कर सकता है। PostgreSQL के साथ, समुदाय स्वतंत्र है और विशेषज्ञों से भरा है जिनके पास व्यापक अनुभव है जो आपकी वर्तमान समस्याओं में आपकी सहायता करने में प्रसन्न हैं।

समुदाय से संपर्क शुरू करने के लिए आप यहीं https://lists.postgresql.org/ पर मेलिंग सूची की सदस्यता ले सकते हैं। पोस्टग्रेएसक्यूएल के नए शौक या विलक्षण प्रतिभाएं अपने समाधान, प्रौद्योगिकी, बग, नए निष्कर्ष या यहां तक ​​कि अपने उभरते हुए सॉफ़्टवेयर को साझा करने, प्रदर्शित करने और साझा करने के लिए यहां आधारित हैं। आप irc.freenode.net का उपयोग करके और #postgresql चैनल से जुड़ने के लिए IRC चैट से भी मदद मांग सकते हैं। आप https://postgres-slack.herokuapp.com/ या https://postgresteam.slack.com/ के साथ जुड़कर स्लैक के माध्यम से भी समुदाय तक पहुंच सकते हैं। लेने के लिए बहुत सारे विकल्प हैं और बहुत से ओपन सोर्स संगठन जो आपको प्रश्न प्रस्तुत कर सकते हैं

कहां से शुरू करें, इसके बारे में अधिक जानकारी और जानकारी के लिए, यहां देखें https://www.postgresql.org/community/।

यदि आप PostgreSQL में पेशेवर सेवाओं के लिए जाना और चेकआउट करना चाहते हैं, तो चुनने के लिए कई विकल्प हैं। यहां तक ​​​​कि https://www.postgresql.org/support/professional_support/northamerica/ पर उनकी वेबसाइट की जाँच करने पर, आप वहाँ कंपनियों की एक बड़ी सूची पा सकते हैं और इनमें से कुछ सस्ती कीमत पर हैं। यहां तक ​​कि सिमेर्नाइन्स में, हम पोस्टग्रेज के लिए भी सहायता प्रदान करते हैं, जो कि क्लस्टरकंट्रोल लाइसेंस या डीबीए कंसल्टेंसी का हिस्सा है।

तीन कारण:  SQL अनुरूपता के लिए व्यापक समर्थन

PostgreSQL हमेशा अपनी भाषा के लिए एक वास्तविक मानक के रूप में SQL को अनुकूलित और अनुरूप बनाने के लिए उत्सुक रहा है। SQL मानक का औपचारिक नाम ISO/IEC 9075 "डेटाबेस भाषा SQL" है। मानक रिलीज़ का कोई भी लगातार संशोधित संस्करण पिछले संस्करण की जगह लेता है, इसलिए पहले के संस्करणों के अनुरूप होने के दावों का कोई आधिकारिक गुण नहीं है।

Oracle के विपरीत, कुछ कीवर्ड या ऑपरेटर अभी भी मौजूद हैं जो ANSI- मानक SQL (स्ट्रक्चर्ड क्वेरी लैंग्वेज) के अनुरूप नहीं हैं। उदाहरण के लिए, OUTER JOIN (+) ऑपरेटर अन्य DBA के साथ भ्रम की स्थिति पैदा कर सकता है, जो Oracle से कम से कम परिचित हैं या नहीं। पोस्टग्रेएसक्यूएल जॉइन सिंटैक्स के लिए एएनएसआई-एसक्यूएल मानक का पालन करता है और यह अन्य ओपन-सोर्स आरडीबीएमएस डेटाबेस जैसे कि MySQL/Percona/MariaDB डेटाबेस के साथ आसानी से और आसानी से कूदने का लाभ छोड़ देता है।

एक अन्य सिंटैक्स जो Oracle के साथ बहुत सामान्य है, वह है पदानुक्रमित प्रश्नों का उपयोग करना। Oracle गैर-मानक START WITH..CONNECT BY सिंटैक्स का उपयोग करता है, जबकि SQL:1999 में, पदानुक्रमित प्रश्नों को पुनरावर्ती सामान्य तालिका अभिव्यक्तियों के माध्यम से कार्यान्वित किया जाता है। उदाहरण के लिए, नीचे दिए गए प्रश्न पदानुक्रमित प्रश्नों के अनुसार इसके सिंटैक्स को अलग करते हैं:

ओरेकल

SELECT

    restaurant_name, 

    city_name 

FROM

    restaurants rs 

START WITH rs.city_name = 'TOKYO'

CONNECT BY PRIOR rs.restaurant_name = rs.city_name;

पोस्टग्रेएसक्यूएल

WITH RECURSIVE tmp AS (SELECT restaurant_name, city_name

                                 FROM restaurants

                                WHERE city_name = 'TOKYO'

                                UNION

                               SELECT m.restaurant_name, m.city_name

                                 FROM restaurants m

                                 JOIN tmp ON tmp.restaurant_name = m.city_name)

                  SELECT restaurant_name, city_name FROM tmp;

PostgreSQL का दृष्टिकोण अन्य शीर्ष ओपन-सोर्स RDBMS जैसे MySQL/MariaDB के समान है।

पोस्टग्रेएसक्यूएल मैनुअल के अनुसार, पोस्टग्रेएसक्यूएल विकास का लक्ष्य मानक के नवीनतम आधिकारिक संस्करण के अनुरूप होना है जहां ऐसी अनुरूपता पारंपरिक विशेषताओं या सामान्य ज्ञान का खंडन नहीं करती है। SQL मानक के लिए आवश्यक कई सुविधाएँ समर्थित हैं, हालाँकि कभी-कभी थोड़े भिन्न सिंटैक्स या फ़ंक्शन के साथ। यह, वास्तव में, PostgreSQL के साथ क्या बढ़िया है क्योंकि यह विभिन्न संगठनों द्वारा समर्थित और सहयोगित है, चाहे वह छोटा हो या बड़ा। सुंदरता अपनी SQL भाषा के अनुरूप बनी रहती है, जिसमें मानक पुश थ्रू होता है।

PostgreSQL विकास का उद्देश्य मानक के नवीनतम आधिकारिक संस्करण के अनुरूप होना है जहां ऐसी अनुरूपता पारंपरिक विशेषताओं या सामान्य ज्ञान का खंडन नहीं करती है। SQL मानक के लिए आवश्यक कई सुविधाएँ समर्थित हैं, हालाँकि कभी-कभी थोड़े भिन्न सिंटैक्स या फ़ंक्शन के साथ। समय के साथ अनुरूपता की ओर आगे बढ़ने की उम्मीद की जा सकती है।

चार कारण:क्वेरी समानांतरवाद

निष्पक्ष होने के लिए, SQL कथन के लिए Oracle के समानांतर निष्पादन की तुलना में PostgreSQL की क्वेरी समानता उतनी समृद्ध नहीं है। ओरेकल के समानांतरवाद की विशेषताओं में संकेत के साथ कतारबद्ध बयान, समानांतरवाद की डिग्री (डीओपी) निर्धारित करने की क्षमता, समानांतर डिग्री नीति या अनुकूली समानांतरवाद निर्धारित करने की क्षमता है।

PostgreSQL में समर्थित योजनाओं के आधार पर समानता की एक साधारण डिग्री है, लेकिन यह परिभाषित नहीं करता है कि Oracle ओपन सोर्स PostgreSQL पर किनारे करता है।

PostgreSQL की समानता में समुदाय द्वारा लगातार सुधार और निरंतर वृद्धि की जा रही है। जब PostgreSQL 10 जारी किया गया था, तो इसने जनता के लिए और अधिक अपील को जोड़ा, विशेष रूप से मर्ज जॉइन, बिटमैप हीप स्कैन, इंडेक्स स्कैन और इंडेक्स-ओनली स्कैन, इकट्ठा मर्ज, आदि के लिए समांतरता समर्थन में सुधार। सुधार pg_stat_activity में आंकड़े भी जोड़ता है।

PostgreSQL संस्करण <10 में, समानांतरवाद डिफ़ॉल्ट रूप से अक्षम है जिसे आपको चर max_parallel_workers_per_gather सेट करने की आवश्यकता है।

postgres=# \timing

Timing is on.

postgres=# explain analyze select * from imdb.movies where birthyear >= 1980 and birthyear <=2005;

                                                   QUERY PLAN                                                   

----------------------------------------------------------------------------------------------------------------

 Seq Scan on movies  (cost=0.00..215677.28 rows=41630 width=68) (actual time=0.013..522.520 rows=84473 loops=1)

   Filter: ((birthyear >= 1980) AND (birthyear <= 2005))

   Rows Removed by Filter: 8241546

 Planning time: 0.039 ms

 Execution time: 525.195 ms

(5 rows)



Time: 525.582 ms

postgres=# \o /dev/null 

postgres=#  select * from imdb.movies where birthyear >= 1980 and birthyear <=2005;

Time: 596.947 ms

क्वेरी प्लान से पता चलता है कि यह वास्तविक समय लगभग 522.5 एमएस जा सकता है फिर वास्तविक क्वेरी निष्पादन समय लगभग 596.95 एमएस हो जाता है। समानांतरवाद को सक्षम करते हुए,

postgres=# set max_parallel_workers_per_gather=2;

Time: 0.247 ms

postgres=# explain analyze select * from imdb.movies where birthyear >= 1980 and birthyear <=2005;

                                                          QUERY PLAN                                                           

-------------------------------------------------------------------------------------------------------------------------------

 Gather  (cost=1000.00..147987.62 rows=41630 width=68) (actual time=0.172..339.258 rows=84473 loops=1)

   Workers Planned: 2

   Workers Launched: 2

   ->  Parallel Seq Scan on movies  (cost=0.00..142824.62 rows=17346 width=68) (actual time=0.029..264.980 rows=28158 loops=3)

         Filter: ((birthyear >= 1980) AND (birthyear <= 2005))

         Rows Removed by Filter: 2747182

 Planning time: 0.096 ms

 Execution time: 342.735 ms

(8 rows)



Time: 343.142 ms

postgres=# \o /dev/null

postgres=#  select * from imdb.movies where birthyear >= 1980 and birthyear <=2005;

Time: 346.020 ms

क्वेरी प्लान निर्धारित करता है कि क्वेरी को समांतरता का उपयोग करने की आवश्यकता है और फिर यह गैदर नोड का उपयोग करता है। यह 2 कार्यों के साथ 339ms का वास्तविक समय अनुमान है और क्वेरी योजना द्वारा एकत्रित किए जाने से पहले 264ms का अनुमान है। अब, क्वेरी के वास्तविक निष्पादन समय में 346ms लगे, जो क्वेरी योजना से अनुमानित वास्तविक समय के बहुत करीब है।

यह दिखाता है कि PostgreSQL के साथ यह कितना तेज़ और फायदेमंद है। हालाँकि PostgreSQL की अपनी सीमाएँ होती हैं जब समांतरता हो सकती है या जब क्वेरी योजना यह निर्धारित करती है कि यह समानांतरवाद का उपयोग करने की तुलना में तेज़ है, तो यह Oracle की तुलना में इसकी विशेषता को बहुत बड़ा नहीं बनाता है। PostgreSQL का समानांतरवाद लचीला है और इसे तब तक सक्षम या सही ढंग से उपयोग किया जा सकता है जब तक कि आपकी क्वेरी क्वेरी समांतरता के लिए आवश्यक अनुक्रम से मेल खाती है।

पांचवां कारण:उन्नत JSON समर्थन और हमेशा सुधार कर रहा है

PostgreSQL में JSON सपोर्ट हमेशा अन्य ओपन सोर्स RDBMS की तुलना में बराबर होता है। LiveJournal के इस बाहरी ब्लॉग पर एक नज़र डालें जहां PostgreSQL का JSON समर्थन अन्य RDBMS की तुलना में हमेशा अधिक उन्नत होने का खुलासा करता है। PostgreSQL में बड़ी संख्या में JSON फ़ंक्शन और विशेषताएं हैं।

JSON डेटा-प्रकार को PostgreSQL-9.2 में पेश किया गया था। तब से, इसमें कई महत्वपूर्ण संवर्द्धन हैं और JSONB डेटा-प्रकार के अतिरिक्त के साथ PostgreSQL-9.4 में प्रमुख परिवर्धन आया है। PostgreSQL JSON डेटा संग्रहीत करने के लिए दो डेटा प्रकार प्रदान करता है:json और jsonb। Jsonb के साथ, यह JSON डेटा-प्रकार का एक उन्नत संस्करण है जो JSON डेटा को बाइनरी प्रारूप में संग्रहीत करता है। यह वह प्रमुख एन्हांसमेंट है जिसने JSON डेटा को PostgreSQL में खोजने और संसाधित करने के तरीके में बड़ा बदलाव किया है।

Oracle को JSON का भी व्यापक समर्थन प्राप्त है। इसके विपरीत, PostgreSQL के पास व्यापक समर्थन के साथ-साथ ऐसे कार्य भी हैं जिनका उपयोग डेटा पुनर्प्राप्ति, डेटा स्वरूपण, या सशर्त संचालन के लिए किया जा सकता है जो डेटा के आउटपुट या डेटाबेस में संग्रहीत डेटा को भी प्रभावित करता है। jsonb डेटा प्रकार के साथ संग्रहीत डेटा में GIN (जनरलाइज़्ड इनवर्टेड इंडेक्स) का उपयोग करने की क्षमता के साथ अधिक लाभ होता है, जिसका उपयोग बड़ी संख्या में jsonb दस्तावेज़ों में होने वाली कुंजियों या कुंजी/मूल्य जोड़े को कुशलतापूर्वक खोजने के लिए किया जा सकता है।

PostgreSQL में अतिरिक्त एक्सटेंशन हैं जो jsonb प्रकार के लिए इसकी समर्थित प्रक्रिया भाषाओं में TRANSFORM FOR TYPE को लागू करने में सहायक होते हैं। ये एक्सटेंशन PL/Perl के लिए jsonb_plperl और jsonb_plperlu हैं। जबकि PL/Python के लिए, ये jsonb_plpythonu, jsonb_plpython2u, और jsonb_plpython3u हैं। उदाहरण के लिए, पर्ल सरणियों को मैप करने के लिए jsonb मानों का उपयोग करके, आप jsonb_plperl या jsonb_plperlu एक्सटेंशन का उपयोग कर सकते हैं।

ArangoDB ने अन्य JSON-समर्थन डेटाबेस के साथ PostgreSQL के JSON प्रदर्शन की तुलना करते हुए एक बेंचमार्क पोस्ट किया था। हालाँकि यह एक पुराना ब्लॉग है, फिर भी यह दिखाता है कि PostgreSQL का JSON अन्य डेटाबेस की तुलना में कैसा प्रदर्शन करता है जहाँ JSON उनके डेटाबेस कर्नेल में इसकी मुख्य विशेषता है। यह सिर्फ PostgreSQL को इसके साइड फीचर के साथ भी अपना फायदा बनाता है।

छह कारण:प्रमुख क्लाउड विक्रेताओं द्वारा DBaaS समर्थन

PostgreSQL को DBaaS के रूप में व्यापक रूप से समर्थित किया गया है। ये सेवाएं Amazon, Microsoft के PostgreSQL के लिए Azure डेटाबेस और PostgreSQL के लिए Google के Cloud SQL के साथ आ रही हैं।

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

सातवां कारण:  बड़ी मात्रा में डेटा का बेहतर प्रबंधन

PostgreSQL RDBMS को विश्लेषणात्मक और डेटा वेयरहाउसिंग वर्कलोड को संभालने के लिए डिज़ाइन नहीं किया गया है। PostgreSQL एक पंक्ति-उन्मुख डेटाबेस है, लेकिन इसमें बड़ी मात्रा में डेटा संग्रहीत करने की क्षमता है। डेटा स्टोर से निपटने के लिए PostgreSQL की निम्नलिखित सीमाएँ हैं:

सीमा

मान

अधिकतम डेटाबेस आकार

असीमित

अधिकतम तालिका आकार

32 टीबी

अधिकतम पंक्ति आकार

1.6 टीबी

अधिकतम फ़ील्ड आकार

1 जीबी

प्रति तालिका अधिकतम पंक्तियाँ

असीमित

प्रति तालिका अधिकतम कॉलम

250-1600 कॉलम प्रकारों के आधार पर

प्रति तालिका अधिकतम अनुक्रमणिका

असीमित

PostgreSQL के साथ प्रमुख लाभ यह है कि, ऐसे प्लगइन्स हैं जिन्हें बड़ी मात्रा में डेटा को संभालने के लिए शामिल किया जा सकता है। TimeScaleDB और CitrusData का cstore_fdw प्लगइन्स में से एक है जिसे आप टाइम सीरीज़ डेटाबेस के लिए शामिल कर सकते हैं, मोबाइल एप्लिकेशन से बड़े डेटा को स्टोर कर सकते हैं, या अपने IoT एप्लिकेशन से डेटा, या डेटा एनालिटिक्स या डेटा वेयरहाउसिंग। वास्तव में, ClusterControl TimeScaleDB के लिए समर्थन प्रदान करता है, जिसने सरल लेकिन आसान तैनाती को आसान बना दिया।

यदि आप PostgreSQL की मुख्य विशेषताओं का उपयोग करना चाहते हैं, तो आप jsonb का उपयोग करके बड़ी मात्रा में डेटा संग्रहीत कर सकते हैं। उदाहरण के लिए, बड़ी मात्रा में दस्तावेज़ (पीडीएफ, वर्ड, स्प्रेडशीट) और इसे jsonb डेटा प्रकार का उपयोग करके संग्रहीत करते हैं। जियोलोकेशन एप्लिकेशन और सिस्टम के लिए, आप PostGIS का उपयोग कर सकते हैं।

कारण आठ:मापनीयता, उच्च-उपलब्धता, अतिरेक/भू-अतिरेक, और सस्ते पर दोष-सहिष्णु समाधान

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

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

एंटरप्राइज़ सुविधाएं भी हैं जो उच्च उपलब्धता, निगरानी और बैकअप समाधान प्रदान करती हैं। ClusterControl इस तकनीक में से एक है और Oracle Solutions की तुलना में एक किफायती मूल्य पर ऑफ़र करता है।

कारण नौ:  कई प्रक्रियात्मक भाषाओं के लिए समर्थन:PL/pgSQL, PL/Tcl, PL/Perl, और PL/Python।

संस्करण 9.4 के बाद से, PostgreSQL में एक महान विशेषता है जहां आप अपनी पसंद के अनुसार एक नई प्रक्रियात्मक भाषा को परिभाषित कर सकते हैं। हालाँकि सभी प्रकार की प्रोग्रामिंग भाषाएँ समर्थित नहीं हैं, लेकिन इसमें कई भाषाएँ हैं जो समर्थित हैं। वर्तमान में, आधार वितरण के साथ, इसमें PL/pgSQL, PL/Tcl, PL/Perl, और PL/पायथन शामिल हैं। बाहरी भाषाएं हैं:

नाम

भाषा

वेबसाइट

PL/Java

Java

https://tada.github.io/pljava/

PL/Lua

लुआ

https://github.com/pllua/pllua

PL/R

R

https://github.com/postgres-plr/plr

PL/sh

यूनिक्स शेल

https://github.com/petere/plsh

PL/v8

JavaScript

https://github.com/plv8/plv8

इसके बारे में सबसे अच्छी बात यह है कि, Oracle के विपरीत, डेवलपर्स जिन्होंने PostgreSQL में नई छलांग लगाई है, वे PL/SQL के बारे में जानने के लिए और अधिक समय लिए बिना जल्दी से अपने एप्लिकेशन सिस्टम को व्यावसायिक तर्क प्रदान कर सकते हैं। PostgreSQL डेवलपर्स के लिए वातावरण को आसान और कुशल बनाता है। PostgreSQL की यह प्रकृति इस कारण से योगदान देती है कि डेवलपर्स PostgreSQL को क्यों पसंद करते हैं और ओपन सोर्स वातावरण में एंटरप्राइज़ प्लेटफ़ॉर्म समाधानों से दूर जाना शुरू कर देते हैं।

कारण दस:  बड़े और टेक्स्ट डेटा (GIN, GiST, SP-GiST, और BRIN) के लिए सुविधाजनक अनुक्रमणिका

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

GIN - (सामान्यीकृत उलटे इंडेक्स) 

इस प्रकार की अनुक्रमणिका jsonb, hstore, range, और arrays डेटा प्रकार कॉलम के लिए लागू होती है। यह तब उपयोगी होता है जब आपके पास एक कॉलम में कई मान वाले डेटा प्रकार होते हैं। पोस्टग्रेएसक्यूएल डॉक्स के अनुसार, "जीआईएन को उन मामलों को संभालने के लिए डिज़ाइन किया गया है जहां अनुक्रमित किए जाने वाले आइटम समग्र मूल्य हैं, और इंडेक्स द्वारा नियंत्रित किए जाने वाले प्रश्नों को समग्र वस्तुओं के भीतर दिखाई देने वाले तत्व मानों की खोज करने की आवश्यकता होती है। उदाहरण के लिए, आइटम दस्तावेज़ हो सकते हैं, और क्वेरी विशिष्ट शब्दों वाले दस्तावेज़ों की खोज हो सकती हैं।"

GiST - (सामान्यीकृत खोज वृक्ष)

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

जिस प्रकार के इंडेक्स का उपयोग करना है, उसे चुनने में, GiST या GIN, इन प्रदर्शन अंतरों पर विचार करें:

  • GIN इंडेक्स लुकअप, GiST से लगभग तीन गुना तेज है
  • GIN अनुक्रमणिका को GiST की तुलना में बनने में लगभग तीन गुना अधिक समय लगता है
  • GIN अनुक्रमणिका, GiST अनुक्रमणिका की तुलना में अद्यतन करने के लिए मध्यम धीमी हैं, लेकिन यदि तेज़-अपडेट समर्थन अक्षम किया गया था, तो लगभग 10 गुना धीमा है
  • GIN इंडेक्स, GiST इंडेक्स से दो से तीन गुना बड़े होते हैं

एक नियम के रूप में, GIN अनुक्रमणिका स्थिर डेटा के लिए सर्वोत्तम हैं क्योंकि लुकअप तेज़ होते हैं। डायनेमिक डेटा के लिए, जीआईएसटी इंडेक्स तेजी से अपडेट होते हैं।

SP-GiST - (स्पेस पार्टिशनेड GiST) 

प्राकृतिक लेकिन असमान क्लस्टरिंग वाले बड़े डेटासेट के लिए। इस प्रकार के इंडेक्स लीवरेज स्पेस पार्टीशनिंग ट्री। SP-GiST इंडेक्स तब सबसे उपयोगी होते हैं जब आपके डेटा में प्राकृतिक क्लस्टरिंग तत्व होता है, और यह समान रूप से संतुलित पेड़ भी नहीं होता है। इसका एक बड़ा उदाहरण फोन नंबर हैं, उदाहरण के लिए अमेरिका में, वे निम्नलिखित प्रारूप का उपयोग करते हैं:

  • क्षेत्र कोड के लिए 3 अंक
  • उपसर्ग के लिए 3 अंक (ऐतिहासिक रूप से एक फोन वाहक के स्विच से संबंधित)
  • पंक्ति संख्या के लिए 4 अंक

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

BRIN - (ब्लॉक रेंज इंडेक्स) 

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

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

निष्कर्ष

Oracle के एंटरप्राइज़ प्लेटफ़ॉर्म और व्यावसायिक समाधानों के विरुद्ध प्रतिस्पर्धा करते समय PostgreSQL के कुछ प्रमुख लाभ हैं। PostgreSQL को ओपन सोर्स RDBMS की अपनी पसंद के रूप में प्रतिष्ठित करना निश्चित रूप से आसान है क्योंकि यह Oracle के रूप में लगभग शक्तिशाली है।

Oracle को हराना कठिन है (और यह स्वीकार करना एक कठिन सत्य है) और टेक-दिग्गज के एंटरप्राइज प्लेटफॉर्म को छोड़ना भी आसान नहीं है। जब सिस्टम आपको शक्ति और उत्पादक परिणाम प्रदान करते हैं, तो यह एक दुविधा हो सकती है।

कभी-कभी ऐसी परिस्थितियां भी होती हैं जहां निर्णय लेना पड़ता है क्योंकि आपके प्लेटफॉर्म लागत में निरंतर अधिक निवेश करना आपकी अन्य व्यावसायिक परतों और प्राथमिकताओं की लागत से अधिक हो सकता है जो प्रगति को प्रभावित कर सकता है।

PostgreSQL और इसके अंतर्निहित प्लेटफ़ॉर्म समाधान आपकी लागत में कटौती करने, आपकी बजटीय समस्याओं को दूर करने में मदद करने के लिए पसंद के हो सकते हैं; सभी मध्यम से छोटे परिवर्तनों के साथ।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORA-16789:स्टैंडबाय रीडो लॉग गलत तरीके से कॉन्फ़िगर किया गया

  2. पीएल/एसक्यूएल में दो आयामी सरणी बनाना या अनुकरण करना

  3. Oracle CLOB 4000 वर्णों से अधिक नहीं डाल सकता है?

  4. Oracle में UTF8 वर्ण सेट को कैसे कॉन्फ़िगर करें?

  5. Oracle Linux Automation Manager (उर्फ "Oracle Ansible Tower") कैसे स्थापित करें