কখন আপনাকে অস্বীকৃতি জানাতে হবে?


45

আমি মনে করি আমরা সকলেই ডাটাবেস নরমালাইজের সাথে পরিচিত ।

আমার প্রশ্ন হ'ল: আপনি টেবিলগুলিকে অস্বীকৃতি জানাতে চাইলে এমন কয়েকটি গাইডলাইন কী?


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


1
সম্ভাব্য সদৃশ / সম্পর্কিত তথ্য কখন ডেটাবেস ডিজাইনকে অস্বীকৃতি জানাতে হবে
জন

উত্তর:


34

যখন এটি ওএলএপ অপারেশন হয় তখন ডেনরমালাইজ করুন, ওলটিপি করার সময় স্বাভাবিক করুন (বিভাগটি ডেনোরমালাইজেশনের অধীনে লিঙ্কিত নিবন্ধ থেকে)

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

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


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

সুসংহত এবং খুব সহায়ক। আমি ডিবিএর পরিধি নিয়ে কাজ করে যাচ্ছি এবং এটি অনেক কিছুই পুরো চেনাশোনা আনতে সহায়তা করে।
জেসন পি স্যালিনগার

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

22

ব্যথা না হওয়া পর্যন্ত সাধারণ করুন, এটি কাজ না করা পর্যন্ত অস্বীকৃতি (যেমন: কর্মক্ষমতা গ্রহণযোগ্য হয়ে ওঠে) :)


5
এটি সম্ভবত সেরা উত্তর নয়, তবে এটি স্ট্যাক ওভারফ্লোতে আমি দেখেছি সেরা ওয়ান-লাইনারগুলির মধ্যে একটি :)
ওভেন

15

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

নিয়ন্ত্রিত ডেনোরমালাইজেশন এর অর্থ হ'ল অপ্রয়োজনীয় ডেটার কারণে অসঙ্গতি দেখা দিতে পারে না তা নিশ্চিত করার জন্য প্রক্রিয়াগুলি প্রয়োগ করা হয়। এই অতিরিক্ত নিয়ন্ত্রণের ব্যয় এবং অস্বীকৃত ডেটার ঝুঁকি বিবেচনা করা দরকার যখন সিদ্ধান্ত নেওয়ার সময় সার্থক কিনা।

ডেনোরালাইজেশনের আর একটি সাধারণ কারণ হ'ল স্টোরেজ স্ট্রাকচারগুলিতে কিছু পরিবর্তন আনতে বা ডিবিএমএস অন্যথায় অনুমতি দেয় না এমন কিছু অন্যান্য শারীরিক অনুকূলকরণের অনুমতি দেয়। শারীরিক তথ্য স্বাধীনতার নীতি অনুসারে একটি ডিবিএমএসের অবশ্যই অকারণে ডাটাবেসে ডেটার যৌক্তিক উপস্থাপনা পরিবর্তন না করে অভ্যন্তরীণ স্টোরেজ কাঠামো কনফিগার করার উপায় থাকা উচিত। দুর্ভাগ্যক্রমে অনেক ডিবিএমএস কোনও প্রদত্ত ডেটাবেস স্কিমার জন্য উপলব্ধ শারীরিক প্রয়োগের বিকল্পগুলির মধ্যে অত্যন্ত সীমাবদ্ধ। তারা কেবল কাঙ্ক্ষিত যৌক্তিক মডেলটির উপ-অনুকূল প্রয়োগকে সমর্থন করে শারীরিক ডাটাবেস স্বাধীনতার সাথে আপোস করার ঝোঁক।

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


4

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


নোটারালাইমাইজেশন কেবল মানগুলি ক্যাশে করা হলে এটি বিশেষত সহায়ক Note যাতে এখনও সারণী / ক্ষেত্রের অন্তর্নিহিত সাধারণীকরণের সংগ্রহ রয়েছে। এটি হ'ল প্রতিটি মানের জন্য একটি মানক "মাস্টার" সেল থাকা উচিত - অন্য মানগুলি সেই মাস্টারের কাছ থেকে কেবল অনুলিপি বা গণনা হিসাবে পরিচিত - এবং অন্যথায় করার কোনও দৃ benefit় সুবিধা না পাওয়া পর্যন্ত সমস্ত মাস্টার সেলগুলি রাখুন স্বাভাবিক সম্পর্কের মধ্যে
স্টিভ

3

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

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

আমি কেবল এফকে এবং চেক সীমাবদ্ধতা ব্যবহার করে কীভাবে এই বিধি বিধানটি প্রয়োগ করতে পারি তা দেখিয়ে দিতে পারি - এটি গ্যারান্টি দেয় যে যতক্ষণ না সমস্ত সীমাবদ্ধতা বিশ্বাসযোগ্য হয় ততক্ষণ পর্যন্ত সমস্ত ডেটা ব্যবসায়ের নিয়মকে সন্তুষ্ট করে।

তবুও অন্য একটি উদাহরণ হল সময়কালের কোনও ফাঁক এবং কোনও ওভারল্যাপ থাকে না তা প্রয়োগ করার একটি উপায়


1
"আমি নিয়মিতভাবে অস্বীকার করি যাতে আমি সীমাবদ্ধতার সাথে ডেটা অখণ্ডতা প্রয়োগ করতে পারি" " একই অবস্থা. এটি একটি দুর্দান্ত বাণিজ্য অফ: আপনি কিছুটা অস্বীকার করলেও ডিআরআই অর্জন করেন ।
নিক চামাস

@ নিকচ্যামাস - এটি অত্যন্ত আকর্ষণীয়। আপনি যখন এই জাতীয় জিনিসগুলি করেন তখন আপনি কি পরিস্থিতিগুলি ভাগ করে নিতে পারেন?
একে

1
নিশ্চয়ই. আমাদের কাছে একটি পরিপূর্ণতা সিস্টেম রয়েছে যা সম্পূর্ণ হওয়ার জন্য আইটেমগুলির একটি সারি অন্তর্ভুক্ত করে। Fulfillableপ্রতিটি পরিপূর্ণ আইটেমের সমস্ত বিবরণ সহ একটি টেবিল রয়েছে এবং তারপরে একটি FulfillableQueueটেবিল রয়েছে যা এসকিউএল সার্ভারে সারি প্রয়োগ করে । নির্দিষ্ট সাথে কেবল পরিপূর্ণতাগুলি StateIDসারি হতে পারে। টেবিলের StateIDমধ্যে রয়েছে Fulfillableতবে আমি এটিকে প্রতিলিপি করছি FulfillableQueueএবং তারপরে এই সীমাবদ্ধতা FOREIGN KEYএবং CHECKসীমাবদ্ধতাগুলি প্রয়োগ করি ।
নিক চ্যামাস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.