ডাটাবেস স্তরটিতে অ্যাপ্লিকেশন লজিকের বিরুদ্ধে বা যুক্ত করার পক্ষে কী যুক্তি রয়েছে?


74

দ্রষ্টব্য প্রোগ্রামারস.স এবং ডিবিএ.স এর শ্রোতা আলাদা এবং এর ভিন্ন ভিন্ন দৃষ্টিভঙ্গি থাকবে, সুতরাং এই দৃষ্টান্তে আমি নকল করা বৈধ বলে মনে করি ডাটাবেস স্তরটিতে অ্যাপ্লিকেশন যুক্তির বিরুদ্ধে বা যুক্তিগুলি কিসের পক্ষে যুক্তিযুক্ত? প্রোগ্রামার্স.সে।

আমি এরই মধ্যে ডিবিএ নিয়ে আলোচনাটি খুঁজে পাইনি এবং মূল পোস্টটি এগুলি সবই বলেছে, তাই:

বেশিরভাগ সফ্টওয়্যার বিকাশকারীরা অ্যাপ্লিকেশন স্তরে অ্যাপ্লিকেশন লজিক রাখতে চান এবং সম্ভবত এটি এখানে রাখা আমাদের পক্ষে স্বাভাবিক মনে হয়। ডাটাবেস বিকাশকারীরা ট্রিগার এবং সঞ্চিত পদ্ধতি হিসাবে ডাটাবেস স্তরটিতে অ্যাপ্লিকেশন লজিক রাখতে চান বলে মনে হয়।

ব্যক্তিগতভাবে ডিবাগ করা সহজতর করার জন্য এবং স্তরগুলির দায়িত্বগুলি পৃথক রাখার জন্য আমি অ্যাপ্লিকেশন স্তরে যথাসম্ভব বেশি রাখা পছন্দ করি।

এ সম্পর্কে আপনার মতামতগুলি কী এবং ডাটাবেস স্তরটিতে কোনটি প্রয়োগ করা উচিত?

এনবি আমি এই প্রশ্নের জন্য ওপি নই, তবে মূল শব্দটিকে অক্ষত রেখেছি।


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

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

উত্তর:


56

বিভিন্ন ধরণের চিন্তাভাবনা ...

আপনার ডাটাবেস কোডটি আপনার অ্যাপ্লিকেশন ক্লায়েন্ট প্রযুক্তিকে ছাপিয়ে যাবে। ADO.NET -> লিনক -> ইএফ পাশাপাশি বিভিন্ন ধরণের ওআরএম সম্পর্কে ভাবেন। যদিও আপনি উপরের সমস্ত ক্লায়েন্ট প্রযুক্তির বিপরীতে গত সহস্রাব্দ থেকে এখনও এসকিউএল সার্ভার 2000 কোড চালাতে পারেন ।

আপনার একাধিক ক্লায়েন্টের সমস্যাও রয়েছে: আমার কাছে নেট, জাভা এবং এক্সেল। এটি অ্যাপ্লিকেশন লজিকের 3 সেট।

"ব্যবসায়িক যুক্তি" "ডেটা অখণ্ডতা যুক্তি" দিয়ে বিভ্রান্ত হওয়া উচিত নয়। আপনার যদি ক্লায়েন্টদের লেনদেন শুরু হয় এবং বিভিন্ন ধরণের চেক করা থাকে তবে তা অনেকগুলি ডিবি কল এবং একটি দীর্ঘ লেনদেন।

অ্যাপ্লিকেশন যুক্তি উচ্চ ডেটা ভলিউমের জন্য স্কেল করে না। সঞ্চিত প্রকোস ব্যবহার করে আমাদের প্রতি সেকেন্ডে 50k সারি রয়েছে। হাইবারনেট ব্যবহার করে এমন একটি বোন দল প্রতি সেকেন্ডে একটিও পেতে পারে না


যতক্ষণ আপনি রিলেশনাল ডাটাবেসগুলির সাথে থাকবেন
জেএমডি কোলেসেস

