বিশেষ করে পারফরম্যান্স সম্পর্কিত কোনও জিইউইডি প্রাথমিক কী হিসাবে ব্যবহারের জন্য সেরা অনুশীলনগুলি কী কী?


336

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

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

আমি সত্তা ফ্রেমওয়ার্ক ৪.৩ ব্যবহার করব এবং এটি ডাটাবেসে সন্নিবেশ করার আগে আমি অ্যাপ্লিকেশন কোডটিতে গাইডটি নির্ধারণ করতে চাই। (অর্থাত্ আমি এসকিউএলকে গাইড উত্পন্ন করতে দিতে চাই না)।

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


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

4
আমি আরও যুক্ত করব যে সার্ভার শব্দটি দ্বিধাহীন আমি সার্ভারের দিক নির্দেশিকাটি নির্ধারণ করতে চাই ( এসকিউএলকে জিইউইডি তৈরি করতে দেয় না)
এরিক ফিলিপস

এই প্রশ্নের এই "sql- সার্ভার-গাইড-সারণি-অ্যালগোরিদম-কেন" স্ট্যাকওভারফ্লো
ক্লিন্টন ওয়ার্ড

উত্তর:


495

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

আপনার দুটি বিষয় আলাদা করে রাখা দরকার:

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

  2. ক্লাস্টারিং কী (কলাম বা কলাম যে টেবিলের উপর "ক্লাস্টার সূচক" define) - এই একটি হল শারীরিক স্টোরেজ-সম্পর্কিত জিনিস এখানে, এবং, একটি ছোট, স্থিতিশীল, সদা বৃদ্ধি ডাটা টাইপ আপনার সেরা পছন্দ হয় - INTবা BIGINTহিসাবে আপনার ডিফল্ট বিকল্প।

ডিফল্টরূপে, এসকিউএল সার্ভার টেবিলের প্রাথমিক কীটিও ক্লাস্টারিং কী হিসাবে ব্যবহৃত হয় - তবে সেভাবে হওয়ার দরকার নেই! পূর্ববর্তী জিইউইড-ভিত্তিক প্রাথমিক / ক্লাস্টার কী দুটি পৃথক কী - জিইউডির প্রাথমিক (লজিকাল) কী এবং পৃথক INT IDENTITY(1,1)কলামে ক্লাস্টারিং (ক্রম) কীটি ভাঙ্গার সময় আমি ব্যক্তিগতভাবে ব্যাপক পারফরম্যান্স লাভ দেখেছি ।

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

হ্যাঁ, আমি জানি - newsequentialid()এসকিউএল সার্ভার ২০০৫ এবং তার মধ্যে রয়েছে - তবে এটি সত্যিকার অর্থে এবং পুরোপুরি অনুক্রমিক নয় এবং এইভাবে একই সমস্যার সাথে ভুগছে GUID- কিছুটা কম স্পষ্টতই তাই।

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

দ্রুত গণনা - INTবনাম বনাম GUIDপ্রাথমিক এবং ক্লাস্টারিং কী হিসাবে ব্যবহার করে :

  • 1'000'000 সারি সহ বেস সারণী (3.8 এমবি বনাম 15.26 এমবি)
  • 6 নন ক্ল্লাস্টার্ড ইনডেক্স (22.89 এমবি বনাম 91.55 এমবি)

মোট: 25 এমবি বনাম 106 এমবি - এবং এটি কেবল একটি একক টেবিলে!

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

পিএস: অবশ্যই, আপনি যদি কয়েকশ বা কয়েক হাজার সারি নিয়ে কাজ করে থাকেন - তবে এই যুক্তিগুলির বেশিরভাগেরই সত্যই আপনার প্রভাব ফেলবে না। তবে: আপনি যদি দশকে বা কয়েক হাজারে সারিতে প্রবেশ করেন বা আপনি লক্ষ লক্ষ গণনা শুরু করেন - তবে এই পয়েন্টগুলি খুব গুরুত্বপূর্ণ এবং বুঝতে খুব গুরুত্বপূর্ণ হয়ে ওঠে।

