কেন এখনও একটি ভারচার ডেটা টাইপ রয়েছে?


36

আমার অনেক ডাটাবেসের ক্ষেত্রগুলি ভার্চার হিসাবে সংজ্ঞায়িত হয়েছে। আমেরিকাতে থাকি এবং কাজ করার পর থেকে এটি এতটা সমস্যা হয়নি (যেখানে বিদ্যমান একমাত্র ভাষা "আমেরিকান"। আহেম )

প্রায় 5 বছর ডাটাবেসগুলির সাথে কাজ করার পরে, আমি আবিষ্কার করেছি যে অবশেষে আমি ভারচর ক্ষেত্রের সীমিত প্রকৃতির সমস্যা নিয়ে চলেছি এবং এনভিচারার হিসাবে ডেটা সঞ্চয় করার জন্য আমার ক্ষেত্রগুলি পরিবর্তন করতে হবে। একটি টেবিলের সাথে অন্য আপডেট করার পরে, একটি ভারচর ক্ষেত্রটিকে একটি এনভারচরে রূপান্তরিত করার পরে, আমি কেবল ভাবছিলাম - কেন আমরা এখনও এইভাবে এটি করছি? আমি দীর্ঘদিন থেকে আমার নতুন পাঠ্য ক্ষেত্রগুলি বর্ণের পরিবর্তে নবচর্চায় সংজ্ঞায়িত করার মানসিক সিদ্ধান্ত নিয়েছি, যা আমি 10 বছর আগে স্কুলে পড়ার সময় আমার পাঠ্য বইগুলি থেকে শিখতে পেরেছিলাম।

এটি ২০১১ এবং গত বছর এসকিউএল সার্ভারের একটি নতুন প্রকাশ হয়েছিল। আমরা যখন পরিবর্তে এনভারচার ব্যবহার করতে পারি তখন কেন আমরা একটি ভার্চার ডেটাটাইপ সমর্থন করি?

আমি জানি যে এটি প্রায়শই যুক্তিযুক্ত যে Nvarchars ভার্চারগুলির তুলনায় "দ্বিগুণ বড়", সুতরাং স্টোরেজ স্পেসের ব্যবহার মাইক্রেনিং বার্কের জন্য একটি যুক্তি হতে পারে।

তবে আজকের ব্যবহারকারীরা যদি স্টোরেজ স্পেসে সঞ্চয় করতে চান তবে ডিফল্ট ইউটিএফ -16 এর পরিবর্তে ডেটাগুলি ইউটিএফ -8 হিসাবে সংরক্ষণের জন্য তাদের এনভারচারারকে সংজ্ঞায়িত করতে পারে। এটি 8-বিট এনকোডিংয়ের অনুমতি দেয় যদি এটি প্রাথমিকভাবে আকাঙ্ক্ষিত হয় তবে এই আশ্বাস দিয়েছিলেন যে তাদের ডিবিতে theোকানো বিরল 2-8 বাইট চরিত্রটি কিছুতেই ভাঙ্গবে না।

আমি কিছু অনুপস্থিত করছি? বিগত ১৫-২০ বছরে এটি পরিবর্তিত হওয়ার কোনও কারণ নেই?

উত্তর:


37
  1. বেশ কিছু পশ্চিমা ইউরোপীয় ভাষার (নরওয়েজিয়ান, ডেনিশ, জার্মান, ফরাসী, ডাচ ইত্যাদি) কিছু সংঘাতের বিষয়বস্তুর জন্য ভারচারের কাজ যথেষ্ট ভাল var

  2. এসও ভারচার বনাম এনভারচচার পারফরম্যান্স এ দেখুন এনভারচারের গুরুতর পারফরম্যান্সের প্রভাব রয়েছে

  3. এটি এমডিওয়াই বনাম ডিএমওয়াইয়ের তারিখগুলির সাথে ডিলের তুলনায় তুচ্ছ


23

