কেন এসকিউএল জন্য কোন ভালবাসা? [বন্ধ]


116

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

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

কী এসকিউএলকে এত ভয়ঙ্কর করে তোলে এবং ডাটাবেস বিমূর্ত স্তরগুলি কেন মূল্যবান?


11
টাইপ সুরক্ষা সম্পর্কে কি?
জননী

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

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

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

6
@ কেএম: ভোট নিয়ে সমস্যা হ'ল তারা উত্তর পড়ার সংখ্যার উপর অনেক বেশি নির্ভর করে। আমি অনেক NHibernate এবং রাইনো মোকস প্রশ্নের উত্তর দিয়েছি যা সঠিকভাবে উত্তর দিতে কিছুটা সময় নিয়েছিল - এবং গ্রহণযোগ্য হয়েছে তবে একটি ভোটও নয়। আপনি যদি সি # সম্পর্কে তুচ্ছ কিছু উত্তর দেন তবে আপনি কয়েক ডজন ভোট পান। ভোট ঠিক ন্যায্য নয়। আপনি আরও ভাল কিছু জানলে মেটা.স্টকওভারফ্লোতে কিছু প্রস্তাব দিন।
স্টিফান স্টেইনগার

উত্তর:


132

এটি আংশিকভাবে বিষয়গত। সুতরাং এটি আমার মতামত:

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

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

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

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

তবে এটি সত্য - সম্ভাব্য কোনও বিকল্প নেই। সুতরাং আমরা সবাই পরের কয়েক বছরের জন্য এসকিউএল ব্যবহার করব।


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

4
মার্কজে: আমার মনে আছে আমি ওরাকলে কোয়েরিগুলি অনুকূল করতে যেখানে ক্লজগুলি পুনরায় অর্ডার করেছি। তারা যেখানে নীচে থেকে শীর্ষে সমাধান হয়েছে ... ভয়ানক।
স্টিফান স্টেইনগার

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

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

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

58

যা বলা হয়েছিল তা বাদ দিয়ে একটি বিমূর্ত স্তরকে মূল্যবান করে তুলতে কোনও প্রযুক্তি খারাপ হতে হবে না

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

এসকিউএল দুর্দান্ত। এর উপরে বিমূর্ত স্তরগুলি আরও বেশি করে তোলে!


6
খুব কূটনৈতিক! (এবং সত্য, বুট করতে!)
জোসেফ ফেরিস

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

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

53

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

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


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

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

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

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

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

36

এসকিউএল বেশ কয়েকটি উত্স থেকে খারাপ ধারণা পেয়েছে:

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

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

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

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


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

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

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

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

কয়েকটি লাইনের কোড লিখতে বা বোঝার জন্য আপনাকে এক ঘন্টার জন্য জিনিসগুলি নিয়ে ভাবতে হবে না। সময়কাল।
অ্যান্ড্রু

23

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


16

এসকিউএল SET ভিত্তিক ডেটা পরিচালনা এবং ক্যোয়ারির জন্য ডিজাইন করা হয়েছে। এটি প্রায়শই বেশি কিছু করতে ব্যবহৃত হয় এবং প্রবণ ক্ষেত্রে মাঝে মাঝে হতাশার কারণ হয়।

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

কারিগররা হাতুড়ি দিয়ে নখকে পাউন্ড করতে পারে, করাতের কাঠের সাথে করাত কাঠ এবং প্লেনগুলি সহ মসৃণ বোর্ড করতে পারে। হাতুড়ি এবং প্লেন ব্যবহার করে "দেখে" নেওয়া সম্ভব, তবে ডাং এটি হতাশার।


11

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

এসকিউএল সম্পর্কযুক্ত বীজগণিতের জন্য ডিজাইন করা হয়েছিল - এটিই এটি ব্যবহার করা উচিত।


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

5
-1, ত্রুটিটি ঠিক এটিই হ'ল এসকিউএল সেট-ভিত্তিক হতে ডিজাইন করা হয়েছে এবং এটি এর শক্তি। পদ্ধতিগত পদে চিন্তা করার অর্থ আপনি ভুল চিন্তা করছেন।
ক্রুয়াচান

1
এই স্ক্রু ড্রাইভারটি চুষে! এটির সাথে নখ ঠাট্টা করা এত কঠিন।
কেসি রডর্মার

9

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

মনে রাখবেন যে এই স্তরগুলি কেবল তাদের নিজস্ব স্টাফগুলিকে রূপান্তর করে SQL। বেশিরভাগ ডাটাবেস বিক্রেতাদের SQLজন্য ইঞ্জিনের সাথে যোগাযোগের একমাত্র উপায়।

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

