Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

सीरियलब्लॉब बनाम बाइट का उपयोग करना []

आप सही कह रहे हैं कि SerialBlob एक बाइट[] . के आसपास बस एक पतली अमूर्तता है , लेकिन:

  • क्या आप एक टीम में काम कर रहे हैं?
  • क्या आप कभी-कभी गलतियाँ करते हैं?
  • क्या आप टिप्पणी लिखने में आलसी हैं?
  • क्या आप कभी-कभी भूल जाते हैं कि एक साल पहले का आपका कोड वास्तव में क्या करता है?

अगर आपने ऊपर दिए गए किसी भी सवाल का जवाब हां . के साथ दिया है , आपको संभवतः सीरियलब्लॉब

यह मूल रूप से एक साधारण डेटा संरचना के आसपास किसी भी अन्य अमूर्तता के साथ समान है (सोचें ByteBuffer , उदाहरण के लिए) या कोई अन्य वर्ग। आप इसे byte[] . पर इस्तेमाल करना चाहते हैं , क्योंकि:

  1. यह अधिक वर्णनात्मक है। एक बाइट[] किसी प्रकार का कैश हो सकता है, यह एक गोलाकार बफर हो सकता है, यह किसी प्रकार की अखंडता जांच तंत्र गलत हो सकता है। लेकिन अगर आप SerialBlob . का उपयोग करते हैं , यह स्पष्ट है कि यह डेटाबेस से बाइनरी डेटा का एक बूँद है / जिसे डेटाबेस में संग्रहीत किया जाना है।

    मैनुअल एरे हैंडलिंग के बजाय, आप क्लास पर विधियों का उपयोग करते हैं, जो कि, फिर से, पढ़ने में आसान है यदि आप कोड नहीं जानते हैं। यहां तक ​​​​कि तुच्छ सरणी हेरफेर को आपके कोड के पाठक द्वारा समझा जाना चाहिए। एक अच्छे नाम वाली विधि स्व-वर्णनात्मक होती है।

    जब आप एक साल में इस कोड को पढ़ेंगे तो यह आपके साथियों के लिए और आपके लिए भी मददगार है।

  2. यह अधिक त्रुटि प्रमाण है। हर बार जब आप कोई नया कोड लिखते हैं, तो एक अच्छा मौका होता है कि आपने उसमें एक बग बनाया हो। यह पहली बार में दिखाई नहीं दे सकता है, लेकिन शायद यह वहां है। सीरियलब्लॉब दुनिया भर में हजारों लोगों द्वारा कोड का परीक्षण किया गया है और यह कहना सुरक्षित है कि आपको इससे जुड़ी कोई बग नहीं मिलेगी।

    यहां तक ​​​​कि अगर आप सुनिश्चित हैं कि आपने अपनी बाइट सरणी को सही तरीके से संभाला है, क्योंकि यह बहुत सीधा है, तो क्या होगा यदि कोई और आपके कोड को आधे साल में ढूंढता है और चीजों को "अनुकूलित" करना शुरू कर देता है? क्या होगा यदि वह एक पुराने ब्लॉब का पुन:उपयोग करता है, या आपके जादू सरणी पैडिंग के साथ गड़बड़ करता है? अनुक्रमणिका में हेराफेरी में प्रत्येक एक-एक-एक त्रुटि आपके डेटा को दूषित कर देगी और इसका तुरंत पता नहीं लगाया जा सकता है (आप हैं इकाई परीक्षण लिख रहे हैं, है ना?).

  3. यह आपको केवल कुछ संभावित इंटरैक्शन तक ही सीमित रखता है। यह वास्तव में एक अवगुण की तरह लग सकता है, लेकिन ऐसा नहीं है! यह सुनिश्चित करता है कि आप अपने ब्लॉब को स्थानीय अस्थायी चर के रूप में उपयोग करने के बाद इसका उपयोग नहीं करेंगे। यह सुनिश्चित करता है कि आप स्ट्रिंग बनाने की कोशिश नहीं करेंगे इसमें से या मूर्खतापूर्ण कुछ भी। यह सुनिश्चित करता है कि आप इसे केवल एक बूँद के रूप में उपयोग करेंगे। फिर से, स्पष्टता और सुरक्षा।

  4. यह पहले से ही लिखा हुआ है और हमेशा एक जैसा दिखता है। आपको प्रत्येक प्रोजेक्ट के लिए एक नया कार्यान्वयन नहीं लिखना है, या दस अलग-अलग परियोजनाओं में दस अलग-अलग कार्यान्वयन पढ़ना है। यदि आप कभी भी SerialBlob देखेंगे किसी के प्रोजेक्ट में, उपयोग आपको स्पष्ट हो जाएगा। हर कोई एक ही का उपयोग करता है।

टीएल; डॉ: कुछ साल पहले (या शायद अभी भी C में), byte[] . का उपयोग करके ठीक होगा। जावा में (और सामान्य रूप से ओओपी), एक आदिम (निम्न स्तर) संरचना के बजाय नौकरी के लिए डिज़ाइन किए गए एक विशिष्ट वर्ग का उपयोग करने का प्रयास करें क्योंकि यह आपके इरादों का अधिक स्पष्ट रूप से वर्णन करता है, कम त्रुटियां पैदा करता है और लंबे समय में आपके कोड की लंबाई को कम करता है। ।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. php mysql क्वेरी एन्कोडिंग समस्या

  2. MySQL शो टेबल स्टेटस, ऑटो इंक्रीमेंट सही नहीं है

  3. MySQL प्रतिकृति गति

  4. कैसे पता करें कि क्या mysql इंडेक्स पूरी तरह से मेमोरी में फिट बैठता है?

  5. एचक्यूएल / जेपीए दिनांक सीमा के बीच उपलब्ध आइटम ढूंढते हैं