প্রতিটি বিকাশকারীকে ডাটাবেস সম্পর্কে কী জানা উচিত? [বন্ধ]


206

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



ডেভেলপারগণ এবং অন্যান্য সফ্টওয়্যার পেশাদারদের ডাটাবেস সম্পর্কে জানা উচিত এমন গুরুত্বপূর্ণ ধারণা কী কী?


প্রতিক্রিয়াগুলির জন্য গাইডলাইন:


আপনার তালিকা সংক্ষিপ্ত রাখুন।
উত্তর প্রতি এক ধারণা সেরা।

নির্দিষ্ট করা
"ডেটা মডেলিং" একটি গুরুত্বপূর্ণ দক্ষতা হতে পারে , তবে এর অর্থ কী?

আপনার যুক্তি ব্যাখ্যা করুন।
আপনার ধারণাটি গুরুত্বপূর্ণ কেন? শুধু "সূচকগুলি ব্যবহার করুন" বলবেন না। "সেরা অভ্যাস" না পড়ে। আরও শিখতে আপনার শ্রোতাদের বোঝান।

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

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


15
কেন এই বন্ধ করতে ভোট ?? এটি একটি সম্প্রদায় উইকিয়া এবং তাই উপযুক্ত।
ডেভিড

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

7
@ এনভোভাইস: এই প্রসঙ্গে "সাবজেক্টিভ" শব্দটি এমন প্রশ্নগুলিকে বোঝায় যা সম্পূর্ণরূপে মতামতের বিষয়। "জো সেলকো বইটি সম্পর্কে আপনি কী ভাবেন?" - এটি একটি বিষয়গত প্রশ্ন। এই প্রশ্নটি উদ্দেশ্যমূলক তথ্য চাওয়া, এটি ঠিক তাই ঘটে যে কোনও একক "ডান" উত্তর নেই। আমি মনে করি একটি পদক্ষেপ ফিরে নেওয়া এবং জিজ্ঞাসা করা জরুরী, "এটি কি কেবল নিষ্ক্রিয় ব্যান্টার, না এটি কিছু বিকাশকারীদের পক্ষে কার্যকর?" আমার দুটি সেন্ট যাইহোক - এটির জন্য আমি রেপ পয়েন্ট উপার্জন করি না। :-)
অ্যারোনআউট

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

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

উত্তর:


106

ডেভেলপারদের প্রথমে ডেটাবেসগুলি সম্পর্কে জানা উচিত এটি হ'ল: ডাটাবেসগুলি কীসের জন্য ? কীভাবে তারা কাজ করে না, কীভাবে আপনি একটি তৈরি করেন না, এমনকি আপনি কীভাবে কোনও ডাটাবেজে ডেটা পুনরুদ্ধার বা আপডেট করার জন্য কোড লিখেন না। তবে তারা কিসের জন্য?

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

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

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

তৃতীয় জিনিসটি বিকাশকারীদের শিখতে হবে, কমপক্ষে একটি সংক্ষিপ্ত বিবরণে হ'ল ডেটা মডেলিং, ধারণামূলক ডেটা মডেলিং, লজিকাল ডেটা মডেলিং এবং শারীরিক ডেটা মডেলিং সহ।

ধারণামূলক ডেটা মডেলিং হ'ল ডেটা কেন্দ্রিক দৃষ্টিকোণ থেকে বিশ্লেষণের প্রয়োজনীয়তা।

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

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

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

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

রক্ষে!


খুব ভাল লেখা! এবং historicalতিহাসিক দৃষ্টিকোণটি এমন লোকদের পক্ষে দুর্দান্ত যারা এই সময়ে ডেটাবেস কাজ করে না (অর্থাৎ আমি)।
অ্যারোনআউট

6
সুন্দরভাবে লেখা। এবং আমি মনে করি লোকেরা 'কেবল এটি সম্পন্ন করার' চেষ্টা করে আপনার শেষ পয়েন্টটি প্রায়শই উপেক্ষা করা হয়।
ডেভ

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

1
আপনি যদি এই দানবটি দাউটিংয়ের পড়াটি দেখতে পেয়ে থাকেন তবে তা লিখতে কেমন লাগলো তা কল্পনা করুন! আমি একটি রচনা লিখতে স্থির করিনি। একবার আমি শুরু করার পরে, এটি কেবল প্রবাহিত বলে মনে হয়েছিল। যিনি সাহস যোগ করেছেন তিনি পাঠকদের সত্যিই সহায়তা করেছেন, আইএমও।
ওয়াল্টার মিট্টি

