রবার্ট সি মার্টিন এসকিউএল অপ্রয়োজনীয় হওয়ার অর্থ কী? [বন্ধ]


45

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

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

আমি এখানে কিছু লিঙ্ক সরবরাহ করব যাতে আপনি সরাসরি তাঁর মন থেকে পড়তে পারেন:

  1. ববি টেবিল
  2. পরিষ্কার আর্কিটেকচার লেকচার

প্রথমত, তিনি বলেছেন যে এসকিউএলকে পুরোপুরি সিস্টেম থেকে অপসারণ করা উচিত।

সমাধান. একমাত্র সমাধান। সম্পূর্ণ সিস্টেম থেকে এসকিউএল নির্মূল করা হয়। যদি কোনও এসকিউএল ইঞ্জিন না থাকে তবে কোনও এসকিউএলআই আক্রমণ হতে পারে না।

এবং যদিও তিনি এসকিউএলকে একটি এপিআইয়ের সাথে প্রতিস্থাপনের বিষয়ে কথা বলছেন, তবে আমি মনে করি না যে তিনি এসকিউএলটিকে একটি পূর্ববর্তী উক্তির কারণে এসকিউএল রাখছেন এবং নিবন্ধে তিনি আগে যা বলেছিলেন।

ফ্রেমওয়ার্কগুলি সমস্যাটি পরিচালনা করে না; ...

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

যদি এসকিউএল ডেটা অব্যাহত রাখতে ব্যবহার করা হচ্ছে না, তবে আমাদের কী ব্যবহার করার কথা?

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

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

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


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

42
কিন্তু, কিন্তু, কিন্তু ... এসকিউএল হয় একটি API। এটি কোনও আরডিবিএমএসের এপিআই। এটি কেবলমাত্র একটি শক্তিশালী এপিআই হতে পারে যা সহজেই অপব্যবহার করা যায়।
বার্ট ভ্যান ইনজেন শেেনা

25
আপনি যে একটি পাঠগত ইন্টারফেস নেই একটি ডিবি এপিআই তৈরি করেন, কখনো কখনো কিছু দরিদ্র প্রোগ্রামার কোড লিখতে হবে যে ভালো দেখায়: eval(request.GET["table_name"] + ".get(pk=" + request.GET["pk"] + ")"))। এটি এসকিউএল নয় যা সত্যই দোষে, তবে দরিদ্র, অজ্ঞ প্রোগ্রামাররা।
মিথ্যা রায়ান

6
@ জিমি জেমস এসকিউএল হ্যাঁ একটি ভাষা, তবে এর অর্থ এটি কোনও এপিআই নয়। এসকিউএল এমন একটি ভাষা যা কিছু অন্তর্নিহিত স্টোরেজ অ্যাক্সেসের জন্য একটি API সরবরাহ করে।
কিউবিক

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

উত্তর:


74

বব মার্টিন তাঁর বক্তব্য আরও স্পষ্ট করতে স্পষ্টতই অতিরঞ্জিত। তবে তার বক্তব্য কী?

তিনি কি চান যে এসকিউএলআই আক্রমণের কারণে লোকেরা এসকিউএল / রিলেশনাল ডেটাবেস ব্যবহার বন্ধ করে দেবে?

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

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

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

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

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


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

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

3
@ কিউবিক: মার্টিন উল্লেখ করেছেন যে সমস্যার সমাধান সম্ভবত এসকিউএল এর চেয়ে কম শক্তিশালী বা কম সহজে ব্যবহার করা দরকার - এটি তাদের আশীর্বাদ এবং তাদের অভিশাপ।
ডক ব্রাউন

1
বার্মার: এসকিউএল আপনি যতটা উচ্চ স্তরের পেতে পারেন ততই বব জোর দিয়ে বলছেন যে এটি স্পষ্টতই অনিরাপদ।
রবার্ট হার্ভে

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

57

বব মার্টিনের মতামত ঠিক সেটাই; এক মানুষের মতামত।

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

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

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