1
@ জেএমডিসোলেসেস: আপনার এখনও ব্যবসায়ের যুক্তি প্রয়োজন এবং একাধিক ক্লায়েন্ট অ্যাপ্লিকেশন পাওয়ার জন্য দায়বদ্ধ। সুতরাং আপনার বক্তব্য কী?
gbn

40

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

সর্বশেষ 500 ফরচুনে আমি কাজ করেছি এমন অ্যাপ্লিকেশনগুলিতে কমপক্ষে 25 টি ভাষায় লিখিত ছিল তাদের ওলটিপি ডাটাবেস মারছে। Programs প্রোগ্রামগুলির মধ্যে কিছুগুলি 1970 এর দশকে প্রযোজনায় চলে এসেছিল।

ডাটাবেসে এই ধরণের প্রয়োজনীয়তা প্রয়োগের বিকল্পটি হ'ল প্রতিটি অ্যাপ্লিকেশন প্রোগ্রামার তার সমস্ত বা তার অংশের 100% সঠিকভাবে পুনরায় প্রয়োগ করতে দেয়, প্রতিবার তারা যখন তাদের সম্পাদকের কাজটি সরিয়ে দেয়, সেই দিন থেকে যখন তারা প্রথম দরজা দিয়ে হাঁটেন ততদিন পর্যন্ত সংস্থাটি বাইরে চলে যায় from ব্যবসা।

মতভেদ কি?

এটি গ্রহের একক বৃহত্তম " নিজেকে পুনরাবৃত্তি করবেন না "?


একমাত্র একাধিক অ্যাপ্লিকেশন যদি একটি ডাটাবেস ব্যবহার করে তবে এটি প্রযোজ্য
জেএমডি কোলেসেস

1
@ জেএমডিসোলেসেস যা অনেক পরিবেশে সাধারণ। প্রধান অ্যাপ্লিকেশন, এক্সেল রিপোর্টিং, সার্ভার সাইড রিপোর্টিং, বাল্ক এক্সট্রাক্টস: এটি শীঘ্রই যুক্ত হবে। প্রায় কোনও ব্যাঙ্কিং অ্যাপ্লিকেশনটিতে ক্লায়েন্ট অ্যাপ্লিকেশনগুলির অগণিত বৈশিষ্ট্য রয়েছে,
gbn

অবশ্যই তবে সমস্ত অ্যাপ্লিকেশন ব্যাংকিংয়ের জন্য নয়।
জেএমডি কোলেসেস

29

আমি আমার পুরানো উত্তর প্রোগ্রামারগুলি থেকে নিরক্ষিত জুড়ে সরিয়ে নিয়ে যাচ্ছি, কারণ উত্তরগুলি সাইটের মধ্যে বেশ মেরুকৃত বলে মনে হচ্ছে।

আমি জানি আমি এখানে এক আঘাতের জগতের জন্য আছি তবে ব্যবসায়িক যুক্তিটি ডাটাবেসে রাখি কারণ:

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

কনসগুলি হ'ল: ব্যবহারকারীরা কাস্টম প্রতিবেদনের জন্য বিকাশকারীদের উপর কম নির্ভরশীল হয়ে উঠলে বিকাশকারীরা হুমকী দেয় - বিকাশকারীদের অন্য একটি প্রোগ্রামিং ভাষা শেখার প্রয়োজন

এগুলির কোনওটিরই দক্ষ বিকাশকারীকে গুরুত্ব দেওয়া উচিত নয়।

মজার বিষয় হল, বেশিরভাগ উত্তরগুলি 'ব্যবসায়িক যুক্তি' নয়, 'অ্যাপ্লিকেশন লজিক' হিসাবে বিবেচনা করে তবে মনে হয় যে কোনও সফ্টওয়্যার কোনও ব্যবসায়ের কার্য সরবরাহ করার জন্য নেই।