3
@ ওয়াল্টার আপনি এগুলি ব্যতীত আপনার সমস্ত পয়েন্টের জন্য ব্যাখ্যা সরবরাহ করেছেন: "ডেটাবেসগুলি সম্পর্কে ডেভেলপারদের দ্বিতীয় জিনিসটি শেখার দরকার হ'ল বিশ্বের সম্পূর্ণ ডেটা কেন্দ্রিক দৃষ্টিভঙ্গি data তথ্য কেন্দ্রিক বিশ্ব দৃষ্টিভঙ্গি প্রক্রিয়া কেন্দ্রিক বিশ্ব দর্শনের চেয়ে আলাদা is বেশিরভাগ বিকাশকারীরা যা কিছু শিখেছে। এই ফাঁকের তুলনায় কাঠামোগত প্রোগ্রামিং এবং অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিংয়ের মধ্যে ব্যবধান তুলনামূলকভাবে কম is " আপনি এই সম্পর্কে বিস্তারিত বলতে পারেন? আপনি বলেছিলেন যে ব্যবধানটি বড়, তবে আমি অনুমান করি যে আমি সত্যিই ডেটা-কেন্দ্রিক দৃষ্টিভঙ্গিটি বুঝতে চাই এবং এটি প্রক্রিয়া দর্শন থেকে কীভাবে ডুবে গেছে।
jedd.ahyoung

73

ভাল প্রশ্ন. নিম্নলিখিত কোনও নির্দিষ্ট ক্রমে কিছু চিন্তা রয়েছে:

  1. নরমালাইজেশন, কমপক্ষে দ্বিতীয় সাধারণ ফর্মের জন্য প্রয়োজনীয়।

  2. যথাযথ ক্যাসকেডিং মুছুন এবং আপডেটগুলি বিবেচনা করুন সহ রেফারেন্সিয়াল অখণ্ডতাও প্রয়োজনীয়।

  3. চেক সীমাবদ্ধতার ভাল এবং যথাযথ ব্যবহার। ডাটাবেসটিকে যতটা সম্ভব কাজ করতে দিন।

  4. উভয় ডাটাবেস এবং মাঝারি স্তরের কোডে ব্যবসায়ের যুক্তি ছড়িয়ে দেবেন না। একটি বা অন্যটি চয়ন করুন, পছন্দমতো মাঝারি স্তরের কোডে।

  5. প্রাথমিক কী এবং ক্লাস্টার কীগুলির জন্য একটি ধারাবাহিক পদ্ধতির সিদ্ধান্ত নিন।

  6. সূচকে ওভার করবেন না। আপনার সূচকগুলি বুদ্ধিমানের সাথে চয়ন করুন।

  7. ধারাবাহিক সারণী এবং কলামের নামকরণ। একটি মান বাছাই করুন এবং এটি আটকে দিন।

  8. ডাটাবেসে কলামগুলির সংখ্যা সীমিত করুন যা নাল মান গ্রহণ করবে।

  9. ট্রিগারগুলির সাথে দূরে সরে যাবেন না। তাদের ব্যবহার রয়েছে তবে তাড়াতাড়ি জিনিসগুলিকে জটিল করে তুলতে পারে।

  10. ইউডিএফগুলির সাথে সাবধানতা অবলম্বন করুন। এগুলি দুর্দান্ত তবে পারফরম্যান্স সমস্যার কারণ হতে পারে যখন আপনি সচেতন না হন যে তারা প্রায়শই জিজ্ঞাসায় কল করতে পারে।

  11. ডাটাবেস ডিজাইনে সেলকোর বইটি পান। লোকটি অহংকারী কিন্তু তার জিনিসগুলি জানে।


1
আইটেম 4 এ বিস্তৃত যত্ন নিন। এটি একটি বিষয় যা আমাকে সর্বদা আগ্রহী করে তুলেছে।
ব্র্যাড

9
@ ডেভিড: আমি সর্বদা এটি উভয় জায়গায় রেখে দেওয়া পছন্দ করেছি। এইভাবে আপনি ত্রুটিগুলি পাশাপাশি ব্যবহারকারীর ত্রুটি থেকে সুরক্ষিত রয়েছেন। প্রতিটি কলামটি বাতিলযোগ্য করার কোনও কারণ নেই, বা 1-12 সীমার বাইরে মানগুলিকে একটি Monthকলামে allowোকানোর অনুমতি দেওয়ার কোনও কারণ নেই । জটিল ব্যবসায়ের নিয়ম অবশ্যই অন্য গল্প।
অ্যারোনআউট

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

2
@ ডেভিড - যদি এটির একটি সম্পূর্ণ নিশ্চিততা থাকে যে ডাটাবেসগুলির পরিবর্তনগুলি কেবলমাত্র অ্যাপ্লিকেশনগুলিতেই ঘটে তবে আপনি সঠিক হতে পারেন। তবে এটি সম্ভবত বেশ বিরল। যেহেতু ব্যবহারকারীরা সম্ভবত ডাটাবেসে সরাসরি ডেটা প্রবেশ করবেন, তাই ডাটাবেসেও বৈধতা রাখা ভাল অনুশীলন। তদ্ব্যতীত, বৈধতার কিছু প্রকারের ডাটাবেসে আরও দক্ষতার সাথে করা হয়।
র্যান্ডি মাইন্ডার

