2010-02-23 12 views
6

अक्सर, जब मुझे व्यवस्थापक गुणों, संस्करणों आदि जैसे सिस्टम गुणों को संग्रहीत करने की आवश्यकता होती है, तो मैं एक फ्लैट फ़ाइल (डेटाबेस.प्रोपर्टीज, init.properties, आदि) का उपयोग करता हूं। यह उन अन्य कार्यक्रमों में आम लगता है जो मैं दैनिक आधार पर देखता हूं और उपयोग करता हूं।क्या डेटाबेस में प्रॉपर्टी टेबल रखना बुरा विचार है?

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

property_entry_table

[id, scope, refId, propertyName, propertyValue, propertyType] 
1, 0, 1, "DB_VER", "2.3.0", "FLOAT" 
2, 0, 1, "LICENCE", "88475", "INT" 
3, 0, 1, "TOP_PROJECT", "1", "INT" 
4, 0, 1, "SHOW_WELCOME", "F", "BOOL" 
5, 0, 1, "SMTP_AUTH", "SSH", "STRING" 
6, 1, 1, "ADMIN_ALERTS", "T", "BOOL" 

मैं इस एसक्यूएल टाइपिंग टूट जाता है और मुझे तारों के रूप में प्रकार के सभी प्रकार के स्टोर करने के लिए अनुमति देता है एहसास। क्या यह अच्छा अभ्यास है या क्या मैं इस बारे में गलत तरीके से जा रहा हूं?

यदि नहीं, तो किस तरह से मैं जानकारी के इस प्रकार के भंडारण किया जाना चाहिए?

+1

जब तक कि यह कुछ सिस्टम गुणों के लिए भंडारण आदि हो, यह ठीक है। ** ** ** ** इस तरह के डेटा को स्टोर करने का विचार न लें! चर्चा के लिए यहां देखें, क्यों: http://www.simple-talk.com/sql/database-administration/five-simple--database-design-errors-you-should-avoid/ –

+0

भी, शायद इसके लिए प्रोत्साहन यह सवाल, मैं यहां क्यों नीचे मतदान कर रहा था: http://stackoverflow.com/questions/2300356/using-a-single-row-configuration-table-in-sql-server-database-bad-idea/2300450#2300450 – Stephano

उत्तर

1

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

+0

अच्छा लिंक। ऐसा लगता है कि मुझे देर से दोपहर पढ़ने के लिए पढ़ना है। जानकारी को कैश करने के लिए – Stephano

0

यह बहुत कम पहुँचा डेटा की थोड़ी मात्रा के लिए ठीक है।

यह वास्तव में एक उपयोगकर्ता स्कीमा को देखकर व्यक्ति एप्लिकेशन प्रॉपर्टी नहीं देखने के लिए के लिए बेहतर हो सकता है।

इससे स्कीमा अपडेट के साथ समस्याएं कम हो जाती हैं। (ऐप गुणों को अक्सर जोड़ा/हटाया जाता है।)

यह बड़ी मात्रा में डेटा या अक्सर एक्सेस किए गए डेटा के लिए उपयुक्त नहीं है, क्योंकि डाटाबेस के लिए यहां तक ​​कि अधिक पुनर्प्राप्ति करने के लिए और अधिक जगह है, और अधिक जगह ले ली गई है , एक पारंपरिक स्कीमा के मुकाबले।

2

मुझे लगता है कि यह ठीक है, लेकिन आप तो यह है कि तुम वापस डीबी के लिए जा रहा रखने के लिए की जरूरत नहीं है स्मृति में अपने डेटा को संचित करने के लिए जब आप इसे पढ़ विचार करना चाह सकते। यदि आप अपना डेटा कैश करते हैं तो उसे स्टोर करें जहां कहीं भी आपके अपडेट सबसे आसान होंगे। आपके डीबी में डेटा के आवास का लाभ यह है कि उन गुणों को प्रबंधित करने के लिए इंटरफेस को बनाए रखना या बनाना आसान हो सकता है, खासकर जब आप अपने आवेदन के लिए वितरित वातावरण का उपयोग करना शुरू कर देते हैं।

+1

दिलचस्प विचार। मैंने पूर्व में कुछ डेटा कैश करके अतीत में ऐसा किया था कि मुझे आसानी से उपलब्ध होना चाहिए। – Stephano

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