উত্তরগুলি সম্বোধন করার মানগুলি এবং সামঞ্জস্যতা ছাড়াও, কর্মক্ষমতাও মনে রাখা উচিত। যখন ডিস্কের স্থানটি সহজেই সস্তা হিসাবে স্বীকৃত হয়, তখন ডিবিএ / বিকাশকারীরা প্রায়শই এ বিষয়টি উপেক্ষা করেন যে কোয়েরি পারফরম্যান্স অনেক সময় কোনও টেবিলের সারি / পৃষ্ঠার আকারের সাথে সরাসরি সম্পর্কিত। ব্যবহার NVARCHARবদলে VARCHAR(যখন অপ্রয়োজনীয়) কার্যকরভাবে আপনার চরিত্র ক্ষেত্রের জন্য সারি আকার দ্বিগুণ হবে। আপনার যদি বলুন, 5 বা 10 50-দৈর্ঘ্যের ক্ষেত্র, আপনি সারি প্রতি অতিরিক্ত 500 বাইট যুক্ত করার সম্ভাব্য কথা বলছেন। আপনার কাছে যদি বিস্তৃত টেবিল থাকে তবে এটি প্রতিটি সারিটিকে একাধিক পৃষ্ঠায় ঠেলে দিতে পারে এবং কার্য সম্পাদনে বিরূপ প্রভাব ফেলতে পারে।


17

প্রচুর সংস্থার কাছে এখনও অ্যাপ্লিকেশন, ইন্টারফেস, প্ল্যাটফর্ম এবং সরঞ্জামগুলির একটি বড় ইনস্টল বেস রয়েছে যা একক-বাইট অক্ষর ধরে থাকে। ডাটাবেসগুলি খুব কমই বিচ্ছিন্নভাবে বাস করে - এগুলি একটি আইটি বাস্তুতন্ত্রের একটি অংশ। যদি আপনার কয়েক হাজার উপাদান এবং কয়েক মিলিয়ন কোডের লাইন কোড একক বাইট অক্ষরের উপর নির্ভর করে থাকে তবে আপনার ইউনিকোডে স্যুইচ করার জন্য প্রয়োজনীয় সময় এবং অর্থ বিনিয়োগের জন্য একটি ভাল কারণ প্রয়োজন। এই স্কেলে পরিবর্তনগুলি সম্পূর্ণ হতে কয়েক বছর সময় নিতে পারে। কিছু জায়গায় ইউনিকোড এখনও অপেক্ষাকৃত নতুন, বিরল বা সম্পূর্ণ সমর্থিত নয়।

ভর্চার এবং এনভিচারার উভয়ই আইএসও স্ট্যান্ডার্ড এসকিউএল এর অংশ। এসকিউএল সার্ভারে ভিউআরএআর সমর্থন অপসারণ বা হ্রাস করা সামঞ্জস্যতা এবং বহনযোগ্যতার ক্ষেত্রে এক ধাপ পিছনে থাকবে।


16

বিকল্পভাবে, আজকের ব্যবহারকারীরা যদি স্টোরেজ স্পেসে সঞ্চয় করতে চান তবে ডিফল্ট ইউটিএফ -16 এর পরিবর্তে ডেটাগুলি ইউটিএফ -8 হিসাবে সংরক্ষণ করার জন্য তাদের এনভারচারারকে সংজ্ঞায়িত করতে পারে।

বেশিরভাগ ওপেন সোর্স ডাটাবেসগুলি ঠিক এটিই করে VARCHAR

দুটি পৃথক স্ট্রিং প্রকারের দরকার নেই।

মাইক্রোসফ্ট তার মতামত সহ এক অদ্ভুত, 8-বিট স্ট্রিং উত্তরাধিকারসূচক এনকোডিং এবং ইউনিকোড = ইউটিএফ -16 এর জন্য। যা সম্ভবত উইন্ডোজ এপিআই নিজেই চিকিত্সা charএবং wchar_tসেভাবে সম্পর্কিত।


15

কারণ আমাদের মধ্যে কিছু অত্যাধুনিক হার্ডওয়্যারগুলির চেয়ে কম হালকা, ছোট অ্যাপ্লিকেশন তৈরি করে যার ইউনিকোড সক্ষমতার প্রয়োজন নেই। সম্ভবত আমাদের এটি পরে পরিবর্তন করতে হবে, তবে আপাতত আমাদের কেবল এটির দরকার নেই। আমি আমার স্ট্রিংগুলি পছন্দ করি যাতে তারা অন্যথায় এনভিআরসিএআরএআর এর অধীনে থাকা জায়গাগুলি 1/2 নেয়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.