… কারণ যার জন্য আমি কেবল উপরে বর্ণিত করেছি।

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

সংজ্ঞা অনুসারে, ডাটাবেস স্তরগুলিতে এমন কিছু নেই যা অন্তর্ভুক্ত নেই SQL

কী SQLএত ভয়ঙ্কর করে তোলে এবং ডাটাবেস বিমূর্ত স্তরগুলি কেন মূল্যবান?

SQL এটি একটি দুর্দান্ত ভাষা, তবে এটির সাথে কাজ করতে কিছুটা মস্তিষ্কের মোড় লাগে।

ধারণায়, SQL ঘোষণামূলক, এটিই আপনি ঘোষণা করেন যে আপনি কী পেতে চান এবং ইঞ্জিন এটি দ্রুততম উপায়ে সরবরাহ করে।

অনুশীলনে, সঠিক কোয়েরি গঠনের অনেকগুলি উপায় রয়েছে (এটি এমন কোয়েরি যা সঠিক ফলাফলগুলি ফেরত দেয়)

অপ্টিমাইজারগুলি কিছু পূর্বনির্ধারিত অ্যালগরিদম (হ্যাঁ, তারা একাধিক) এর বাইরে লেগো দুর্গ তৈরি করতে সক্ষম তবে তারা কেবল নতুন অ্যালগরিদম তৈরি করতে পারবেন না। SQLতাদের সহায়তা করতে এখনও এটি বিকাশকারী লাগে ।

যাইহোক, কিছু লোক আশা করেন যে সর্বোত্তম পরিকল্পনাটি "সম্ভাব্য সর্বোত্তম পরিকল্পনা" উত্পাদন করবে, "প্রদত্ত কার্যকর প্রয়োগের সাথে এই ক্যোয়ারির জন্য সেরা পরিকল্পনা উপলব্ধ নয়" SQL ইঞ্জিনের " তৈরি করবে।

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

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

এটি দুর্দান্ত লাগবে, যদিও বিক্রেতারা যদি "সূচী রেঞ্জ পান", "" একটি সারি পান rowid"ইত্যাদি ইত্যাদি ক্রিয়াকলাপগুলিতে কিছু নিম্ন স্তরের অ্যাক্সেস সরবরাহ করে , যেমন Cসংকলকগুলি আপনাকে ঠিক ঠিক ভাষায় এমেম্বিটি এম্বেড করতে দেয়।

আমি সাম্প্রতিককালে আমার ব্লগে এই সম্পর্কে একটি নিবন্ধ লিখেছি:


7

আমি একটি বিশাল ওআরএম অ্যাডভোকেট এবং আমি এখনও বিশ্বাস করি যে এসকিউএল খুব কার্যকর, যদিও এটির সাথে ভয়ঙ্কর কিছু করা অবশ্যই সম্ভব (অন্য কোনও কিছুর মতো)। ।

আমি এসকিউএলকে একটি সুপার-দক্ষ ভাষা হিসাবে দেখি যার কোড পুনরায় ব্যবহার বা রক্ষণাবেক্ষণ / রিফ্যাক্টরিং অগ্রাধিকার হিসাবে নেই।

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

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


7

আমি বলব যে একটি কাঠামোর সাথে অন্তর্ভুক্ত একটি ডাটাবেস বিমূর্ত স্তর একটি ভাল জিনিস কারণ এটি দুটি খুব গুরুত্বপূর্ণ সমস্যা সমাধান করে:

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

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

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


6

এসকিউএল কিছু ধরণের কাজের জন্য বিশেষত সেটগুলিতে হেরফের এবং পুনরুদ্ধারের জন্য দুর্দান্ত ডেটা জন্য দুর্দান্ত।

তবে এসকিউএল পরিবর্তন এবং জটিলতা পরিচালনার জন্য কয়েকটি গুরুত্বপূর্ণ সরঞ্জাম (বা কেবল আংশিক প্রয়োগ) নিখোঁজ রয়েছে:

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

  • পলিমারফিজম : আপনি যদি বিভিন্ন টেবিলগুলিতে একই ক্রিয়াকলাপ করতে চান তবে আপনাকে কোডটি দুবার লিখতে হবে। (ধারণাগুলির ধারণামূলক ব্যবহারের মাধ্যমে কেউ এটিকে প্রশমিত করতে পারে))

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

  • পরিমিতি এবং সংস্করণ

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

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


দৃশ্যমানতা নিয়ন্ত্রণের জন্য স্কিমার কী হবে?
তিনটি মান যুক্তি

