পরিচয় কলাম বা ইউডিএফ যা স্পষ্টভাবে একটি অনন্য আইডি উত্পন্ন করে?


11

আমি PRIMARY KEYকোনও আইডেন্টিটি কলামগুলি আউট করা ভাল , আমাদের ইউডিএফ থেকে আউট, যা স্পষ্টভাবে একটি অনন্য আইডি উত্পন্ন করে তোলে কিনা তা নিয়ে আমি বিতর্কের মাঝে আছি ।

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

কোন বাস্তবায়ন আরও অর্থবোধ করে?

উত্তর:


21

আপনার সহকর্মী একটি বোকা।

সমাধানটি স্কেলযোগ্য হবে না, ইউডিএফ সমবর্তী নয় (এটি একই কারণ )। এবং আপনি কীভাবে মাল্টি-সারি সন্নিবেশগুলি মোকাবেলা করেন: এর জন্য প্রতি সারি ইউডিএফ কল প্রয়োজন require

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

সম্পাদনা:

আপনার আপডেটে বলা হয়েছে যে চলন্ত ডেটা অপ-উত্পাদন ডেটাবেসকে রিফ্রেশ করার জন্য।

সেক্ষেত্রে আপনি রিফ্রেশ করার সময় পরিচয় কলামগুলি উপেক্ষা করবেন। নন-প্রোড লোডিং সহজ করার জন্য আপনি আপনার প্রয়োগের সাথে আপস করবেন না। অথবা পরিচয় মান পরিবর্তনগুলি ট্র্যাক করতে অস্থায়ী সারণীগুলি ব্যবহার করুন।

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


11

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

কোনও কারণে পরিচয় বিদ্যমান, এটি ব্যবহার করুন।

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

রেকর্ডগুলি এক পরিবেশ থেকে অন্য পরিবেশে স্থানান্তরিত করতে হয় theোকানোর সময় পরিচয়পত্র নম্বর চালু করুন, অথবা এসএসআইএস-এ বাক্সটি চেক করুন।


আপনি যদি "উত্পাদন" থেকে "পরীক্ষা" এ চলে যান এবং একটি পরিচয় ক্ষেত্র থাকে, আপনি ডেটা ওভাররাইটিং বা সংঘর্ষের ঝুঁকি চালান। আমি এটাই বলছি। হ্যাঁ, এটি সেই দিকের কোনও সমস্যা হওয়া উচিত নয় , তবে আমি কেবল বলছি যে এটি ঘটতে পারে।
jcolebrand

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

5

পরিচয় কলামটি আমার কাছে দুর্দান্ত লাগছে। আমি নিশ্চিত নই যে সার্ভারের মধ্যে ডেটা স্থানান্তরিত করা কেন শক্ত about

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


4

সাধারণ সংখ্যাযুক্ত আইডিগুলির জন্য, কেবল পরিচয়ের সাথে যান এবং সেগুলি ম্যানুয়ালি তৈরির সমস্ত সমস্যা ভুলে যান।

আপনি সর্বদা একটি "সুপার টেবিল" তৈরি করতে পারেন যা পিকে হিসাবে একটি পরিচয় ব্যবহার করে এবং একটি টাইপ কলাম এবং অন্য কোনও তথ্য থাকতে পারে। যখন আপনার একটি নতুন আইডি দরকার (ধরে নিলে আপনি বিভিন্ন টেবিল জুড়ে অনন্য আইডিএস বোঝাচ্ছেন) কেবল এই টেবিলের মধ্যে সন্নিবেশ করুন এবং এটি ধরুন SCOPE_IDENTITY()এবং তারপরে আপনার আসল টেবিলটি সন্নিবেশ করুন।