1
পয়েন্ট # 8 সত্যই গুরুত্বপূর্ণ। সাধারণভাবে কলামের প্রকারগুলি কীভাবে পাবেন, তা জানা খুব গুরুত্বপূর্ণ।
ক্রিস ভেস্ট

22

প্রথমত, বিকাশকারীদের বুঝতে হবে যে ডাটাবেসগুলি সম্পর্কে কিছু জানার আছে। এগুলি কেবল যাদু ডিভাইস নয় যেখানে আপনি এসকিউএল রেখেছেন এবং ফলাফলের সেটগুলি পেয়েছেন, বরং তাদের নিজস্ব যুক্তি এবং তর্ক দিয়ে খুব জটিল সফটওয়্যার তৈরি করেছেন।

দ্বিতীয়ত, বিভিন্ন উদ্দেশ্যে বিভিন্ন ডাটাবেস সেটআপ রয়েছে। কোনও ডেটা গুদাম যদি উপলব্ধ থাকে তবে কোনও বিকাশকারী অন-লাইন ট্রানজেকশনাল ডাটাবেসের বাইরে historicalতিহাসিক প্রতিবেদন তৈরি করতে চান না।

তৃতীয়ত, বিকাশকারীদের যোগদান সহ বুনিয়াদি এসকিউএল বুঝতে হবে।

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

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

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

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

কীভাবে পরিকল্পনা পাবেন, এবং কীভাবে এটি সাধারণভাবে পড়বেন সে বিষয়ে তাদের প্রাথমিক জ্ঞান থাকতে হবে (কমপক্ষে পর্যাপ্ত পরিমাণে অ্যালগোরিদমগুলি দক্ষ কিনা তা জানাতে)।

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

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

আমি নিঃসন্দেহে কিছু ভুলে গেছি, তবে গড় বিকাশকারীকে ডিবিএ হওয়ার দরকার নেই, যদি হাতে একটি সত্যিকারের ডিবিএ থাকে।


19

বেসিক ইনডেক্সিং

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

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

ডিজাইনারদের সাধারণ সূচিপত্র বিরোধী নিদর্শন সম্পর্কেও সচেতন হওয়া উচিত: উদাহরণস্বরূপ:

  • অ্যাক্সেস অ্যান্টি-প্যাটার্ন (প্রতিটি কলামকে একের পর এক সূচি)
  • ক্যাচ-অল অ্যান্টি-প্যাটার্ন (সমস্ত বা বেশিরভাগ কলামে একটি বৃহত্তর সূচক, সম্ভবত ভুল ধারণা দ্বারা তৈরি করা হয়েছে যে এটি কোনও কলামের সাথে জড়িত প্রতিটি অনুমেয় জিজ্ঞাসাকে ত্বরান্বিত করবে)।

একটি ডাটাবেসের সূচকের মান - এবং আপনি যে প্রশ্নগুলি লিখেছেন সেগুলি দিয়ে আপনি এটি গ্রহণ করেন বা না করেন - এটি এখন পর্যন্ত সবচেয়ে গুরুত্বপূর্ণ পারফরম্যান্সের খাত হিসাবে বিবেচিত। দুর্বল পারফরম্যান্স সম্পর্কে অভিযোগ করে এসও এবং অন্যান্য ফোরামে পোস্ট করা 10 টি প্রশ্নের মধ্যে 9 টি সঠিকভাবে ইনডেক্সিং বা একটি অ-ব্যতিক্রমী প্রকাশের কারণে হয়ে থাকে।


আপনি কি "কভারেজ" সম্পর্কে বিস্তারিত বলতে পারেন? আমি দেখতে পাচ্ছি কেন নির্বাচন * কেন প্রবেশ করা ভাল অভ্যাস নয়, তবে আমি "কভারেজ" এর অর্থ জানি না এবং অবাক করে দেখি যে এটি SELECT * এড়ানোর জন্য অন্য কোনও কারণে ইঙ্গিত করে কিনা।
এডমন্ড

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

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

@ এডমন্ড: পোস্টগ্র্যাসএসকিউএল-এর INCLUDEকলাম নাও থাকতে পারে (আমি নিশ্চিত করে বলতে পারি না) তবে এর অর্থ এই নয় যে আপনি কলামগুলি প্রকৃত সূচি ডেটাতে আচ্ছাদন করতে চান তা রাখতে পারবেন না। এসকিউএল সার্ভারে 2000 দিনের মধ্যে আমাদের এটিই করতে হয়েছিল। আপনি কোন ডিবিএমএসে রয়েছেন তা কভারেজ এখনও গুরুত্বপূর্ণ নয়।
অ্যারোনআউট

