একটি ORM বা সরল এসকিউএল ব্যবহার করছেন? [বন্ধ]


245

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

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

এটির বিষয়ে চিন্তাভাবনা করে, কোনও ওআরএম ব্যবহার করে ডেটাবেসের অসঙ্গতিগুলি হ্যান্ডেল করার জন্য কেবল হালকা ওজনের ব্যবহার করা আরও ভাল।


মানীকরণ, সুরক্ষা, রক্ষণাবেক্ষণযোগ্যতা, ভাষার বিমূর্ততা, ডিআরওয়াই ইত্যাদি
বেন

ORM সঙ্গে পারফরমেন্স এসকিউএল কাছাকাছি হতে পারে, যদি আপনি এটি সঠিকভাবে ব্যবহার করেন তার উপর নির্ভর করে এবং সঠিক সেটিংসের সাথে ... দ্রুততর EF6.x 5x করতে হো দেখুন: linkedin.com/pulse/...
baHI

ORM স্থাপত্য জন্য এবং কীভাবে (কি এড়াতে), এখানে আমার অন্য লিঙ্ক আছে: linkedin.com/pulse/...
baHI

অবজেক্ট-রিলেশনাল ম্যাপিং (ওআরএম) ইতিমধ্যে অনেক প্রোগ্রামিং ভাষায় খুব জনপ্রিয় এবং এসকিউএল এর অন্যতম সেরা বিকল্প। আমি আমার টিআরআইডিবি প্রকল্পের জন্য সিসকিউএল তৈরি করতে পদ্ধতি শৃঙ্খলাবদ্ধ স্টাইল থেকে অনুপ্রাণিত হয়েছিল। healis.eu/triadb/#latest-release
Athanassios

2
বোবা এই প্রশ্নটি বন্ধ ছিল।
মিচ গম

উত্তর:


169

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

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

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

আমি যে কোনও বৃহত্তর অ্যাপ্লিকেশনটির সন্ধান পেয়েছি আপনি উভয় পন্থা ব্যবহার করে নিজেকে খুঁজে পাবেন। (সোজা সিআরইউডি এবং এসকিউএল / রিপোর্ট করার জন্য পাতলা ডএএল জন্য ওআরএম)।


আপনি কি 'অনুরোধে বিপুল সংখ্যক ডাটাবেস সারি' নির্ধারণ করতে পারবেন? দয়া করে :)
মোসেলম্যান

সুতরাং আমি উদাহরণস্বরূপ আইবিটিসের সাথে জেপিএ সংহত করতে পারি ?? তাদের কি একই লেনদেনে কাজ করতে হবে?
জাইমে হাবলুটজেল

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

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

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