আমরা রান্নাঘরের ছুরিগুলিকে নিষিদ্ধ করি না কারণ কয়েকজন অসম্পূর্ণ ব্যক্তি তাদের সাথে দুর্ঘটনাক্রমে আঙ্গুলগুলি কাটতে পরিচালনা করে।


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

27
সুতরাং তিনি যা বলছেন তা অন্ধভাবে অনুসরণ করা উচিত নয় ... তবে তিনি কী বলছেন ?
ট্রিগ

33
এখানকার সম্প্রদায়টি সম্পর্কে আমি সত্যিই অপছন্দ করি, আপনি ক্লিন কোড / চাচা বব-ওয়ে কিছু করার বিষয়ে প্রশ্ন জিজ্ঞাসা করার সাথে সাথেই লোকেরা কীভাবে আপনার আলাদা কিছু করা উচিত তা আপনাকে বলতে চাইছে । "ভ্যান গঘের মতো কীভাবে আঁকবেন?" - "ভ্যান গগ ভুল ছিল, তার পরিবর্তে আপনার পিকাসোর মতো রঙ করা উচিত"।
আর স্মিটজ

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

17
সমস্ত প্রযুক্তি নিয়তিবদ্ধ এবং মূলত ত্রুটিযুক্ত। এটি সময়ের ব্যাপার মাত্র। এদিকে, আমাদের ত্রুটিযুক্ত এবং ডুমড প্রযুক্তির সাহায্যে আমাদের প্রয়োজনীয় জিনিসগুলি রয়েছে।

15

আসলে সে কী বলছে?

তিনি কি এসকিউএলকে নো-এসকিউএল প্রযুক্তির সাথে প্রতিস্থাপন করছেন?

টিএল; ডিআর: হ্যাঁ (সাজানো)

আপনি মূলত একই বিষয়টির সাথে আপনি যা যুক্ত করেছেন তার চেয়ে সাম্প্রতিক আলোচনায় তিনি বলেছেন: "ডাটাবেসটি একটি বিবরণ। আমাদের ডাটাবেস কেন?"

তিনি দাবি করেন যে ডেটাবেসটি স্পিনিং ডিস্ক থেকে ডেটা অ্যাক্সেসকে আরও সহজ করার জন্য এসেছে, তবে ভবিষ্যতে "[...] সেখানে নতুন প্রযুক্তি এবং" যাঁকে তিনি "অবিচ্ছিন্ন র‌্যাম" বলেছেন তার জন্য ডিস্ক থাকবে না এবং এটি আরও সহজ হবে স্ট্রাকচার প্রোগ্রামার ব্যবহার করে ডেটা সংরক্ষণ করুন, যেমন হ্যাশটবেল বা ট্রি।

তিনি ভবিষ্যদ্বাণী করতে চলেছেন যে সামগ্রিকভাবে সম্পর্কিত ডেটাবেসগুলি তাদের নতুন প্রতিযোগিতার কারণে মূলত অদৃশ্য হয়ে যাবে:

