ছোট সংগ্রহের জন্য কি শার্পিং কার্যকর?


11

দেখে মনে হচ্ছে যদি আমার কাছে বিশাল সংগ্রহ থাকে তবে ডেটাবেস শেডিং দুর্দান্ত। আমার যদি প্রচুর আকারের সংগ্রহ হয়? ধরা যাক যে 100 000 000 নথিগুলির 1 সংকলনের জন্য (খুব বড় মন্তব্য নয়) শারডিং কার্যকর। এটি কি প্রতিটি 10,000 নথি সহ 10 000 সংগ্রহের জন্য কার্যকর?

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

উত্তর:


5

এটি কি প্রতিটি 10,000 নথি সহ 10 000 সংগ্রহের জন্য কার্যকর?

বেশিরভাগ লোকের "একক বৃহত সংগ্রহ" সমস্যা রয়েছে এবং তাই এই ডেটা ভারসাম্য বজায় রাখার মাথাব্যথা হ্রাস করার জন্য শার্পিং স্পষ্টভাবে কার্যকর।

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

সত্যিই ছোট সংগ্রহগুলির জন্য, আপনি আপনার ডেটার অবস্থান পরিচালনা করতে স্বল্প-পরিচিত মুভিপ্রাইমারি কমান্ডটি ব্যবহার করতে পারেন ।

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


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

সত্যিই, আমি দেখতে পাচ্ছি যে আপনি প্রায়শই সূচকেও "প্রতারণা" করতে পারেন। আপনি দুটি সংগ্রহের থাকে fooএবং barএকই ডাটা স্ট্রাকচার সঙ্গে, আপনি তাদের মধ্যে একত্রীকরণ করতে bazসংগ্রহ ও ওভাররাইড _ids(কোডে): { _id: "foo123" }, { _id: "bar123" }। আপনার একটি বৃহত্তর সূচক রয়েছে, তবে আপনার কাছে কেবল একটি সূচক রয়েছে যা এতে অন্তর্ভুক্ত রয়েছে। প্রয়োজন নেই, কেবল "চিন্তার জন্য খাদ্য"।
গেটস ভিপি

4

মঙ্গোডিবি শার্ডিং একটি সংগ্রহকে ছোট ছোট অংশগুলিতে বিভক্ত করে এবং বেশ কয়েকটি মেশিনে সমানভাবে বিতর্কিত করে কাজ করে। ডিফল্ট খণ্ডের আকার, যা সাধারণত সবচেয়ে কার্যকর, 200MB। সুতরাং যদি কোনও সংগ্রহ 200MB এর চেয়ে অনেক বড় হয় তবে এটি খণ্ডগুলিতে বিভক্ত হবে না এবং সেহেতু শ্যাটারিংয়ের যোগ্য হবে না, সুতরাং কোনও সুবিধা হবে না।

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


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