1
* সঞ্চিত প্রকল্পগুলি / ট্রিগারগুলি বিমূর্ততার একটি স্তর সরবরাহ করতে পারে যা আপনাকে অ্যাপ্লিকেশন কোডের সমস্ত পরিবর্তন না করেই ডাটাবেসে কাঠামোগত পরিবর্তন করতে দেয়। * ডাটাবেসের প্রতিটি ব্যবহারকারী বিশ্বস্তভাবে আপনার মিডওয়্যারটি ব্যবহার করবে না। * C'mon, একটি বিদেশী কী হয় একটি ব্যবসা নিয়ম !! * ডিবি থেকে সমস্ত চেক / সীমাবদ্ধতা / কোড অপসারণ করার অর্থ এটি নিজেকে অসঙ্গতি / দুর্নীতির বিরুদ্ধে রক্ষা করতে পারে না। * প্রতিটি অ্যাপ্লিকেশন কবে চালিত লেনদেনবিহীন ডিজাইনের জন্য কল করবে না যেমনগুলি সফল হয়ে ওঠার পরে ইবে তৈরি হয়েছিল এবং এটি তৈরি করতে সক্ষম হয়। * এসকিউএল এত কঠিন নয়, ভাবেন।
ক্রেগ

23

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


1
আমি মনে করি যে কেউ সিস্টেমটি স্পনসর করে সে ডেটাটির মালিক - তারা তার জন্য অর্থ প্রদান করেছে। এছাড়াও আমি ডেটাবেস হিট করার আগে প্রচুর সম্মিলিত সমস্যাগুলি সমাধান করি - অনেক ক্ষেত্রে এটি অনেক সহজ।
একে

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

17

আমি আমার ব্লগে আমার উত্তরটি লিখেছি । আমার উপসংহারটি হ'ল, অ্যাপ্লিকেশনটিতে এটি করা একবারে পুরো অ্যাপ্লিকেশনটি জীবনচক্র বিবেচনা করলে স্কেল হয় না।


3. অন্তর্নিহিত ডাটাবেসে অখণ্ডতা / পরীক্ষার সীমাবদ্ধতা যুক্ত করুন,ডাটাবেসের সঞ্চিত পদ্ধতি ভাষায় আরও জটিল কোড প্রয়োগ করা হয়েছে। এটি থেকে আমরা একটি কেন্দ্রীয় অবস্থান বজায় রাখার জন্য পেয়েছি এবং আমরা এমন অ্যাপ্লিকেশনগুলির জন্য এমনকি বিধিগুলির নিখুঁত প্রয়োগ করি যা আমরা জানি না! পুরো অ্যাপ্লিকেশন পোর্টফোলিও এবং জীবনচক্র জুড়ে ব্যবসায়ের নিয়মগুলি প্রকাশ করার জন্য আমরা একটি ভাষা পেয়েছি, যেহেতু ভাষা du ভ্রমণ ডেটাবেসের চেয়ে অনেক বেশি সময় পরিবর্তিত হয়। এবং এটি এমন একটি সিস্টেমে চলে যা ইতিমধ্যে সবচেয়ে গুরুত্বপূর্ণ অ্যাপ্লিকেশনগুলির মতো মিশন-সমালোচনামূলক। ত্রুটিগুলি বিদ্যমান কোড দ্বারা পরিচালিত হয় যা সেই অ্যাপ্লিকেশনগুলিতে ডাটাবেস ত্রুটিগুলি পরিচালনা করে। এখনও কোনও ঝুঁকি রয়েছে যে কোনও অ্যাপ্লিকেশন অবশ্যই ভেঙে যেতে পারে তবে তিনটি পরিস্থিতিতে এর মধ্যে এটি সর্বনিম্ন এবং কেবলমাত্র ভাঙা অ্যাপ্লিকেশনটিতে কোনও পরিবর্তন প্রয়োজন, তাদের সবকটিই নয় (এবং বেশিরভাগ এসপি / ডাটাবেস প্রক্রিয়া যদি সত্যই সত্যই প্রয়োজন হয় তবে একটি অ্যাপ্লিকেশনের জন্য ব্যতিক্রম করার অনুমতি দেবে)। আপনার গ্রিনফিল্ড সাইট বা ছোট সংস্থার সাথে এটি কিছু যায় আসে না মনে করুন? ঠিক আছে যদি আপনার ব্যবসা সফল হয়, 30 বছরের মধ্যে আপনি আমার বুদ্ধিমানের প্রতি মনোনিবেশ করতেন তা আশা করি!