যদি আমি ওরাকল হতাম তবে আমি খুব ভয় পেয়ে যাব কারণ আমার অস্তিত্বের কারণটি আমার তলদেশ থেকে বাষ্প হয়ে উঠছে [[...] ডাটাবেসের অস্তিত্বের কারণ অদৃশ্য হয়ে যাচ্ছে।

সম্ভবত কিছু রিলেশনাল টেবিল থাকবে যা টিকে থাকবে, তবে এখন কিছু স্বাস্থ্যকর প্রতিযোগিতা রয়েছে

সুতরাং না, তার জন্য এটি কেবল এসকিউএল ইনজেকশন সম্পর্কে নয়, যদিও তিনি এসকিউএলকে এই বিষয়ে অন্তর্নিহিত ত্রুটিযুক্ত বলে মন্তব্য করেছেন


লেখকের মন্তব্য:

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


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

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

3
@ আমন হ্যাঁ, রবার্ট হার্ভি আরও বেশি ভিন্ন ভিন্ন দৃষ্টিভঙ্গি দিচ্ছেন। তবে যেহেতু রবার্ট সি মার্টিন বলার চেষ্টা করে ওপি বিশেষত জিজ্ঞাসা করেছিল আমি তার "নতুন" আলোচনার অংশটি প্রতিলিপি করেছি।
সেরেন ডি Ptæus

3
@amon - উপরে ডক ব্রাউন এর উত্তর প্রথম বাক্য দেখুন। মার্টিন প্রায়শই বিবৃতি দেয় যা এটির দিকটি পেতে তার পয়েন্টটির ব্যাপক বাড়াবাড়ি। তার মানে এই নয় যে সমস্ত ডাটাবেস ক্রিয়াকলাপগুলি মেমোরি স্টোরগুলি দ্বারা প্রতিস্থাপন করা যেতে পারে, তার চেয়ে তার অর্থ যে আপনার অ্যাপ্লিকেশনটির কোনও উপাদান যা কোনও আকারে এসকিউএলকে স্পর্শ করে এটি একটি প্রচুর পরিমাণে সুরক্ষিত ঝুঁকি যে এটি এড়ানো উচিত all মামলাগুলি, তবুও তার কথার মুখোমুখি হয়ে তাকে বোঝানো যেতে পারে। তবে তিনি যা করার চেষ্টা করছেন তা হ'ল সবাইকে থামিয়ে দেওয়া এবং ভাবনা: এসকিউএল / আরডিবিএমএস কি আমার আবেদনের জন্য সঠিক?
জুলাই

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

11

এসকিউএল একটি বিশদ। একটি বিস্তারিত জ্ঞান ছড়িয়ে দেওয়া উচিত নয়।

আপনার কোডটিতে এসকিউএল আরও বেশি জায়গায় ব্যবহৃত হওয়ার সাথে সাথে আপনার কোডটি এর উপর আরও বেশি নির্ভরশীল হয়ে ওঠে।

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

আপনি এটি এমনকি ডেটাবেসগুলির মধ্যে স্যুইচিং চালানো। একটি ফ্যান্সি হুইজবাং বৈশিষ্ট্য 5 সরবরাহ করে যাতে আপনি এটি বেশ কয়েকটি জায়গায় ব্যবহার করেন শুধুমাত্র ফ্যান্সি হুইসবাং বৈশিষ্ট্য 5 বৈশিষ্ট্যের মালিকানাধীন এবং এখন আপনার কাছে লাইসেন্স সংক্রান্ত সমস্যা রয়েছে যা প্রচুর অর্থ ব্যয় করতে চলেছে। সুতরাং আপনি 5 বৈশিষ্ট্যটি যে কোনও জায়গায় ব্যবহার করেছেন এবং এটি নিজেই সমস্যা সমাধান করার জন্য আপনি হুইসবাং বৈশিষ্ট্যটি 3 ব্যবহার করছেন তার জন্য অনেক কাজ করেন work

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

এটি উপলব্ধি না করে আপনার স্বাধীনতার ত্যাগ করা সহজ। এসকিউএল একটি প্রদত্ত নয় এমন একটি পছন্দ। আপনি যদি এসকিউএল ব্যবহারের সিদ্ধান্ত নেন তবে এটি একটি জায়গায় করুন। এটি এমনভাবে তৈরি করুন যাতে তৈরি করা যায় না।

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


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

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


1
গোশ, আইনস্টাইন অবশ্যই।

1
আহ, আইনস্টাইন ববকে চেনে না। বা Bobশ্বর ছিলেন Bob যদিও এটির মতো মনে হচ্ছে এটির একটি মজাদার স্ট্যান্ডআপ বিট রয়েছে।
candied_orange

9
@ নোকমপ্রেড আপনি কি প্রেরণামূলক পোস্টারগুলির অবিচ্ছিন্ন ডায়েটে বাস করছেন?
candied_orange

2
কিন্তু বব হয় ঈশ্বর। কিছুটা হলেও কমপক্ষে।
পিটার মর্টেনসেন

3
আমি বিশ্বাস করতে অস্বীকার করি যে publicশ্বর জনসাধারণের কাছে বক্তব্য রাখার ক্ষেত্রে এটি ভাল।
candied_orange

5

আপনার প্রথম উদ্ধৃতিটির উদ্ধৃতিটি (জোর দেওয়া আমার),

সমাধান. একমাত্র সমাধান। হয় সিস্টেম থেকে এসকিউএল নিষ্কাশন সম্পূর্ণরূপে। যদি কোনও এসকিউএল ইঞ্জিন না থাকে তবে কোনও এসকিউএলআই আক্রমণ হতে পারে না।

কি এসকিউএল প্রতিস্থাপন করবে? অবশ্যই একটি এপিআই! এবং এমন কোনও এপিআই নয় যা পাঠ্য ভাষা ব্যবহার করে। পরিবর্তে, এমন একটি API যা প্রয়োজনীয় ডেটা অ্যাক্সেসের জন্য ডেটা স্ট্রাকচার এবং ফাংশন কলগুলির উপযুক্ত সেট ব্যবহার করে।

অভিযান অ্যাপ্লিকেশন প্রোগ্রামারদের এসকিউএল ব্যবহার করার অনুমতি দেওয়ার বিরুদ্ধে।

প্রস্তাবিত ফিক্সটি হ'ল তাদের পরিবর্তে একটি এপিআই ব্যবহার করতে দেওয়া: যা এসকিউএল নয় এবং ইঞ্জেকশনের অনুমতি দেয় না।

আইএমও, এই জাতীয় এপিআই এর উদাহরণগুলিতে অন্তর্ভুক্ত থাকতে পারে:

  • http://bobi-tables.com/csharp পরামর্শ দেয় সি # প্রোগ্রামাররা ADO.NET এপিআই ব্যবহার করতে পারেন।

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

  • কিছু এসকিউএল বিকাশকারী বা ডাটাবেস প্রশাসকরা পরামর্শ দেন যে একটি ডাটাবেস এমনভাবে কনফিগার করা উচিত যাতে এটি কেবলমাত্র (বিশেষজ্ঞের লিখিত সীমিত সংখ্যক) সঞ্চিত প্রক্রিয়াগুলির মাধ্যমে অ্যাক্সেসের অনুমতি দেয় এবং অ্যাপ্লিকেশন বিকাশকারীদের তাদের নিজস্ব (বিপজ্জনক) এসকিউএল কোয়েরি লেখার অনুমতি দেওয়া উচিত নয়

  • "সিস্টেম থেকে এসকিউএল নির্মূল করার" আরেকটি উপায় হ'ল একটি অন্য সিস্টেমে ডাটাবেস (যা এসকিউএল প্রকাশ করে) একটি REST এপিআই বা অনুরূপ মাধ্যমে অ্যাক্সেস করা।

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

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

আরও সাধারণভাবে আমি মনে করি এটির অর্থ একটি অ্যাপ্লিকেশন-নির্দিষ্ট DAL (একটি "ডেটা অ্যাক্সেস স্তর" বা "ডাটাবেস বিমূর্ত স্তর)" থাকা। একটি ডাল অ্যাপ্লিকেশনটি কীভাবে এবং কোথায় সংরক্ষণ করা হয় এবং / অথবা আনয়ন করা হয় তার বিবরণ থেকে অ্যাপ্লিকেশনকে অন্তরক করে। ডাল একটি এসকিউএল ডাটাবেস ব্যবহার করে প্রয়োগ করা যেতে পারে বা নাও পারে।


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

আমি এই উত্তরটি পছন্দ করি তবে আমি মনে করি তিনি সম্ভবত এটি বলছেন না। তিনি আরও বলেছিলেন, "ফ্রেমওয়ার্কগুলি বিষয়টি পরিচালনা করে না ..."। আপনার উত্তর থেকে, দেখে মনে হচ্ছে আপনি লিনক-টু-এসকিএল ব্যবহার করা ঠিকঠাক তবে এটি কোনও কাঠামো সমস্যাটি পরিচালনা করছে না?
christo8989

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

1
@ christo8989 augustl.com/blog/2016/… পরামর্শ দেয় যে একটি (সম্ভবত) এসকিউএল) ডাটাবেসের আশেপাশে ডেটামিক (অন্যটি মোড়ক / স্তর) - "ডেটামিক ফাইল সিস্টেমে সরাসরি লেখেন না। পরিবর্তে, আপনি একটি সংখ্যা ব্যবহার করতে পারেন ডেটামিকের স্টোরেজ ব্যাকএন্ড হিসাবে বিভিন্ন ডাটাবেসের: যে কোনও এসকিউএল জেডিবিসি ডাটাবেস, ইত্যাদি ""
ক্রিসডাব্লু

এটি লক্ষ করা উচিত যে ADO.NET এ এসকিউএল ইনজেকশন এড়ানোর সমাধানটি এত জটিল নয় - এসকিউএলে স্থানধারক ব্যবহার করুন, কমান্ডের প্যারামিটারগুলি ব্যবহার করুন এবং উক্ত পরামিতিগুলির মান নির্ধারণ করুন।
জেভ স্পিৎজ

3

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

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

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


তিনি মাল্টি-ব্যবহারকারীর একযোগে পড়া / পড়া ডেটা সম্পর্কে কী ভাবতে পারেন?
ChrisW

1
@ ক্রিসডব্লু আমি মনে করি না এটি বাস্তবায়নের বিষয়, বরং ধ্রুবক ডেটা স্টোরেজকে আরও ভাল করার উপায় খুঁজে পাওয়ার উচ্চ স্তরের ধারণা।
কীনান

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

@ কিনেন তাই তিনি বাস্তবায়নের মাধ্যমে সমাধানের প্রস্তাব দিচ্ছেন না। সে শুধু বলছে, কী হতে পারে তা ভেবে দেখুন?
christo8989

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

2

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

দুর্ভাগ্যক্রমে, তিনি যে উদাহরণটি ব্যবহার করছেন সেটি হ'ল একটি সুপরিচিত সমাধানের সাথে একটি সুপরিচিত উদাহরণ যা তিনি পরে উল্লেখ করেছেন। এটি সাধারণত আসে যখন কোনও প্রোগ্রামার বুঝতে পারে না যে সে কী করছে। উদাহরণস্বরূপ এসকিউএলযুক্ত স্ট্রিংগুলি তৈরি করা যেমন:

    my $sql="select a from b where a=$ui_val;";
    prepare($sql)
    execute($sql)

উল্টোদিকে

    my $sql="select a from b where a=?;";
    prepare($sql)
    execute($sql,$ui_val);

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

প্রথম রেফারেন্সের আমার ব্যাখ্যাটি হ'ল তিনি পরামর্শ দিচ্ছেন যে আমাদের একটি সুপরিচিত সমাধানের একটি সুপরিচিত সমস্যা প্রতিস্থাপন করা উচিত।

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

তিনি আংশিকভাবে সঠিক, শেষ পর্যন্ত আমাদের কাছে একটি অসীম বড় এবং দ্রুত মেমরি এবং একটি অসীম দ্রুত প্রসেসর থাকবে। আমরা বর্তমানের পদার্থবিজ্ঞান যে সারণীতে সীমাবদ্ধ থেকে সরিয়ে না দেওয়া পর্যন্ত তিনি সঠিক নন।

হ্যাঁ স্পিনিং ডিস্ক অতীতের জিনিস এবং আমরা এখন এসএসডি ব্যবহার করি। ডিস্কগুলি ডেটা স্থানান্তর প্রতি প্রায় 10 ডলার মিলিসেকেন্ডের সাথে কাজ করে, এসএসডিগুলি ~ 0.5 মিলিসেকেন্ড (500 মাইক্রোসেক) ডেটা অ্যাক্সেসের সময় নিয়ে কাজ করে। র‌্যাম 100 ন্যানো সেকেন্ডের অর্ডারে রয়েছে, প্রসেসরগুলি 100 সেকেন্ডের পিকো সেকেন্ডের অপারেটে কাজ করে। আমাদের কেন ডাটাবেস দরকার তা কেন এটিই হৃদয়। ডেটাবেসগুলি প্রধান স্মৃতি সহ স্পিনিং ডিস্ক বা এসএসডিগুলির মধ্যে ডেটা স্থানান্তর পরিচালনা করে। এসএসডিগুলির আবির্ভাব ডেটাবেসের প্রয়োজনীয়তা দূর করেনি।


4
"স্টপ ইউজিং এসকিউএল" (প্রথম লিঙ্ক থেকে উদ্ধৃত) খুব মনে হচ্ছে তিনি আমার বোঝার জন্য এসকিউএল না ব্যবহার করার কথা বলছেন।
ডক ব্রাউন

6
এটি ওয়ার্ড অর্ডার ইস্যু। আসলে এটি মূলত একটি টেলিগ্রাম ছিল: এসকিউএল স্টপ ব্যবহার করছে

6
@ নোকোমপেন্ডে তাই আপনি বলছেন যে তিনি কোন জাতি শর্তের শিকার? আচ্ছা উফ! এসকিউএল লেনদেন ব্যবহার করে তিনি তা এড়াতে পারতেন।
কনরাড রুডলফ

এটি ভিজ্যুয়াল বেসিক এবং ফোর্টরানের খুব সংক্ষিপ্ত মিশ্রণ। কোথায় থাকবে সব শেষ?

1
@ কনরাড রুডল্ফ: আচ্ছা, আমি মনে করি আমরা একমত হব যে কার্যত নুনু সমাবেশ থেকে সরাসরি টিএসএক্স ব্যবহার করতে চলেছে না। উচ্চ স্তরের বিমূর্ততা থাকবে। এই বিমূর্ত লেনদেনগুলি কি এসকিউএল লেনদেন হবে? আমি মনে করি না. বর্ণিত ভাষা হিসাবে, এসকিউএল একটি কর্মক্ষমতা ওভারহেড বহন করে। হার্ডডিস্কগুলি ঘোরানোর ক্ষেত্রে আপনি যখন অ্যাক্সেস করেছেন তখন তা সত্যিই কিছু যায় আসে না। র‌্যামে ডেটা অ্যাক্সেস করার সময় এটি অপ্রয়োজনীয়।
MSalters

2

উত্তর

তিনি কি চান যে এসকিউএলআই আক্রমণের কারণে লোকেরা এসকিউএল / রিলেশনাল ডেটাবেস ব্যবহার বন্ধ করে দেয়?

'ববি টেবিল' নিবন্ধটি মনে হয় যে এটি এবং এটি নিজেই এসকিউএল না ব্যবহারের কারণ:

সমাধান. একমাত্র সমাধান। সম্পূর্ণ সিস্টেম থেকে এসকিউএল নির্মূল করা হয়। যদি কোনও এসকিউএল ইঞ্জিন না থাকে তবে কোনও এসকিউএলআই আক্রমণ হতে পারে না।

তাঁর অন্যান্য কারণ থাকতে পারে যা তিনি অন্য কোথাও আলোচনা করেছেন। আমি জানতাম না কারণ আমি আসলে তার বেশিরভাগ জিনিস পড়ি না।

অবান্তরতা

এই অংশটি আসলে কোনও উত্তর নয়, তবে আমি মনে করি এসকিউএল এর মান প্রশ্নটি আরও আকর্ষণীয় (অন্যদের মতো স্পষ্টতই।)

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

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

আমি মনে করি প্রত্যেক বিকাশকারীকে "শুক্রবার ১৩ ই শুক্র: JSON আক্রমণ করা - আলভারো মুউজ এবং ওলেকসান্ডার মিরোশ - অ্যাপসেকুসা 2017" শিরোনামে এই ভিডিওটি দেখতে হবে I

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


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

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

2

আমি কেবল একটি সংক্ষিপ্ত বিবৃতি সম্বোধন করতে চাই:

অথবা তিনি কি চান যে এসকিউএলআই আক্রমণের কারণে লোকেরা এসকিউএল / রিলেশনাল ডেটাবেস ব্যবহার বন্ধ করে দেবে?

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


2
স্বয়ংক্রিয় গাড়িগুলি প্রায় 98% গাড়ি দুর্ঘটনা রোধ করবে prevent আমাদের মেশিনকে আরও বেশি বিশ্বাস করা দরকার , হি হে হে।

3
“আমরা বলতে পারি না যে আমাদের অবশ্যই গাড়ি ব্যবহার বন্ধ করতে হবে [বিশেষ এবং / অথবা সাবধানে নিয়ন্ত্রিত পরিস্থিতিতে ব্যতীত] কারণ তারা গাড়ি দুর্ঘটনায় মারা যাওয়ার জন্য দায়ী।” আমরা একেবারে বলতে পারি। এবং অনেক যুক্তিযুক্ত মানুষ না।
কনরাড রুডলফ

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

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

2

মার্টিনের সমস্যাটি মনে হয় প্রোগ্রামাররা সরাসরি ব্যবহারকারী ইনপুট থেকে গতিশীল এসকিউএল তৈরি করে , এর মতো কিছু (আমাকে ক্ষমা করুন, আমি মূলত সি এবং সি ++ প্রোগ্রামার):

sprintf( query, "select foo from bar where %s;", user_input );

যা একেবারে অগ্নি পোড়া হওয়ার রেসিপি (অতএব ববি টেবিল স্ট্রিপ)। যে কোনও প্রোগ্রামার প্রযোজনা সিস্টেমে কোড রাখে তা প্যাডলিন প্রাপ্য।

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

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

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


যদিও sprintfsanitization ধরনের যে SQL প্রয়োজন থাকে না, ফাংশন যে এই কাজের জন্য বিশেষভাবে ডিজাইন করা হয় না, এবং পুরোপুরি নিরাপদ। উদাহরণ: সত্তা ফ্রেমওয়ার্কে স্ক্ল্যাকুয়েরি
রবার্ট হার্ভে

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

1

আপনি যে দুটি উত্সকে সংযুক্ত করেছেন বিভিন্ন বার্তা দেয়:

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

বক্তৃতা আলাদা। প্রথম পার্থক্যটি স্বরে: বক্তৃতাটি অনুমান করে এবং প্রশ্নে ডাকে, কিন্তু নিন্দা করে না। তিনি বলেন না যে ডাটাবেসগুলি মন্দ, কিন্তু আমাদেরকে ডেটাবেস ছাড়াই অধ্যবসায় করার কল্পনা করতে চ্যালেঞ্জ জানায়। তিনি যুক্তি দিয়েছিলেন যে ৩০ বছরের মধ্যে যেহেতু রিলেশনাল ডাটাবেসগুলি ব্যাপক আকার ধারণ করেছে তখন অনেক কিছুই পরিবর্তিত হয়েছে এবং দুটি বিষয়কে হাইলাইট করেছে যা সম্ভবত দৃ pers়তার সাথে আমাদের প্রযুক্তির পছন্দকে প্রভাবিত করতে পারে:

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

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

বিকল্প আছে কি?

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

JPAQuery<?> query = new JPAQuery<Void>(entityManager);
Customer bob = query.select(customer)
  .from(customer)
  .where(customer.firstName.eq("Bob"))
  .fetchOne();

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

রিলেশনাল ডাটা ঘাঁটি বিকল্প হিসাবে, এটা জানা যে postgres 'অদ্ভুত বহু সংস্করণ সম্পাতবিন্দু নিয়ন্ত্রণ ঠিক যে পরিশেষে যোগ কেবল-ডাটা স্ট্রাকচার আঙ্কেল বব ধরনের, কোন বিষয়ে কথা বলছে যদিও তিনি সম্ভবত আরো ভাবছিলাম ঘটনা দোকানে , আর ঘটনা গুন সাধারণভাবে প্যাটার্ন , যা বর্তমান অবস্থাকে র‌্যামে রাখার ধারণার সাথে দুর্দান্তভাবে ফিট করে।

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