16

নিয়মমাফিককরণ

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

আপনি যদি গোড়াতে এটি বুঝতে এবং সে অনুযায়ী নকশা তৈরি করেন, আপনি পরে নিজেকে অনেক ব্যথা বাঁচাতে পারবেন। আপনি স্বাভাবিক হওয়ার পরে পারফরম্যান্সের জন্য নির্ধারণ করা সহজ; এটি এমন কোনও ডাটাবেসকে সাধারণীকরণ করা সহজ নয় যা প্রথম থেকেই সেইভাবে ডিজাইন করা হয়নি।

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


14

সূচকগুলি কীভাবে কাজ করে

এটি সম্ভবত সবচেয়ে গুরুত্বপূর্ণ নয়, তবে নিশ্চিতভাবেই সবচেয়ে অবমূল্যায়িত বিষয়।

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

"আরও সূক্ষ্ম বিকাশকারীরা" সূচকগুলি ক্যোয়ারীটিকে দ্রুত করে তোলে তার চেয়ে সূচী সম্পর্কে আরও কিছু না জেনে মোটামুটি ভাল (এবং জটিল) এসকিউএল লিখতে পারে

কারণ এসকিউএল ডাটাবেসগুলি ব্ল্যাক-বাক্স হিসাবে কাজ করে খুব ভাল কাজ করে:

আপনার কী প্রয়োজন আমাকে বলুন (গিমমে এসকিউএল), আমি এটি যত্ন নেব।

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

সূচীকরণ যখন একটি বিষয় হয়ে ওঠে That's তবে এটি সাধারণত খুব দেরি হয়ে যায় এবং ইতিমধ্যে কেউ (কিছু সংস্থার?) একটি আসল সমস্যায় ভুগছে।

এই কারণেই আমি বিশ্বাস করি যে ডাটাবেসগুলির সাথে কাজ করার সময় ভোলার নয় সূচীকরণ 1 নম্বর বিষয় । দুর্ভাগ্যক্রমে, এটি ভুলে যাওয়া খুব সহজ।

দাবি পরিত্যাগী

যুক্তিগুলি আমার বিনামূল্যে ই-বুক " ইউজ দ্য ইনডেক্স, লুক " এর উপস্থাপনা থেকে ধার করা হয়েছে । আমি সূচকগুলি কীভাবে কাজ করে এবং কীভাবে সেগুলি সঠিকভাবে ব্যবহার করতে হয় তা বোঝাতে আমার বেশিরভাগ সময় ব্যয় করছি।


12

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

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

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


আপনি কি সত্তা-সম্পর্কের ডায়াগ্রামগুলি করার মতো?
ক্রোজেনব্লাম

হ্যাঁ ... আমি কি ইআরডি উল্লেখ করতে ভুলে গেছি? :-)
ফার্নান্দোজেজ



9

প্রতিটি বিকাশকারীকে জানা উচিত যে এটি মিথ্যা: "একটি ডাটাবেস অপারেশন প্রোফাইলিং প্রোফাইলিং কোড থেকে সম্পূর্ণ পৃথক।"

প্রচলিত অর্থে একটি স্পষ্ট বিগ-ও রয়েছে। আপনি যখন কোনও EXPLAIN PLAN(বা সমমানের) করেন আপনি আলগোরিদমটি দেখছেন। কিছু অ্যালগরিদম নেস্টেড লুপগুলিকে জড়িত এবং ( এন ^ 2)। অন্যান্য অ্যালগরিদমগুলি বি-গাছের অনুসন্ধানগুলিকে জড়িত এবং ( এন লগ এন) )।

এটি খুব, খুব গুরুতর। সূচকের বিষয়টি কেন গুরুত্বপূর্ণ তা বোঝার কেন্দ্রস্থল। এটি গতি-স্বাভাবিকীকরণ-ডেনোরমালাইজেশন ট্রেডঅফগুলি বোঝার কেন্দ্রস্থল central কেন ডেটা গুদাম স্টার-স্কিমা ব্যবহার করে যা ট্রানজেকশনাল আপডেটের জন্য স্বাভাবিক হয় না তা বোঝার কেন্দ্রস্থল central

আপনি যদি ব্যবহৃত অ্যালগরিদম সম্পর্কে অস্পষ্ট হন তবে নিম্নলিখিতটি করুন। স্টপ। কোয়েরি এক্সিকিউশন পরিকল্পনাটি ব্যাখ্যা কর। অনুসারে সূচিগুলি সামঞ্জস্য করুন।

এছাড়াও, তাত্পর্য: আরও সূচকগুলি আরও ভাল নয়।

