একটি ওআরএম কী, এটি কীভাবে কাজ করে এবং আমি কীভাবে এটি ব্যবহার করব? [বন্ধ]


230

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

কোনও ওআরএম কী এবং এটি কীভাবে কাজ করে এবং কীভাবে আমার এটি ব্যবহার করা শুরু করা উচিত তার সংক্ষিপ্ত বিবরণ কেউ আমাকে দিতে পারেন?


8
আমি এই প্রশ্নটি পেয়েছি তবে এটি ২০০৯ সালের এবং আমি জানি না আপনি ইতিমধ্যে ওআরএম আয়ত্ত করেছেন কিনা তবে কোডপ্লেক্স সি # তে সত্ত্বা ফ্রেমওয়ার্ক সন্ধান করুন ( অ্যান্টিফ্রেমওয়ার্ক.কম্প্লেক্স.কম ) এখানে উত্স কোড যা আপনি শিখতে পারেন তা এখানে। এছাড়াও আপনি এটি পড়তে পারেন। ( dbtechnet.org/labs/dae_lab/Orm.pdf )
ম্যাক্সিমাস ডেসিমাস

1
কেবল এটিই উল্লেখ করতে চাই যে ওআরএম ক্যামের সাথে অবজেক্ট-রোল মডেলিং en.wikedia.org/wiki/Object-rol_modeling
O-9

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

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

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

উত্তর:


483

ভূমিকা

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

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

উদাহরণস্বরূপ, এখানে ছদ্ম ভাষা সহ সম্পূর্ণ কল্পিত ঘটনা:

আপনার একটি বইয়ের ক্লাস রয়েছে, আপনি লেখক যে সমস্ত বই "লিনাস" সেগুলি পুনরুদ্ধার করতে চান। ম্যানুয়ালি, আপনি এরকম কিছু করবেন:

book_list = new List();
sql = "SELECT book FROM library WHERE author = 'Linus'";
data = query(sql); // I over simplify ...
while (row = data.next())
{
     book = new Book();
     book.setAuthor(row.get('author');
     book_list.add(book);
}

একটি ওআরএম লাইব্রেরি সহ, এটি দেখতে এরকম হবে:

book_list = BookTable.query(author="Linus");

মেকানিকাল অংশটি ORM গ্রন্থাগারের মাধ্যমে স্বয়ংক্রিয়ভাবে যত্ন নেওয়া হয়।

সুবিধা - অসুবিধা

ORM ব্যবহার করা অনেক সময় সাশ্রয় করে কারণ:

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

একটি ORM গ্রন্থাগার ব্যবহার করা আরও নমনীয় কারণ:

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

তবে ওআরএম একটি ব্যথা হতে পারে:

  • আপনাকে এটি শিখতে হবে এবং ওআরএম লাইব্রেরিগুলি হালকা ওজনের সরঞ্জাম নয়;
  • আপনি এটি সেট আপ করতে হবে। একই সমস্যা.
  • পারফরম্যান্স স্বাভাবিক প্রশ্নের জন্য ঠিক আছে, তবে একটি এসকিউএল মাস্টার বড় প্রকল্পগুলির জন্য তার নিজের এসকিউএল দিয়ে সর্বদা আরও ভাল করবে।
  • এটি ডিবি বিমূর্ত করে। আপনি যদি দৃশ্যের পিছনে কী ঘটছেন তা জানেন তবে এটি ঠিক আছে, তবে এটি নতুন প্রোগ্রামারদের জন্য একটি ফাঁদ যা খুব লোভী বক্তব্য লিখতে পারে যেমন একটি forলুপে ভারী আঘাতের মতো ।

কীভাবে ওআরএম সম্পর্কে শিখব?

ভাল, একটি ব্যবহার করুন। আপনি যে কোনও ওআরএম লাইব্রেরি চয়ন করেন, তারা সকলেই একই নীতি ব্যবহার করে। এখানে প্রায় প্রচুর ওআরএম লাইব্রেরি রয়েছে:

আপনি যদি ওয়েব প্রোগ্রামিংয়ে কোনও ওআরএম লাইব্রেরি চেষ্টা করতে চান তবে পুরো ফ্রেমওয়ার্ক স্ট্যাকের মতো ব্যবহার করা ভাল:

  • সিমফনি (পিএইচপি, প্রপেল বা মতবাদ ব্যবহার করে)।
  • জ্যাঙ্গো (পাইথন, একটি অভ্যন্তরীণ ওআরএম ব্যবহার করে)।

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


50

কেউ কি আমাকে একটি সংক্ষিপ্ত ব্যাখ্যা দিতে পারেন ...

অবশ্যই।

ORM এর অর্থ "অবজেক্ট টু রিলেশনাল ম্যাপিং" যেখানে

  • অবজেক্ট পার্ট ওয়ান আপনি আপনার প্রোগ্রামিং ভাষা সঙ্গে ব্যবহার (এই ক্ষেত্রে পাইথন) হল

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

  • এবং পরিশেষে ম্যাপিংয়ের অংশটি যেখানে আপনি নিজের বস্তু এবং আপনার টেবিলগুলির মধ্যে একটি সেতু করেন।

অ্যাপ্লিকেশনগুলিতে যেখানে আপনি কোনও ORM কাঠামো ব্যবহার করেন না আপনি হাত দ্বারা এটি করেন। একটি ওআরএম কাঠামো ব্যবহার করা আপনাকে সমাধান তৈরি করার জন্য প্রয়োজনীয় বয়লারপ্লেট হ্রাস করতে দেয়।

সুতরাং আসুন আমরা আপনার এই অবজেক্ট আছে বলুন।

 class Employee:
      def __init__( self, name ): 
          self.__name = name

       def getName( self ):
           return self.__name

       #etc.

এবং টেবিল

   create table employee(
          name varcar(10),
          -- etc  
    )

একটি ওআরএম কাঠামো ব্যবহার করে আপনাকে সেই ডিবি রেকর্ডটি দিয়ে স্বয়ংক্রিয়ভাবে সেই বস্তুটি ম্যাপ করতে এবং এমন কিছু লেখার অনুমতি দেয়:

   emp = Employee("Ryan")

   orm.save( emp )

এবং কর্মচারীকে ডিবিতে .ুকিয়ে দিন।

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


17

একটি ওআরএম (অবজেক্ট রিলেশনাল ম্যাপার) হল সফ্টওয়্যারটির একটি অংশ / স্তর যা আপনার কোড অবজেক্টগুলিকে আপনার ডাটাবেসে মানচিত্র করতে সহায়তা করে।

কিছু অন্যের চেয়ে বেশি দিক পরিচালনা করে ... তবে উদ্দেশ্যটি হ'ল ডেটা লেয়ারের কিছু ওজন কিছু বিকাশকারীদের কাঁধ থেকে তুলে নেওয়া।

মার্টিন ফোলার (ডেটা ম্যাপার) এর একটি সংক্ষিপ্ত ক্লিপ এখানে দেওয়া হয়েছে:

এন্টারপ্রাইজ অ্যাপ্লিকেশন আর্কিটেকচার ডেটা ম্যাপের প্যাটার্নস


4

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


2

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

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