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

क्या पोस्टग्रेज JSON इंडेक्स क्लासिक सामान्यीकृत तालिकाओं की तुलना में पर्याप्त कुशल हैं?

<ब्लॉकक्वॉट>

मुझे फ़ॉर्म में कुछ प्रश्नों की आवश्यकता होगी "उन सभी वस्तुओं की सूची बनाएं जहां altnames में से एक 'foobar' है।" अपेक्षित तालिका आकार कुछ मिलियन रिकॉर्ड के क्रम में है। पोस्टग्रेज JSON प्रश्नों का उपयोग उसके लिए किया जा सकता है, और इसे अनुक्रमित भी किया जा सकता है (उदाहरण के लिए JSON सरणी में तत्व खोजने के लिए अनुक्रमणिका)। हालांकि, क्या इसे इस तरह से किया जाना चाहिए या यह एक विकृत समाधान है जिसकी अनुशंसा नहीं की जाती है?

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

दूसरा तरीका रखो, यह वही पुराना सुअर है जो नए श्रृंगार के साथ है।

JSON उल्टे सर्च ट्री इंडेक्स . का उपयोग करने की क्षमता प्रदान करता है , उसी तरह जैसे hstore, array type और tsvectors करते हैं। वे ठीक काम करते हैं, लेकिन ध्यान रखें कि वे मुख्य रूप से लेक्सिकोग्राफ़िक क्रम में मानों की सूची निकालने के बजाय, दूरी के आधार पर क्रमबद्ध (ज्यामिति प्रकार सोचें) बिंदुओं को निकालने के लिए डिज़ाइन किए गए हैं।

उदाहरण के लिए, उन दो योजनाओं को लें जो रोमन के उत्तर की रूपरेखा बताती हैं:

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

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

अंत में, नीचे की रेखा, hstore या EAV का उपयोग करने का निर्णय लेने पर आपको मिलने वाली चीज़ों से अलग नहीं है:

  1. यदि इसे एक अनुक्रमणिका की आवश्यकता है (अर्थात यह अक्सर एक खंड में या, इससे भी महत्वपूर्ण बात, एक सम्मिलित खंड में प्रकट होता है), तो आप संभवतः डेटा को एक अलग फ़ील्ड में चाहते हैं।
  2. अगर यह मुख्य रूप से कॉस्मेटिक है, तो JSON/hstore/EAV/XML/जो कुछ भी आपको रात में सो जाता है, ठीक काम करता है।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. पोस्टग्रेएसक्यूएल फ़ंक्शंस का परीक्षण करना जो refcursor का उपभोग और वापसी करता है

  2. Homebrew का उपयोग करके मैक पर Postgresql के साथ PHP स्थापित करें

  3. Oracle से PostgreSQL:ANSI बाहरी PostgreSQL में सिंटैक्स में शामिल हों

  4. त्रुटि:संबंध स्थान मौजूद नहीं है हरोकू डीबी आयात

  5. PostgreSQL में समानांतर अननेस्ट () और सॉर्ट ऑर्डर