253

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

  1. ওআরএম দ্রুত নয়। এগুলি পর্যাপ্ত হতে পারে এবং পর্যাপ্ত বেশিরভাগ সময় ঠিক থাকে তবে একটি উচ্চ-ভলিউম নিম্ন-বিলম্বিত পরিবেশে তারা কোনও নন;
  2. জাভা এবং সি # এর মতো সাধারণ উদ্দেশ্যে প্রোগ্রামিং ভাষাগুলিতে তাদের কাজ করার জন্য আপনার প্রচুর যাদু প্রয়োজন (যেমন জাভা, উপকরণ ইত্যাদিতে লোড-টাইম বয়ন);
  3. কোনও এসআরএল (যা উদ্দেশ্য বলে মনে হয়) এর চেয়ে আরও বেশি পাওয়ার পরিবর্তে কোনও ওআরএম ব্যবহার করার সময়, আপনি নিজের ওআরএমকে পারফরম্যান্ট এসকিউএল উত্সাহিত করতে এক্সএমএল এবং / অথবা টীকাগুলি / বৈশিষ্ট্যগুলিতে কতটা সময় ব্যয় করেছেন তা অবাক হয়ে যাবেন;
  4. জটিল প্রশ্নের জন্য, সত্যিই কোনও বিকল্প নেই। জেপিএ-র মতো কিছু প্রশ্ন রয়েছে যা কেবল কাঁচা এসকিউএল-তে সম্ভব হয় না এবং যখন আপনাকে জেপিএতে কাঁচা এসকিউএল ব্যবহার করতে হয় এটি সুন্দর নয় (সি # /। নেট কমপক্ষে গতিশীল ধরণের রয়েছে - ভের - যা অনেক বেশি একটি অবজেক্ট অ্যারের চেয়ে ভাল);
  5. ওআরএম ব্যবহার করার সময় ভয়ঙ্কর অনেকগুলি "গোটচস" রয়েছে। এর মধ্যে অনিচ্ছাকৃত বা অপ্রত্যাশিত আচরণ অন্তর্ভুক্ত রয়েছে, আপনার ডাটাবেসে এসকিউএল আপডেট করার সক্ষমতা তৈরি করতে হবে (জেপিএতে রিফ্রেশ () ব্যবহার করে বা অনুরূপ পদ্ধতিতে কারণ জেপিএ সবই ক্যাশে করে তাই এটি সরাসরি ডাটাবেস ধরবে না আপডেট - সরাসরি এসকিউএল আপডেটগুলি চালানো একটি সাধারণ উত্পাদন সমর্থন ক্রিয়াকলাপ);
  6. অবজেক্ট-রিলেশনাল মেজাজটি সর্বদা সমস্যা তৈরি করতে চলেছে। এ জাতীয় যে কোনও সমস্যা রয়েছে তার সাথে জটিলতা এবং বিমূর্ততার সম্পূর্ণতার মধ্যে একটি বাণিজ্য রয়েছে। মাঝে মাঝে আমি অনুভব করেছি যে জেপিএ খুব দূরে চলে গিয়েছিল এবং রিটার্ন হ্রাস করার আসল আইনে আঘাত করেছে যেখানে বিমূর্ততা দ্বারা জটিলতা হিটকে ন্যায়সঙ্গত করা হয়নি।

আরও একটি সমস্যা রয়েছে যা কিছুটা আরও ব্যাখ্যা দেয়।

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

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

কথাটি হ'ল এই সমস্যাগুলি ওআরএম থেকে দূরে যায় না, তারা কেবল উপস্থাপনা স্তর পর্যন্ত চলে যায়। প্রশ্নের জন্য ভিও / ডিটিও তৈরির পরিবর্তে, আপনি কাস্টম উপস্থাপনা অবজেক্ট তৈরি করেন, সাধারণত প্রতিটি দর্শনের জন্য একটি। এটা কিভাবে ভাল? IMHO এটা না।

আমি ওআরএম বা এসকিউএল এ সম্পর্কে লিখেছি : আমরা এখনও আছে?

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

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


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

3
আইব্যাটিস দুর্দান্ত, তবে আপনি jOOQ: jooq.sourceforge.net চেষ্টা করার যত্ন নিতে পারেন । এর মূল ফোকাসটি আপনি উল্লেখ করেছেন এমন 6 কারণে এসকিউএল এর নিকটবর্তী হওয়া অবিকল।
লুকাস এদার

5
+1 পয়েন্ট 3 এর জন্য অনেকেই মনে করেন যে ওআরএম ব্যবহার করা আপনাকে এসকিউএল সম্পর্কে সম্পূর্ণ বোঝা থেকে মুক্তি দেয়। কথাটি হ'ল একবার আপনি এসকিউএল দিয়ে জিমন্যাস্টিকস করতে / শিখতে পারবেন, আপনি সম্ভবত নিজেকে খুব দ্রুত ওআরএম থেকে দূরে সরিয়ে দেখতে পাবেন।
রায়ান ফার্নান্দেস

4
সুতরাং, এখন এটি ২০১৩ সালের শেষ এবং যেমনটি আমরা সবাই জানি, "পুরানো তথ্য" এর চেয়ে বেশি বিভ্রান্তিকর কিছুই হতে পারে - তাই আমি আপনাকে জিজ্ঞাসা করতে পারি যে আপনার পয়েন্টগুলি এখনও একই আছে কিনা? যদি তা না হয় তবে আপনি যদি ব্লগপোস্ট লিখতে / সেই অনুযায়ী আপনার উত্তর আপডেট করতে পারতেন তবে দুর্দান্ত।
ডোমিনিক

3
var .NET এ ডায়নামিক টাইপ তৈরি করে না, ডায়নামিক কীওয়ার্ড সহ ভেরিয়েবল .NET এ একটি গতিশীল প্রকার। var এখনও স্ট্যাটিকাল টাইপিং হয়। স্ট্যাকওভারফ্লো
প্রশ্নগুলি

45

আমি বলি জন্য প্লেইন এসকিউএল আর EADS জন্য ORM জাবর

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


1
সিইডি কি? আমি সংজ্ঞাটি পাই না।
কিমচি ম্যান

27
@ কিমচিমন সিআরইউডি আর ছাড়াই
ম্যাক্স টোরো

3
সিইউডি - তৈরি করুন, আপডেট করুন, মুছুন।
একত্রিত করুন

14

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


3
আমি ডাটাবেসের স্বাদগুলি জুড়ে বহনযোগ্যতার কাছাকাছি কিছু সম্পর্কে ভাবছিলাম। আমার গভীর রাতে প্রশ্ন পোস্ট করা উচিত নয়।
হাইড্রোফিজ

1
আমি যা বলছিলাম ঠিক এটি: এমনকি সর্বাধিক প্রাথমিক পরিস্থিতিগুলিও বিভিন্ন ডিবিএমএস-এর ত্রুটির সাথে যুক্ত হতে পারে - উদাহরণস্বরূপ, NULL- র বিভিন্ন হ্যান্ডলিং।
আন্তোন গোগোলেভ

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

11

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


আমি কীভাবে ডালকে ওআরএম থেকে পৃথক করি তা বর্ণনা করার অনুরোধ জানিয়ে একটি মন্তব্যের প্রতিক্রিয়ায় সম্পাদনা করুন:

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


2
ডাল কী এবং একটি ওআরএম কী তার মধ্যে আপনি রেখাটি কোথায় আঁকেন?
বিশৃঙ্খলা

4
সুতরাং, আপনি যদি কোনও ওআরএমের লেখক হন তবে আপনার ওআরএম স্বয়ংক্রিয়ভাবে ডালে পরিণত হয়? :)
বোম্বে

