रेट्रोस्पेक्ट में पोस्टग्रेट्स

हम आपके ध्यान में क्रिएटिव कॉमन्स अंतर्राष्ट्रीय कॉपीराइट पुष्टि संस्करण 4.0 (CC-BY 4.0) के तहत प्रकाशित जोसेफ हेलरस्टीन के लेख "लुकिंग बैक एट पोस्टग्रेज" का अनुवाद लाते हैं लेखक स्रोत के लिए एक उचित लिंक के साथ व्यक्तिगत और कॉर्पोरेट वेबसाइटों पर इस काम को वितरित करने का अधिकार सुरक्षित रखते हैं।

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

अमूर्त


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

1. परिचय


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

1.1। प्रागितिहास


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

1980 के दशक की शुरुआत में आरटीआई के विकसित होने के बाद, स्टोनब्रेकर ने डीबीएमएस में डेटा प्रकारों का समर्थन करने पर काम करना शुरू कर दिया, जो पारंपरिक कोडेड रिलेशनल मॉडल (एडगर फ्रैंक कॉड) के पारंपरिक पंक्तियों और स्तंभों से आगे निकल गया। उस समय एक प्रेरक उदाहरण माइक्रोइलेक्ट्रॉनिक उद्योग के लिए कंप्यूटर एडेड डिजाइन (सीएडी) उपकरणों का समर्थन करने के लिए डेटाबेस की आवश्यकता थी। स्टोनब्रेकर और छात्रों के 1983 के एक लेख में ब्रैड रुबेनस्टीन और एंटोनिन गुटमैन ने बताया कि इस उद्योग को "नए डेटा प्रकार जैसे पॉलीगॉन, आयताकार, टेक्स्ट स्ट्रिंग्स," आदि का समर्थन करने की आवश्यकता है। एक ही भौतिक संरचनाओं [ एसआरजी 83 ] में प्रभावी स्थानिक खोज "," जटिल अखंडता बाधाओं "के साथ-साथ" डिजाइन पदानुक्रम और कई प्रतिनिधित्व "। इस प्रेरणा के साथ, समूह ने अनुक्रमण पर काम करना शुरू कर दिया (जिसमें स्थानिक अनुक्रमण [ Gut84 ] के लिए गुटमैन R- पेड़ों का उपयोग करना) और संबंधपरक डेटाबेस सिस्टम में अमूर्त डेटा प्रकार ( ADTs ) को जोड़ना। उस समय, एडीटी प्रोग्रामिंग भाषाओं का एक लोकप्रिय नया निर्माण था, जिसे पहले बारबरा लिस्कॉव द्वारा पेश किया गया था, बाद में एक ट्यूरिंग पुरस्कार विजेता, और एक नए स्टोनब्रेकर सहयोगी, लारियल रोवे द्वारा डेटाबेस एप्लिकेशन प्रोग्रामिंग में शोध किया गया था। 1983 SIGMOD रिकॉर्ड [ OFS83 ] स्टोनब्रेकर और छात्रों जेम्स ओंग और डेनिस फॉग के एक लेख में इस अवधारणा के एक अध्ययन का वर्णन ADT-Ingres नामक Ingres एक्सटेंशन में किया गया है, जिसमें कई प्रेजेंटेशन कॉन्सेप्ट शामिल हैं। Postgres में अधिक गहराई से और बेहतर सिस्टम समर्थन के साथ।

2. पोस्टग्रेज: सामान्य जानकारी


जैसा कि नाम से ही स्पष्ट है, Postgres, Post-Ingres है: एक प्रणाली जिसे Ingres लेने और उससे आगे जाने के लिए तैयार किया गया था। Postgres की एक विशिष्ट विशेषता यह थी कि इसे अंततः डेटाबेस का ऑब्जेक्ट-रिलेशनल गुण कहा जाता था: डेटा मॉडल में ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग की अवधारणा और डेटाबेस सिस्टम की घोषणात्मक क्वेरी भाषा के लिए समर्थन। लेकिन स्टोनब्रेकर ने पोस्टग्रेज में ऑब्जेक्ट-ओरिएंटेड समर्थन से स्वतंत्र अन्य तकनीकी समस्याओं को हल करने की भी योजना बनाई है, जैसे कि सक्रिय डेटाबेस नियम, संस्करण डेटा, तृतीयक भंडारण, और संगामिति।

