এসকিউএল সার্ভারের স্কিমাগুলি কী ভাল?


185

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

আমি সর্বদা সবেমাত্র ডিফল্ট স্কিমা ব্যবহার করেছি। আমি কেন বিশেষায়িত স্কিমা তৈরি করতে চাই? আমি কোনও বিল্ট-ইন স্কিমা কেন বরাদ্দ করব?

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

আমি অনুমান করি যে আমি যা পাচ্ছি তা হ'ল, স্কিমাস এমন কী করবেন যা আপনি মালিক এবং ভূমিকা নিয়ে করতে পারেন নি? তাদের নির্দিষ্ট সুবিধা কি?

উত্তর:


164

স্কিমাস যৌক্তিকভাবে সারণী, পদ্ধতি এবং দর্শনগুলি একসাথে গোষ্ঠী করে। employeeস্কিমা ইত্যাদিতে কর্মচারী সম্পর্কিত সমস্ত জিনিস

আপনি কেবল একটি স্কিমাতেও অনুমতি দিতে পারেন, যাতে ব্যবহারকারীরা কেবল তাদের যে স্কিমায় অ্যাক্সেস করে তা দেখতে পারে এবং অন্য কিছুই।


21
কোনও স্কিমাতে অনুমতি বরাদ্দের সম্ভাবনা প্রশাসনিক দৃষ্টিকোণ থেকে এটি উপযুক্ত করে তোলে।
হাকান উইনথার

9
আপনি একটি পৃথক ডাটাবেস ব্যবহার করতে পারেন না?
সাম

7
এই স্কিমা অনুমতিটি কাগজে ভাল শোনাচ্ছে ... তবে খুব কমই কখনও সঠিকভাবে ব্যবহৃত হয়। আমার কাছে এটি ঝামেলার মতো নয়।
সাম

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

6
@ আজেদি 32, হ্যাঁ ... স্কিমার সাহায্যে আপনি একক লেনদেন লগের একক পারমাণবিক প্রতিশ্রুতি পেতে পারেন এবং বিতরণকৃত লেনদেনের বিরুদ্ধে লড়াইয়ের পাশাপাশি দুটি ডেটাবেস থাকার বিপরীতে আপনার সমস্ত তথ্য একসাথে ফিরিয়ে আনতে পারেন।
ম্যাথু হোয়াইট

31

ঠিক সি # কোডের নেমস্পেসের মতো।


16
দুর্ভাগ্যক্রমে , স্কিমা এবং .NET নেমস্পেসগুলি একটি ওআরএম দৃষ্টিকোণ ( নাম সত্তা ফ্রেমওয়ার্ক ) থেকে খুব ভাল একসাথে খেলছে না । MyDatabase.MySchemaস্কিমার টেবিলগুলি নাম জায়গার সত্তা ক্লাসগুলিতে যাদুতে ম্যাপ করে না MyProject.MyDatabase.MySchema। এটাও লক্ষণীয় যে .টেবিলের নামগুলিতে যে কোনও ডট-নোটেশন ( ) হ্যাকগুলি _ক্লাসের নামগুলিতে আন্ডারস্কোর ( ) হিসাবে শেষ হবে । দুর্ভাগ্য চিন্তার জন্য কেবল খাবার।
ড্যান লগ

2
পাঠদানের জন্য ভাল উপমা। আমি এটি 100% আক্ষরিকভাবে গ্রহণ করা দেখতে পাচ্ছি না ... (এই সাবধানতাগুলি অনুশীলনে গৌণ মনে হয়)
সামান্থা ব্রানহাম

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

আমি যে ভাষায় ভাবতে পারি সেগুলি নামের মতো নয়
তানভীর বদর

29

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


17

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

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


9