ডাল = অধ্যবসায় স্তর এবং ওআরএম হল এমন একটি সরঞ্জাম যা আপনি আপনার ডালের অভ্যন্তরে ডেটা স্টোরটিতে সিআরইউডি অপারেশন করতে ব্যবহার করেন।
ওয়াহিদ গাদিরি

7

প্রতিটি সরঞ্জামের উদ্দেশ্য এবং দৃষ্টি রয়েছে। আমি আপনার প্রয়োজন অনুসারে http://www.jooq.org/ তৈরি করেছি , যদিও আইবাটিস সম্ভবত আপনার জন্যও একটি ভাল সমাধান।

jOOQ এর বেসিক ওআরএম বৈশিষ্ট্য রয়েছে তবে এটি মূলত আমার মনে হয় যে বেশিরভাগ বিকাশকারীদের তাদের প্রয়োজনের জন্য সেরা ওআরএম সন্ধান করার সময় সবচেয়ে বেশি প্রয়োজন on

  • কোড জেনারেশন
  • পরিবর্তনশীল বাঁধাই (এটি জেডিবিসিতে একটি ব্যথা)
  • এসকিউএল সিনট্যাক্স বিমূর্ততা (সিনট্যাক্স ত্রুটি প্রতিরোধ করতে)

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

  • এটি একটি শক্ত ডেটা উত্স
  • এসকিউএল অনেক ভাল, পারফরম্যান্ট জিনিস (নেস্টেড সিলেক্ট, ইউনিয়ন, কমপ্লেক্সে যোগ দেয় ইত্যাদি) করতে পারে। প্রায়শই ORM's এই জিনিসগুলি করতে পারে না।
  • আপনি লেনদেন এবং সেশন নিজেই পরিচালনা করতে পারেন
  • আপনার কাছে ইউডিটি এবং সঞ্চিত পদ্ধতি রয়েছে

jOOQ ঠিক এই পয়েন্টগুলি সম্বোধন করে। এটি জেডিবিসি পাশাপাশি পারফর্ম করবে তবে ব্যথা ছাড়াই।


6

কোনও ফ্রেমওয়ার্ক ব্যবহার করবেন কিনা তা নিয়ে দ্বিধা আধুনিক সময়ের সফ্টওয়্যার বিকাশের দৃশ্যে বেশ সাধারণ।

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

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

সন্নিবেশ, আপডেট, মুছে ফেলার, উচ্চ স্তরের সম্মতিতে সংস্করণকরণের ক্ষেত্রে আপনি ORM ব্যবহার করতে পারেন এবং আপনি রিপোর্ট তৈরি এবং দীর্ঘ তালিকার জন্য নেটিভ এসকিউএল ব্যবহার করতে পারেন


3
উচ্চসংগঠনের জন্য কেন একটি ওআরএম ভাল?
ব্যবহারকারী 359996

6

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

আমার সুপারিশটি হ'ল একটি ওআরএম ব্যবহার করে বিকাশ করা যখন স্কিমাটি এখনও তরল থাকে, বাধা খুঁজে পেতে প্রোফাইলিং ব্যবহার করুন, তারপরে কাঁচা এসকিউএল ব্যবহার করে যে জায়গাগুলির প্রয়োজন এটি টিউন করুন।

আরেকটি ধারণা, হাইবারনেটে নির্মিত ক্যাচিং সঠিকভাবে ব্যবহৃত হলে প্রায়শই ব্যাপক কর্মক্ষমতা উন্নতি করতে পারে। রেফারেন্স ডেটা পড়ার জন্য আর ডিবিতে আর ফিরে যাবেন না।