Postgres design पर दो लेख लिखे गए: 1986 SIGMOD [ SR86 ] में प्रारंभिक डिजाइन का विवरण और CACM 1991 [ SK91 ] में एक मध्यवर्ती विवरण। पोस्टग्रेज अनुसंधान परियोजना धीरे-धीरे 1992 में Illustra की नींव के साथ एक स्टार्टअप स्टार्टअप के रूप में नामांकित हुई, जिसमें स्टोनब्रेकर, लीड ग्रेजुएट छात्र वी हांग शामिल थे और बाद में मुख्य प्रोग्रामर जेफ मेरेडिथ बन गए। नीचे दी गई सूची में, 1986 के लेख में वर्णित अवसरों को एक तारांकन चिह्न * के साथ चिह्नित किया गया है, और 1991 के लेख के अवसर, जो 1986 के लेख में नहीं थे, एक डैगर के साथ चिह्नित हैं। नीचे सूचीबद्ध अन्य कार्यों को सिस्टम और अनुसंधान साहित्य में लिया गया था, लेकिन वे किसी भी डिज़ाइन विनिर्देश में नहीं पाए जाते हैं। इनमें से कई विषयों को पोस्टग्रैज में लंबे समय से संबोधित किया गया था, जिनका अध्ययन या दूसरों द्वारा पुनर्निमाण किया गया था। कई मामलों में, Postgres अपने समय से बहुत आगे था, और विषयों में रुचि आधुनिक परिप्रेक्ष्य से बाद में भड़क गई।

  1. डेटाबेस सिस्टम में ADT सपोर्ट
    • जटिल ऑब्जेक्ट (यानी, नेस्टेड डेटा या नॉन-फर्स्ट-नॉर्मल फॉर्म डेटा (नॉन-फर्स्ट-नॉर्मल फॉर्म - NFO) *
    • कस्टम सार डेटा प्रकार और कार्य *
    • नए डेटा प्रकारों के लिए एक्स्टेंसिबल एक्सेस के तरीके *
    • महंगा उपयोगकर्ता परिभाषित सुविधाओं के साथ अनुकूलित क्वेरी प्रसंस्करण
  2. सक्रिय डेटाबेस और नियम प्रणाली (ट्रिगर, चेतावनी) *
    • अनुरोध के पुनर्लेखन के रूप में लागू नियम writing
    • रिकॉर्डिंग स्तर ट्रिगर के रूप में लागू नियम trig
  3. लॉग आधारित संग्रहण और पुनर्प्राप्ति
    • कम जटिलता वसूली कोड जो लॉग * डेटा के रूप में व्यवहार करता है, प्रतिबद्ध राज्य के लिए गैर-वाष्पशील मेमोरी का उपयोग करता है।
    • गैर-लिखित संग्रहण और अस्थायी प्रश्न storage
  4. नई गहरी भंडारण प्रौद्योगिकियों के लिए समर्थन, विशेष रूप से ऑप्टिकल डिस्क *
  5. मल्टीप्रोसेसर और विशेष प्रोसेसर के लिए समर्थन *
  6. विभिन्न भाषा मॉडल के लिए समर्थन
    • घोषणात्मक मॉडल में न्यूनतम परिवर्तन और घोषित प्रश्नों के लिए समर्थन *
    • क्वेरी भाषा को दरकिनार करके आंतरिक एपीआई से "फास्ट ट्रैक" तक पहुंच
    • बहुभाषावाद

हम कम्प्यूटिंग के क्षेत्र में बाद के काम के संबंध में इनमें से प्रत्येक आइटम के लिए पोस्टग्रेज के योगदान पर संक्षेप में चर्चा करेंगे।

2.1। डेटाबेस सिस्टम में ADT सपोर्ट


पोस्टग्रेज का स्पष्ट लक्ष्य नए ऑब्जेक्ट-रिलेशनल गुणों का समर्थन करना था: रिलेशनल क्वेरी प्रोसेसिंग और ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग दोनों का लाभ प्रदान करने के लिए डेटाबेस टेक्नोलॉजी का विस्तार करना। समय के साथ, पोस्टग्रेज में पहली बार दिखाई देने वाली ऑब्जेक्ट-रिलेशनल अवधारणा अधिकांश आधुनिक डेटाबेस सिस्टम में मानक कार्यक्षमता बन गई।

2.1.1। जटिल वस्तुओं


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

डेटा मॉडलिंग के संदर्भ में पोस्टग्रेज का मुख्य दृष्टिकोण "दो कुर्सियों पर बैठना" था: पोस्टग्रेट्स ने टेबल को "सबसे बाहरी" डेटा प्रकार के रूप में सहेजा, लेकिन स्तंभों को "जटिल" प्रकारों की अनुमति दी, जिनमें नेस्टेड ट्यूल या टेबल शामिल हैं। इसकी कम आम कार्यान्वयनों में से एक, पहले ADT-Ingres प्रोटोटाइप में जांच की गई थी, एक तालिका प्रकार स्तंभ को एक क्वेरी परिभाषा के रूप में घोषित करने की अनुमति दी गई थी: "डेटा प्रकार के रूप में क्वेल" [ SAHR84 ] (Quel - Enges क्वेरी भाषा। - प्रति।) ।)

घोषणात्मक प्रश्नों और एम्बेडेड डेटा दोनों के लिए समर्थन के "उत्तर-संबंधपरक" विषय ने वर्षों में फिर से प्रकट किया है, अक्सर विवादों से उत्पन्न होता है जिसके बारे में बेहतर है। 1980 और 1990 के दशक में Postgres के समय, ऑब्जेक्ट-ओरिएंटेड डेटाबेस में शामिल कुछ समूहों ने इस विचार को उठाया और इसे मानक OQL भाषा में विकसित किया, जिसे तब इस्तेमाल किया जाना बंद हो गया।

सहस्राब्दी के मोड़ पर, नेस्टेड ऑब्जेक्ट्स पर घोषित प्रश्न XML डेटाबेस के रूप में डेटाबेस डेवलपर्स के समुदाय के खंड के लिए अनुसंधान के साथ एक जुनून बन गए। परिणामस्वरूप XQuery भाषा (डॉन चैंबरलिन के नेतृत्व में, SQL का व्यक्तित्व) पोस्टग्रेज की पोस्टगेल भाषा में जटिल वस्तुओं का समर्थन करने के लिए आवश्यक है। XQuery का व्यापक रूप से उपयोग किया जाता है और व्यापक रूप से उद्योग में उपयोग किया जाता है, लेकिन कभी भी उपयोगकर्ताओं के साथ लोकप्रिय नहीं रहा है। आज, ब्राउज़र-आधारित अनुप्रयोगों में लोकप्रिय JSON डेटा मॉडल के लिए क्वेरी भाषा परियोजनाओं में इन अवधारणाओं की फिर से जांच की जा रही है। OQL की तरह, उन समूहों में, जिन्होंने डेवलपर-उन्मुख प्रोग्रामिंग ("NoSQL" आंदोलन) के पक्ष में घोषित रूप से घोषित प्रश्नों को अस्वीकार कर दिया था, ये भाषाएं अक्सर सिस्टम में प्रश्नों को जोड़ने की इच्छा से केवल देर से जुड़ने के रूप में उभरती हैं। उसी समय, जैसे-जैसे पोस्टग्रेट्स की संख्या बढ़ती गई (और पोस्टक्वल क्वेरी भाषा से SQL संस्करणों में चले गए, जो कई लक्ष्यों को पूरा करते हैं), इसमें एम्बेडेड डेटा के लिए समर्थन शामिल था, जैसे कि XML और JSON, सामान्य प्रयोजन के DBMS में, बिना किसी की आवश्यकता के। या महत्वपूर्ण रीडिज़ाइन। विवाद सफलता की अलग-अलग डिग्री के साथ चल रहा है, और नेस्टेड डेटा के लिए एक्सटेंशन का उपयोग करके संबंधपरक संरचना का विस्तार करने के लिए पोस्टग्रेज का दृष्टिकोण बार-बार तर्क समाप्त होने के बाद सभी दलों के लिए खुद को एक प्राकृतिक अंत स्थिति साबित कर दिया है।

