ওআরএম দ্বারা ডেটাবেস বিমূর্তি ব্যবহারের সুবিধা কী? [বন্ধ]


19

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

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

যদি আমি জানি যে দীর্ঘমেয়াদে আমি অন্তর্নিহিত ডাটাবেসটি স্যুইচ করব না? ডাটাবেস-নির্দিষ্ট বৈশিষ্ট্যগুলিও কেন অ্যাক্সেস করবেন না?


2
+1: খুব আকর্ষণীয়। আমি সাধারণত ওআরএমের প্রবক্তা হয়েছি, তবে আমি সাধারণত আরডিবিএমএসের সমতুল্য (যা আমি সম্প্রতি ভুল হিসাবে দেখা শুরু করেছি) হিসাবে বিবেচনা করেছি।
স্টিভেন ইভার্স

দেখে মনে হচ্ছে আপনি নিজের মতামতের নিশ্চয়তা চান; প্রশ্নোত্তর সাইটের চেয়ে কোনও ব্লগ আপনার পক্ষে আরও উপযুক্ত suit

ওআরএম যা দেয় তার চেয়ে বেশি সম্ভবত আপনার আর কিছু দরকার নেই। আপনি কেবল আপনার বস্তুর ডেটা একটি ডাটাবেসে সঞ্চয় করতে চান এবং এটিই ওআরএম করবে। আপনার অন্য কোনও 'বৈশিষ্ট্য' লাগবে না।
সিজে 7

উত্তর:


14

আমি এটি একইভাবে দেখছি। যে কোনও বিমূর্ততা আপনাকে যখন প্রয়োজন হয় তখন এটির নীচে যেতে দেয় না কারণ এটি আপনার কোডে সমস্ত প্রকার কুৎসিত বিমূর্ততা ঘটাচ্ছে।

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

আইএমওর যে কোনও ওআরএমের এই বৈশিষ্ট্যটি নেই এটি থেকে সংকলিত বিটের মূল্য নেই।


drops it directly into the query it's generatingআকর্ষণীয় মনে হচ্ছে। আপনি কি জানেন যে এই হোমগ্রাউন্ড ওআরএম লিখতে আপনাকে কতক্ষণ সময় লেগেছে? আমি ওপেন সোর্স ওআরএম এর মধ্যে একটিতে এই জাতীয় কিছু দেখতে চাই।
jblue

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

1
আমি যখন প্রয়োজন তখন নীচে ডুবতে সক্ষম হতে চাই, যতক্ষণ না সেই ডাইভিং-আন্ডার মধ্যে রূপক বেড়া পার হওয়া জড়িত: "এখানে ড্রাগন থাকুন your আপনার পদক্ষেপ দেখুন Watch"
ফ্র্যাঙ্ক শিয়েরার

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

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

14

ORM সর্বনিম্ন সাধারণ ডিনোমিনেটর নেয়

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

দ্রুত নোট: আপনি কেবল ডাটাবেস বিমূর্তি উল্লেখ করেছেন। এটি অনেকগুলি সুবিধার মধ্যে একটি, তবে আমি সত্যই মনে করি যে অবজেক্ট ওরিয়েন্টেড বৈশিষ্ট্যগুলি আরও শক্তিশালী (যেমন: উত্তরাধিকার)। এবং You design your domain model first...

... বিমূর্তিতে ফিরে আসুন। এটি সর্বনিম্ন সাধারণ ডিনোমিনেটর নয়। ইন nHibernate , আপনি উপভাষা আছে। এটি আপনাকে বিভিন্ন ডাটাবেসগুলি জিজ্ঞাসা করতে একই কোড ব্যবহার করতে দেয়। উপভাষাগুলি আপনার জন্য বৈশিষ্ট্য পরিচালনার যত্ন নিন। সঠিক বক্তব্য এটি a given dialect will try to use all the power of a given database system

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

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


এনএইচবারনেটের পক্ষে পরামর্শের জন্য +1। অন্যান্য ওআরএম এর তুলনায় একটি শেখার কার্ভের বিট, তবে প্রচেষ্টাটি এটির পক্ষে উপযুক্ত।
রিচিয়াম