আপডেট: আপনি যদি নিজের PKGUIDকলামটি আপনার প্রাথমিক কী হিসাবে (তবে আপনার ক্লাস্টারিং কী নয়) এবং অন্য একটি কলাম MYINT( INT IDENTITY) আপনার ক্লাস্টারিং কী হিসাবে রাখতে চান - এটি ব্যবহার করুন:

CREATE TABLE dbo.MyTable
(PKGUID UNIQUEIDENTIFIER NOT NULL,
 MyINT INT IDENTITY(1,1) NOT NULL,
 .... add more columns as needed ...... )

ALTER TABLE dbo.MyTable
ADD CONSTRAINT PK_MyTable
PRIMARY KEY NONCLUSTERED (PKGUID)

CREATE UNIQUE CLUSTERED INDEX CIX_MyTable ON dbo.MyTable(MyINT)

মূলত: আপনাকে কেবল বাধাটি পরিষ্কারভাবে বলতে PRIMARY KEYহবে যে এটি NONCLUSTERED(অন্যথায় এটি আপনার ক্লাস্টার ইনডেক্স হিসাবে তৈরি হয়েছে, ডিফল্টরূপে) - এবং তারপরে আপনি একটি দ্বিতীয় সূচক তৈরি করেন যা সংজ্ঞায়িত হয়েছেCLUSTERED

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


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

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

2
সামান্য প্রশ্ন, জিইউডিটি এখন যোগ দেওয়া উচিত বা আইডি আইডি ব্যবহার করা উচিত? আমার প্রবৃত্তি আমাকে জানায় জিইউইডি ব্যবহার করা উচিত, তবে আমি আইটি ব্যবহার করে কোনও প্রযুক্তিগত সমস্যা দেখতে ব্যর্থ হয়েছি ...
নিকোলাস বেলি

3
@মার্ক_স তবে একটি প্রতিরূপ দৃশ্যে, যদি কলাম কলামটি পরিচয় হয় তবে আমরা কি জিইউইডি ব্যবহার করব না কারণ ইন্টি কলামটি ডিভাইসগুলিতে নিজেকে পুনরাবৃত্তি করতে পারে?
নিকোলাস বেলি

6
@ কিপেই: প্রধান বিষয়গুলি হ'ল যদি আপনার এমন প্রাকৃতিক মান থাকে - তবে হ্যাঁ, আপনি এটিকে একটি প্রাথমিক কী হিসাবে ব্যবহার করতে পারেন। বাট : DATETIMEউদাহরণস্বরূপ মানগুলি একটি ক্লাস্টারিং কীটির জন্য কার্যকর নয় , কারণ তাদের কেবলমাত্র 3.33ms যথার্থতা রয়েছে এবং সুতরাং সদৃশগুলি বিদ্যমান থাকতে পারে। সুতরাং এই জাতীয় ক্ষেত্রে, আপনার * এরINT IDENTITY পরিবর্তে এখনও প্রয়োজন - সুতরাং, আমি সাধারণত এটি ডিফল্টরূপে ব্যবহার করি, যেহেতু আমার 20+ বছরের অভিজ্ঞতা থেকে সত্যই ব্যবহারযোগ্য প্রাকৃতিক কীটি সত্যিই সত্যিই উপস্থিত থাকে ....
মার্ক_স

51

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

জিইউইডি ব্যবহার করার জন্য এটি আমার সেটআপ:

  1. পিকে = জিইডি। জিইউইডিগুলি স্ট্রিংগুলির অনুরূপ সূচিযুক্ত, তাই উচ্চ সারি টেবিলগুলিতে (50 মিলিয়নের বেশি রেকর্ড) টেবিল বিভাজন বা অন্যান্য কার্যকারিতা কৌশলগুলির প্রয়োজন হতে পারে। এসকিউএল সার্ভার অত্যন্ত দক্ষ হয়ে উঠছে, সুতরাং পারফরম্যান্স সম্পর্কিত উদ্বেগ কম এবং কম প্রযোজ্য।

  2. পি কে গাইড হ'ল নন-ক্লাস্টারড ইনডেক্স। ক্লাস্টার ইনডেক্স কখনই জিইউডি না হয় যদি না এটি নিউ সিক্যুয়েনশিয়াল। তারপরেও, কোনও সার্ভার রিবুট ক্রমক্রমে বড় বিরতি সৃষ্টি করবে।

  3. প্রতিটি টেবিলে ক্লাস্টারআইডি ইন্ট যুক্ত করুন। এটিই আপনার ক্লাস্টার্ড সূচক ... যা আপনার টেবিলের আদেশ দেয়।

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