কখনও কখনও একটি ক্রিয়াকলাপের উপর ভিত্তি করে একটি সূচক অন্যান্য ক্রিয়াকলাপকে কমিয়ে দেয়। দুটি ক্রিয়াকলাপের অনুপাতের উপর নির্ভর করে, একটি সূচক যুক্ত করা ভাল প্রভাব ফেলতে পারে, সামগ্রিকভাবে প্রভাব ফেলতে পারে না বা সামগ্রিক কার্যকারিতার জন্য ক্ষতিকারক হতে পারে।


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

@Aaron: আপনি কি আলগোরিদিম উপর নিয়ন্ত্রণ আছে। সূচকগুলি এটাই।
এস .লট

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

@ অ্যারন: কোয়েরিটি * ও ** (* এন ^ 2) বা * ও ** (* এন লগ এন ) বা কেবল ** ও ** (এন) হয় তবে কম নিয়ন্ত্রণ প্রকৃতপক্ষে বোঝার দায়বদ্ধতা সরিয়ে দেয় না । কম নিয়ন্ত্রণ আসলে কী হচ্ছে তা বুঝতে এবং এটি কীভাবে নিয়ন্ত্রণ করতে হয় তা সন্ধান করার বাধ্যবাধকতা সরিয়ে দেয় না।
এস .লট

@ এস.লোট: আমি মনে করি যে আমরা এখানেও একইদিকে আছি, যেহেতু আমি ডাটাবেসগুলির জন্য একটি বৃহত্তর প্রোফাইলের বোঝার পরামর্শ দিচ্ছিলাম - "আপনার জানা দরকার ... [কীভাবে] কোনও ক্যোয়ারী পরিকল্পনা পড়তে হবে"। তবে আমার সম্পাদনাটি আবার ঘোরানো হয়েছে বলে মনে হয়, তাই ... আমার ধারণা এটি এখন সম্প্রদায়ের।
অ্যারোনআউট

8

আমি মনে করি প্রতিটি বিকাশকারীকে বুঝতে হবে যে ডাটাবেসের জন্য আলাদা দৃষ্টান্ত প্রয়োজন

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


"সেট-ভিত্তিক" পদ্ধতির অর্থ কী তা দয়া করে পরিষ্কার করুন
ভিভিয়ান নদী

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

8

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

ডেভেলপারদের আরও একটি বিষয় বুঝতে হবে যে এটি একটি ডেটাবেস ডিজাইন করার সময় আপনার মনে রাখা উচিত তিনটি বিষয়:

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

  2. পারফরম্যান্স - দুর্বল পারফরম্যান্সের ডাটাবেসটিকে রিফ্যাক্টর করা খুব শক্ত এবং শুরু থেকেই পারফরম্যান্স বিবেচনা করা উচিত। একই কোয়েরি করার অনেকগুলি উপায় রয়েছে এবং কিছু প্রায় সর্বদা দ্রুত বলে জানা যায়, এই উপায়গুলি শিখতে এবং ব্যবহার না করা স্বল্পদৃষ্টির। ক্যোয়ারী বা ডাটাবেস স্ট্রাকচার ডিজাইনের আগে পারফরম্যান্স টিউনিং সম্পর্কিত কয়েকটি বই পড়ুন।

  3. সুরক্ষা - এই ডেটাটি আপনার সংস্থার প্রাণ-রক্ত, এটি প্রায়শই ব্যক্তিগত তথ্য থাকে যা চুরি হতে পারে। এসকিউএল ইঞ্জেকশন আক্রমণ এবং জালিয়াতি এবং পরিচয় চুরি থেকে আপনার ডেটা রক্ষা করতে শিখুন।

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

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

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

প্রোডাকশন ভার্সনের চেয়ে কোনও ডাটাবেসের নতুন সংস্করণে কখনই বিকাশ করবেন না। কখনও কখনও না, কখনও কখনও উত্পাদন ডেটাবেসের বিরুদ্ধে সরাসরি বিকাশ করবেন না।

আপনার যদি কোনও ডাটাবেস প্রশাসক না থাকে তবে নিশ্চিত হয়ে নিন যে কেউ ব্যাকআপ নিচ্ছে এবং সেগুলি পুনরুদ্ধার করবেন কীভাবে জানেন এবং সেগুলি পুনরুদ্ধার করার পরীক্ষা করেছেন।

ডাটাবেস কোড কোড, আপনার কোডের বাকী কোডগুলির মতো এটি উত্স নিয়ন্ত্রণে না রাখার কোনও অজুহাত নেই।


6

বিবর্তনীয় ডেটাবেস ডিজাইন। http://martinfowler.com/articles/evodb.html