1
আমি এই বিষয়ে কিছু ডিবিএর কাছ থেকে শুনতে চাই। আমার শেষ কাজটিতে হাইবারনেট ঝামেলা ছাড়া কিছুই ছিল না (এটি যে এসকিউএল উত্পন্ন করেছিল তা একেবারেই
ঘৃণ্যকর

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

1
ফসকো, এনহাইবারনেটকে আর একটি সুযোগ দিন। অন্য কোনও টেকনোলয়ের মতো, আপনাকে সঠিকভাবে ব্যবহার করার জন্য ভিতরে কী চলছে তা বুঝতে হবে।

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

5

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

সুতরাং, আমি অনুমান করি যে প্রশ্নগুলির মধ্যে আপনি ঝাঁপ দেওয়ার আগে হওয়া উচিত:

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

এবং তারপরে, অতিরিক্ত বিমূর্ততা স্তরটি কি অ্যাপ্লিকেশনটিতে নেতিবাচক প্রভাব ফেলবে? এটি কি হাত কোডড এসকিউএল ইত্যাদির চেয়ে ধীর হতে চলেছে etc.


5

ও / আরএম নিয়মিত সমালোচিত হয়েছে। টেড নিউয়ার্ড কয়েক বছর আগে এটিকে " কম্পিউটার বিজ্ঞানের ভিয়েতনাম " নামে অভিহিত করেছিলেন । হে / আরএম

সময় শুরু হওয়ার সাথে সাথে আরও জটিল হয়ে ওঠে এবং দীর্ঘসময় আগে তার ব্যবহারকারীদের এমন একটি প্রতিশ্রুতিতে জড়িয়ে ধরে যার স্পষ্ট সীমানা বিন্দু নেই, সুস্পষ্ট জয়ের শর্ত নেই এবং স্পষ্ট প্রস্থান কৌশল নেই।

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


2
দুর্দান্ত পড়া সেখানে। আমি ক্যারিয়ারে পুরো-চেনাশোনা এসেছি এবং সম্পূর্ণ সাফল্যের সাথে রিলেশনাল মডেলটিকে আবার জড়িয়েছি।
Jue Queue

2
+1 @ এক্সপোচ - আমি ফেস রি: সাম্প্রতিককালে একটি সাম্প্রতিক করেছি: এসকিউএল কেন শীত ছাড়ছে? বিমূর্ততা, নিশ্চিত - তবে ওআরএম মনে হয় এসকিউএল ফোবিয়ার প্রচার করে।
সূর্যউকুং

1
@ সানউইউকুং, আমি সর্বদা একমত হইনি, তবে আমি এখন বিশ্বাস করি যে এসকিউএলকে কেবল তারের প্রোটোকল হিসাবে ব্যবহৃত কিছু নয়, প্রথম শ্রেণির লজিক স্তর হিসাবে বিবেচনা করা উচিত।
Jé ক্যু

3

বিকল্প কি?

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

দিন শেষে নিজেকে জিজ্ঞাসা করতে হবে - বিকল্প কী?

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


আমি মোটেই যুক্তিযুক্ত ডাটাবেস ব্যবহার করার প্রয়োজনীয়তা নিয়ে প্রশ্ন করব। এটি আমাকে বিরক্ত করে যে লোকেরা সঠিক সমাধান না হলেও তত্ক্ষণাত আরডিবিএমএসে ঝাঁপিয়ে পড়ে। উদাহরণস্বরূপ, অবজেক্ট ডাটাবেসগুলি অনেক সমস্যার একটি খুব মার্জিত সমাধান সরবরাহ করে। তারা নিখুঁত হয়? না, তবে লোকেরা তাদের মূল্যায়নে বিরল বিরক্ত করে। "আমার ডেটা সংরক্ষণ করা দরকার, আমি এসকিউএল ব্যবহার করব!"
ম্যাট ওলেনিক

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

3

একটি ওআরএম মূলত " আনস্টার্ড প্রক্রিয়াগুলি " এর পরিমাণ । সেখানে, আমি একটি শব্দ তৈরি করেছিলাম।

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

তবে যথারীতি এটি সমস্তই প্রয়োগ এবং কার্যের উপর নির্ভর করে।


2
"আনস্টার্ড প্রক্রিয়াগুলি" - সঠিক শব্দটি হ'ল "প্যারামিটারাইজড এসকিউএল"। আপনি কেবলমাত্র একজন পরিপক্ক
ওআরএম

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

3

ওআরএম ব্যবহার করে যে জিনিসটি ব্যাথা করে তা হ'ল তাদের অনেক অনুরাগী দাবি করেন যে আমাদের আর এসকিউএল এবং আরডিবি তত্ত্ব জানতে হবে না। ফলাফলগুলি মজার থেকে সম্পূর্ণ বিপর্যয়কর পরিবর্তিত হয়। এবং এটি ওআরএম 'মিলিয়ন বার তৈরি এবং পন্ডিতদের জানিয়েছে যে একটি ওআরএম সঠিকভাবে ব্যবহার এবং কনফিগার করতে আমাদের এসকিউএল এবং আরডিবি তত্ত্বটি ভালভাবে জানতে হবে

লোকেরা এমন কোনও সরঞ্জাম কেন নেয় যার অনেকের ব্যবহার রয়েছে তবে সমস্ত যাদুকর, সর্বজনীনভাবে প্রযোজ্য রৌপ্য বুলেট হিসাবে সমস্ত বিষয়গুলি আমার বাইরে নয়।


1

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

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

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

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


1

তবে মুল বক্তব্যটি হ'ল আপনি ডাটাবেস থেকে দূরে প্রোগ্রামে চলে যাচ্ছেন, যার অর্থ আপনার ডাটাবেসে যেমন আছে তেমন ভাবার দরকার নেই।

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

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

আপনি এখনও ডিবি-পাশ ফাংশন লিখতে পারেন। প্রায়শই আপনি কেবল সেগুলি দিয়ে ম্যাপ করতে পারেন।

সর্বোপরি, এর মতো পৃথকীকরণ পরীক্ষার যোগ্যতা দেয় এবং আপনাকে (সামান্য) আরও ভাল কাঠামোগত কোড লিখতে বাধ্য করে


2
আবার, আপনাকে ডাটাবেস থেকে দূরে প্রোগ্রাম করার দরকার কেন? আপনি প্রথমে কোনওটিকে বেছে নেওয়ার জন্য বেছে নিয়েছেন কেন ডাটাবেসটিকে আপনার বিকাশের একটি অবিচ্ছেদ্য অঙ্গ হিসাবে পরিণত করবেন না। আপনার যদি আরডিবিএমএসের দরকার না হয় তবে কেন এটির উপরে একটি ওআরএম চালাবেন?
Jue ক্যু

1
এটি একটি অবিচ্ছেদ্য অঙ্গ। একটি ডাটাবেস সম্পর্ক বজায় রাখতে এবং প্রয়োগ করতে এবং কাঁচা তথ্য পুনরুদ্ধারে খুব ভাল করে। যাইহোক, আপনি এই ডেটা দিয়ে যে জিনিসগুলি করতে চান তা সম্ভবত ইতিমধ্যে ORM মোড়কে সামলানো হয়েছে। এবং সমালোচনামূলক বিষয়গুলি ছাড়াও কেন যুক্তিটি ব্যবসায়ের স্তর থেকে সরিয়ে নিন?
পোড়ানো_ এবং

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

@ luis.espinal - আপনার নিজের সময়টাকে বড় সময় বোঝাতে কী বোঝায়? আমি সত্যই কৌতূহলী। আপনার কি উদাহরণ আছে?
পোড়া_আন্দ

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

1

ORMs করতে আপনি ডাটাবেস নির্দিষ্ট অ্যাক্সেস দিতে পাশাপাশি অতিরিক্ত বৈশিষ্ট্যগুলিও উপস্থিত রয়েছে, এটা যার উপর আপনি ব্যবহার করছেন ORM নির্ভর এবং কি অতিরিক্ত বৈশিষ্ট্যগুলিও উপস্থিত রয়েছে এটা প্রদান করে।

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

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

তবে , আপনার আবেদনের প্রয়োজনীয়তার উপর নির্ভর করে কোনও সময়ে আপনাকে সম্ভবত এটি সম্পর্কে ভাবতে হবে। ওআরএম যাদু নয়।


1

আমি আমার নিজের লিখেছিলাম যা আমাকে নির্বাচন করতে এবং সন্নিবেশ সহজ করতে সহায়তা করে।

এভ ডিবি নির্দিষ্ট জিনিস উপলব্ধ। আমাকে কেবল নিজের ক্যোয়ারীটি লিখতে হবে যা গ্রন্থাগারটি আমাকে সহায়তা করে (আমি নিজেই কোনও প্যারামিটারের নাম রাখার পরিবর্তে '?' এবং প্যারাম ব্যবহার করতে পারি এবং ব্যবহার করতে পারি।

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


1

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

এগুলি মানসম্পন্ন, সর্বজনীন, হয় নির্দিষ্ট বা জেনেরিক। তদ্ব্যতীত এটির দ্রুত এবং কার্যকর করা সহজ। আমি সাবসোনিক, লিনাক-টু-এসকিএল এবং সত্তা কাঠামো ব্যবহার করেছি। এটি বিকাশকারীকে ডেটাবেস ম্যাপিংয়ের পরিবর্তে যুক্তি এবং ব্যবসার নিয়মে মনোনিবেশ করতে দেয় allows


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

1

আমার (সাধারণ) দুটি সেন্ট:

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

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

৩: ডাটাবেস থেকে লুকোবেন কেন? আপনি জাভাস্ক্রিপ্ট বিমূর্ত করতে একটি সার্ভার সাইড ভাষা ব্যবহার করবেন?

ব্যক্তিগতভাবে আমি এই পদ্ধতিগুলিকে মিশ্রিত করি:

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

সব কিছু বলার পরে, মতবাদ 2 শীঘ্রই প্রকাশিত হচ্ছে, যা সত্যই আকর্ষণীয় দেখাচ্ছে।


0

আপনি এসকিউএল বৈশিষ্ট্যগুলি ব্যবহার করতে চাইলে আপনি মাইবাটিসের মতো এসকিউএল ম্যাপার ফ্রেমওয়ার্কগুলি ব্যবহার করতে পারেন।


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