এখানে আমার ইমেল টেবিল ...

CREATE TABLE [Core].[Email] (
    [EmailID]      UNIQUEIDENTIFIER CONSTRAINT [DF_Email_EmailID] DEFAULT (newsequentialid()) NOT NULL,        
    [EmailAddress] NVARCHAR (50)    CONSTRAINT [DF_Email_EmailAddress] DEFAULT ('') NOT NULL,        
    [CreatedDate]  DATETIME         CONSTRAINT [DF_Email_CreatedDate] DEFAULT (getutcdate()) NOT NULL,      
    [ClusterID] INT NOT NULL IDENTITY,
    CONSTRAINT [PK_Email] PRIMARY KEY NonCLUSTERED ([EmailID] ASC)
);
GO

CREATE UNIQUE CLUSTERED INDEX [IX_Email_ClusterID] ON [Core].[Email] ([ClusterID])
GO

CREATE UNIQUE NONCLUSTERED INDEX [IX_Email_EmailAddress] ON [Core].[Email] ([EmailAddress] Asc)

আপনি কি পিকে_ ইমেইল সীমাবদ্ধতা ব্যাখ্যা করতে পারেন? আপনি কেন ... ননক্র্লাস্টার্ড (ক্লাস্টারআইডি এএসসি) এর পরিবর্তে নন-ক্ল্লাস্টার (ইমেলআইডি এএসসি) রেখেছেন?
ফিল

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

@ রবার্টজেড.গুড আমি এই পদ্ধতিটি আলোচিত দেখেছি অর্থাৎ ক্লাস্টারে একটি সারোগেট ইন্ট কী যুক্ত করার আগে discussed তবে আমি কোথাও খুঁজে পাচ্ছি না যা একটি হিপ ব্যবহার করে সারোগেট কী ক্লাস্টারড ইনডেক্স থাকাতে পারফরম্যান্স লাভ দেখায়। আপনার কি বেঞ্চমার্ক ডেটাতে কোনও লিঙ্ক আছে?
ডেল কে

1
হাই @ ডেলবারেল, ক্লাস্টারড ইনডেক্স হ'ল টেবিলের খণ্ডন রোধ করতে। টেবিলে স্বাভাবিকভাবে ডিস্কের ক্রম কম থাকায় পারফরম্যান্স লাভ বৃদ্ধি পায়।
রবার্ট জে গুড

@ রবার্টজেড.গুড এটি কোনও ওয়েব অ্যাপ্লিকেশন? আপনি url / hrefs এ কী ব্যবহার করছেন? গাইড বা ইনট?
dariol

10

আমি বর্তমানে ইএফ কোরের সাথে একটি ওয়েব অ্যাপ্লিকেশন বিকাশ করছি এবং আমি এখানে ব্যবহার করছি এমন প্যাটার্নটি:

আমার সমস্ত ক্লাস (টেবিল) এবং একটি ইনট পিকে এবং এফকে। এটিতে নন ক্লাস্টারড ইনডেক্স সহ গাইড (সি # কনস্ট্রাক্টর দ্বারা উত্পাদিত) টাইপ সহ আমি একটি অতিরিক্ত কলাম পেয়েছি।

EF- র মধ্যে টেবিলের সমস্ত যোগদানগুলি ইন কীগুলির মাধ্যমে পরিচালিত হয় যখন বাইরের সমস্ত নিয়ন্ত্রণ (কন্ট্রোলার) গাইডদের সাথে সম্পন্ন হয়।

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


ক্লাস্টার হিসাবে পূর্ণসংখ্যা পিকে কনফিগার করার জন্য আপনার যা করার দরকার তা কি ডেটা টিকা রচনার মতো, বা এটি কেবল স্বয়ংক্রিয়ভাবে কনফিগার করা আছে?
অ্যালেন ওয়াং

আপনি গাইডের জন্য সম্পত্তিটির নাম কী ব্যবহার করবেন?
ট্রং ফান

3

আপনি যদি জিইউডিটিকে প্রাথমিক কী হিসাবে ব্যবহার করেন এবং গোষ্ঠী সূচক তৈরি করেন তবে আমি প্রস্তাব দিচ্ছি এর জন্য NEWSEQUENTIALID () মান এর ডিফল্ট ব্যবহার করুন


তুমি ওটা কেন করবে?
জেনুইনফফা

3

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

https://web.archive.org/web/20120812080710/http://databases.aspfaq.com/database/what-should-i-choose-for-my-primary-key.html

পিএস আমি নিশ্চিত নই আপনি কেন একটি যৌগিক পিকে ব্যবহার করবেন বা আপনি কী বিশ্বাস করেন যে এটি আপনাকে দেবে।


সম্পূর্ণ একমত!! তবে এর অর্থ হ'ল আমার কাছে যদি পি কে হিসাবে জিইউইডি বা জিইউইউড এবং অন্য ক্ষেত্রের সাথে একটি সংমিশ্রণ পিকে একই অধিকার হতে চলেছে?
ভিএএএ

1
পিকে (সূচক) দুটি কলাম নিয়ে গঠিত হবে, তবে এটি করার কোনও ব্যবসায়ের নির্দিষ্ট কারণ না থাকলে এটি অপ্রয়োজনীয় বলে মনে হয়।
ম্যাট

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

1

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

  1. https://www.sqlskills.com/blogs/kimberly/disk-space-is-cheap/
  2. https://www.sqlskills.com/blogs/kimberly/guids-as-primary-keys-andor-the-clustering-key/

0

সিক্যুয়াল আইডির অধিকার হ্যাকার বা ডেটা মাইনারের পক্ষে আপনার সাইট এবং ডেটার সাথে আপোস করা অনেক সহজ করে তোলে। কোনও ওয়েবসাইটের জন্য পিকে বেছে নেওয়ার সময় এটি মনে রাখবেন।


আপনি এই দাবির ব্যাক আপ করতে কোনও যুক্তি বা প্রমাণ সরবরাহ করতে পারেন? সিক্যুয়াল আইডি কীভাবে সুরক্ষার সাথে আপস করতে পারে তা জানার জন্য আমি লড়াই করছি।
jonaglon

অবশ্যই, যদি আপনি জানেন ID নম্বরগুলি পূর্ণসংখ্যা হয় তবে আপনি ডিবিতে ধারাবাহিকভাবে রেকর্ডগুলি অনুমান করতে পারেন। সুতরাং আপনি যদি কোনও একক আইটেমটি জিজ্ঞাসা করেন তবে আপনি বলতে পারেন যে পরবর্তী আইটেমটি পিকে + ১ If আপনি পূর্বে যা জিজ্ঞাসা করেছিলেন তার চেয়ে অন্য রেকর্ডগুলি জিজ্ঞাসা করা প্রায় অসম্ভব হবে (এবং পিকে জানুন)।
ডাবলু

1
যদি কোনও হ্যাকার আপনার ডাটাবেসটিকে ইতিমধ্যে সমঝোতা করে জিজ্ঞাসা করতে পারে, তবে ক্রমিক আইডি কীভাবে পরিস্থিতি আরও খারাপ করে তা দেখতে আমি ব্যর্থ।
জোনগলন

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

2
ওয়েব পৃষ্ঠায় একটি রেকর্ড সনাক্ত করতে আপনি একটি জিইউডি ব্যবহার করতে পারেন, এটি টেবিলের পিকে নয়। কোনও ওয়েবসাইটে ক্যোয়ারী প্যারামিটার ব্যবহার করে আপনি কীভাবে আপনার ডিবি স্কিমা গঠন করেন তা নির্ধারণ করা উচিত নয়। ইউকে বা ব্যাকএন্ড সিস্টেমে ইনপুট এবং পরামিতিগুলির সাথে পিকে কোনও সম্পর্ক নেই।
পানোস রোডিটাকিস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.