मैं तीन समाधानों के बारे में सोच सकता हूं - ईएवी, एक्सएमएल और स्पार्स कॉलम। उत्तरार्द्ध विक्रेता-विशिष्ट है और आपके लिए उपयोगी नहीं हो सकता है।
जो भी विधि आप चुनते हैं, आप एक टेबल या फ्लैट फ़ाइल में कच्चे प्रारूप में मूल अनुरोध डेटा संग्रहीत करने पर विचार कर सकते हैं। डेटा संग्रहीत करने के नए तरीकों को आज़माना आसान होगा, यदि आप अपने अनुरोधों को पार्स कर रहे हैं, और बैच प्रोसेसिंग या "बड़े डेटा" का उपयोग करके एपीआई अनुरोधों को पार्स करने के अवसरों की पेशकश करते हैं, तो आपको डेटा पुनः लोड करने की अनुमति देता है। उपकरण यदि आपको लगता है कि आपका डेटा वेयरहाउस डेटा से कुशलता से निपटने में सक्षम नहीं है।
ईएवी विचार
ईएवी / केवीएस, जैसा कि आपने ऊपर वर्णित किया है, सबसे सीधा कार्यान्वयन होने की संभावना है।
दुर्भाग्य से यह बहुत महंगा होने जा रहा है - आमतौर पर उपयोग की जाने वाली कुंजियों पर किसी भी प्रकार के कुशल प्रश्नों के लिए आपको कुंजी स्तंभ पर अनुक्रमित करने की आवश्यकता होगी, जो बहुत ही खंडित हो सकता है। विशेष कुंजी के लिए क्वेरी करना बहुत महंगा होगा।
आप अपने ईएवी स्टोर का समर्थन भौतिक विचारों (कई विक्रेताओं का समर्थन करते हैं) के साथ उन कुंजियों या मूल्यों के लिए अनुक्रमण या इंडेक्स स्कैन की लागत को कम करने में सक्षम हो सकते हैं जिनके बारे में आप परवाह करते हैं।
एक्सएमएल
अधिकांश एंटरप्राइज़ डेटाबेस सिस्टम सत्यापन, अनुक्रमण और परिष्कृत क्वेरी सहित बहुत परिपक्व XML हैंडलिंग प्रदान करते हैं।
डेटाबेस में एपीआई अनुरोध को लोड करें क्योंकि XML प्रति अनुरोध एक टपल प्रदान करेगा, जो तार्किक रूप से एक ईएवी तालिका में अज्ञात संख्या में पंक्तियों की तुलना में आपके लिए थोड़ा अधिक स्वादिष्ट हो सकता है।
क्या यह कुशल है यह आपके RDBMS विक्रेता और आपके कार्यान्वयन पर बहुत कुछ निर्भर करेगा।
सबसे बड़ा नकारात्मक पक्ष यह है कि यह संभवतः डेटा के प्रबंधन का एकमात्र तरीका है जो मूल अनुरोध के स्ट्रिंग हेरफेर से अधिक जटिल है!
विरल कॉलम / पारंपरिक टेबल
यह संभव है कि आप अपने डेटा को पारंपरिक टेबल संरचना में लोड कर सकते हैं, जिसमें एक कुंजी प्रति कॉलम है।
SQL सर्वर का विरल कॉलम सुविधा ईएवी स्टोर का एक बढ़िया विकल्प है। स्पार्स कॉलम के साथ एक तालिका सामान्य तालिका के समान ही व्यवहार करती है, सिवाय इसके कि इसमें 30,000 तक कॉलम हो सकते हैं, और विरल स्तंभों में NULL मान तालिका में स्थान का उपभोग नहीं करते हैं।
फ़िल्टर किए गए अनुक्रमित (एक अन्य SQL सर्वर विशिष्ट सुविधा) के साथ उनका संयोजन ईएवी स्टोर के लिए एक अत्यंत कुशल विकल्प प्रदान कर सकता है यदि आप अक्सर विशिष्ट कॉलम और / या मूल्यों के एक जोड़े के लिए क्वेरी कर रहे हैं।
अन्य विक्रेताओं के साथ एक पारंपरिक तालिका का उपयोग करना व्यवहार्य हो सकता है - आईबीएम प्रति तालिका 700 से अधिक स्तंभों का समर्थन करता है और 1000 के बारे में ओरेकल, और अनुगामी नलियों के संपीड़न या ओरेकल के उपचार जैसी सुविधाओं का मतलब हो सकता है कि आप अपने एपीआई डेटा को काफी कुशलता से संग्रहीत कर सकते हैं।
इस दृष्टिकोण का स्पष्ट नकारात्मक पहलू यह है कि जैसे ही आपने अपने एपीआई में नई कुंजी जोड़ी, आपको अपने स्कीमा को तदनुसार समायोजित करना होगा।