2.1.2। कस्टम सार डेटा प्रकार और कार्य


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

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

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

इस बीच, 2000 के दशक के बड़े डेटा की प्रौद्योगिकी के ढेर, MapReduce घटना, जिसमें स्टोनब्रेकर और डेविड डेविट [ DS08 ] के लिए "बहुत खून खराब हो गया", पोस्टग्रेज के विचार का फिर से कार्यान्वयन है - अनुरोध के भीतर रखा गया उपयोगकर्ता कोड। ऐसा प्रतीत होता है कि MapReduce काफी हद तक सॉफ्टवेयर डेवलपमेंट आइडियाज को कंज्यूम करता है, जैसे कि गामा और टेराडाटा जैसे कंसिस्ट्रेटिव आइडियाज के साथ, एक्सट्रीम स्केलेबिलिटी वाले वर्कलोड के लिए क्वेरी प्रोसेस को फिर से शुरू करने के आसपास कुछ मामूली इनोवेशन के साथ। 2007 के आसपास पोस्टग्रैज, ग्रीनप्लम और एस्टर पर आधारित स्टार्टअप्स ने दिखाया कि पोस्टग्रेज को समानांतर करने से अधिकांश ग्राहकों के लिए मैपराइड की तुलना में कुछ अधिक कार्यात्मक और व्यावहारिक हो सकता है, लेकिन 2008 में बाजार अभी भी इस तकनीक के लिए तैयार नहीं था। । अब तक, 2018 में, लगभग हर बड़ा डेटा स्टैक मूल रूप से यूडीएफ के साथ समानांतर एसक्यूएल वर्कलोड को संभालता है, जो कि स्टोनब्रेकर और टीम का सबसे पहले पोस्टग्रेज में उपयोग किए जाने वाले डिजाइन के समान है।

2.1.3। नए डेटा प्रकारों के लिए एक्स्टेंसिबल एक्सेस मेथड


1970 के दशक के शुरुआती दिनों में बी पेड़ के रूप में उसी समय के आसपास रिलेशनल डेटाबेस विकसित हुए, और बी पेड़ों ने कोडड को "भौतिक डेटा संग्रहण से स्वतंत्रता" का सपना देने में मदद की: बी पेड़ों के साथ अनुक्रमण अप्रत्यक्ष स्तर प्रदान करता है जो एप्लिकेशन परिवर्तनों की आवश्यकता के बिना भौतिक संग्रहण को अनुकूलता से व्यवस्थित करता है। बी-पेड़ों और उनसे संबंधित संरचनाओं की मुख्य सीमा यह थी कि वे केवल एक आयामी सीमा में समानता खोज और प्रश्नों का समर्थन करते हैं। लेकिन क्या होगा यदि आपके पास मानचित्रण और सीएडी अनुप्रयोगों के 2-आयामी रेंज प्रश्न हैं? यह समस्या पोस्टग्रेज के दौरान ज्ञात थी, और स्टोनब्रेकर समूह में एंटोनिन गुटमैन द्वारा विकसित आर-ट्री [ गुट84 ], व्यवहार में इस समस्या को हल करने के लिए डिज़ाइन किए गए सबसे सफल नए अनुक्रमों में से एक था। हालांकि, सूचकांक संरचना का आविष्कार जटिल प्रणालियों के लिए एक डीबीएमएस में बहु-आयामी श्रेणियों का समर्थन करने की समस्या को हल नहीं करता है। कई सवाल हैं। क्या आप आसानी से अपने DBMS में आर-ट्रीज़ जैसी एक्सेस विधि जोड़ सकते हैं? क्या आप ऑप्टिमाइज़र को यह समझने के लिए सिखा सकते हैं कि निर्दिष्ट पहुँच विधि कुछ प्रश्नों के लिए उपयोगी होगी? क्या आप सही वसूली और एक साथ पहुंच प्राप्त कर सकते हैं? यह पोस्टग्रेज एक्शन प्लान में एक बहुत ही बोल्ड पॉइंट था: एक सॉफ्टवेयर आर्किटेक्चर मुद्दा जो कि ज्यादातर डेटाबेस इंजन को प्रभावित करता है, ऑप्टिमाइज़र से लेकर स्टोरेज टियर और साथ ही जर्नलिंग और रिकवरी सिस्टम। आर-पेड़ पोस्टग्रेज एक शक्तिशाली ड्राइविंग बल बन गए हैं और एक्सेस विधि परत के सुरुचिपूर्ण विस्तार की एक प्रमुख उदाहरण और क्वेरी ऑप्टिमाइज़र में इसके एकीकरण हैं। पोस्टग्रेस ने दिखाया, एक अपारदर्शी एडीटी का उपयोग करते हुए, कैसे एक वर्णित वर्णित विधि (इस मामले में एक आर-ट्री) को पंजीकृत करने के लिए, और कैसे एक क्वेरी ऑप्टिमाइज़र एक सार चयन (इस मामले में, रेंज पसंद) को पहचान सकता है और इस सार वर्णित पहुंच विधि के साथ मेल कर सकता है। प्रारंभिक कार्य में समवर्ती अभिगम नियंत्रण पर कम ध्यान दिया गया था: चाबियों के एक-आयामी आदेश की कमी ने इस मामले में बी-पेड़ों में उपयोग किए गए लॉक को अनुपयुक्त बना दिया था।

पोस्टग्रैज एक्सटेंसिबल एक्सेस मेथड्स की होनहार विशेषताओं ने स्नातक स्कूल के अंत में मेरी पहली शोध परियोजनाओं में से एक को प्रेरित किया: सामान्यीकृत खोज पेड़ - GiST [ HNP95 ] और अनुक्रमण सिद्धांत [ HKM + 02 ] की बाद की अवधारणा। मैंने अपने डॉक्टरेट को पूरा करने के बाद एक सेमेस्टर के लिए पोस्टग्रेज में जीएसटी लागू किया, जिसने पोस्टग्रेज को और भी आसान बनाने के लिए नए अनुक्रमण तर्क को जोड़ दिया। बर्कले (Marcel Kornacker) से मार्सेल कोर्नेकर के शोध प्रबंध ने वसूली की जटिल समस्याओं को हल किया और एक साथ पहुंच, एक्स्टेंसिबल "टेम्पलेट" प्रकार के सूचकांक GiST [ KMH97 ] द्वारा उत्पन्न किया।

