একটি সম্মুখভাগ এবং ব্যাকএন্ডের মধ্যে পরিবহণ হিসাবে ফ্ল্যাট ফাইল বনাম ডাটাবেস / এপিআই ব্যবহার করা


20

আমি একটি অ্যাপ্লিকেশন পেয়েছি যা বিকাশকারীদের মধ্যে কয়েকজনের মধ্যে বরং উত্তপ্ত আলোচনার জন্ম দিয়েছে।

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

ফাইলগুলি নিজেরাই খুব সাধারণ (যেমন সমস্ত স্ট্রিং ডেটা, কোনও নেস্টিং নয়) এবং প্রায় বৃহত্তম 1-2% সিস্টেম তার বেশিরভাগ সময় অলস ব্যয় করে (তবে কোনও নির্দিষ্ট সময়ে 100 বার্তা পর্যন্ত ফেটে যায়)। ব্যাকএন্ড প্রসেসিং পদক্ষেপটি প্রতি বার্তাটিতে প্রায় 10 মিনিট সময় নেয়।

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

এটি লক্ষ করা উচিত যে রেডিসটি সারিবদ্ধ বার্তা হ্যান্ডলিংয়ের জন্য সংগঠনের অন্য কোথাও ব্যবহৃত হয়।

আমি আর্গুমেন্ট শুনেছি নীচে ভাঙ্গা


ফ্ল্যাট ফাইলের পক্ষে:

  • ফ্ল্যাট ফাইলগুলি অন্য কোনও সমাধানের চেয়ে বেশি নির্ভরযোগ্য, যেহেতু ফাইলটি কেবল "ঘড়ি" ফোল্ডার থেকে সরানো হয়ে গেলে "প্রসেসিং" ফোল্ডারে চলে যায় এবং শেষ পর্যন্ত "সম্পন্ন" ফোল্ডারে যায়। খুব নিম্ন স্তরের বাগগুলি বাদ দেওয়া বার্তাগুলি অদৃশ্য হওয়ার শূন্য ঝুঁকি রয়েছে যা যাইহোক অন্য জিনিসগুলি ভেঙে ফেলবে।

  • ফ্ল্যাট ফাইলগুলি বুঝতে কম প্রযুক্তিগত পরিশীলনের প্রয়োজন - কেবল catএটি। লেখার জন্য কোনও প্রশ্ন নেই, দুর্ঘটনাক্রমে কোনও বার্তাটি সারিবদ্ধ করা এবং এটি চিরতরে চলে যাওয়ার ঝুঁকি নেই।

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

  • YAGNI নীতি বলে যে ফ্ল্যাট ফাইল ঠিক সূক্ষ্ম ডান এখন কাজ, কোন একটি আরো জটিল সমাধান পরিবর্তন করার জন্য প্রদর্শিত প্রয়োজনের, তাই এটি ছেড়ে।

একটি ডাটাবেসের পক্ষে:

  • ফাইলগুলিতে পূর্ণ ডিরেক্টরি ডিরেক্টরি থেকে কোনও ডাটাবেস স্কেল করা সহজ

  • ফ্ল্যাট ফাইলগুলিতে কারও ঝুঁকি থাকে যে কেউ "সম্পন্ন" ফাইলটি "ওয়াচ" ডিরেক্টরিতে ফিরে অনুলিপি করে। এই অ্যাপ্লিকেশনটির প্রকৃতির কারণে (ভার্চুয়াল মেশিন পরিচালনা) এর ফলে বিপর্যয়কর ডেটা ক্ষতি হতে পারে।

  • অ্যাপ্লিকেশনটিকে টি / এস-তে আরও প্রযুক্তিগত পরিশ্রমের প্রয়োজন হ'ল অশিক্ষিত কর্মীরা কেবল কিছু নিয়ে ঝুঁকির মাধ্যমে কিছু আবিষ্কার করার সম্ভাবনা কম।

  • বিশেষত রেডিসের মতো কোনও কিছুর জন্য ডিবি সংযোগ কোডটি কমপক্ষে স্ট্যান্ডার্ড লাইব্রেরি ফাইল ম্যানেজমেন্ট ফাংশনের মতো শক্ত।

  • ডিবি সংযোগের কোডটি বিকাশকারী দৃষ্টিকোণ থেকে দৃশ্যমানভাবে ( কার্যকরভাবে না হলে) সহজ, কারণ ফাইল কারসাজির চেয়ে উচ্চতর স্তর।