… কিছু [আপত্তি] আমি প্রায়শই শুনি:

  • ডিবিতে মোতায়েন করা এসপি কোডটির সংস্করণ নিয়ন্ত্রণ করা কঠিন। আমি মনে করি না যে এটি কোনও অ্যাপ সার্ভারে মোতায়েন করা জাভা কোডটির সংস্করণ নিয়ন্ত্রণ করা কঠিন, এটি বলার অপেক্ষা রাখে না যে এটি মোটেই কঠিন নয়, এটি সাধারণ বিষয় than এবং রুবি-জমিতে, পুরো বইগুলি কেবল আপনার কোডটিকে কোনও বিকাশের পরিবেশ থেকে উত্পাদনের দিকে নিয়ে যাওয়ার বিষয়ে রচনা করা হয়, এটি এমন কোনও ভাষা যা অন্য কোনও ভাষা সম্প্রদায়ের সাথে লড়াই করছে বলে মনে হয় না। তবুও সঞ্চিত পদ্ধতি নিয়ন্ত্রণ করা সংস্করণ দৃশ্যত খুব কঠিন too
  • সঞ্চিত পদ্ধতিগুলি পরীক্ষা করা শক্ত। এটি একটি অদ্ভুত এক। শুরু করার জন্য, এসপিরা দৃ strongly়ভাবে টাইপ করা হয়; সংকলকটি আপনাকে বলবে যে কোনও কোড প্যাসে বা আউট এর কোনও অর্থ নেই, এবং কমপক্ষে ওরাকল-এ আপনার জন্য সমস্ত নির্ভরতা গণনা করবে। সুতরাং এটি রুবি ব্যাট থেকে বাদ দিয়ে আপনার প্রয়োজন হতে পারে সাধারণ ইউনিট পরীক্ষার একটি সেট। ওও কোডটি পরীক্ষা করার জন্য বিষয়টিকে অভ্যন্তরীণ স্থিতিতে পরীক্ষা করার জন্য উপস্থাপিত করার জন্য জোর করে ঠাট্টা করা দরকার - পরীক্ষার ডেটা কীভাবে আলাদা করা যায়? এখানে পিএল / এসকিউএল এবং অন্যান্য সরঞ্জামগুলির জন্য একটি ট্যাপ প্রযোজক রয়েছে। ডিবাগার এবং প্রোফাইলারও রয়েছে।
  • সঞ্চিত পদ্ধতি ভাষা সম্পূর্ণরূপে বৈশিষ্ট্যযুক্ত ভাষা নয়। ঠিক আছে, আমরা কেবল সঞ্চিত পদ্ধতিতে একটি সম্পূর্ণ অ্যাপ্লিকেশন লেখার চেষ্টা করছি না! সর্বাধিক উত্সর্গীকৃত এসপি ভাষাগুলিতে এমন সমস্ত আধুনিক নির্মান রয়েছে যা আপনি প্রত্যাশা করতেন এবং কমপক্ষে ওরাকল-এ আপনি জাভা সঞ্চিত পদ্ধতিগুলি সমস্ত ভাষা বৈশিষ্ট্য সহ ব্যবহার করতে পারেন যে ওও বিকাশকারীরা কোনও ভাষাতে বা বহিরাগত পদ্ধতিগুলির সাথে পরিচিত। যুক্তিটি বাস্তবায়িত হয় এমন ক্ষেত্রে কী ঘটে - এক জায়গায়, ডেটার কাছাকাছি - আসল ভাষাটি কেবল একটি বিশদ। পিএল / এসকিউএল স্থানীয় কোডে সংকলন করে এবং ডাটাবেসের সাথে প্রক্রিয়া চালায়; এর চেয়ে উচ্চতর পারফরম্যান্সের কোনও স্থাপত্য নেই।
  • আমি অন্য ভাষা শিখতে চাই না। এক সেকেন্ডের জন্য অবলোকন করা এটি কোনও বিকাশকারীদের মধ্যে একটি বিশাল লাল পতাকা (বিশেষত এমন একটি যা প্রযোজনা অ্যাপ্লিকেশনগুলিকে পরিবর্তনের প্রস্তাব দেয় যা অন্য ভাষায় যে কোনও উপায়ে হতে পারে!) যে কোনও আধুনিক পরিবেশে কাজ শিখতে অনেক কিছুই রয়েছে: একটি সাধারণ জাভা শপটিতে গ্রহন থাকতে পারে , ওয়েবলজিক, মাভেন, হাডসন, অ্যান্থিল, সাবভার্সন এবং অন্যদের সম্পূর্ণ আধিক্য, আপনাকে অ্যাপ্লিকেশন কোডের একক লাইন লেখার আগে শিখতে হবে। তুলনায় তুলনায় তুলনামূলকভাবে খুব উচ্চ স্তরের এসপি ভাষার কাজের জ্ঞান সোজা, এবং আপনাকেও সহায়তা করার জন্য আশেপাশের বিশেষজ্ঞ বা ডিবিএর চেয়ে আরও বেশি কিছু থাকবে। বিকাশকারী প্রিয় হাইবারনেট তার নিজস্ব কোয়েরি ভাষা নিয়ে আসে তা উল্লেখ করার দরকার নেই ...