आज, PostgreSQL सामान्य रूप से एक्स्टेंसिबिलिटी एक्सेस विधियों के मूल सॉफ्टवेयर आर्किटेक्चर (इसमें B- ट्री, GiST, SP-GiST, और Gin अनुक्रमित) को सामान्यीकृत खोज ट्री (GiST) इंटरफ़ेस की एक्स्टेंसिबिलिटी और गहन प्रतिस्पर्धी एक्सेस के साथ जोड़ती है। GiST अनुक्रमित PostgreSQL के आधार पर लोकप्रिय PostGIS भू-सूचना प्रणाली का समर्थन करते हैं। Gin indexes PostgreSQL में आंतरिक पाठ अनुक्रमण समर्थन प्रदान करते हैं।

2.1.4। महंगा यूडीएफ के साथ क्वेरी ऑप्टिमाइज़र


पारंपरिक क्वेरी ऑप्टिमाइज़ेशन में, अनुरोध को संसाधित करते समय बनाए गए टपल स्ट्रीम (और इसलिए I / O संचालन) की मात्रा को कम करना था। इसका मतलब यह था कि क्वेरी योजना की शुरुआत में फ़िल्टर ट्यूपल (लाने) अच्छे हैं, जबकि नए ट्यूपल (ज्वाइन) उत्पन्न करने वाले बयानों को बाद में निष्पादित करने की आवश्यकता होती है। नतीजतन, क्वेरी ऑप्टिमाइज़र कनेक्शन के नीचे लाने वाले ऑपरेटरों को "पुश" करेंगे और कनेक्शन और डिस्क एक्सेस के चतुर अनुकूलन पर ध्यान केंद्रित करने के बजाय यादृच्छिक रूप से व्यवस्थित करेंगे। UDFs ने दृष्टिकोण बदल दिया है: यदि आपके नमूना बयानों में UDF महंगा है, तो UDFs का निष्पादन क्रम प्रदर्शन के अनुकूलन के लिए महत्वपूर्ण हो सकता है। इसके अलावा, यदि चयन ऑपरेटर में यूडीएफ को वास्तव में बहुत समय लगता है, तो संभव है कि कनेक्शन के बाद चयन किया जाना चाहिए (यानी चयन "पुल-अप" - चयन "पुलअप" होना चाहिए)। इन कारकों को ध्यान में रखते हुए ऑप्टिमाइज़र के लिए खोज स्थान जटिल हो गया है। मैंने स्नातक विद्यालय में पहले कठिन कार्य के रूप में इस समस्या को लिया, और यह जेफ नगटन के निर्देशन में बर्कले में स्टोनब्रेकर और विस्कॉन्सिन में मेरे पीएचडी के साथ मेरे मास्टर के काम का विषय बन गया, लेकिन स्टोनब्रेकर की सलाह की निरंतर मदद से। पोस्टग्रेज एक डेटाबेस निर्देशिका में उपयोगकर्ता-परिभाषित कार्यों की लागत और चयनात्मकता को संग्रहीत करने वाला पहला डीबीएमएस था। हमने अनुकूलन समस्या का सामना किया, नमूना संचालन के इष्टतम क्रम के साथ आया, और फिर योजना खोज में विचार किए गए प्रत्येक कनेक्शन पेड़ की शाखाओं के साथ नमूना संचालन के इष्टतम विकल्प। System R .

, , . , , .

PostgreSQL , . , , , , 2018 . , , , , , . , Postgres .

, , , PostgreSQL (Neil Conway), « » .

2.2।


Postgres . : , « », 1990- .

. — Datalog. « » : , , .

Datalog , - . Datalog — « » . , , .

, , , , . .

(Eric Hanson), Ingres, Postgres. (Spyros Potamianos) PRS2: Postgres Rules System 2. . — . , Ingres. « » « ». , « » « 10%». , « », . ( ), .

PRS2 , , . Postgres (, ) Postgres 3.1 1991 ( ):

 
*        :
*     .        
*  (. .        
* "" )    .   -  
*   () .        .
*   .    .     
*   .  ...
* ,  , ? ,    ,  .
*         , 
*  ... 

Postgres , «» — . PostgreSQL, - .

Postgres « » IBM Starburst MCC HiPAC. SQL . . , , , , « »: , . , - , , , , . , , , , Postgres.

2.3. X


Postgres :
Postgres, - . (write-ahead log — WAL), , . , Ingres 1970- , . [ SK91 ]
, , . , IBM Tandem . : - , , , .

X Postgres . , , , — « » « » . , , — . , «» . : , . Postgres, , , , [ Sto87 ]. Postgres .

« » , , . . , , , , Postgres. Postgres . PostgreSQL .

, PostgreSQL : . , PostgreSQL , Postgres, , Postgres . , (snapshot isolation) Oracle -, .

(Mike Olson) , , B- Postgres B- Berkeley DB, Postgres. . Berkeley DB Sleepycat Corp., () PostgreSQL « ». : , (MVCC), , .

PostgreSQL . Greenplum PostgreSQL . (Matt McCline)— (Jim Gray) Tandem. .

. , NoSQL ( , WAL), (MMDB — main memory databases, ). , . , .

2.4.


पोस्टग्रेज परियोजना के मध्य में, स्टोनब्रेकर ने प्रोजेक्ट सेक्विया नामक एक बड़े डिजिटल भूमि विज्ञान अनुदान के लिए अधिकारियों में से एक के रूप में हस्ताक्षर किए। अनुदान प्रस्ताव का एक हिस्सा डिजिटल उपग्रह इमेजरी की अभूतपूर्व मात्रा का प्रसंस्करण था, जिसमें 100 टेराबाइट्स मेमोरी की आवश्यकता होती थी, यानी उस समय चुंबकीय डिस्क पर स्टोर करने के लिए डेटा की तुलना में बहुत अधिक मात्रा में। प्रस्तावित समाधान का आधार डीबीएमएस (अर्थात् पोस्टग्रेज) बनाने के विचार की जांच करना था, जो ऑप्टिकल डिस्क या टेप के पुस्तकालयों के प्रबंधन के लिए स्वचालित डिस्क परिवर्तन के साथ रोबोट ड्राइव द्वारा प्रदान किए गए अर्ध-स्वायत्त "तृतीयक" भंडारण तक पहुंच की सुविधा प्रदान करता है।

