প্রথমত, একটি রিলেশনাল ডাটাবেসের রাইসন ডি'ট্রে (হওয়ার কারণ) সত্তার মধ্যে সম্পর্কের মডেল করতে সক্ষম হতে হবে। যোগদানগুলি কেবল সেই প্রক্রিয়াগুলি যার মাধ্যমে আমরা সেই সম্পর্কগুলি অতিক্রম করি। এগুলি অবশ্যই নামমাত্র ব্যয়ে আসে, তবে যোগদান না করে, সত্যিকারের কোনও সম্পর্কিত ডেটাবেস থাকার কোনও কারণ নেই।
একাডেমিক জগতে আমরা বিভিন্ন সাধারণ ফর্মগুলির মতো জিনিসগুলি শিখি (1 ম, দ্বিতীয়, তৃতীয়, বয়েস-কোড্ড ইত্যাদি), এবং আমরা বিভিন্ন ধরণের কী (প্রাথমিক, বিদেশী, বিকল্প, অনন্য ইত্যাদি) এবং কীভাবে শিখি ডাটাবেস ডিজাইন করতে এই জিনিসগুলি একসাথে ফিট করে। এবং আমরা এসকিউএল এর অধ্যয়নগুলি পাশাপাশি কাঠামো এবং ডেটা (ডিডিএল এবং ডিএমএল) উভয়ই পরিচালনা করে শিখি learn
কর্পোরেট বিশ্বে অনেকগুলি একাডেমিক কনস্ট্রাক্টস আমাদের বিশ্বাস করতে পরিচালিত হওয়ার চেয়ে যথেষ্ট কম কার্যকর বলে প্রমাণিত হয়। একটি নিখুঁত উদাহরণ একটি প্রাথমিক কী এর ধারণা। একাডেমিকভাবে এটি সেই বৈশিষ্ট্য (বা বৈশিষ্ট্যগুলির সংগ্রহ) যা সারণীতে একটি সারি অনন্যভাবে চিহ্নিত করে। সুতরাং অনেকগুলি সমস্যাযুক্ত ডোমেনে, যথাযথ একাডেমিক প্রাথমিক কীটি 3 বা 4 টি বৈশিষ্ট্যের সংমিশ্রণ। তবে, আধুনিক কর্পোরেট বিশ্বের প্রায় প্রত্যেকে একটি টেবিলের প্রাথমিক কী হিসাবে একটি স্বয়ংক্রিয়ভাবে উত্পাদিত, অনুক্রমিক পূর্ণসংখ্যা ব্যবহার করে। কেন? দুটি কারণ। প্রথমটি হ'ল কারণ আপনি যখন সমস্ত জায়গাতে FK গুলি স্থানান্তর করছেন তখন এটি মডেলটিকে আরও পরিষ্কার করে তোলে। দ্বিতীয়, এবং এই প্রশ্নের সবচেয়ে জার্মান, হ'ল যে যুক্তগুলির মাধ্যমে তথ্য পুনরুদ্ধার করা একটি একক পূর্ণসংখ্যার তুলনায় 4 ভার্চার কলামগুলির চেয়ে দ্রুত এবং বেশি কার্যকর (যেমন ইতিমধ্যে কয়েকটি লোকেরা উল্লেখ করেছেন)।
আসুন ওয়ার্ল্ড ডেটাবেসগুলির দুটি নির্দিষ্ট সাব-টাইপের মধ্যে এখন আরও গভীর খনন করা যাক। প্রথম প্রকারটি হ'ল একটি লেনদেনের ডাটাবেস। আধুনিক সাইটগুলিতে ড্রাইভিং করা অনেকগুলি ই-বাণিজ্য বা কন্টেন্ট ম্যানেজমেন্ট অ্যাপ্লিকেশনগুলির জন্য এটি ভিত্তি। একটি লেনদেন ডিবি দিয়ে আপনি "ট্রানজেকশন থ্রুপুট" এর দিকে ভারী অনুকূলিতকরণ করছেন। সর্বাধিক বাণিজ্য বা সামগ্রী অ্যাপ্লিকেশনগুলিকে সন্নিবেশ সম্পাদনা (অন্যান্য সারণীতে) সহ কোয়েরি পারফরম্যান্সের (নির্দিষ্ট সারণীগুলি থেকে) ভারসাম্য বজায় রাখতে হবে, যদিও প্রতিটি অ্যাপ্লিকেশানের সমাধানের জন্য তার নিজস্ব অনন্য ব্যবসা পরিচালিত সমস্যা থাকবে।
দ্বিতীয় ধরণের রিয়েল ওয়ার্ল্ড ডাটাবেস হ'ল রিপোর্টিং ডাটাবেস। এগুলি ব্যবসায়ের ডেটা একত্রিত করতে এবং অর্থবহ ব্যবসায়িক প্রতিবেদন উত্পন্ন করতে প্রায় একচেটিয়াভাবে ব্যবহৃত হয়। এগুলি লেনদেনের ডেটাবেসগুলির চেয়ে সাধারণত আলাদা আকারে তৈরি হয় যেখানে ডেটা উত্পন্ন হয় এবং তারা বাল্ক ডেটা লোডিং (ইটিএল) এবং বড় বা জটিল ডেটা সেটগুলির সাথে ক্যোয়ারি পারফরম্যান্সের জন্য অত্যন্ত অনুকূল হয় optim
প্রতিটি ক্ষেত্রে, বিকাশকারী বা ডিবিএর কার্যকারিতা এবং পারফরম্যান্স কার্ভগুলি উভয়ের যত্ন সহকারে ভারসাম্য বজায় রাখা দরকার এবং সমীকরণের উভয় পক্ষেই প্রচুর পারফরম্যান্স বাড়ানোর কৌশল রয়েছে। ওরাকলে আপনি যা করতে পারেন তাকে "ব্যাখ্যা পরিকল্পনা" বলা যেতে পারে তাই আপনি কীভাবে কোনও ক্যোয়ারিকে পার্স করা এবং কার্যকর করতে পারেন তা সুনির্দিষ্টভাবে দেখতে পারেন। আপনি সূচকের ডিবি-র যথাযথ ব্যবহার সর্বাধিকীকরণের সন্ধান করছেন। সত্যিই দুষ্টু নো-হ'ল কোনও প্রশ্নের কোনও অংশ যেখানে কোনও ক্রিয়াকলাপ রাখা উচিত। আপনি যখনই এটি করেন, আপনি গ্যারান্টি দেন যে ওরাকল সেই নির্দিষ্ট কলামে কোনও সূচি ব্যবহার করবে না এবং আপনি সম্ভবত ব্যাখ্যা পরিকল্পনায় একটি পূর্ণ বা আংশিক টেবিল স্ক্যান দেখতে পাবেন। এটি কীভাবে কোনও ক্যোয়ারী লেখা যেতে পারে তার একটি নির্দিষ্ট উদাহরণ যা ধীরে ধীরে শেষ হয় এবং এর সাথে যোগ দেওয়ার কোনও যোগসূত্র নেই।
এবং আমরা যখন টেবিল স্ক্যানগুলির বিষয়ে কথা বলছি তারা স্পষ্টতই টেবিলের আকারের সাথে আনুপাতিকভাবে ক্যোয়ারী গতিকে প্রভাবিত করবে। 100 টি সারির একটি পূর্ণ টেবিল স্ক্যান এমনকি লক্ষণীয় নয়। একই কোয়েরিকে ১০০ মিলিয়ন সারি দিয়ে একটি টেবিলে চালান এবং আপনাকে ফেরতের জন্য আগামী সপ্তাহে ফিরে আসতে হবে।
এক মিনিটের জন্য স্বাভাবিককরণের কথা বলি। এটি আরও একটি বৃহত্তর ইতিবাচক একাডেমিক বিষয় যা অতিরিক্ত চাপে পড়তে পারে। আমরা যখন সাধারণীকরণের কথা বলি তখন বেশিরভাগ সময় আমরা সত্যই ডুপ্লিকেট ডেটাটিকে তার নিজস্ব টেবিলের মধ্যে রেখে এবং এফকে স্থানান্তরিত করে বোঝাই। লোকেরা সাধারণত 2NF এবং 3NF দ্বারা বর্ণিত পুরো নির্ভরতা জিনিসটি এড়িয়ে যায়। এবং এখনও একটি চূড়ান্ত ক্ষেত্রে, এটি অবশ্যই সম্ভব যে একটি নিখুঁত বিসিএনএফ ডাটাবেস রয়েছে যা প্রচুর এবং কোডটির পক্ষে একটি সম্পূর্ণ জন্তুটি লিখতে হবে কারণ এটি এতটাই স্বাভাবিক।
তাহলে আমরা কোথায় ভারসাম্য রাখব? কোন একক সেরা উত্তর নেই। সর্বোত্তম উত্তরগুলির মধ্যে কাঠামোগত রক্ষণাবেক্ষণ, ডেটা রক্ষণাবেক্ষণ এবং কোড তৈরি / রক্ষণাবেক্ষণের স্বাচ্ছন্দ্যের মধ্যে কিছুটা আপস হতে পারে ise সাধারণভাবে, ডেটারের সদৃশ যত কম হবে তত ভাল।
তাহলে কেন মাঝে মাঝে যোগ দেয় ধীর? কখনও কখনও এটি খারাপ সম্পর্কযুক্ত নকশা। কখনও কখনও এটি অকার্যকর সূচক হয়। কখনও কখনও এটি একটি ডেটা ভলিউম সমস্যা। কখনও কখনও এটি একটি মারাত্মকভাবে লিখিত ক্যোয়ারী।
এইরকম দীর্ঘ-বায়ুযুক্ত উত্তরের জন্য দুঃখিত, তবে আমি কেবলমাত্র 4-বুলেট প্রতিক্রিয়াটি ছড়ানোর পরিবর্তে আমার মন্তব্যগুলির চারপাশে একটি উত্তম প্রসঙ্গ সরবরাহ করতে বাধ্য বোধ করেছি।