मैं इस स्तर पर संभव के रूप में कुछ मान्यताओं (वेब ऐप वास्तव में कैसे विकसित होता है) के साथ डेटाबेस डिजाइन पर निर्णय लेने की कोशिश कर रहा हूं।
पहले चरण के रूप में, यह समझते हुए कि JOINS महंगे हैं, मैं बड़ी संख्या में सामान्यीकृत छोटी तालिकाओं के विपरीत एक छोटी संख्या में अखंड तालिकाओं पर विचार कर रहा हूं। एक दूसरे बिंदु के रूप में, मैं hstore बनाम नियमित टेबल बनाम JSONB (GiST इंडेक्सिंग के साथ) का उपयोग करने के बीच उलझन में हूं।
AFAIK (कृपया सही करने के लिए स्वतंत्र महसूस करें):
आमतौर पर, Postgres में, hstore को अन्य डेटा प्रकारों से बेहतर प्रदर्शन करने के लिए जाना जाता है। FOSDEM PGDAY की इस प्रस्तुति में कुछ दिलचस्प आँकड़े (स्लाइड के दूसरे भाग में) हैं। https://wiki.postgresql.org/images/b/b4/Pg-as-nosql-pgday-fosdem-2013.pdf
Hstore के साथ एक लाभ तेजी से अनुक्रमण (GiN या GiST) है। हालांकि, JSONB के साथ, GiN और GiST इंडेक्सिंग को JSON डेटा पर भी लागू किया जा सकता है।
2nd Quadrant के एक पेशेवर का यह ब्लॉग कहता है, "इस बिंदु पर यह संभव है कि सभी नए अनुप्रयोगों में jsonb के साथ hstore के उपयोग की जगह" (अंत तक स्क्रॉल करें): http://blog.2ndquadrant.com/postgresql-ant-patterns-unn जरूरी -jsonhstore-डायनामिक-कॉलम /
इसलिए मैं निम्नलिखित पर निर्णय लेना चाहता हूं:
- डेटा के मुख्य (संरचित) भाग के लिए: क्या यह संबंधपरक तालिकाओं के एक जोड़े में जाना चाहिए (कई स्तंभों के साथ अपेक्षाकृत बड़ा), या यह hstore का उपयोग करके कई महत्वपूर्ण-मूल्य वाले स्टोर होना चाहिए?
- तदर्थ (उपयोगकर्ता योगदान / असंरचित) डेटा के लिए, यह JSON या तदर्थ में तदर्थ प्रमुख मूल्य भंडार होना चाहिए (मुख्य संबंधपरक तालिकाओं में से एक में संग्रहीत कुंजी के साथ)?
JSON(B)
औरhstore
(और EAV) अज्ञात संरचना वाले डेटा के लिए अच्छे हैं।