2009-06-19 10 views
36

में सीएलओबी और बीएलओबी के बीच अंतर को समझने में मेरी सहायता करें यह मुख्य रूप से सिर्फ "मेरी समझ की जांच करें" प्रश्न का प्रकार है। यहाँ CLOBs और BLOBs की मेरी समझ है के रूप में वे Oracle में काम करते हैं:ओरेकल

  • CLOBs एक्सएमएल, JSON, आदि जैसे पाठ आप नहीं मानना ​​चाहिए कि क्या डेटाबेस एन्कोडिंग यह स्टोर करेगा के लिए कर रहे हैं के रूप में (कम से कम एक आवेदन में) के रूप में यह डेटाबेस को जो भी एन्कोडिंग करने के लिए कॉन्फ़िगर किया गया था, उसे परिवर्तित कर दिया जाएगा।
  • बीएलओबी बाइनरी डेटा के लिए हैं। आपको उचित रूप से आश्वासन दिया जा सकता है कि वे संग्रहीत किए जाएंगे कि आप उन्हें कैसे भेजते हैं और आप उन्हें उसी डेटा के साथ वापस लाएंगे जैसा उन्हें भेजा गया था।

तो दूसरे शब्दों में, कहें कि मेरे पास कुछ बाइनरी डेटा है (इस मामले में एक मसालेदार अजगर वस्तु)। मुझे आश्वासन दिया जाना चाहिए कि जब मैं इसे भेजूं, तो यह ठीक से संग्रहीत किया जाएगा कि मैंने इसे कैसे भेजा और जब मैं इसे वापस प्राप्त करता हूं तो यह वही होगा। एक बीएलओबी वह है जो मैं चाहता हूं, सही?

क्या इसके लिए सीएलओबी का उपयोग करना वास्तव में व्यवहार्य है? या चरित्र एन्कोडिंग पर्याप्त समस्याओं का कारण बन जाएगा कि यह इसके लायक नहीं है?

+0

आपको कोशिश नहीं करना चाहिए और दूसरा अनुमान लगाया जाना चाहिए कि डेटाबेस इनमें से किसी एक को स्टोर नहीं करेगा जब तक कि आप तृतीय पक्ष उपयोगिताओं को विकसित नहीं कर रहे हों। केवल आकार देने के दिशानिर्देशों पर भरोसा किया जाना चाहिए। – mckenzm

उत्तर

50

CLOB एन्कोडिंग और मिलान संवेदनशील है, BLOB नहीं है।

जब आप CLOB में CL8WIN1251 का उपयोग करते हुए लिखते हैं, तो आप 0xC0 (जो सिरिलिक अक्षर ए है) लिखते हैं।

जब आप AL16UTF16 का उपयोग कर डेटा वापस पढ़ते हैं, तो आप 0x0410 वापस प्राप्त करते हैं, जो UTF16 इस पत्र का पुनर्भुगतान है।

यदि आप BLOB से पढ़ रहे थे, तो आपको 0xC0 वापस मिल जाएगा।

9

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