আপনি যদি নিজের স্কিমাটিকে পৃথক করে রাখেন তবে আপনি একটি নতুন ডিবি সার্ভারে প্রদত্ত স্কিমা স্থাপন করে একটি অ্যাপ্লিকেশন স্কেল করতে পারেন। (এটি ধরে নেয় আপনার কাছে এমন একটি অ্যাপ্লিকেশন বা সিস্টেম রয়েছে যা আলাদা কার্যকারিতা অর্জনের পক্ষে যথেষ্ট বড়।

উদাহরণস্বরূপ, লগিং সম্পাদনকারী একটি সিস্টেম বিবেচনা করুন। সমস্ত লগিং টেবিল এবং এসপিগুলি [লগিং] স্কিমাতে রয়েছে। লগিং একটি ভাল উদাহরণ কারণ এটি বিরল (যদি কখনও হয়) যে সিস্টেমের অন্যান্য কার্যকারিতা লগিং স্কিমায় বস্তুগুলিকে ওভারল্যাপ করে (যে এতে যোগ হয়)।

এই কৌশলটি ব্যবহারের জন্য একটি ইঙ্গিত - আপনার অ্যাপ্লিকেশন / সিস্টেমে প্রতিটি স্কিমার জন্য আলাদা সংযোগ স্ট্রিং রয়েছে। তারপরে আপনি স্কিমা উপাদানগুলি একটি নতুন সার্ভারে স্থাপন করবেন এবং যখন আপনার স্কেল করতে হবে তখন আপনার সংযোগের স্ট্রিং পরিবর্তন করুন।


8

আমি এই সম্পর্কে ব্রেন্টের সাথে একমত হতে চাই ... এই আলোচনাটি এখানে দেখুন। http://www.brentozar.com/archive/2010/05/why-use-schemas/

সংক্ষেপে ... খুব নির্দিষ্ট ব্যবহারের ক্ষেত্রে বাদে স্কিমাগুলি মারাত্মকভাবে কার্যকর নয়। জিনিসগুলিকে অগোছালো করে তোলে। আপনি যদি এটি সহায়তা করতে পারেন তবে সেগুলি ব্যবহার করবেন না। এবং কে (epপ) আই (টি) এস (প্রয়োগ) এস (টুপিড) বিধি মানার চেষ্টা করুন।


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

"যদি [স্কিমাগুলি] সঠিকভাবে ব্যবহার করা হয় তবে তারা আপনাকে অবজেক্টের গোষ্ঠী দ্বারা অনুমতিগুলি পৃথক করতে দেয়।" ~ Brentozar.com/archive/2010/05/why-use-schemas
কলিজা শিক্ষার্থী

7

স্কিমার সাথে আবদ্ধ ব্যবহারকারীদের আলিয়াজ করার সুবিধা আমি দেখছি না। এখানে কেন ...

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

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


7

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

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


ওরাকল দিয়ে, যেহেতু 1 দৃষ্টান্ত = 1 ডাটাবেস = 1 লাইসেন্স দেওয়ার জন্য, লোকেরা অন্য ডিবি তৈরি করতে এবং অন্য লাইসেন্সের জন্য অর্থ প্রদান এড়াতে শেমাস ব্যবহার করে। এসকিউএল সার্ভারে, 1 টি সার্ভার প্রচুর ডাটাবেস পরিচালনা করতে পারে।
প্যাট্রিক হনোরেজ

5

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

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

সমস্যাটি এমন হতে পারে যে এটি যদি সেখানে থাকে তবে কিছু বিকাশকারী স্বল্পমেয়াদী সুবিধার জন্য এটিকে ব্যবহার করতে শুরু করবেন; এবং একবার এটি সেখানে কুডজু হতে পারে।


3

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


1
2000 সালের পর থেকে দুটি নতুন সংস্করণ তৈরি হওয়ার পরে এটি আর সত্য নয়
হোগান

0

বিকাশ - আমাদের প্রতিটি ডেভস খেলতে স্যান্ডবক্স হিসাবে তাদের নিজস্ব স্কিমা পান।


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

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

0

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

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