5+ কলামের প্রাথমিক কীটি বড় (100 মিলিয়ন +) সারণীর জন্য খারাপ?


12

আমি কিছু বাস্তব জীবনের ডিবি সম্পর্কিত বিষয়গুলি পড়ছিলাম এবং একটি প্রকল্পে একটি 100 মিলিয়ন সারি প্লাস টেবিল ছিল যার প্রাথমিক হিসাবে 5 টি কলাম রয়েছে। আমি ভাবছি এটি খারাপ, তবে কেউ আমাকে বলতে পারবেন কেন?

টেবিলটি এক ধরণের মাইক্রো রোলআপ / সমষ্টি টেবিল ছিল, সুতরাং 5 টি কলামটি ছিল (দিন, বাজার_আইডি, পণ্য_আইডি ...)। প্রথমে আমি ভেবেছিলাম যে 5 টি কলামের প্রাথমিক কীটি আদর্শ নয়, তবে যত বেশি আমি ভেবেছি, এটি খারাপ হওয়ার কারণেই আমি সত্যিকার অর্থে আসতে পারি না।

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


আদর্শভাবে, আপনি পিকে তুলনামূলকভাবে ছোট হতে চান - মেমরির ওভারহেড কম। একটি 5 কলাম পিকে সহ, এটি স্বয়ংক্রিয়ভাবে কমপক্ষে প্রায় হতে চলেছে। 5 আইএনটি - যখন 1 আইএনটি (Auto_increment) এর পরিবর্তে এটি করতে পারে।
ভ্যারেস

উত্তর:


9

খুব জটিল প্রাথমিক কীগুলির সাথে কার্য সম্পাদনের সমস্যা রয়েছে। এবং এটি অনুলিপি করার পাশাপাশি কোনও সরল প্রাথমিক কীও হতে পারে না।

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

কিছু প্রতিবেদনের ডাটাবেসগুলি স্টার স্কিমার ধরণটিকে অনুকরণ করে এমনকি এটি সেভাবে স্পষ্টভাবে ডিজাইন করা না হলেও।

100 মিলিয়ন + সারিগুলি একটি ফ্যাক্ট টেবিলের জন্য খুব বেশি বড় নয়, বিশেষত আজকের বড় ডেটা সহ।


2

প্রশ্নের মধ্যে থাকা সারণীটি ছিল একটি রোলআপ / সমষ্টি টেবিল।

তবে এটি কেবল সূক্ষ্ম নয়, এটি "সঠিক"।

এবং এটি সংক্ষিপ্ত টেবিলের মতো গন্ধযুক্ত, যেহেতু এটি শুরু হয় day

আপনার কিছু গৌণ সূচক আছে? মনে রাখবেন যে আপনি যদি InnoDB ব্যবহার করছেন তবে বাকি মূল কলামগুলি দ্বিতীয় সূচকের শেষের দিকে সজ্জিত হবে। আবার এটি অগত্যা কোনও সমস্যা নয়।

100M সারিগুলি রোলআপের জন্য অনেক কিছু। মনে হচ্ছে টেবিলটি খুব সূক্ষ্ম। এটি হ'ল, সম্ভবত পরিবর্তে যদি (তারিখ, ক, খ, সি, ডি) আপনার পিকে সঙ্গে (তারিখ, ক, খ, গ), (তারিখ, বি, সি, ডি), (তারিখ, সি, d, a), (তারিখ, d, a, খ) (বা কিছু উপযুক্ত সংমিশ্রণ)। আমি এটি করছি, প্রতিটিতে কেবল 10M সারি থাকবে, যার ফলে রিপোর্টগুলি এখনও আরও দ্রুত তৈরি করা হবে, যখন প্রতিবেদনে প্রায় তত নমনীয়তা রয়েছে।

অথবা হতে পারে (সপ্তাহ, ক, খ, সি, ডি) এ স্যুইচ করুন, যা কেবলমাত্র 14 এম সারি হতে পারে। (সম্ভবত আরও।)

ছাঁটাইয়ের সুবিধার্থে পার্টিশন ব্যবহার করা --- উচ্চ গতির ইনজেশন --- ডেটা গুদাম টিপস --- সংক্ষিপ্ত সারণি । এগুলি কয়েকটি ডিডাব্লু প্রকল্পে আমি যে কৌশলগুলি বিকাশ করেছি তার সংক্ষিপ্তসার জানায়। আপনি যেমন অনুমান করতে পারেন, প্রতিটি প্রকল্প আলাদা। সংক্ষিপ্ত টেবিলগুলির 'টিপিকাল' সংখ্যা (আমার অভিজ্ঞতায়) 3-7। সংক্ষিপ্তকরণের লক্ষ্য হ'ল 10 টি ফ্যাক্ট সারি -> 1 সারসংক্ষেপ সারি। (এটি 'মিডিয়ান' হতে পারে)) বিরল ক্ষেত্রে আমি একটি সংক্ষিপ্তসার সারণি সংক্ষিপ্ত করে তুলেছিলাম। অন্য একটি বিরল ক্ষেত্রে, আমি ভাল প্রভাবের জন্য একটি সংক্ষিপ্তসার টেবিলটি পার্টিশন করেছি; সাধারণত সংক্ষিপ্তসার সারণীগুলি যথেষ্ট ছোট তাই কোনও ইউআই থেকে সরাসরি অ্যাক্সেসের জন্য এগুলি যথেষ্ট দ্রুত।


1

ভাল, আসলে 5+ কলাম সহ একটি পিকে থাকা নিজের পক্ষে অগত্যা খারাপ নয়।

এটি খারাপ হয়ে যায় যখন একবার পিকে ক্লাস্টারড ইনডেক্স হয়ে যায় যে এটির সারি শনাক্তকারী হিসাবে গণনা করা হবে এবং এভাবে এনসি সূচকে প্রতিটি সারিতে যুক্ত করা হবে। এটি প্রয়োজনীয় স্থানকে তাত্পর্যপূর্ণভাবে বাড়িয়ে তুলবে।

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

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

এটি বলেছিল - যে কোনও উপায়ে যেমন বাস্তবে সারণী করার মতো কোনও কারণ থাকতে পারে always সুতরাং সর্বোত্তম উত্তরটি আসলে বেশিরভাগ ক্ষেত্রে যেমন হয়: এটি নির্ভর করে!

শুভেচ্ছা ডেনিস


-2

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

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

সুতরাং সংক্ষিপ্তসার, সিন্টেটিক প্রাথমিক কী (স্বতঃবৃদ্ধি, গাইড, ..) বজায় রাখা, অনুলিপি করা, ...

সুতরাং আমি বিবেচনা করি, সিনট্যাটিক প্রাথমিক কী এবং আপনি উল্লেখ করেছেন এমন 5 টি কলামের জন্য অন্য কী।

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

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