इसके चलते कई अलग-अलग अध्ययन हुए। उनमें से एक उलटा फ़ाइल सिस्टम था - एक रिलेशनल DBMS पर UNIX फ़ाइल सिस्टम का एक अमूर्त प्रदान करने का प्रयास। सिकोइया के लिए एक समीक्षा लेख में, स्टोनब्रेकर ने इसे "सामान्य व्यायाम" [ Sto95 ] के संरक्षण की अपनी सामान्य शैली में वर्णित किया। वास्तव में, स्टोन ओल्ब्रेकर (और बाद के संस्थापक) के एक छात्र माइक ओल्सन कई वर्षों से इसके साथ व्यस्त हैं, और अंतिम परिणाम बहुत सीधा नहीं था [ ओलस93 ] और अभ्यास में जीवित नहीं था।

कुछ वर्षों बाद, उलटा बिल गेट्स ने WinFS में "समान पवन चक्कियां लड़ीं" - एक रिलेशनल डेटाबेस के पीछे के छोर पर दुनिया की सबसे व्यापक रूप से इस्तेमाल की जाने वाली फाइल सिस्टम को फिर से बनाने का प्रयास किया। WinFS को विंडोज के विकास संस्करणों में भेज दिया गया था, लेकिन कभी बाजार में प्रवेश नहीं किया। गेट्स ने बाद में इसे माइक्रोसॉफ्ट में उनकी सबसे बड़ी निराशा कहा।

इस मोर्चे पर अनुसंधान का एक अन्य मुख्य क्षेत्र अधिक विशिष्ट संबंधपरक डेटाबेस के ढेर पर तृतीयक भंडार का समावेश था, जो सुनीता सरावगी द्वारा पीएचडी थीसिस का विषय था। मुख्य विषय उस पैमाने को बदल रहा था जिसमें आप अंतरिक्ष के प्रबंधन के बारे में सोचते हैं (यानी, भंडारण में डेटा और मेमोरी पदानुक्रम) और समय (क्वेरी शेड्यूलिंग और कैश का समन्वय अवांछित I / O को कम करने के लिए)। इस काम में प्रमुख समस्याओं में से एक तृतीयक भंडारण में बड़ी बहुआयामी सरणियों को संग्रहीत करना और उन्हें पुनर्प्राप्त करना था, जो बहुआयामी अनुक्रमण के क्षेत्र में काम को प्रतिध्वनित करता है। प्रमुख विचारों में सरणी को भागों में विभाजित करना और एक साथ चुने गए भागों को एक साथ संग्रहीत करना, साथ ही साथ भागों की प्रतिकृति बनाना ताकि डेटा भाग में कई भौतिक "पड़ोसी" हो सकते हैं। दूसरी समस्या यह सोचने की है कि तृतीयक भंडारण के लिए कैश कैसे बनता है। अंत में, क्वेरी ऑप्टिमाइज़ेशन और शेड्यूलिंग को तृतीयक संग्रहण से डेटा के लंबे लोड समय और डिस्क कैश के हिट (हिट) के महत्व को ध्यान में रखना चाहिए। यह क्वेरी ऑप्टिमाइज़र द्वारा चुनी गई योजना और योजना को पूरा करने में लगने वाले समय दोनों को प्रभावित करता है।

टेप और ऑप्टिकल डिस्क पर रोबोट वर्तमान में व्यापक रूप से उपयोग नहीं किए जाते हैं। लेकिन तृतीयक भंडारण समस्याएं क्लाउड में बहुत आम हैं, जिसमें 2018 में एक गहरी भंडारण पदानुक्रम है: संलग्न एसएसडी से विश्वसनीय डिस्क जैसी भंडारण सेवाओं (उदाहरण के लिए, एडब्ल्यूएस ईबीएस) के लिए, संग्रह भंडारण के लिए (उदाहरण के लिए, एडब्ल्यूएस एस 3 में), गहरे भंडारण के लिए (उदाहरण के लिए) , एडब्ल्यूएस ग्लेशियर)। आज, ये स्टोरेज टियर अभी भी अपेक्षाकृत अलग हैं, और इन स्तरों को शामिल करने वाले एंड-टू-एंड स्टोरेज के बारे में तर्क करना व्यावहारिक रूप से डेटाबेस द्वारा समर्थित नहीं है। मुझे आश्चर्य नहीं होगा अगर पोस्टग्रेज में इस मोर्चे पर जांच किए गए सवालों की जल्द ही समीक्षा की जाएगी।

2.5। मल्टीप्रोसेसर समर्थन: XPRS


स्टोनब्रेकर ने कभी भी एक बड़े समानांतर डेटाबेस सिस्टम का निर्माण नहीं किया, लेकिन उन्होंने इस क्षेत्र में कई चुनौतीपूर्ण चर्चाओं का नेतृत्व किया। उनका लेख "इस मामले में साझा कुछ भी नहीं" [ Sto86 ] ने इस क्षेत्र में बड़े-बड़े मॉड्यूलर वास्तु समाधानों का दस्तावेजीकरण किया। उन्होंने उद्योग में उपयोग की जाने वाली शब्दावली को लोकप्रिय बनाया और बिना साझा संसाधनों, जैसे कि गामा और तेरदता, जो कि बड़े डेटा समुदाय द्वारा 2000 के दशक में फिर से खोजे गए थे, के वास्तुशिल्प के समर्थन को हैरान कर दिया।

