.NETs নির্বাচন (মানচিত্র) এবং সমষ্টি (হ্রাস) নামকরণের পিছনে যুক্তি কী?


17

অন্যান্য প্রোগ্রামিং ভাষায় আমি মানচিত্র এবং হ্রাসগুলি দেখেছি এবং সেগুলি কার্যকরী প্রোগ্রামিংয়ের ভিত্তি। আমি লিনিক্যু'র Aggregate(একই Reduce) এবং Select(একই হিসাবে Map) কোনও যুক্তি বা ইতিহাস খুঁজে পাইনি ?

আমি কেন জিজ্ঞাসা করছি তা হ'ল এটি একই জিনিসটি বুঝতে আমার কিছুটা সময় লেগেছে এবং আমি কী উত্সাহিত করছি এর কারণ কী।




আমি অন্যদিকে, নামটি নির্বাচন "মানচিত্র" এবং সমষ্টি "কমিয়ে" নামকরণের পিছনে যুক্তিটি জানতে আগ্রহী।
ডেন

উত্তর:


32

এটি বেশিরভাগই লিনকিউয়ের ইতিহাসে নেমে আসে।

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

সুতরাং, "নির্বাচন" এসকিউএল থেকে এসেছিলেন selectবিবৃতি, এবং "সমষ্টিগত" এসকিউএল সমষ্টিগত ফাংশন থেকে এসেছেন (যেমন, count, sum, avg, min, max)।

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

উদাহরণস্বরূপ, সি-তে একটি এমএসডিএন নিবন্ধ বিবেচনা করুন , যা বলে:

সিএ-তে ক্যোয়ারী অপারেটর ω

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

কমপক্ষে আমি যতটা জানি, এক্সপথ ভিত্তিক অপারেটরগুলি কখনই সি # তে যুক্ত করা হয়নি, কেবলমাত্র অপারেটরদের ডকুমেন্ট করা ছিল (লাইনকিউয়ের আগে) সরাসরি এসকিউএল ভিত্তিক ছিল।

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

 rows = select c.ContactName, o.ShippedDate
      from c in DB.Customers
      inner join o in DB.Orders
      on c.CustomerID == o.CustomerID;

এবং হ্যাঁ, একই নিবন্ধটি এসকিউএল-ভিত্তিক অনুসন্ধানগুলি প্রকৃত এসকিউএল ডাটাবেসগুলি থেকে আসা ডেটা ক্যোয়ারী ব্যবহার করার বিষয়ে বিশেষভাবে কথা বলেছে:

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

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

সুতরাং, হ্যাঁ, প্রথম থেকেই (বা এমনকি আপনার দৃষ্টিভঙ্গির ভিত্তিতে শুরুর আগে) লিনকিউ স্পষ্টভাবে এসকিউএল এর উপর ভিত্তি করে তৈরি হয়েছিল এবং বিশেষত এসকিউএল ডাটাবেসে ডেটা অ্যাক্সেসের অনুমতি দেওয়ার উদ্দেশ্যে তৈরি হয়েছিল।


5
আমি একমত নই যে লিনকিউ এসকিউএল অনুসন্ধানের জন্য উদ্ভাবিত হয়েছিল। LINQ ক্যোয়ারী অপারেশন উপর ভিত্তি করে তৈরি , যেটা ঘুরে ফিরে তাদের X♯, যা একটি পুরাতন Haskell, কাগজ উপর ভিত্তি করে তৈরি থেকে উত্তরাধিকারসূত্রে। মনে রাখবেন যে হাস্কেল গবেষণাপত্রের লেখকদের একজন হলেন এরিক মেইজার, যিনি এর পরে এক্স ও সি এর নকশার সাথেও জড়িত ছিলেন এবং অবশ্যই লিনকিউ এর ডিজাইনার ছিলেন। এবং এটি প্রথম থেকেই স্পষ্ট ছিল যে লিনকিউ কেবল এসকিউএল নয়, সমস্ত ধরণের বিষয় নিয়ে জিজ্ঞাসা করার জন্য ব্যবহার করা যেতে পারে (এটি লাইনকিউ-টু-এসকিউএল, লিনকিউ-টু-এক্সএমএল এবং লিনকিউ-টু-অবজেক্টের সাথে শীঘ্রই প্রথম দিন থেকে পাঠানো হয়েছে) এরপরে…
Jörg W Mittag

4
লিনকু-টু-সত্তা), এবং আসলে জিজ্ঞাসাবাদ করার চেয়ে অনেক বেশি (এটি মূলত সাধারণ মোনাড সংবিধান সিনট্যাক্স)। এটি এসকিউএল (এবং এক্সকিউয়ারি) প্রোগ্রামারদের পরিচিতির জন্য ডিজাইন করা হয়েছিল , তবে এটি কেবল সীমাবদ্ধ নয়। অনুরূপ শিরাতে, স্কালার মোনাডের বোঝাপড়াগুলি forলুপগুলির মতো দেখায় , এবং হাস্কেলের চেহারাটি সি-স্টাইলের অত্যাবশ্যক কোড ব্লকগুলির মতো, এবং তাই স্কালা তার মনডাফিক অপারেশনটিকে flatMapকল করে এবং হাস্কেল এটিকে returnএকই কারণে ডেকেছে : "মায়া" রোধে প্রতিরোধ " (প্রাক্তন) অপরিহার্য প্রোগ্রামার।
Jörg ডব্লু মিট্টাগ

2
@ জার্গডব্লিউমিত্যাগ: সম্পাদিত উত্তর দেখুন। আমি বিশ্বাস করি যে মাইক্রোসফ্টের ডকুমেন্টেশনগুলি আমার বক্তব্যকে সমর্থন করে।
জেরি কফিন 21

3
ইচ্ছামত ধোয়া অনুমানের পরিবর্তে উত্তরটি ন্যায়সঙ্গত করার জন্য +1। আপনি নিজেরাই মাইক্রোসফ্টের চেয়ে অনেক বেশি প্রামাণিক উত্স পেতে পারেন না।
মিলেনিয়ামব্যাগ

ধন্যবাদ, ভাল স্যার! এটি হ'ল ঠিক সেই ধরণের উত্তর আমি প্রত্যাশা করছিলাম।
Tx3

8

নেট। এ লিনকিউ পদ্ধতিগুলি

source.Where(x => condition)
      .Select(x => projection)

C # (এবং VB.NET) এর লাইনকিউ ক্যোয়ারী সিনট্যাক্সের সাথে সামঞ্জস্যপূর্ণ হওয়ার জন্য নামকরণ করা হয়েছিল

from x in source
where condition
select projection

যা এসকিউএল জানেন এমন লোকদের সাথে পরিচিত হওয়ার জন্য ডিজাইন করা হয়েছিল

SELECT projection
FROM source x
WHERE condition

2

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


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

1
আমি যা দেখেছি তা নয়। প্রধানত যা আমি সন্ধান করছি (আমার সাম্প্রতিক কাজের সন্ধানের মাধ্যমে) হ'ল যে বিকাশকারীরা একবার স্টোরড পদ্ধতি ব্যবহার করে ডেটা নিয়ে কাজ করেছিলেন তারা নিয়ন্ত্রকের মধ্যে তাদের সমস্ত স্ক্রিপ্টিং শুরু করছেন। আমার জন্য, এটি লিনক পরিচিত এক্সপ্রেশন ব্যবহার করতে সহায়তা করে। "আপনি যে লোকটির সাথে কাজ করেন" তার ক্ষেত্রে আমি সন্দেহ করি না তবে এটি আমার অভিজ্ঞতা নয়।
ক্রিস্টিন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.