...


12

এসকিউএল সেট যুক্তি এবং প্রয়োগ ভিত্তিক ফলাফল ফিল্টারিংয়ের মতো কাজ করে? এসকিউএল একটি দুর্দান্ত সেট ম্যানিপুলেশন ভাষা।

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

যদিও এটি সত্য যে EF বা NHibernate বা LinqToSql বা যাই হোক না কেন আপনাকে কোড দ্রুত তৈরি করতে দেয়, প্রতিটি প্রোগ্রামার তাদের পারফরম্যান্সের সাথে জানে যে কেবল এসকিউএল অনুকূল করা তথ্য পুনরুদ্ধারটিকে অপ্টিমাইজ করবে। আরডিবিএমএস কেবল এসকিউএল বোঝে, তাই সমস্ত কিছু বলা এবং শেষ করার আগে আপনাকে সমস্ত কিছু এসকিউএল তৈরি করতে হবে। (ধরে নিলাম যে আমরা সম্মত হতে পারি যে টিএসকিউএল এবং পিএলএসকিউএল এখনও এসকিউএল রয়েছে)


11

একটি কন যে লোকেরা অগত্যা আলোচনা করছে না - পেশাদাররা এখানে ক্লান্ত হয়ে পড়েছে - ব্যয়।

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


7

এখানে মনের মিলন, অর্থাত্ বিকাশকারীদের (ডিভি) এবং ডিবিএর মন অবশ্যই অনিবার্যভাবে ঘটবে। বিজনেস লজিক (বিএল) এর সাথে কাজ করা এবং ডেটাবেসগুলিতে সঞ্চয় করা এমন প্রভাব ফেলতে পারে যা এর বাস্তবায়নকে মহিমান্বিত বা ভয়ঙ্কর করে তুলতে পারে।

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

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

শুধুমাত্র সত্যই একটি প্রশ্ন রয়ে গেছে: আরডিবিএমএস নির্বিশেষে, বিএলকে ডেটাবেসের পুরো অংশ বা অংশে থাকা উচিত?

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

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

সুতরাং, বিকাশকারীকে দুটি ল্যাজেজে উত্স কোড এবং বিএল বিকাশ, ডিবাগ এবং পরিচালনা বজায় রাখার জন্য চ্যালেঞ্জ দেওয়া হয়েছে।

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

এবার মনের মিলনের জন্য !!!