विडंबना यह है कि समानांतर डेटाबेस के क्षेत्र में स्टोनब्रेकर का सबसे महत्वपूर्ण योगदान एक्सपीआरएस नामक "साझा मेमोरी" वास्तुकला था, जिसका अर्थ था "RAID और स्प्राइट पर एक्सटेन्डेड पोस्टग्रेज"। 1990 के दशक की शुरुआत में, XPRS बर्कले सिस्टम के लिए "न्याय का लीग" था: यह संक्षिप्त पोस्टग्रैस स्टोनब्रेकर सिस्टम, जॉन ऑस्टरहॉट, वितरित स्प्रिट ओएस और डेव पैटरसन और रैंडी केटी रॉन आर्किटेक्चर को जोड़ती है। )। कई अंतर-संकाय नौकरियों के साथ, XPRS परियोजना का कार्यान्वयन वास्तव में स्नातक छात्रों द्वारा निर्धारित किया गया था जिन्होंने इस पर काम किया था। यह पता चला कि मुख्य योगदान वी हांग द्वारा किया गया था, जिन्होंने एक्सपीआरएस में समानांतर क्वेरी अनुकूलन पर अपनी पीएचडी थीसिस लिखी थी। इस प्रकार, साहित्य और उद्योग के लिए XPRS का मुख्य योगदान RAID या स्प्राइट से जुड़ी समस्याओं के समाधान के बिना समवर्ती अनुरोधों का अनुकूलन करना था।

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

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

हालांकि वी होंग के ऑप्टिमाइज़र को पोस्टग्रेज के संदर्भ में विकसित किया गया था, यह उद्योग में कई समवर्ती क्वेरी ऑप्टिमाइज़र के लिए मानक दृष्टिकोण बन गया है।

2.6। विभिन्न भाषा मॉडल के लिए समर्थन


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

उस समय स्टोनब्रेकर पर लगाई गई समस्याओं में से एक प्रोग्रामिंग भाषा के निर्माण और डेटाबेस रिपॉजिटरी के बीच की सीमाओं को "छिपाना" का विचार था। ऑब्जेक्ट-ओरिएंटेड डेटाबेस (OODBs) पर शोध करने वाली विभिन्न प्रतिस्पर्धी अनुसंधान परियोजनाओं और कंपनियों ने स्मॉलटॉक, C ++ और जावा जैसी अनिवार्य वस्तु-उन्मुख प्रोग्रामिंग भाषाओं और घोषणात्मक संबंध के बीच तथाकथित "अनुरूपता की हानि" को लक्षित किया है। मॉडल। OODB का विचार प्रोग्रामिंग भाषा की वस्तुओं को बनाना था, अगर वांछित, "स्थायी" के रूप में चिह्नित किया गया और स्वचालित रूप से अंतर्निहित DBMS द्वारा संसाधित किया गया। समर्थित नेस्टेड ऑब्जेक्ट्स और अमूर्त डेटा प्रकारों को पोस्ट करने के लिए, लेकिन इसका इंटरफ़ेस एक संबंधपरक शैली में घोषणात्मक प्रश्नों पर आधारित है, प्रोग्रामर के लिए अप्राकृतिक डेटाबेस एक्सेस मान लिया गया है (यह घोषणात्मक प्रश्नों के उपयोग की आवश्यकता थी), जो महंगे भी थे (उन्हें पार्सिंग की आवश्यकता थी और अनुकूलन)। OODB प्रदाताओं के साथ प्रतिस्पर्धा करने के लिए, Postgres ने तथाकथित फास्ट पाथ इंटरफ़ेस प्रदान किया: आंतरिक डेटाबेस संग्रहण के लिए अनिवार्य रूप से C / C ++ API। इसने पोस्टग्रेज को औसत OODB शैक्षणिक बेंचमार्क प्रदर्शन करने की अनुमति दी, लेकिन इसने विभिन्न भाषाओं में प्रोग्रामर को समस्या को हल करने से बचने की समस्या को कभी हल नहीं किया। इसके बजाय, स्टोनब्रेकर ने पोस्टग्रेज को "ऑब्जेक्ट-रिलेशनल" लेबल के रूप में लेबल किया और बस वस्तु-उन्मुख डेटाबेस के उपयोग को शून्य-बिलियन डॉलर बाजार के रूप में दरकिनार कर दिया। आज, लगभग सभी वाणिज्यिक रिलेशनल डेटाबेस सिस्टम "ऑब्जेक्ट-रिलेशनल" डेटाबेस सिस्टम हैं।

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

3. सॉफ्टवेयर पर प्रभाव


3.1। खुला स्रोत


Postgres हमेशा से लगातार रिलीज़ के साथ एक ओपन सोर्स प्रोजेक्ट रहा है, लेकिन शुरुआत में इसे प्रोडक्शन के बजाय रिसर्च के लिए इस्तेमाल करने का इरादा था।

जैसा कि पोस्टग्रैज अनुसंधान परियोजना को बंद कर दिया गया था, दो स्टोनब्रेकर छात्रों एंड्रयू यू और जॉली चेन ने एक्स्टेंसिबल एसक्यूएल संस्करण के साथ मूल पोस्टक्वल भाषा को बदलने के लिए सिस्टम पार्सर को संशोधित किया। SQL का समर्थन करने वाला पहला Postgres रिलीज़ Postgres95 था, और अगले को PostgreSQL कहा जाता था।

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

हालांकि 25 वर्षों में बहुत कुछ बदल गया है, 1990 के दशक की शुरुआत में अंतर्निहित PostgreSQL वास्तुकला पोस्टग्रेज विश्वविद्यालय के रिलीज के समान है, और वर्तमान PostgreSQL स्रोत कोड से परिचित डेवलपर्स को पोस्टग्रेज 3.1 स्रोत कोड (1991) पढ़ना आसान होगा। स्रोत कोड निर्देशिका संरचना से प्रक्रिया संरचनाओं और डेटा संरचनाओं तक सब कुछ आश्चर्यजनक रूप से समान रहता है। बर्कले में पोस्टग्रेज टीम के कोड में एक शानदार रीढ़ थी।

