নির্দিষ্ট ডেটাটাইপ নির্বিশেষে, অ্যাপ্লিকেশনটি যা সঞ্চয় করার জন্য অনুরোধ করবে তা আপনি সঞ্চয় করতে সক্ষম হবেন। আপনি আসলে কী সংরক্ষণ করবেন তার সর্বোচ্চ আকারের চেয়ে ছোট কিছু নির্দিষ্ট করতে পারবেন না।
বিভিন্ন কারনে সংরক্ষণ করা হবে এমন সর্বোচ্চ আসল আকারের চেয়ে বড় কলামের দৈর্ঘ্য নির্দিষ্ট করার দরকারও নেই বা চান না: কোয়েরি মেমরি বরাদ্দ, সম্ভাব্য সারি সর্বাধিক আকার পূরণ করা এবং কলাম যুক্ত করার জন্য কোনও স্থান না রেখে ভবিষ্যত, ইত্যাদি
সত্য, পরিবর্তনশীল দৈর্ঘ্যের স্ট্রিং এবং বাইনারি কলামগুলিতে স্থির দৈর্ঘ্য ডেটাটাইপস (স্ট্রিং / বাইনারি / সংখ্যাসূচক / তারিখ / ইত্যাদি) স্টোরেজ জড়িত থাকে না (যদিও, সেগুলির মধ্যে কিছু লিখিত তথ্য সংক্ষেপণ বা SPARSE
কলাম সংজ্ঞা ব্যবহারের মাধ্যমে বাতিল করা যেতে পারে বিকল্প)। যাইহোক, আপনি উল্লেখ করেছেন যে, সরাসরি স্টোরেজ জড়িত না থাকলেও, এখনও অনুসন্ধানের জন্য প্রয়োজনীয় মেমরির কর্মক্ষমতা জড়িত রয়েছে।
বুদ্ধিমান হন। আপনার যা প্রয়োজন কেবল তা ব্যবহার করুন। নিকট ভবিষ্যতে কলামের দৈর্ঘ্য বাড়ানোর প্রয়োজনের উচ্চ সম্ভাবনা থাকলে বিবেচনা করা যেতে পারে তবে মনে রাখবেন যে আকারটি হ্রাস করার চেয়ে কলামের আকার প্রসারিত করা আরও সহজ। হ্যাঁ, কিছু কাজ জড়িত থাকবে, তবে যেহেতু সেই কাজটি কেবল "সম্ভাব্য", যখন ওভার-সাইজিংয়ের পারফরম্যান্স ইমপ্লিকেশনগুলি "প্রকৃত" হয়, তবে আপনার প্রকৃত প্রয়োজনের ভিত্তিতে কলামগুলি প্রায়শই আপনার প্রয়োজনের ভিত্তিতে সংজ্ঞায়িত করা ভাল is -সোর্টা ভাবেন ভবিষ্যতে আপনার প্রয়োজন হতে পারে। অনেক পরিবর্তনের কথা বলা হয় যা কখনই ঘটে না এবং প্রায়শই যে পরিবর্তনগুলি প্রয়োজন হয় তা অনুমান করা যায় না। আপনি যা জানেন তা নিয়ে যান।
পরিবর্তে, একটি লক্ষ্য হতে পারে যদি সম্ভব হয় তবে প্রতিটি ডাটা সারির প্রকৃত আকার limit 8000 বাইটের মধ্যে সীমাবদ্ধ করা।
আপনি এখানে কী পাচ্ছেন তা আমি নিশ্চিত নই। এসকিউএল সার্ভার শারীরিকভাবে আপনাকে কেবল 8000 বাইটের মধ্যে সীমাবদ্ধ করবে। Lob ধরনের ব্যবহার - VARCHAR(MAX)
, NVARCHAR(MAX)
, VARBINARY(MAX)
, XML
, এবং অবচিত TEXT
, NTEXT
এবং IMAGE
ধরনের - যে প্রাথমিক পৃষ্ঠার আকার সীমাবদ্ধতা অতিক্রমণ জন্য অনুমতি, কিন্তু যে শুধুমাত্র একটি পয়েন্টার (16 বা তার বেশি বাইট, ধরনের উপর নির্ভর করে স্থাপন করে, এবং তার উপর নির্ভর করে কারণে MAX
প্রকারগুলি ব্যবহার করার সময় অফ-সারি স্টোর করা মানের আকার )। ডেটা পৃষ্ঠার আসল শারীরিক সীমা পরিবর্তন হয়নি।
আপনার লক্ষ্যটি হ'ল অ্যাপ / ব্যবসায়টি যা ভাঙা বা কাটা ছাড়াই সঞ্চয় করতে প্রয়োজন তা সঞ্চয় করতে কমপক্ষে শারীরিক স্থান ব্যবহার করা উচিত যে অসম্পূর্ণ মানটির অর্থ হারাতে পারে বা প্রবাহকে সমস্যা তৈরি করে। আপনার যদি 12,000 চরিত্রের জিনিসটি সঞ্চয় করতে হয় তবে ব্যবহার করুন VARCHAR(MAX)
কারণ এটিই প্রয়োজন। আপনি যদি কোনও ফোন নম্বর বা ডাক / পিন কোড সংরক্ষণ করেন তবে এটি ব্যবহার করা বুদ্ধিমানের এবং ব্যবহার করার জন্য VARCHAR(100)
দায়িত্বজ্ঞানহীন হবে VARCHAR(MAX)
।
আমাদের গ্রাহকের কিছু ডেটা কিছুটা ওঠানামা করে, তাই আমরা কলামগুলি সাধারণত তাদের চেয়ে কিছুটা প্রশস্ত করতে পারি say এই কলামগুলির জন্য 15-20% বড় বলুন say আমি ভাবছিলাম যে অন্য কোনও বিশেষ বিবেচনা আছে কিনা;
সব সিস্টেমে কমপক্ষে কিছু ডেটা থাকে যা ওঠানামা করে? কোনও সিস্টেম যা কোনও ব্যক্তির নাম সঞ্চয় করে, যোগ্যতা অর্জন করবে, তাই না? নামের দৈর্ঘ্যে মোটামুটি বড় বৈচিত্র রয়েছে। এবং তারপরে আপনার মতো প্রিন্সের মতো কেউ গিয়ে তাদের নামটি একটি প্রতীক হিসাবে পরিবর্তন করুন এবং এখন আপনার সম্পূর্ণ ভিন্ন সমস্যা রয়েছে যা দৈর্ঘ্য নয়। বিষয়গুলি ঠিক এটিই।
তবে, এক মুহুর্তের জন্য শয়তানের উকিল খেলতে: কীভাবে "যা প্রয়োজন তার চেয়ে 15-15% বড়" মান প্রকৃত প্রয়োজনীয় মূল্য হতে পারে না ? ধরা যাক যে একটি নতুন কলাম যুক্ত করার বিষয়ে আলোচনা হয়েছে, এবং কেউ 50 টি চরিত্রের পরামর্শ দিচ্ছে, তখন অন্য কেউ বলেছেন, "ভাল, 20% আরও 60 হয় তাই 60 করা যাক কারওর 60 টি থাকতে পারে" " যদি এটি সত্য হয় যে কোনও গ্রাহকের 60০ টি থাকতে পারে, তবে is০ হ'ল এবং সর্বদা ছিল, প্রকৃত প্রয়োজনীয় মূল্য এবং 50 টি পুরো সময়ই ভুল ছিল।
অবশ্যই, ডেটা উত্স সম্পর্কে কিছু ইঙ্গিত থাকলে এটি সাহায্য করবে কারণ:
- যদি আপনি "ইউআরএল" 1024 করেন এবং কারও জন্য 1060 প্রয়োজন, তবে এটির 1060 হওয়া দরকার (একইভাবে, আপনি যদি ইউআরএল তৈরি করেন
VARCHAR
এবং অভিযোগ পান যে এটি ইউনিকোড অক্ষরগুলিকে গণ্ডগোল করছে যা এখন ডোমেন নামে অনুমোদিত, তবে এটি হওয়া দরকার NVARCHAR
), কিন্তু
- যদি কেউ 500 অক্ষর-সীমা মন্তব্য ক্ষেত্রে 1000 টি অক্ষর যুক্ত করতে চায়, তবে এটি কেবল 500 হওয়া দরকার comments মন্তব্যগুলিতে লোকেরা কম শব্দভাবাপন্ন হতে পারে (আমার পক্ষে একটি বিশাল চ্যালেঞ্জ ;-), তবে
ProductSKU
সর্বোপরি যথেষ্ট উপযুক্ত হয়ে উঠতে পারে গ্রাহকের এসকিউগুলিতে।
আমি প্রাথমিক টেবিল তৈরির কথা বলছি। একজন গ্রাহক আমাদের বলবেন যে তারা আমাদের একটি নতুন টেবিল প্রেরণ শুরু করতে যাচ্ছেন, এবং নমুনা ডেটা (বা কেবল প্রথম উত্পাদন ডেটাসেট) প্রেরণ করবেন, যা আমরা দেখি এবং ডেটা ধরে রাখার জন্য আমাদের প্রান্তে একটি টেবিল তৈরি করি। ভবিষ্যতের আমদানি পরিচালনা করতে এবং সেই সাথে নমুনায় কী রয়েছে তা পরিচালনা করতে আমরা আমাদের শেষের টেবিলটি তৈরি করতে চাই। তবে, নির্দিষ্ট সারি দীর্ঘ পেতে বাধ্য, তাই আমরা তাদের প্যাড করব। প্রশ্নটি কতটা, এবং প্রযুক্তিগত দিকনির্দেশনাগুলি কী?
আপনি এখানে অনেক অনুমান করছেন। অবশ্যই কিছু ক্ষেত্র বড় হতে পারে । কিন্তু আবার, তারা নাও পারে। বা, কিছু ছোট হতে পারে। কিছু অ-ইউনিকোড থেকে ইউনিকোডে পরিণত হতে পারে (তারা যখন বুঝতে পারে যে পৃথিবী আরও ছোট হচ্ছে এবং কেউ শেষের নামগুলিতে কেবল বেসিক এএসসিআইআই / মার্কিন ইংরেজি অক্ষর থাকতে পারে তা ধরে নিতে পারে না)। অথবা, তারা কোনও ক্ষেত্র প্রেরণ বন্ধ করতে পারে। অথবা তারা ভবিষ্যতে এক বা একাধিক ক্ষেত্র যুক্ত করতে পারে। এটি এবং অন্যান্য জিনিসের কোনও সমন্বয়। তাহলে কেন শুধুমাত্র VARCHAR
কলামগুলিতে ফোকাস করবেন ? যদি তারা বর্তমানে কোনও INT
মান প্রেরণ করছে এবং এক বা দুই বছরে তারা সর্বাধিক মানে পৌঁছে এবং একটি প্রেরণ শুরু করে BIGINT
? যদি তাদের 0 - 5 মানের সাথে একটি "স্থিতি" ক্ষেত্র থাকে তবে আপনি কি কেবল ধরে নিচ্ছেন?INT
কোনটি "প্যাডড" এটি বর্ধনের অনুমতি দেয় তবে সম্ভবত হওয়া উচিত TINYINT
?
আপনি নিরাপদে ভবিষ্যদ্বাণী করতে পারেন যে আপনার গ্রাহকদের ডেটা কীভাবে পরিবর্তিত হবে তা পূর্বাভাস দেওয়ার চেষ্টা করা সঠিক হওয়ার চেয়ে প্রায়শই ভুল হয়ে যায়। এবং সঠিক হওয়া ভাগ্য / কাকতালীয় বিষয় (যদি ভাগ্য না হয়, তবে কেবল লটারি খেলুন;)।
সুতরাং গাইডলাইনটি হ'ল:
- একটি অযোগ্য পরিবর্তনযোগ্য প্রশ্নের উত্তর দেওয়ার চেষ্টা করার সময় এবং শক্তি অপচয় করবেন না।
- পরিবর্তে, আপনার গ্রাহকের আসল তথ্য সম্পর্কিত যথাসম্ভব তথ্য পাওয়ার উপর মনোনিবেশ করুন এবং সেই সাথে (অর্থাত্ ডেটা-চালিত সিদ্ধান্ত গ্রহণ ;-)) নিয়ে যান।
আপনার কাছে ইতিমধ্যে উদাহরণস্বরূপ ডেটা রয়েছে, দুর্দান্ত। তবে, দয়া করে ভুলে যাবেন না যে আপনার কাছে আপনার গ্রাহকের যোগাযোগের তথ্যও রয়েছে: ফোন এবং / অথবা ইমেল। তাদের সাথে যোগাযােগ করুন! তাদের তাদের ডেটা স্পেসের জন্য জিজ্ঞাসা করুন (ঠিক আপনার সিস্টেমের মতোই, বর্তমানে তাদের সিস্টেমে থাকা ডেটাটির সর্বাধিক দৈর্ঘ্য 35 টি হতে পারে, তবে তাদের সিস্টেমটি এটি হিসাবে সংজ্ঞায়িত করেছে VARCHAR(50)
এবং তাদের সিস্টেমটি সেই দৈর্ঘ্য পর্যন্ত গ্রহণ করবে, এই ক্ষেত্রে আপনার ব্যবহার করা উচিত 50)। এবং, তাদের কাছে জিজ্ঞাসা করুন যে তাদের নিকট-মেয়াদে পরিবর্তনের কোনও পরিকল্পনা আছে এবং সেই ডেটাটাইপগুলি (টাইপ এবং / বা আকার)।