আমি একটি অ্যাপ্লিকেশন পেয়েছি যা বিকাশকারীদের মধ্যে কয়েকজনের মধ্যে বরং উত্তপ্ত আলোচনার জন্ম দিয়েছে।
মূলত, এটি একটি ওয়েব স্তর এবং একটি ব্যাকএন্ড স্তরে বিভক্ত। ওয়েব স্তরটি একটি সাধারণ ওয়েব ফর্মের মাধ্যমে তথ্য সংগ্রহ করে, এই ডেটাটি জেএসওএন ডকুমেন্ট হিসাবে (আক্ষরিক একটি .json ফাইল) স্ট্যাশ করে পিছনের প্রান্তে ব্যবহৃত একটি ওয়াচ ফোল্ডারে। পিছনের প্রান্তটি এই ফোল্ডারটি প্রতি কয়েক সেকেন্ড পরে পোল করে, ফাইলটি বাছাই করে এবং এর কার্য সম্পাদন করে।
ফাইলগুলি নিজেরাই খুব সাধারণ (যেমন সমস্ত স্ট্রিং ডেটা, কোনও নেস্টিং নয়) এবং প্রায় বৃহত্তম 1-2% সিস্টেম তার বেশিরভাগ সময় অলস ব্যয় করে (তবে কোনও নির্দিষ্ট সময়ে 100 বার্তা পর্যন্ত ফেটে যায়)। ব্যাকএন্ড প্রসেসিং পদক্ষেপটি প্রতি বার্তাটিতে প্রায় 10 মিনিট সময় নেয়।
যুক্তিটি তখন উপস্থিত হয় যখন কোনও বিকাশকারী পরামর্শ দেয় যে মেসেজিং স্তর হিসাবে ফাইল সিস্টেমটি ব্যবহার করা একটি খারাপ সমাধান, যখন এর পরিবর্তে কোনও রিলেশনাল ডাটাবেস (মাইএসকিউএল), নোএসকিউএল ডাটাবেস (রেডিস), বা এমনকি একটি সরল REST এপিআই কল ব্যবহার করা উচিত।
এটি লক্ষ করা উচিত যে রেডিসটি সারিবদ্ধ বার্তা হ্যান্ডলিংয়ের জন্য সংগঠনের অন্য কোথাও ব্যবহৃত হয়।
আমি আর্গুমেন্ট শুনেছি নীচে ভাঙ্গা
ফ্ল্যাট ফাইলের পক্ষে:
ফ্ল্যাট ফাইলগুলি অন্য কোনও সমাধানের চেয়ে বেশি নির্ভরযোগ্য, যেহেতু ফাইলটি কেবল "ঘড়ি" ফোল্ডার থেকে সরানো হয়ে গেলে "প্রসেসিং" ফোল্ডারে চলে যায় এবং শেষ পর্যন্ত "সম্পন্ন" ফোল্ডারে যায়। খুব নিম্ন স্তরের বাগগুলি বাদ দেওয়া বার্তাগুলি অদৃশ্য হওয়ার শূন্য ঝুঁকি রয়েছে যা যাইহোক অন্য জিনিসগুলি ভেঙে ফেলবে।
ফ্ল্যাট ফাইলগুলি বুঝতে কম প্রযুক্তিগত পরিশীলনের প্রয়োজন - কেবল
cat
এটি। লেখার জন্য কোনও প্রশ্ন নেই, দুর্ঘটনাক্রমে কোনও বার্তাটি সারিবদ্ধ করা এবং এটি চিরতরে চলে যাওয়ার ঝুঁকি নেই।ফাইল ম্যানেজমেন্ট কোডটি প্রোগ্রামিং স্ট্যান্ডপয়েন্ট থেকে ডাটাবেস এপিআইয়ের চেয়ে সহজ, কারণ এটি প্রতিটি ভাষার স্ট্যান্ডার্ড লাইব্রেরির অংশ। এটি কোড বেসের সামগ্রিক জটিলতা এবং তৃতীয় পক্ষের কোডের পরিমাণ আনতে হবে যা হ্রাস করে।
YAGNI নীতি বলে যে ফ্ল্যাট ফাইল ঠিক সূক্ষ্ম ডান এখন কাজ, কোন একটি আরো জটিল সমাধান পরিবর্তন করার জন্য প্রদর্শিত প্রয়োজনের, তাই এটি ছেড়ে।
একটি ডাটাবেসের পক্ষে:
ফাইলগুলিতে পূর্ণ ডিরেক্টরি ডিরেক্টরি থেকে কোনও ডাটাবেস স্কেল করা সহজ
ফ্ল্যাট ফাইলগুলিতে কারও ঝুঁকি থাকে যে কেউ "সম্পন্ন" ফাইলটি "ওয়াচ" ডিরেক্টরিতে ফিরে অনুলিপি করে। এই অ্যাপ্লিকেশনটির প্রকৃতির কারণে (ভার্চুয়াল মেশিন পরিচালনা) এর ফলে বিপর্যয়কর ডেটা ক্ষতি হতে পারে।
অ্যাপ্লিকেশনটিকে টি / এস-তে আরও প্রযুক্তিগত পরিশ্রমের প্রয়োজন হ'ল অশিক্ষিত কর্মীরা কেবল কিছু নিয়ে ঝুঁকির মাধ্যমে কিছু আবিষ্কার করার সম্ভাবনা কম।
বিশেষত রেডিসের মতো কোনও কিছুর জন্য ডিবি সংযোগ কোডটি কমপক্ষে স্ট্যান্ডার্ড লাইব্রেরি ফাইল ম্যানেজমেন্ট ফাংশনের মতো শক্ত।
ডিবি সংযোগের কোডটি বিকাশকারী দৃষ্টিকোণ থেকে দৃশ্যমানভাবে ( কার্যকরভাবে না হলে) সহজ, কারণ ফাইল কারসাজির চেয়ে উচ্চতর স্তর।
আমি যা দেখতে পাচ্ছি তা থেকে উভয় বিকাশকারীর কাছে প্রচুর বৈধ পয়েন্ট রয়েছে।
এই দু'জনের মধ্যে, প্রো-ফাইলগুলি দেব, বা প্রো-ডাটাবেস ডেভ, কোনটি সফ্টওয়্যার ইঞ্জিনিয়ারিংয়ের সেরা অনুশীলনের সাথে সামঞ্জস্যপূর্ণ এবং কেন?