বিকাশকারী এসপি কোড দেয় এবং পুনরুক্তি পদ্ধতি ব্যবহার করে। ডিবিএ এসপির দিকে তাকাচ্ছে। ডিবিএ নির্ধারণ করে যে একটি একক এসকিউএল বিবৃতি বিকাশকারী দ্বারা লিখিত পুনরাবৃত্ত পদ্ধতিগুলি প্রতিস্থাপন করতে পারে। বিকাশকারী দেখতে পান যে ডিবিএর দ্বারা প্রস্তাবিত এসকিউএল বিবৃতিতে অন্যান্য বিএল-সম্পর্কিত কোড বা এসকিউএল কল করা দরকার যা এসকিউএল বিবৃতিটির সাধারণ সম্পাদন পরিকল্পনা অনুসরণ করে না।

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

উপসংহার

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


4

ডিবিএর পূর্ণ কোনও ওয়েবসাইটে জিজ্ঞাসা করা একটি দুর্দান্ত প্রশ্ন। আশা করি বেশিরভাগ উত্তরই এসিআইডি অবস্থায় ডাটাবেস রাখার দিকে এবং "সুতরাং" ডাটাবেসে ব্যবসায়িক যুক্তি রাখার দিকে "প্রো" হবে। :-)

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


1
দুই স্তরে একই যুক্তি?
dezso

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

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

2
+1 এটি আমি যা করি – আমি কেবল এটি "ব্যবসায়িক লগইনটি ডেটাবেজে রেখে অ্যাপ্লিকেশনটিতে সুবিধাদি চেক স্থাপন" বলি
জ্যাক ডগলাস

1
এই কাজটি করার জন্য আপনার একটি নিয়মতান্ত্রিক পদ্ধতির দরকার। কোর অখণ্ডতার যুক্তি যা ডেটা সর্বদা প্রত্যাশাগুলির সাথে মেলে তা আগে ডেটাবেজে করা দরকার। ব্যতিক্রমী শর্তগুলির ডাটাবেস থেকে অ্যাপে ভাল যোগাযোগ বজায় রাখা এবং ক্লায়েন্ট তাদের ব্যবহারকারীর সাথে পর্যাপ্ত পরিমাণে যোগাযোগ করতে সক্ষম হওয়ার পরে আসে। তারপরে ডাটাবেসে ভ্রমণের আগে যাদের প্রত্যাশা করা হবে এটি সর্বাধিক সদৃশ অংশ এবং অগত্যা সিঙ্কে রাখতে হবে - আপনি যদি এই সিঙ্কে রাখার প্রয়োজনীয়তা হ্রাস করতে পারেন তবে আপনি সেরা হবেন।
কেড রক্স

2

অ্যাডাম মুশক উপরে যেমন বলেছিলেন, এখানে পারফরম্যান্সের জন্য আরও বেশি বিবেচনা করা দরকার। CPU 'র ব্যবহার. মেমরি ব্যবহার.

স্পষ্টত ভুল জিনিসগুলি ডাটাবেসে পৌঁছানো থেকে ব্লক করুন।

  • কিছু প্রাথমিক উপায় অনুসারে ইমেইল ঠিকানাগুলি ছাড়ে।
  • দৈর্ঘ্য পরীক্ষা করুন

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

আপনি কি ক্লায়েন্টে বা ডিবি সার্ভারে গণিত / প্রসেসিং করেন? আমার জন্য যা জটিলতা এবং জড়িত রেকর্ডের সংখ্যার উপর নির্ভর করে। ব্যবসায়ের যুক্তিটি সত্যই ডিবিতে করা উচিত যাতে প্রতিটি জিনিস একইভাবে হয় is
ভবিষ্যতে নিজেকে মাথাব্যথা বাঁচাতে ডিবিতে ডেটা লেখার জন্য আপনার সত্যিকারের ভিউগুলির একটি এপিআই তৈরি করা উচিত read

আপনার উপকারের জন্য প্রতিটি প্রান্তের শক্তিগুলি ব্যবহার করুন।

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