आज, PostgreSQL एक शक के बिना उच्चतम प्रदर्शन करने वाला ओपन सोर्स डेटाबेस मैनेजमेंट सिस्टम है, और यह कार्यक्षमता का समर्थन करता है जो अक्सर वाणिज्यिक उत्पादों में नहीं पाया जाता है। यह भी (एक प्रभावशाली रेटिंग साइट के अनुसार) दुनिया में सबसे लोकप्रिय स्वतंत्र स्रोत डीबीएमएस है, और इसका प्रभाव लगातार बढ़ रहा है: 2017 और 2018 में, यह दुनिया में सबसे तेजी से बढ़ती लोकप्रियता के साथ डेटाबेस था [ DE19c ]। PostgreSQL उद्योगों और कार्यों की एक विस्तृत विविधता में उपयोग किया जाता है, जो आश्चर्यजनक नहीं है, पर्याप्त अवसरों पर अपना ध्यान केंद्रित किया है।

DB-Engines के अनुसार, आज के बाद PostgreSQL दुनिया का चौथा सबसे लोकप्रिय डेटाबेस है, Oracle, MySQL और MS SQL सर्वर के बाद, जिनमें से तीन विशिष्ट कंपनियों द्वारा पेश किए जाते हैं (MySQL Oracle द्वारा कई साल पहले अधिग्रहण किया गया था) [ DE19A ]। रैंकिंग नियमों की चर्चा रैंकिंग कार्यप्रणाली डीबी-इंजन [ DE19b ] के विवरण में की गई है।

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

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

Postgres पर निर्मित सबसे दिलचस्प ओपन सोर्स एप्लिकेशनों में से एक PostGIS भौगोलिक सूचना प्रणाली है, जिसमें पोस्टग्रेज की कई विशेषताओं का उपयोग किया गया है जो मूल रूप से प्रोजेक्ट शुरू करने के लिए स्टोनब्रेकर से प्रेरित हैं।

3.2। वाणिज्यिक कार्यान्वयन


PostgreSQL लंबे समय से वाणिज्यिक डेटाबेस सिस्टम बनाने के लिए एक आकर्षक शुरुआती बिंदु रहा है, जिसका उपयोग "ऑल-परमिसिबल" ओपन सोर्स सॉफ्टवेयर लाइसेंस, विश्वसनीय कोड, लचीलापन और व्यापक कार्यक्षमता के तहत किया गया है। नीचे सूचीबद्ध अधिग्रहण लागतों को सारांशित करते हुए, हम देखते हैं कि पोस्टग्रेज को अधिग्रहण लागत में $ 2.6 बिलियन से अधिक प्राप्त हुआ।

कृपया ध्यान दें कि यह वास्तविक वित्तीय लेनदेन के डॉलर में एक उपाय है और उन मूल्यों से बहुत अधिक महत्वपूर्ण है जो अक्सर उच्च प्रौद्योगिकी में उपयोग किए जाते हैं। अरबों के आंकड़े अक्सर शेयरों के ब्लॉकों के अनुमानित मूल्य का वर्णन करने के लिए उपयोग किए जाते हैं, लेकिन अक्सर इसके भविष्य के महत्व की उम्मीद में वर्तमान मूल्य की तुलना में 10 गुना या अधिक ओवरस्टैट किया जाता है। कंपनी का अधिग्रहण लेनदेन डॉलर अधिग्रहण के समय उसके वास्तविक बाजार मूल्य को मापता है। यह कहना उचित है कि Postgres ने वास्तविक वाणिज्यिक मूल्य $ 2.6 बिलियन से अधिक बनाया है।

PostgreSQL से जुड़े कई व्यावसायिक प्रयासों ने इस बात पर ध्यान केंद्रित किया है कि संभवतः इसकी मुख्य सीमा क्या है: संसाधनों को साझा करने के साथ समानांतर आर्किटेक्चर को स्केल करने की क्षमता।

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

  1. इल्स्ट्रा स्टोनब्रेकर का दूसरा सबसे बड़ा स्टार्टअप था, जिसकी स्थापना 1992 में पोस्टग्रेज का व्यवसायीकरण करने के लिए की गई थी, क्योंकि आरटीआई ने मार्केट पर इन्जर्स को लॉन्च किया था।

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

    संस्थापक टीम में पोस्टग्रेज टीम के कुछ कोर शामिल थे, जिनमें हाल ही में स्नातक छात्र वी हांग और तत्कालीन मुख्य प्रोग्रामर जेफ मेरेडिथ शामिल हैं, साथ ही इंग्रेज पौला हॉथोर्न और माइकल उबेल के स्नातक भी शामिल हैं। पोस्टग्रेजुएट ग्रेजुएट छात्र माइक ओल्सन ने स्थापना के कुछ समय बाद ही ज्वाइन कर लिया, और मैंने अपने पीएचडी के हिस्से के रूप में महंगी सुविधाओं का अनुकूलन करने के लिए इलस्ट्रा में काम किया। Illustra : SQL92 , Postquel, Postgres DataBlade — . Illustra Informix 1997 400 . . [ Mon96 ], DataBlade Informix Informix Universal Server.
  2. Netezza , 1999 , PostgreSQL FPGA. Netezza , 2007 . IBM 1,7 . . [ IBM10 ].
  3. Greenplum PostgreSQL . 2003 , Greenplum PostgreSQL, API PostgreSQL, API . , Greenplum PostgreSQL , , Orca. Greenplum EMC 2010 300 . . [ Mal10 ], 2012 EMC Greenplum Pivotal. 2015 Pivotal Greenplum Orca . Greenplum Postgres API MADlib SQL [ HRS+12 ]. MADlib Apache. , Greenplum, Apache HAWQ, Pivotal, « » Greenplum (. . PostgreSQL) , Hadoop.
  4. EnterpriseDB 2004 , PostgreSQL , . EnterpriseDB Advanced Server Oracle, Oracle.
  5. Aster Data 2005 , . PostgreSQL. Aster , SQL MapReduce. Aster Data Teradata 2011 263 . . [ Sho11 ]. Teradata Aster , - Aster Teradata.
  6. ParAccel 2006 , PostgreSQL . ParAccel Postgres . 2011 Amazon ParAccel, 2012 AWS Redshift — ParAccel. 2013 ParAccel Actian ( Ingres) , , Actian. AWS Redshift Amazon — Amazon, , , Teradata Oracle Exadata. Postgres .
  7. CitusDB (CitusDB — ; Citus Data. — . .) 2010 , PostgreSQL . PostgreSQL, 2016 CitusDB API PostgreSQL PostgreSQL. 2016 CitusDB .

