निर्भर करता है। यदि आप उम्मीद करते हैं कि बहुत सारे उपयोगकर्ता, बहुत अधिक लेन-देन की मात्रा, या प्रति क्वेरी विशेषता की एक पागल संख्या प्राप्त होगी, तो मैं कहूंगा कि HSTORE का उपयोग करें। यदि, हालांकि, आपका ऐप छोटा शुरू होगा और समय के साथ बढ़ेगा, या आपके पास अपेक्षाकृत कम लेन-देन हैं जो विशेषताएँ लाते हैं, या बस कुछ प्रति क्वेरी प्राप्त करते हैं, तो JSON का उपयोग करें। बाद के मामले में भी, यदि आप कई विशेषताएँ प्राप्त नहीं कर रहे हैं, लेकिन WHERE
में अक्सर एक या दो कुंजियों की जाँच कर रहे हैं अपने प्रश्नों का खंड, आप चीजों को गति देने के लिए एक कार्यात्मक सूचकांक बना सकते हैं:
CREATE INDEX idx_foo_somekey ON foo((bar ->> 'somekey'));
अब, जब आपके पास WHERE bar ->> somekey
. है , इसे अनुक्रमणिका का उपयोग करना चाहिए।
और निश्चित रूप से, आपके लिए उपलब्ध होने पर नेस्टेड डेटा का उपयोग करना और jsonb में अपग्रेड करना आसान हो जाएगा।
इसलिए मैं JSON की ओर तब तक झुकूंगा जब तक कि आप यह सुनिश्चित न कर लें कि आप अपने सर्वर के गधे को कुंजी फ़ेच के भारी उपयोग के साथ लात मार रहे हैं, इससे पहले कि आपके पास 9.4 में अपग्रेड करने का मौका हो। लेकिन इसके बारे में सुनिश्चित होने के लिए, मैं कहूंगा, अभी अनुमानित क्वेरी वॉल्यूम के साथ कुछ बेंचमार्किंग करें और देखें कि आपके लिए सबसे अच्छा क्या काम करता है।