আমি যা দেখতে পাচ্ছি তা থেকে উভয় বিকাশকারীর কাছে প্রচুর বৈধ পয়েন্ট রয়েছে।

এই দু'জনের মধ্যে, প্রো-ফাইলগুলি দেব, বা প্রো-ডাটাবেস ডেভ, কোনটি সফ্টওয়্যার ইঞ্জিনিয়ারিংয়ের সেরা অনুশীলনের সাথে সামঞ্জস্যপূর্ণ এবং কেন?


1
এই দস্তাবেজগুলি কত বড় এবং আপনার সেগুলি রাখা কত দিন দরকার?
জেফো

1
সবচেয়ে খারাপ কে কে, এবং কয়েক মাস (লগিং / সম্মতি উদ্দেশ্যে)
মিকি TK

2
কোনও মেসেজিং পরিষেবা হিসাবে ডাটাবেস ব্যবহার করা কোনও ফাইল-সিস্টেমের মতোই খারাপ না? উভয় ক্ষেত্রেই আপনি এমন কিছু ব্যবহার করেন যা এর উদ্দেশ্যে নয়।
পিটার বি

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

রেডিসের স্পষ্ট বিক্রয় পয়েন্টগুলির মধ্যে একটি হ'ল পিটারবি
মাইকি টি কে

উত্তর:


16

ডেটাবেস বা ইওয়ানের দ্বারা উল্লিখিত সারি পদ্ধতিতে জড়িত কোনও সমাধানে স্যুইচ করা

  • উভয় ব্যাকএন্ড এবং সম্মুখভাগে একটি নতুন, জটিল সিস্টেমে নির্ভরতা তৈরি করুন
  • অপ্রয়োজনীয় জটিলতা এবং ব্যর্থতার নতুন পয়েন্টগুলির একটি sh * লোড উপস্থাপন করুন
  • ব্যয় বৃদ্ধি (মালিকানা ব্যয় সহ)

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

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


মেগা-dittos। এবং নিশ্চিত করুন যে আপনি ফাইল ফর্ম্যাট (গুলি) নথি করেছেন, এটি বজায় রেখেছেন এবং বিতরণ করেছেন। পরবর্তী: "অশিক্ষিত কর্মীরা ... আশেপাশে পোঁকছেন" সম্পর্কে ওপি বুলেট; যদি এটি সত্যিকারের উদ্বেগ হয় তবে আপনার সমস্ত সিস্টেমিক সমস্যা রয়েছে। আমাদের "একা বিকাশকারী" সংস্কৃতিতে আমাদের সাথে সবচেয়ে খারাপ ঘটনাটি ঘটেছিল কিছু সময়ের অযোগ্য কোডিং এবং সমষ্টিগত অজ্ঞতা কারণ সময়ের সাথে সাথে মূল কোডারগুলি বাকী ছিল। এটি শুরু হওয়ার 20 বছর পরে আমি সেখানে পৌঁছেছিলাম এবং আমাদের একটি রক্ষণাবেক্ষণ দুঃস্বপ্ন ছিল।
রাডারবব

1
ফাইল ভিত্তিক সমাধানটি কাজ করার কারণে, আমি স্বীকার করি যে আপনি তালিকাভুক্ত কারণে স্যুইচিং অর্থহীন। একটি পরিষ্কার শীট থেকে শুরু করে, ফাইলগুলি ব্যবহারের ক্ষেত্রে কেসটি করা আরও শক্ত হবে।
ইয়ান