এই চৌর্য পদ্ধতিগুলি ডাটাবেস পরিবর্তন প্রক্রিয়াটিকে পরিচালনাযোগ্য, পূর্বাভাসযোগ্য এবং পরীক্ষামূলক করে তোলে।

বিকাশকারীদের জানা উচিত, সংস্করণ নিয়ন্ত্রণ, ক্রমাগত ইন্টিগ্রেশন এবং স্বয়ংক্রিয় পরীক্ষার ক্ষেত্রে প্রোডাক্ট ডেটাবেসকে রিফ্যাক্টর নিতে কী লাগে।

বিবর্তনীয় ডেটাবেস ডিজাইন প্রক্রিয়াটির প্রশাসনিক দিক রয়েছে, উদাহরণস্বরূপ এই কোডবেসের সমস্ত ডাটাবেসে কিছু কাল সময়কালের পরে একটি কলাম বাদ দিতে হবে।

অন্তত জেনে রাখুন, যে ডাটাবেস রিফ্যাক্টরিং ধারণা এবং পদ্ধতি বিদ্যমান। http://www.agiledata.org/essays/databaseRefactoringCatalog.html

শ্রেণিবিন্যাস এবং প্রক্রিয়া বিবরণ এই রিফ্যাক্টরিংগুলির জন্যও সরঞ্জাম নির্ধারণ সম্ভব করে তোলে।


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

আম্বলারের 'রিফ্যাক্টরিং ডেটাবেসস' ( অ্যামাজন / রেফ্যাক্টরিং-ডেটাবেসস- ইভোলিউশনারি- ডেটাবেস- ডিজাইন /… ) দেখুন।
জোনাথন লেফলার

5

রিলেশনাল ডাটাবেসের সাথে আমার অভিজ্ঞতা থেকে, প্রতিটি বিকাশকারীকে জানা উচিত:

- বিভিন্ন তথ্য প্রকার :

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

- 1xM এবং MxM সম্পর্কে জানুন :

এটি রিলেশনাল ডাটাবেসের জন্য রুটি এবং মাখন। আপনার এক থেকে একাধিক এবং বহু থেকে বহু সম্পর্ক বোঝার প্রয়োজন এবং উপযুক্ত হলে তা প্রয়োগ করতে হবে।

- " কেআইএসএস " নীতিটি ডিবিতেও প্রযোজ্য :

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

- সূচকগুলি :

আপনি কি জানেন যে এটি যথেষ্ট নয়। এগুলি কখন ব্যবহার করা হবে এবং কখন না করা উচিত তা আপনার বুঝতে হবে।


এছাড়াও:

  • বুলিয়ান বীজগণিত আপনার বন্ধু
  • চিত্রগুলি: এগুলি ডিবিতে রাখবেন না। কেন জিজ্ঞাসা করবেন না।
  • নির্বাচন সহ নির্বাচন নির্বাচন করুন

চিত্রগুলির জন্য +1। যদিও আমি 'BLOBs' এর সাথে 'চিত্রগুলি' প্রতিস্থাপন করব।
অগ্নেল কুরিয়ান

আমি "সরলতা" অংশ সম্পর্কে সত্যই নিশ্চিত নই। সহজতম ডেটাবেস হ'ল একগুচ্ছ varchar(max)কলাম সহ বিশালাকার টেবিল । রিলেশনাল ডাটাবেসগুলি সাধারণ করা উচিত , সরল নয় ।
অ্যারোনআট

আপনার উদ্বেগগুলি আমার পোস্টের "ডেটা ধরণের" অংশে আগে earlierাকা পড়েছে। আমি সঞ্চিত পদ্ধতি / ট্রিগার / কার্সার ইত্যাদির (অপ্রয়োজনীয়) ব্যবহারের কথা উল্লেখ করছিলাম।
আনাক্স

5

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


5

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


5

ওয়াল্টার এম এর উত্তরের নিম্নলিখিত মন্তব্য সম্পর্কে:

"খুব ভাল লেখা! এবং peopleতিহাসিক দৃষ্টিভঙ্গি এমন লোকদের পক্ষে দুর্দান্ত যারা এই সময়ে ডাটাবেসের কাজ করতেন না (যেমন আমি)"।

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

প্রশ্ন নিজেই:

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

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


1
আমি একমত যে কোনও বিকাশকারীকে এসকিউএল এবং আরডিএম ডাইভারেজ কোথায় তা জানা দরকার know এটি বলার পরে, আরডিএম এর ন্যায়বিচার ব্যবহার ডাটাবেস ডিজাইনারের এক অমূল্য সহায়ক হতে পারে, এমনকি বাস্তবায়ন এসকিউএল হলেও।
ওয়াল্টার মিট্টি

1
আপনি যদি ভুলে গেছেন, জর্জ সান্তায়না, সেই ক্লাসিক উক্তিটি লিখেছেন ...
ক্রোসেনব্লাম

