এক ফোল্ডারে অনেকগুলি (10 মিলিয়ন) ফাইল স্থাপন করা


17

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

আমার এক ডিরেক্টরিতে পৃথক ফাইলের 10 মিলিয়ন ফলাফলের সম্ভাব্য সীরা সংরক্ষণ করতে কোনও সমস্যা হবে কি? বা এগুলি ফোল্ডারে বিভক্ত করার পরামর্শ দেওয়া হচ্ছে?

উদাহরণ:


5
এটি বিভক্ত করা ভাল। যে ডিরেক্টরিটি সেই ডিরেক্টরিটির বিষয়বস্তু তালিকাভুক্ত করার চেষ্টা করে তা সম্ভবত এটির শ্যুটিং করার সিদ্ধান্ত নেবে।
মুরু

8
সুতরাং আপনার যদি ইতিমধ্যে একটি ডাটাবেস থাকে তবে কেন এটি ব্যবহার করবেন না? আমি নিশ্চিত যে ডিবিএমএস ফাইল সিস্টেমের তুলনায় কয়েক মিলিয়ন রেকর্ড পরিচালনা করতে সক্ষম হবে। আপনি যদি ফাইল সিস্টেমটি ব্যবহারে অবিচ্ছিন্ন হয়ে থাকেন তবে কোনও ধরণের হ্যাশ ব্যবহার করে আপনাকে একটি বিভাজন স্কিম নিয়ে আসতে হবে, এই মুহুর্তে আইএমএইচও এটি ডিবি ব্যবহার করে কম কাজ করবে বলে মনে হচ্ছে।
রোডএমআর

3
আপনার মডেলটি আরও ভাল ফিট করতে পারে এমন ক্যাচিংয়ের জন্য অন্য একটি বিকল্প ম্যাকচেড বা পুনরায় করা যেতে পারে। এগুলি কী ভ্যালু স্টোর (যাতে তারা একক ডিরেক্টরি হিসাবে কাজ করে এবং আপনি কেবল নামেই আইটেমগুলিতে অ্যাক্সেস করেন)। রেডিস অবিরাম থাকে (পুনরায় চালু করার সময় ডেটা হারাবে না) যেখানে মেমক্যাচ করা আরও অস্থায়ী আইটেমগুলির জন্য।
স্টিফেন অসটারমিলার

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

আমার নিজের অভিজ্ঞতা থেকে আমি লিনাক্স ২.6-এ একটি ডিরেক্টরিতে 32 কে ফাইলের ওপরে যাওয়ার সময় ভাঙ্গা দেখেছি। অবশ্যই এই বিন্দুটি ছাড়িয়ে টিউন করা সম্ভব, তবে আমি এটির প্রস্তাব দেব না। কেবলমাত্র উপ-ডিরেক্টরিগুলির কয়েকটি স্তরগুলিতে বিভক্ত করুন এবং এটি আরও ভাল হবে। ব্যক্তিগতভাবে আমি এটি প্রতি ডিরেক্টরি 10,000 এর মধ্যে সীমাবদ্ধ করতাম যা আপনাকে 2 স্তর সরবরাহ করবে।
ওল্ফ

উত্তর:


25

আমার এক ডিরেক্টরিতে পৃথক ফাইলের সম্ভাব্য সার্কিট 10 মিলিয়ন ফলাফলগুলি সংরক্ষণ করতে কোনও সমস্যা হবে?

হ্যাঁ. সম্ভবত আরও কারণ রয়েছে তবে এগুলি আমি আমার মাথার উপরের অংশটি পোস্ট করতে পারি:

  • tune2fs একটি বিকল্প বলা আছে dir_indexডিফল্টরূপে চালু হওয়ার প্রবণতা (এটি উবুন্টুতে রয়েছে) যা পারফরম্যান্স হিট দেখার আগে আপনাকে প্রায় 100k ফাইলগুলি ডিরেক্টরিতে সঞ্চয় করতে দেয়। এটি আপনি যে 10 মিটার ফাইলগুলির কথা ভাবেন তারও কাছে নয়।

  • extফাইল সিস্টেমে একটি নির্দিষ্ট সর্বাধিক সংখ্যার আইওড থাকে। প্রতিটি ফাইল এবং ডিরেক্টরি 1 ইনোড ব্যবহার করে। ব্যবহারdf -iআপনার পার্টিশন এবং ইনোডগুলি বিনামূল্যে দেখার জন্য । আপনি যখন ইনোডগুলি শেষ করে চলেছেন তখন আপনি নতুন ফাইল বা ফোল্ডার তৈরি করতে পারবেন না।

  • কমান্ডগুলি পছন্দ করে rmএবং lsওয়াইল্ডকার্ড ব্যবহার করার সময় কমান্ডটি প্রসারিত করে এবং "আর্গুমেন্টের তালিকা খুব দীর্ঘ" দিয়ে শেষ হবে। findফাইলগুলি মুছতে বা তালিকাবদ্ধ করতে আপনাকে ব্যবহার করতে হবে । এবং findধীর হতে থাকে।

বা এগুলি ফোল্ডারে বিভক্ত করার পরামর্শ দেওয়া হচ্ছে?

হ্যাঁ. সবচেয়ে স্পষ্টভাবে. মূলত আপনি 1 ডিরেক্টরিতে 10m ফাইলও সঞ্চয় করতে পারবেন না।

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


8

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

মাপকাঠি

রেফ: https://medium.com/@hartator/benchmark- दीप-directory-st संरचना-vs-flat-directory-st संरचना-to-store-millions-of-files-on-ext4-cac1000ca28


1
ধন্যবাদ, এটি খুব দরকারী। আমি এটি কোনও সাইটে ব্যবহার করছি এবং /abc/efg.html ডিরেক্টরি কাঠামো থাকতে এই অংশটিকে পুনরায় প্রোগ্রাম করা সত্যই সমস্যা হয়ে দাঁড়িয়েছে। তাই আমি ভবিষ্যতে একটি ফ্ল্যাট ডিরেক্টরিতে ফিরে যাব।
কোহজাহ ব্রীজ

0

একটি বাইনারি অনুসন্ধান সহজেই লক্ষ লক্ষ রেকর্ড পরিচালনা করতে পারে তাই একক ডিরেক্টরি অনুসন্ধান করা কোনও সমস্যা হবে না। এটি খুব দ্রুত করতে হবে।

মূলত আপনি যদি 32 বিট সিস্টেম ব্যবহার করেন তবে 2 জিবি রেকর্ড পর্যন্ত বাইনারি অনুসন্ধান করা সহজ এবং ভাল।

একটি ওপেন সোর্স সফ্টওয়্যার বেরেকলি ডিবি আপনাকে সহজেই পুরো ফলাফলটিকে একটি এন্ট্রির অধীনে সংরক্ষণ করার অনুমতি দেয় এবং সন্ধানটি অন্তর্নিহিত করতে পারে।

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