5

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

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


5

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

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


4

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


2
সত্য, তবে এর জন্য আপনার কোনও
ওআরএমের

2
সরাসরি এসকিউএল লেখার সময় প্যারামিট্রাইজড কোয়েরিগুলি ব্যবহার করা তুচ্ছ provided $dbh->do("DELETE FROM my_table WHERE some_value = ?", undef, $target_value); সেখানে। সম্পন্ন.
ডেভ শেরোহমান

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

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

3
জে, "সরল ফাংশন যা কোনও স্ট্রিংয়ের চারপাশে উদ্ধৃতি রাখে এবং কোনও এম্বেডড কোটগুলি যথাযথভাবে পালিয়ে যায়" সার্ভারে ব্যবহারকারীর বর্তমান অক্ষরটিকে বিবেচনা করে?
ygrek

4

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

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


4

অভিজ্ঞ এসকিউএল প্রোগ্রামারের জন্য খারাপ দিকগুলি

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

অন্যদের জন্য কারণগুলি হ'ল

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

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

[26.06.10 আপডেট] সম্প্রতি আমি সঙ্গে কাজ জ্যাঙ্গো ORM মডিউল । এটি আমি দেখেছি শুধুমাত্র যোগ্য এসকিউএল কাঠামো। এবং এই এক জিনিস অনেক কাজ করে তোলে। জটিল সমষ্টিগুলি যদিও কিছুটা শক্ত।


3

এসকিউএল কোনও ভয়ঙ্কর ভাষা নয়, এটি কখনও কখনও অন্যদের সাথে খুব ভাল খেলেন না।

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


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

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

জোয়াকিম সাউর বলেছিলেন যে এসকিউএল একটি ভয়ঙ্কর ভাষা নয়, এটি অন্যের সাথে খুব বেশি ভাল খেলা করে না আমার কাছে, এটি এমন মনে হয় যে কেউ বলেছে এটি এসকিউএলস দোষ
কেএম।

1
@ কেএম: আপনি কি বলছেন যে ফরাসি এবং জার্মান খারাপ ভাষা? তারা ইংরাজির সাথে এতো ভালো খেলছে না।
ডেভিড থর্নলি

3

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

এসকিউএলকে ঘৃণা করার অন্য কারণটি হ'ল সম্পর্কের ডাটাবেসের কারণে of

ক্যাপ উপপাদ্য জনপ্রিয় হয়ে:

ভাগ করা ডেটা সিস্টেম থেকে আপনি কী লক্ষ্যগুলি চাইতে পারেন?

  • শক্তিশালী ধারাবাহিকতা: আপডেটের উপস্থিতিতেও সমস্ত ক্লায়েন্ট একই দৃষ্টিভঙ্গি দেখে
  • উচ্চ প্রাপ্যতা: সমস্ত ক্লায়েন্টরা ব্যর্থতার উপস্থিতিতে এমনকি ডেটাগুলির কিছু প্রতিলিপি খুঁজে পেতে পারে
  • পার্টিশন-সহনশীলতা: সিস্টেমটি বিভক্ত হয়ে গেলেও সিস্টেমের বৈশিষ্ট্যগুলি ধারণ করে

উপপাদ্যটিতে বলা হয়েছে যে আপনার কাছে একই সময়ে তিনটি সিএপি বৈশিষ্ট্যগুলির মধ্যে কেবল দুটি থাকতে পারে

সম্পর্কিত সম্পর্কিত ডাটাবেস ঠিকানা শক্তিশালী ধারাবাহিকতা এবং পার্টিশন-সহনশীলতা।

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

যদি রিলেশনাল ডাটাবেস প্রত্যাখ্যান করা হয় তবে এসকিউএলও প্রত্যাখ্যাত হবে।


3

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

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

