2010-03-23 10 views
23

मैं एक फॉर्म जेनरेटर विकसित कर रहा हूं, और सोच रहा हूं कि जेएसओएन को एसक्यूएल डेटाबेस में स्टोर करने के लिए बुरा मोोज होगा?एक एमएसएसक्यूएल डेटाबेस में जेएसओएन संग्रहीत करना?

मैं अपने डेटाबेस & तालिकाओं सरल बनाए रखना चाहते हैं, इसलिए मैं एक मेज पर

`pKey, formTitle, formJSON` 

के लिए जा रहा था, और उसके बाद formJSON में

{["firstName":{"required":"true","type":"text"},"lastName":{"required":"true","type":"text"}} 

की दुकान।

किसी भी इनपुट की सराहना की जाती है।

उत्तर

29

मैं अपने सीएमएस में जेएसओएन का व्यापक रूप से उपयोग करता हूं (जो 110 साइटों को होस्ट करता है) और मुझे एक्सेस डेटा की गति बहुत तेज़ी से मिलती है। मैं आश्चर्यचकित था कि और अधिक गति गिरावट नहीं थी। सीएमएस (पेज, लेआउट, लिस्ट, टॉपिक, आदि) में प्रत्येक ऑब्जेक्ट में एक एनवीएआरएआरएआर (MAX) कॉलम है जिसे JSONConfiguration कहा जाता है। मेरा ओआरएम उपकरण उस कॉलम को देखने के लिए जानता है और यदि आवश्यक हो तो उसे ऑब्जेक्ट के रूप में पुन: स्थापित करें। या, स्थिति के आधार पर, मैं इसे प्रक्रिया के लिए jQuery या Ext JS के लिए क्लाइंट को पास कर दूंगा।

मेरे कोड की पठनीयता/रखरखाव के लिए, आप कह सकते हैं कि यह बेहतर है क्योंकि अब मेरे पास कक्षाएं हैं जो डीबी में संग्रहीत कई JSON ऑब्जेक्ट्स का प्रतिनिधित्व करती हैं।

मैंने सभी serialization/deserialization के लिए JSON.net का उपयोग किया। http://james.newtonking.com/default.aspx

मैं वास्तविक डेटा के साथ मेटा-जेएसओएन वापस करने के लिए एक एकल क्वेरी का भी उपयोग करता हूं। जैसा कि एक्सटी जेएस के मामले में, मेरे पास ऐसे प्रश्न हैं जो एक्सटी जेएस ऑब्जेक्ट की संरचना के साथ-साथ ऑब्जेक्ट की आवश्यकता वाले डेटा दोनों को वापस कर देते हैं। यह एक पोस्ट बैक/एसक्यूएल राउंड ट्रिप में कटौती करता है।

मुझे आश्चर्य हुआ कि कोड JSON ऑब्जेक्ट्स की सूची को कितना तेज़ करना था और उन्हें डेटाटेबल ऑब्जेक्ट में मैप करना था जिसे मैंने ग्रिड व्यू को सौंप दिया था।

जेएसओएन का उपयोग करने के लिए मैंने देखा एकमात्र नकारात्मक सूचकांक है। यदि आपके पास JSON की एक संपत्ति है जिसे आपको खोजना है, तो आपको इसे एक अलग कॉलम के रूप में स्टोर करना होगा।

वहां जेएसओएन डीबी है जो आपकी आवश्यकताओं को बेहतर तरीके से सर्वर कर सकता है: कॉच डीबी, मोंगोडीबी, और कैसंद्रा।

3

यह कोड में परिभाषित फॉर्म होने से धीमा होगा, लेकिन एक अतिरिक्त क्वेरी आपको बहुत नुकसान नहीं पहुंचाएगी। (बस जाने नहीं 1 अतिरिक्त क्वेरी 10 अतिरिक्त प्रश्नों बन जाते हैं!)

संपादित करें: आप formTitle बजाय pKey द्वारा पंक्ति को चुनकर रहे हैं (मैं, क्योंकि तब अपने कोड अधिक पढ़ा जा सके हैं), एक सूचकांक पर डाल formTitle

1

मैं इसकी अनुशंसा नहीं करता।

यदि आप भविष्य में इन मूल्यों के आधार पर कभी भी कोई रिपोर्टिंग या क्वेरी करना चाहते हैं तो यह कुछ अतिरिक्त टेबल/कॉलम होने से आपके जीवन को बहुत कठिन बना देगा।

आप नई टेबल बनाने से क्यों बच रहे हैं? मैं कहता हूं कि यदि आपके आवेदन के लिए उन्हें आगे बढ़ना है और उन्हें जोड़ना है ... अगर किसी को भी आपके कोड/डीबी से गुजरना पड़ता है तो शायद यह पता लगाना मुश्किल होगा कि आप क्या कर रहे थे (किस प्रकार के आधार पर दस्तावेज आपके पास है)।

+0

हम कस्टम रूपों, कि आम तौर पर एक ही जानकारी होती है पर समय की एक बहुत खर्च करते हैं, कि जानकारी का सबसे केवल 3-4 विभिन्न तालिकाओं में संग्रहीत हो जाता है। इसलिए यदि मैं प्रोग्राम को प्रोग्रामेटिक रूप से बना सकता हूं, और उन्हें अपनी उचित सारणी में सबमिट कर सकता हूं तो यह भविष्य में बहुत से विकास का समय बचाएगा। – JKirchartz

+0

मुझे लगता है कि उस स्थिति में शायद यह ठीक होने जा रहा है। माइकल की तरह कहते हैं कि यह सिर्फ एक अतिरिक्त प्रश्न होगा। मैंने सोचा था कि आप फॉर्म की संरचना के साथ मूल्यों को स्टोर करने की कोशिश कर रहे थे। –

7

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

+18

मैंने कई अवसरों में भाग लिया है जहां मैं समाधान के लिए शिकार कर रहा हूं और यहां अपना रास्ता ढूंढ रहा हूं। समाधान के लिए शिकार में, मुझे कभी-कभी कहीं और बेहतर जानकारी मिलती है और शायद उस समय नई तकनीक के साथ जो उस समय उत्तर दिया गया था। यह न केवल आपके प्रश्न का उत्तर देने के लिए है, बल्कि हर किसी के लिए जो भविष्य में आपके जैसा ही स्थिति में चलता है। और KOPEHb की तरह, मैं उत्तर देने के लिए पर्याप्त विनम्र होगा या उत्तर देने के बजाय बेहतर समाधान भी प्रदान करूंगा। – Levitikon

2

इसके लिए आपको सिसोडब का उपयोग करने में सक्षम होना चाहिए। http://sisodb.com

+0

क्या किसी को SisoDB का उपयोग करने के बाद कोई राय है? यह आशाजनक प्रतीत होता है, लेकिन अभ्यास में उपयोग किए जाने पर इस तरह की लाइब्रेरी वास्तव में हिट या मिस हो सकती है ... –

+1

हाय, मैं साइसोडबी बनाने के बाद से पक्षपातपूर्ण हूं लेकिन हम इसे आज विकसित होने वाले वाणिज्यिक उत्पाद में उपयोग कर रहे हैं। इसका उपयोग सीक्यूआरएस पर्यावरण में रीडमोडल्स को बनाए रखने के लिए किया जाता है। – Daniel

3

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

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

1

मुझे लगता है कि यह एसक्यूएल में स्ट्रिंग में ऑब्जेक्ट डेटा स्टोर करने का एक इष्टतम विचार नहीं है। इसे पार्स करने के लिए आपको SQL के बाहर रूपांतरण करना होगा। यह एक प्रदर्शन मुद्दा प्रस्तुत करता है और आप एसक्यूएल मूल डेटा पार्सिंग क्षमता का उपयोग करने का लाभ खो देते हैं। जेएसओएन को एसक्यूएल में एक्सएमएल डाटाटाइप के रूप में स्टोर करने का एक बेहतर तरीका होगा। इस तरह, आप एक पत्थर के साथ दो पक्षियों को मार देते हैं: आपको टेबल के ढीले भार को बनाने की ज़रूरत नहीं है और फिर भी एसक्यूएल के सभी देशी पूछताछ लाभ प्राप्त होते हैं।

XML in SQL Server 2005? Better than JSON in Varchar?

संबंधित मुद्दे