5

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

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

আপনি গবেষণাটি করার পরেও আপনার নিজের পরামর্শ নিয়ে আসুন। এটি হ'ল, আমি ডিবিএগুলিতে ডাটাবেসের সমস্যা না রেখে সমস্যার একটি সমবায় সমাধানের চেষ্টা করি।


ভাল উত্তর. আমাদের প্রত্যেকের নিজস্ব অঞ্চল রয়েছে আমরা প্রতিটি সমস্যা বা সমাধানে অবদান রাখি।
ক্রোজেনব্লাম

5

সাধারণ শ্রদ্ধা।

  • এটি কেবল একটি ভাণ্ডার নয়
  • আপনি সম্ভবত বিক্রেতা বা ডিবিএর চেয়ে ভাল জানেন না
  • আপনি ভোর তিনটায় এটি সমর্থন করবেন না সিনিয়র ম্যানেজাররা আপনাকে চেঁচিয়ে বলছে

3

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

এছাড়াও, আমি মনে করি সত্ত্বা-সম্পর্কিত মডেলটি প্রতিটি বিকাশকারীকে অবশ্যই ডেটাবেস ডিজাইন না করে থাকলেও তাদের অবশ্যই জানা উচিত। এটি আপনাকে আপনার ডেটাবেস সম্পর্কিত কী তা পুরোপুরি বুঝতে দেবে।


3

ভুল পাঠ্য এনকোডিং সহ কখনই ডেটা প্রবেশ করবেন না।

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


2
"ভুল পাঠ্য এনকোডিং" কী এবং এটি কীভাবে ঘটে?
জেনাদি ভ্যানিন Геннадий

1
@ ভিজিভি 8, এটি তখন ঘটে যখন আপনার ক্লায়েন্ট ব্যবহারকারীদের আপনার যে কোনও এনকোডিংয়ে পাঠ্য জমা দেওয়ার মঞ্জুরি দেয়, আপনি অন্ধভাবে এটিকে সঞ্চয় করেন। তারপরে, যখন আপনাকে কোনও ধরণের রূপান্তর বা বিশ্লেষণ করার দরকার হয়, তখন আপনার কোডটি ভেঙে যায়, কারণ আপনার অ্যাপ্লিকেশনটি utf-8 ধরেছে, তবে কিছু বোকা utf-16 ডেটা যুক্ত করেছে, এবং আপনার প্রোগ্রামের ত্রুটিগুলি বা গীব্রিশকে থুতু দেওয়া শুরু করে।
মিকেরোবি

3

তারা নিযুক্ত সিনট্যাক্স এবং ধারণাগত বিকল্পগুলি (যেমন যোগ দেয়, ট্রিগার এবং সঞ্চিত পদ্ধতিগুলি) বাদ দিয়ে ডেটাবেস নিযুক্ত প্রতিটি বিকাশকারীদের জন্য একটি বিষয় গুরুতর হবে:

আপনার ইঞ্জিন কীভাবে আপনি লিখেছেন সুনির্দিষ্টতার সাথে ক্যোয়ারী সম্পাদন করতে চলেছে তা জানুন।

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

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

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

আপনার ডাটাবেস ইঞ্জিন বাস্তবায়ন প্রক্রিয়াটি জানুন এবং এর জন্য পরিকল্পনা করুন।


3

একজন মাঝারি অফ-রোড পেশাদার বিকাশকারী যারা ডেটাবেসগুলি প্রচুর ব্যবহার করেন (প্রতিদিন লিখতে / প্রায় প্রতিদিনই ক্যোয়ারী রচনা / রক্ষণাবেক্ষণ), আমি মনে করি যে প্রত্যাশা অন্য কোনও ক্ষেত্রের মতো হওয়া উচিত: আপনি কলেজে একটি লিখেছিলেন

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

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

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

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


সি স্ট্রিং সম্পর্কিত লিঙ্কযুক্ত জোয়েল নিবন্ধ থেকে, নিম্নলিখিত অপরিশোধিত আচরণের স্নিপেট না: চর * টিআর = "* হ্যালো!"; str [0] = স্ট্রেন (স্ট্র) - 1; স্ট্রিং একটি স্ট্রিং আক্ষরিক এবং কেবল পঠনযোগ্য স্মৃতিতে সাধারণ। আপনি এটি লিখতে পারবেন না :?
এখানে

একজন পেশাদার ডাটাবেস বিশেষজ্ঞ, ঠিক আছে, তবে প্রতিটি বিকাশকারী ?
বেন অ্যাস্টন

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

2

অ-অনন্য সূচকে কলামগুলির ক্রম গুরুত্বপূর্ণ।