এবং নাল পরিচালনা করা আমাকে পাগল করে তোলে! হ্যাঁ, তাত্ত্বিকভাবে এটি অবশ্যই দুর্দান্ত লাগবে যখন কেউ বলেছিল, "আরে, যদি নাল মানে অজানা, তবে একটি পরিচিত মানের সাথে একটি অজানা মান যুক্ত করা উচিত একটি অজানা মান দেওয়া উচিত all সর্বোপরি সংজ্ঞা অনুসারে, অজানা মানটি কী তা আমাদের কোনও ধারণা নেই । " তাত্ত্বিকভাবে, একেবারে সত্য। অনুশীলনে, যদি আমাদের 10,000 গ্রাহক থাকে এবং আমরা ঠিক জানি যে 9,999 আমাদের কত eণী, তবে শেষের এক হিসাবে পাওনা পরিমাণ নিয়ে কিছু প্রশ্ন রয়েছে, এবং ম্যানেজমেন্ট বলে, "আমাদের মোট অ্যাকাউন্টগুলি কীভাবে গ্রহণযোগ্য?", হ্যাঁ, গাণিতিকভাবে সঠিক উত্তরটি "আমি জানি না"। তবে ব্যবহারিক উত্তরটি হ'ল "আমরা গণনা করি $ 4,327,287.42 তবে একটি অ্যাকাউন্ট প্রশ্নবিদ্ধ রয়েছে যাতে এই সংখ্যাটি সঠিক নয়"। আমি নিশ্চিত যে ফাঁকা দেখার চেয়ে নির্দিষ্ট নম্বর না থাকলে ম্যানেজমেন্ট অনেকটা ঘনিষ্ঠ হয়ে উঠবে।

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


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

1
তবে পরিচালন কোনও "নির্দিষ্ট সংখ্যা না থাকলে নিকট" দেখতে পাবেন না - তারা একটি ভুল নম্বর দেখতে পাবেন। হতে পারে সেই চূড়ান্ত গ্রাহকের প্রচুর অর্থ .ণী । তারপরে ম্যানেজমেন্ট সেই ভুল নম্বরটি সম্পর্কে খুব অসন্তুষ্ট হবে।
এইচটিটিপি 410

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

... বাস্তব জীবনে, 95% সময়, একটি আনুমানিক উত্তর একটি ফাঁকা দেখার চেয়ে ভাল উপায়। যখন আমি আমার চেকবুকটি দেখি, আমি জানি যে এটি সম্ভবত সম্ভব যে আমি একটি গাণিতিক ত্রুটি করেছি বা চেকটিতে লিখতে ভুলে গেছি। ভারসাম্যটি সম্ভবত একটি আনুমানিক হতে পারে। তবে তবুও, যদি আমি জানি আমার "প্রায়" 1000 "রয়েছে তবে আমার 50 ডলারে একটি চেক লেখার পক্ষে কোনও দক্ষতা থাকবে না এবং আমি বুঝতে পারি যে 10,000 ডলারে একটি চেক লেখার অর্থ ব্যর্থ হবে।
জয়

ঠিক আছে, আমি একটি ব্যবসা চালিয়েছি এবং এটি কখনই 10 কে বনাম 1 আইএমএক্স নয়, এটি প্রতি 100 জন পরিচিত (প্যারেটো নীতি) এর চেয়ে 20 অজানা kin এবং এই 20 টির মধ্যে কিছু আমাদের প্রচুর অর্থ পাওনা, যার কারণে আসল পরিমাণটি বিতর্কিত হয়েছিল। আবার এটি প্যারাটো নীতি।
এইচটিটিপি 410

3

• প্রতিটি বিক্রেতা তাদের প্রয়োজন অনুসারে এসকিউএল সিনট্যাক্স প্রসারিত করে। সুতরাং আপনি যদি মোটামুটি সহজ জিনিস না করেন তবে আপনার এসকিউএল কোডটি বহনযোগ্য নয়।

S এসকিউএল এর বাক্য গঠনটি অরথোগোনাল নয়; উদাহরণস্বরূপ, select, insert, update,এবং deleteবিবৃতিগুলির সম্পূর্ণ ভিন্ন বাক্য গঠন কাঠামো রয়েছে।


1
কীভাবে এটি সিনট্যাক্সকে অরথোগোনাল করে না?
আমোক

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

2

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


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

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

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

2

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

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


মেমরিতে বস্তুর উদাহরণগুলির সাথে ডিল করা ডেটাবেসে শারীরিকভাবে সংরক্ষণ করা ডেটার চেয়ে বেশ আলাদা than
কেএম

2

আপনি যদি এসকিউএল বেশি ব্যবহার না করেন তবে আমার মনে হয় বড় সমস্যাটি হ'ল ভাল বিকাশকারী সরঞ্জামের অভাব।

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


2

দ্রুত, মাইএসকিউএল, ওরাকল, এমএসএসকিউএল, পোস্টগ্রাইএসকিউএল এবং ডিবি 2 এ কাজ করে এমন একটি ডেটাसेट প্যাগিনেট করতে আমাকে এসকিউএল লিখুন।

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


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

2
@ স্টিভেন হুইগ: আমি সম্ভবত এটি করার জন্য একটি বিমূর্ত স্তর ব্যবহার করব ... যা প্রশ্নটি জিজ্ঞাসা করছিল ঠিক তেমনটাই।
পাওয়ারলর্ড

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