2
একেবারে ব্যক্তিগত স্বাদের বিষয়। আমার কাছে কোড জেনারেশন একটি ত্রুটি।
dkretz

5
দ্বিতীয় অনুচ্ছেদটি পড়ুন .... সম্ভবত সম্পূর্ণতাও দরকারী
মিঃ টেলি

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

4

কোনও 'ওয়ান-টুল-ফিট-অল' সমাধান নেই, এবং এই প্রশ্নের ক্ষেত্রেও এটি সত্য 'আমার একটি / / এম ব্যবহার করা উচিত নাকি? '।

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

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


"কোনও 'ওয়ান-টুল-ফিট-অল' সমাধান নেই" .. ভাল হওয়া উচিত।
রুশিনো

1

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

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


4
ঠিক আছে, আমি আপনার মতামত করছি। পুরো জায়গা জুড়ে কাঁচা এসকিউএল বেশ জঘন্য।
বিশৃঙ্খলা

হ্যাঁ ভালো. ফোরামের এমন একটি সফ্টওয়্যার রয়েছে যা আমি সময়ে সময়ে হ্যাক করি যেটিতে পুরো জায়গা জুড়ে প্রচুর টন মাইএসকিএল_কোয়ারি () এবং মাইএসকিএল_আরসাল্ট () রয়েছে। এটা বাদাম
হাইড্রোফিজ

এই "অ্যাপ" জিনিসটির কথা আপনি কী বলছেন?
জোড়ান পাভলভিক

এটি মজার বিষয় যে এই প্রশ্নটি একটি বরক বট অ্যাপের মাধ্যমে জিজ্ঞাসা করা হয়েছিল এবং এটি কী হয়েছিল (একটি খুব দরকারী গাইড)! স্ক্রিয়ার এক প্রান্তে একটি রিক বট অ্যাপ্লিকেশনটি রয়েছে এবং একটি অ্যাপ্লিকেশনটিতে 50-100 + টেবিল রয়েছে যাতে জটিল যোগদান করে এবং 20+ বিকাশকারী এটির সাথে লক্ষ লক্ষ সারি ডেটা ব্যবহার করে এটি স্কেলের চূড়ান্ত অন্য প্রান্তে রয়েছে। আমি বলার সাহস করি যখন এটি স্কেলের শেষে 'রিক বট অ্যাপ' এ আসে, এটি সবেমাত্র গুরুত্ব দেয়।
মানাচি

1

একটি ORM ব্যবহার করুন যা এসকিউএল এর মতো কাজ করে তবে সংকলন-সময় চেক এবং টাইপ সুরক্ষা সরবরাহ করে। আমার প্রিয় পছন্দ: ডেটা নলেজ অবজেক্টস (প্রকাশ: আমি এটি লিখেছি)

উদাহরণ স্বরূপ:

for (Bug bug : Bug.ALL.limit(100)) {
  int id = bug.getId();
  String title = bug.getTitle();
  System.out.println(id +" "+ title);
}

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


আপনার আইডিই সরাসরি এ জাতীয় স্থিতিশীল চেকগুলি সরবরাহ করতে পারে (আইডিইএ ডিবি কাঠামোটি এতদিন জানে যে আপনি ডিবি কোথায় আছেন / ডিডিএল ফাইলগুলি কোথায় রয়েছে, তাই এটি আপনার এসকিউএল কোয়েরি / পদ্ধতিতে / যা যাচাই করতে পারেন টাইপ চেক / সম্পর্ক চেক / ইত্যাদি করতে পারে )
জেনোস

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

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

1

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

এসকিউএল ডেটা ( http://sqldata.codeplex.com ) দেখুন। এটি সি # এর জন্য খুব হালকা ওজনের ORM যা সমস্ত ঘাঁটিগুলিকে coversেকে দেয়।

এফওয়াইআই, আমি এসকিউএল ডেটার লেখক।


1

আমি উত্তরগুলির কোরাসগুলিতে আমার ভয়েস যুক্ত করতে চাই যা বলে যে "এখানে একটি মাঝারি জায়গা রয়েছে!"।

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

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

তাই আমি এমন কিছু লিখেছি যা এটি করে: http://quince-lib.com/

এটি সি ++ এর জন্য: আপনি যে ভাষাটি ব্যবহার করছেন তা আমি জানি না, তবে একটি "মাঝারি স্থল" কেমন হতে পারে তা গ্রহণ করা আকর্ষণীয় হতে পারে।

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