মূলত আপনি একটি টেবিল তৈরি করেন: একটি পরিচয় পিকে সহ মাস্টারআইডিগুলি যখন আপনার টেবিল 1 এ একটি সারি সন্নিবেশ করা প্রয়োজন INSERT INTO MasterIDsএবং সেই সারিটি ব্যবহার করে পরিচয়টি জেনারেট করুন SCOPE_IDENTITY()এবং তারপরে সেই মানটি পিকে হিসাবে সারণিতে সন্নিবেশ করান ।

টেবিল 1 এর একটি অ-পরিচয়পত্র পিকে থাকবে। আপনি টেবিল 2 ইত্যাদি sertোকানোর জন্য একই প্রক্রিয়াটি করবেন etc. ইত্যাদি এসকিউএল সার্ভারকে মাস্টারআইডিএস সারণিতে সনাক্তকরণের মানগুলি পরিচালনা করতে দিন , যা আপনি অন্য টেবিলগুলিতে ব্যবহার করতে পারেন। মাস্টারআইডিগুলিতে অন্যান্য সারণী থাকতে পারে, যেমন (যেমন আপনি কী টেবিল, টেবিল 1 বা টেবিল 2 ইত্যাদি জানতে পারেন যে পরিচয় মানটি ব্যবহার করে।


3

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


2

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


1

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

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

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

আইডি টেবিলটিতে আমাদের একাধিক সারি রয়েছে, আমরা চাইলে নির্দিষ্ট রেঞ্জ ব্যবহার করতে পারি use যেমন মুছে ফেলা ব্লক এবং নেতিবাচক আইডির পুনঃব্যবহারের জন্য।


0

আমি বছরের পর বছর ধরে পরিচয় ব্যবহার করছি এবং ইউনিকুইডেন্টিফায়ারের সাথে পরিচয় নম্বরটি প্রতিস্থাপনের সাথে গুরুত্ব সহকারে বিবেচনা করছি। এটি একটি দুঃস্বপ্ন যখন আপনাকে ডেটা টাইপ পরিবর্তন করতে হবে যদি কেউ এটি একটি কমপ্যাক্ট ডিবি হিসাবে ডিজাইন করে থাকে এবং যদি আপনাকে কোনও কলামে পরিচয় যুক্ত করতে হয় তবে দুঃস্বপ্নও, আপনি পরিচয় কলাম আপডেট করতে পারবেন না। কল্পনা করুন যে আপনি কোনও সংক্ষিপ্তসার রেখেছেন এবং আপনার ডাটাবেসটি 2 বিলিয়ন রেকর্ড ছাড়িয়ে বেড়েছে, আবার দুঃস্বপ্ন পরিবর্তন করতে (এফকে বিবেচনা করুন)! পরিচয়ের সাথে যেকোনো কিছু পরিবর্তন করা দুঃস্বপ্ন এবং স্ক্রিন বান্ধব নয় যদি আপনি বিগিন্ট না রাখেন! UNIQUEIDENTIFIER বনাম পরিচয় = সুবিধা এবং দৃust়তা বনাম সম্ভবত লক্ষণীয় পারফরম্যান্স উন্নতি (মানদণ্ডটি করেনি)।

আপডেট করুন: পর আমি দেখেছি এই আমি স্পষ্টভাবে UNIQUEIDENTIFIER দিকে চর্বিহীন। এটি বড় মাপের পরিচয়ের কোনও প্রকৃত উপকারিতা এবং UNIQUEIDENTIFIER এর জন্য একগুচ্ছ বেনিফিট দেখায় না! এসকিউএল সার্ভারের বিভিন্ন সংস্করণের আলাদা ফলাফল হতে পারে। সমস্ত ডাটাবেস এবং সিস্টেম জুড়ে একটি অনন্য আইডি থাকার মধ্যে কেবল সৌন্দর্য আছে (দৃ rob়তা)! আপনার দয়া করে ডেটা সরান, অনুলিপি করুন, রূপান্তর করুন! https://www.mssqltips.com/sqlservertip/5105/sql-server-performance-comparison-int-versus-guid/


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