2

এসকিউএলের জন্য কোনও প্রেম নেই কারণ এসকিউএল সিনট্যাক্স, শব্দার্থবিজ্ঞান এবং বর্তমান ব্যবহারের ক্ষেত্রে খারাপ। আমি ব্যাখ্যা করবো:

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

1

আমি এখানে বেশিরভাগ পোস্টের সাথে একমত হয়েছি যে এসকিউএল এর ইউটিলিটি নিয়ে বিতর্ক বেশিরভাগ বিষয়বস্তুযুক্ত, তবে আমি মনে করি এটি আপনার ব্যবসায়ের প্রয়োজনের প্রকৃতির ক্ষেত্রে আরও বিষয়ভিত্তিক।

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

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

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


আপনি কেবল মাইএসকিউএল না ব্যবহার করে নিজেকে সেই ব্যথার বেশ কিছুটা বাঁচাতে পারেন। ;)
স্টিভেন হুইগ

1

এসকিউএল কাজটি করার সময় এটির অবশ্যই সমস্যা রয়েছে ...


  • এটি একই সাথে উচ্চ স্তরের এবং নিম্ন স্তরের বিমূর্ততা হওয়ার চেষ্টা করে এবং এটি ... বিজোড়। সম্ভবত এটি বিভিন্ন স্তরে দুটি বা ততোধিক মান হওয়া উচিত ছিল।
  • এটি একটি মান হিসাবে একটি বিশাল ব্যর্থতা । অনেক কিছু ভুল হয়ে যায় যখন কোনও মানক হয় সব কিছুতে স্টার করে, খুব বেশি বাস্তবায়ন জিজ্ঞাসা করে, খুব কম জিজ্ঞাসা করে, বা কোনও কারণে বিক্রেতাদের এবং বাস্তবায়নকারীদের আন্তঃযোগাযোগ্য সম্পূর্ণ বাস্তবায়নের জন্য কঠোরভাবে মানিয়ে আনার আংশিক সামাজিক লক্ষ্য অর্জন করে না। আপনি অবশ্যই বলতে পারবেন না যে এসকিউএল এর কোনও কাজ করেছে। অন্য কয়েকটি স্ট্যান্ডার্ড দেখুন এবং নোট করুন যে সাফল্য বা মানটির ব্যর্থতা স্পষ্টতই কার্যকর সহযোগিতা অর্জনের একটি কারণ:
    • আরএস -২৩২ ( খারাপ , প্রায় যথেষ্ট সুনির্দিষ্ট নয়, কোন পিনটি প্রেরণ করে এবং কোন পিনটি optionচ্ছিক, শীশ You ।)
    • আইইইই 754-1985 ফ্লোটিং পয়েন্ট ( খারাপ , ওভাররিচ: কোনও একক কম্পিউটার বা বৈজ্ঞানিক ওয়ার্কস্টেশন বা আরআইএসসি মাইক্রোপ্রসেসর কখনও এটিকে গ্রহণ করে নি, যদিও শেষ পর্যন্ত 20 বছর পরেও আমরা এটি এইচডব্লিউতে সুন্দরভাবে প্রয়োগ করতে পেরেছিলাম। কমপক্ষে অবশেষে বিশ্ব এটির মধ্যে বৃদ্ধি পেয়েছিল))
    • সি ৯৮, সি৯৯, পিসিআই, ইউএসবি, জাভা ( ভাল , তারা মানক বা বর্ণিত হোক না কেন, তারা প্রায় প্রত্যেকের কাছ থেকে কঠোর সম্মতি প্রেরণায় সাফল্য অর্জন করেছিল এবং সেই সম্মতিটি সফল আন্তঃসংযোগের ফলস্বরূপ))
  • এটি যুক্তিযুক্তভাবে বিশ্বের সবচেয়ে গুরুত্বপূর্ণ ডাটাবেসের জন্য নির্বাচিত হতে ব্যর্থ হয়েছিল । যদিও এটি কোনও কারণের চেয়ে বেশি ডেটাপয়েন্ট, তবে গুগল বিগ টেবিল এসকিউএল নয় এবং সম্পর্ক সম্পর্কিত নয় এটি এসকিউএল-এর জন্য একটি বিরোধী কৃতিত্ব of

0

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

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

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


1
ডাউনভোটার - আপনি সম্মত নন এমন সমস্ত কিছুর জন্য বা ডাউন বোতামটি ক্লিক করে তা বোঝানোর যত্ন নিন?
জোসেফ ফেরিস 19

0

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

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

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