10

আমি মনে করি না যে সমাধানটি উত্তরাধিকারসূত্রে একটি খারাপ অভ্যাস, সুতরাং সবচেয়ে ভাল অনুশীলনটি দেওয়া উত্তর দেওয়া কঠিন হতে পারে।

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

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

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

আমি নিশ্চিত নই যে কোনও উপাত্ত যেভাবেই এই প্রসঙ্গে সমাধান হয় solution আপনি যদি একই সার্ভারে জিনিসগুলির সাথে যোগাযোগ করে থাকেন তবে কোনও ধরণের আইপিসি করা যেতে পারে, না?


5

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

আপনি যদি লেনদেনের উভয় পক্ষকে নিয়ন্ত্রণ করেন তবে আমি আপনাকে প্রস্তাবিত অনেকগুলি সহজ কুইউিং সিস্টেমের দিকে নজর দেওয়ার পরামর্শ দিচ্ছি। জিরোমিকিউ, রাবিট এমকিউ, এমএসএমকিউ ইত্যাদির পরিবর্তে ডাটাবেস। তবে আপনি বোঝাচ্ছেন, এটি যদি ভেঙে যায় ...


-3

ডাটাবেস সমাধানটি সঠিক। এটি একটি নির্দিষ্ট হোস্ট বা সীমানা শর্তের উপর অনেক নির্ভরতা সমাধান করে।

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

ডাটাবেস সহ, আপনার একই সমস্যা থাকতে পারে তবে আপনি মুছে ফেলতে মুছে ফেলার জন্য নিরীক্ষণ রাখতে পারেন বা কেবল যুক্তি সন্নিবেশ করতে পারেন।

ফাইল সিস্টেমে আপনার যদি ফাইলের নাম যেমন ওএএসআইএস প্রয়োগ করতে হয় তবে আপনাকে OASIS.john_doe.system1.20160202 ফাইল তৈরি করতে হবে। এটি ক্লান্তিকর হয়ে ওঠে এবং ডাটাবেসে আরও সহজে উপস্থাপিত হতে পারে। এমনকি এর ভিত্তিতে আপনার ডাটাবেস এবং যুক্তিতে নাল ক্ষেত্র থাকতে পারে

আপনি টেবিলগুলিতে যে কোনও প্যাচ বা ফিক্সগুলি করতে চাইতে পারেন সেই ক্ষেত্রে ডাটাবেসগুলির পরিবর্তে একটি সম্পূর্ণ ফাইল ডিরেক্টরি আপডেট করা সহজ। অবশ্যই আপনি এটি ফাইল সিস্টেমে করতে পারেন তবে ডাটাবেস আপডেট আরও অন্তর্নিহিত।

উদাহরণস্বরূপ, আপনি পুনরায় কাজ করতে চান তবে ওএএসআইএসের চেয়ে আলাদা সিস্টেমের সাথে ডিইএসআরটি এবং জন_ডো-কে doe_smith এবং 20160101 থেকে 20151231 তারিখ বলুন

আসল সেট থেকে শেল স্ক্রিপ্টের সাহায্যে ফাইলগুলি তৈরি না করে DESERT / doe_smith / 20151231 এর জন্য সারি তৈরি করা সহজ।

সুতরাং পাঠযোগ্যতা থেকে, এক্সটেনশন পয়েন্টের দৃষ্টিতে ডাটাবেসের সমাধান আরও ভাল।


1
দয়া করে আপনার অর্থটি কী তা ব্যাখ্যা করুন ... আমি যেখান থেকে বসেছি সেখানে থেকে একটি ডাটাবেস সমাধান কেবলমাত্র অতিরিক্ত অতিরিক্ত নির্ভরতা তৈরি করে এবং নতুন সীমানা শর্ত / ব্যর্থতার পয়েন্টগুলি উপস্থাপন করে।
দার্থজিজকা

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