প্রথম কলামটি এমন কলাম হওয়া উচিত যা এর সামগ্রীতে (যেমন কার্ডিনালিটি) সর্বাধিক পরিবর্তনশীলতা রয়েছে।

এটি এসকিউএল সার্ভারকে রানটাইম অনুসারে কীভাবে সূচকটি ব্যবহার করতে পারে সে সম্পর্কে দরকারী পরিসংখ্যান তৈরি করতে সক্ষমতার সহায়তা করে।


-1 'প্রথম কলামটি এমন কলাম হওয়া উচিত যা এর বিষয়বস্তুতে সর্বাধিক পরিবর্তনশীল থাকে' like সূচকগুলি কীভাবে কাজ করে সে সম্পর্কে যদি কারও কাছে কিছু প্রাথমিক জ্ঞান থাকে তবে দেখুন কীভাবে অর্ডারটি গুরুত্বপূর্ণ এবং কলামের ক্রমটি কীভাবে সারণীটি অনুসন্ধান করা হবে তার উপর নির্ভর করে।
चमत्कार 173

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

2

আপনি ডাটাবেস প্রোগ্রাম করার জন্য যে সরঞ্জামগুলি ব্যবহার করেন তা বুঝুন !!!

আমার কোড কেন রহস্যজনকভাবে ব্যর্থ হচ্ছে তা বোঝার চেষ্টা করে আমি অনেক সময় নষ্ট করেছি।

আপনি যদি নেট ব্যবহার করে থাকেন, উদাহরণস্বরূপ, System.Data.SqlClientনেমস্পেসে অবজেক্টগুলি কীভাবে সঠিকভাবে ব্যবহার করতে হয় সে সম্পর্কে আপনাকে জানতে হবে । আপনার SqlConnectionঅবজেক্টগুলি কীভাবে খোলার, বন্ধ করা এবং যখন প্রয়োজন হয় তখন সঠিকভাবে নিষ্পত্তি করা যায় তা নিশ্চিত করার জন্য আপনাকে কীভাবে তা পরিচালনা করতে হবে।

আপনার জানা দরকার যে আপনি যখন SqlDataReaderএটি ব্যবহার করেন তখন এটি আপনার থেকে আলাদা করে বন্ধ করা প্রয়োজন SqlConnection। ডাটাবেসে হিট সংখ্যা কমিয়ে আনতে কীভাবে উপযুক্ত তা সংযোগগুলি কীভাবে উন্মুক্ত রাখতে হবে তা আপনার বুঝতে হবে (কারণ তারা কম্পিউটিং সময়ের ক্ষেত্রে তুলনামূলকভাবে ব্যয়বহুল)।


2
  • বেসিক এসকিউএল দক্ষতা।
  • ইন্ডেক্সিং।
  • তারিখ / সময় / TIMESTAMP এর বিভিন্ন অবতারের সাথে ডিল করুন।
  • জেডিবিসি চালকআপনি যে প্ল্যাটফর্মটি ব্যবহার করছেন তার জন্য ডকুমেন্টেশন।
  • বাইনারি ডেটা প্রকার (সঙ্গে ডীল CLOB , Blob , ইত্যাদি)

1

কিছু প্রকল্পের জন্য এবং অবজেক্ট-ওরিয়েন্টেড মডেলটি আরও ভাল।

অন্যান্য প্রকল্পগুলির জন্য, একটি সম্পর্কিত সম্পর্কিত মডেল আরও ভাল।



1

আরডিবিএমএস সামঞ্জস্যতা

একাধিক আরডিবিএমএসে অ্যাপ্লিকেশনটি চালানোর প্রয়োজন আছে কিনা তা দেখুন। যদি হ্যাঁ, এটি প্রয়োজন হতে পারে:

  • আরডিবিএমএস এসকিউএল এক্সটেনশনগুলি এড়িয়ে চলুন
  • ট্রিগার এবং স্টোর পদ্ধতিগুলি বাদ দিন
  • কঠোর এসকিউএল মান অনুসরণ করুন
  • ক্ষেত্রের ডেটা ধরণের রূপান্তর করুন
  • লেনদেন বিচ্ছিন্নতা স্তর পরিবর্তন করুন

অন্যথায়, এই প্রশ্নগুলি পৃথকভাবে চিকিত্সা করা উচিত এবং অ্যাপ্লিকেশনটির বিভিন্ন সংস্করণ (বা কনফিগারেশন) বিকাশ করা হবে।


1

কোনও এসকিউএল কোয়েরি দ্বারা ফিরে আসা সারির ক্রমের উপর নির্ভর করবেন না।


3
... যদি না সেখানে একটি ORDER BYধারা আছে?
অ্যারোনআট

এবং ORDER BYঅযথা ব্যবহার করবেন না কারণ এটি এসকিউএল সার্ভার
ভিভিয়ান নদী

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