4.


Postgres, .

, , , Postgres « » (Second System Effect) (Fred Brooks) [ Bro75 ]. , , - . Postgres , , , . , , . — Postgres , . : , . , « » . , , . «-» , «-» .

, , « », , . ( 2001 (). — . .) 2000- « ». , Postgres. , , .

(Ralph Waldo Emerson), « — ».

, « » ( ), , , , , . , . , , - . , . , .

, Postgres, — , . « » PostgreSQL, , . , :
, , , 1995 . Postgres, , . , , , . [ Sto14 ]
, , , , « » . « ». , , , , Postgres. - , : « - ». ( ), .

5.


Postgres , , (Craig Kerstiens) PostgreSQL.

साहित्य


  • [Bro75] Frederick P Brooks. The mythical man-month, 1975.
  • [Bro19] Michael L. Brodie, editor. Making Databases Work. Morgan & Claypool, 2019.
  • [DE19a] DB-Engines. DB-Engines ranking, 2019. db-engines.com/en/ranking . (Last accessed January 4, 2019).
  • [DE19b] DB-Engines. Method of calculating the scores of the DB-Engines ranking, 2019. db-engines.com/en/ranking_definition (Last accessed January 4, 2019).
  • [DE19c] DB-Engines. PostgreSQL is the DBMS of the year 2018, January 2019. db-engines.com/en/blog_post/79 (Last accessed January 4, 2019).
  • [DS08] David DeWitt and Michael Stonebraker. Mapreduce: A major step backwards. The Database Column, 1:23, 2008.
  • [Gut84] Antonin Guttman. R-trees: A dynamic index structure for spatial searching. In Proceedings of the 1984 ACM SIGMOD International Conference on Management of Data, SIGMOD '84, pages 47–57, New York, NY, USA, 1984. ACM.
  • [HKM + 02] Joseph M. Hellerstein, Elias Koutsoupias, Daniel P. Miranker, Christos H. Papadimitriou, and Vasilis Samoladas. On a model of indexability and its bounds for range queries. J. ACM, 49(1):35–55, January 2002.
  • [HNP95] Joseph M. Hellerstein, Jeffrey F. Naughton, and Avi Pfeffer. Generalized search trees for database systems. In Proceedings of the 21th International Conference on Very Large Data Bases, VLDB '95, pages 562–573, San Francisco, CA, USA, 1995. Morgan Kaufmann Publishers Inc.
  • [HRS + 12] Joseph M Hellerstein, Christoper Re, Florian Schoppmann, Daisy Zhe Wang, Eugene Fratkin, Aleksander Gorajek, Kee Siong Ng, Caleb Welton, Xixuan Feng, Kun Li, et al. The MADlib analytics library: or MAD skills, the SQL. Proceedings of the VLDB Endowment, 5(12):1700–1711, 2012.
  • [IBM10] IBM to acquire Netezza, September 2010. www-03.ibm.com/press/us/en/pressrelease/32514.wss#release (Last accessed January 22, 2018).
  • [KMH97] Marcel Kornacker, C. Mohan, and Joseph M. Hellerstein. Concurrency and recovery in generalized search trees. In Proceedings of the 1997 ACM SIGMOD International Conference on Management of Data, SIGMOD '97, pages 62–72, New York, NY, USA, 1997. ACM.
  • [Mal10] Om Malik. Big Data = Big Money: EMC Buys Greenplum. In GigaOm, July 2010. gigaom.com/2010/07/06/emc-buys-greenplum .
  • [Mon96] John Monroe. Informix acquires illustra for complex data management. In Federal Computer Week, January 1996.
  • [OFS83] James Ong, Dennis Fogg, and Michael Stonebraker. Implementation of data abstraction in the relational database system ingres. ACM Sigmod Record, 14(1):1–14, 1983.
  • [Ols93] Michael A. Olson. The design and implementation of the inversion file system. 1993.
  • [SAHR84] Michael Stonebraker, Erika Anderson, Eric Hanson, and Brad Rubenstein. Quel as a data type. In Proceedings of the 1984 ACM SIGMOD International Conference on Management of Data, SIGMOD '84, pages 208–214, New York, NY, USA, 1984. ACM.
  • [Sho11] Erick Shonfeld. Big pay day for big data. teradata buys aster data for $263 million. In TechCrunch, May 2011. techcrunch.com/2011/03/03/teradata-buys-aster-data-263-million (Last accessed January 22, 2018).
  • [SHWK76] Michael Stonebraker, Gerald Held, Eugene Wong, and Peter Kreps. The design and implementation of ingres. ACM Transactions on Database Systems (TODS), 1(3):189–222, 1976.
  • [SK91] Michael Stonebraker and Greg Kemnitz. The postgres next generation database management system. Commun. ACM, 34(10):78–92, October 1991.
  • [SR86] Michael Stonebraker and Lawrence A. Rowe. The design of postgres. In Proceedings of the 1986 ACM SIGMOD International Conference on Management of Data, SIGMOD '86, pages 340–355, New York, NY, USA, 1986. ACM.
  • [SRG83] M Stonebraker, B Rubenstein, and A Guttman. Application of abstract data types and abstract indices to cad bases. IEEE Trans, on Software Engineering, 1983.
  • [Sto86] Michael Stonebraker. The case for shared nothing. IEEE Database Eng. Bull., 9(1):4–9, 1986.
  • [Sto87] Michael Stonebraker. The design of the postgres storage system. In Proceedings of the 13th International Conference on Very Large Data Bases, VLDB '87, pages 289–300, San Francisco, CA, USA, 1987. Morgan Kaufmann Publishers Inc.
  • [Sto95] Michael Stonebraker. An overview of the sequoia 2000 project. Digital Technical Journal, 7(3):39–49, 1995.
  • [Sto14] Michael Stonebraker. The land sharks are on the squawk box, 2014. www.acm.org/turing-lecture-stonebraker (Last accessed January 4, 2019).

Source: https://habr.com/ru/post/hi438890/


All Articles