2010-05-25 10 views
8

में एक चर लंबाई लंबाई फ़ील्ड बनाने का सबसे अधिक "डेटाबेस स्वतंत्र" तरीका क्या है, मैं डेटाबेस में कोई टेक्स्ट फ़ील्ड बनाना चाहता हूं, बिना किसी विशिष्ट आकार के (यह किसी मामले में अज्ञात लंबाई का पाठ संग्रहीत करेगा) - विशेष पाठ धारावाहिक साधारण वस्तु (~ JSON)डेटाबेस

हैं क्या सबसे डेटाबेस स्वतंत्र यह करने के लिए तरीका है: - कोई आकार निर्दिष्ट के साथ एक varchar (नहीं लगता कि सभी DB इस का समर्थन करते हैं) - एक 'पाठ' क्षेत्र, यह आम लगता है, लेकिन मुझे विश्वास नहीं है कि यह मानक है - उस प्रकार का ब्लॉब या अन्य ऑब्जेक्ट? - एक बहुत बड़े आकार का एक वर्चर (जो अक्षम है और डिस्क स्थान शायद अक्षम है) - अन्य?

मैं JDBC का उपयोग कर रहा है, लेकिन मुझे लगता है कि सबसे डीबी (ओरेकल, MySQL, PostgreSQL, डर्बी, HSQL, एच 2 आदि ...)

धन्यवाद में समर्थित है कुछ का उपयोग करना चाहते हैं।

+0

यदि आपको इस पर समस्या हो रही है, तो क्या होता है जब आप तिथियों और समय के साथ प्रश्न पूछना शुरू करते हैं, पंक्ति संख्या वाले कुछ भी, या फैंसी क्वेरी ट्यूनिंग तकनीकें ?? यदि आप सिर्फ फ्लैट फाइलों पर धारावाहिक सरल वस्तु को देख रहे हैं। –

+0

अधिकांश "मूल" प्रकारों को उचित डेटाबेस प्रकार (संख्या-> बिगिनट, स्ट्रिंग -> वर्कर) आदि में संग्रहीत किया जाएगा ... केवल 'अन्य' प्रकारों को स्ट्रिंग में क्रमबद्ध किया जाएगा। –

उत्तर

3

एक एक बहुत बड़े आकार के एक varchar

कि सबसे पोर्टेबल विकल्प हो वाला है (कि शायद अक्षम और अपशिष्ट डिस्क स्थान है)। अपने आप को 2000 अक्षरों तक सीमित करें और आपको अधिकांश डेटाबेस के लिए ठीक होना चाहिए (ओरेकल वर्तमान 2000 limiter होने के नाते, लेकिन पुराने mysql संस्करणों से भी सावधान रहें)। मैं डिस्क स्थान के बारे में बहुत ज्यादा चिंता नहीं करता, या तो। अधिकांश डेटाबेस केवल फ़ील्ड में सहेजे गए वास्तविक डेटा के लिए डिस्क का उपयोग करते हैं।

3

क्या आप वास्तव में उन सभी डेटाबेसों का समर्थन करने की आवश्यकता है? (संकेत: सं।)

मुझे राय है कि सार्वभौमिक पोर्टेबल एसक्यूएल डीडीएल लिखना समस्या के लायक नहीं है। YAGNI

आपको उन डेटाबेसों का समर्थन करना चाहिए जो आप वर्तमान में का उपयोग कर रहे हैं, और भविष्य में अपनाए गए डेटाबेस को अनुकूलित करने के लिए तैयार रहें।


अपनी टिप्पणी पुन: केवल मानक SQL चर लंबाई डेटा प्रकार VARCHAR और BLOB हैं। VARCHAR स्ट्रिंग डेटा के लिए है और इसकी घोषणा में एक चरित्र सेट और संयोजन शामिल है। BLOB द्विआधारी डेटा के लिए है और वर्णमाला/संयोजन का समर्थन नहीं करता है।

+1

क्या मुझे उन सभी की आवश्यकता है -> सं। लेकिन चूंकि कोड एपीआई का हिस्सा है, और मैं अंतिम उपयोगकर्ता को बताना नहीं चाहता हूं कि उन्हें एक विशेष डीबी का उपयोग करना होगा, और अधिक 'संगत' बेहतर होगा .. हालांकि मुझे पता है कि एसक्यूएल कार्यान्वयन सभी जगहों पर हैं। यही कारण है कि मैं ऐसा करने से स्वतंत्र "सबसे अधिक" डेटाबेस के लिए पूछ रहा हूं। –

+0

धन्यवाद, यह बहुत उपयोगी है। –

+0

@ टाइटॉट: उन उत्तरों को ऊपर उठाना याद रखें जो आपकी मदद करते हैं। –

0

हाइबरनेट की तरह एक रूपरेखा है, तो आप के लिए नहीं होगा उपयोग एक सार्वभौमिक समाधान खोजने में समस्या। मुझे नहीं लगता कि आप प्रत्येक उल्लिखित डेटाबेस में एक सार्वभौमिक प्रकार का उपयोग कर सकते हैं। मुझे लगता है कि डेटाबेस काफी भिन्न है।

+0

वैसे जो मैं वास्तव में लिख रहा हूं वह एक मूल ओआरएम (जैसे मूल हाइबरनेट) की तरह है, एक नई भाषा के लिए जो अभी तक नहीं है ... मैं डीबी विक्रेता विशिष्ट कोड रखने से दूर रहने की कोशिश कर रहा हूं ... लेकिन मजबूर होना पड़ सकता है। –

0

text is perhaps best लेकिन एसक्यूएल सर्वर से शीघ्र ही हटा दिया जाना चाहिए और कोईसभी के लिए आप सूचीबद्ध स्वतंत्र विकल्प DBMS है।

यह कहकर कि SQL की बात आने पर पोर्टेबिलिटी अधिक हो गई है। डीबीएमएस बदलने से पहले आप अपने ग्राहक कोड को बदलने की अधिक संभावना रखते हैं। एक उठाओ और उसके साथ जाओ ....

1

एक बीएलओबी का प्रयोग करें। जेडीबीसी 2.0 एपीआई इसका समर्थन करता है और इसलिए जेडीबीसी 2.0 (जे 2 एसई 5.0) का समर्थन करने वाले किसी भी ड्राइवर को इसका समर्थन करना चाहिए।
ब्लॉब के लाभ हैं:
1. आकार के रूप में बड़े रूप में 4 जी -1 (। ओरेकल अन्य डेटाबेस इतना यकीन नहीं)
2. किसी भी डेटा आप चाहते हैं की दुकान कर सकते हैं (यहां तक ​​कि छवियों आपके JSON में कुछ क्षेत्र में धारावाहिक रूप हो सकता है संरचना)
3. ओएस
पर परिवहन के लिए पूरी तरह से तटस्थ 4. आप अभी भी बीएलओबी का संदर्भ देने वाली कुंजी पर इंडेक्स का लाभ उठा सकते हैं ताकि आईडी आदि पर खोज संरचना में होकर किया जाना चाहिए।

+0

मुझे लगता है कि जेडीबीसी सीएलओबी का भी समर्थन करता है, यह एक अच्छा विकल्प हो सकता है। –