জিআইডি সংঘর্ষ কি সম্ভব?


128

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


11
সবাই কোন বলার অপেক্ষা রাখে না wrong.I ইতিমধ্যে দেড় কোটি কম একটি রেকর্ডের একটি ডেটাসেটের 1 UniqueIdentifier সংঘর্ষ হয়েছে, এমএস স্কুয়েল 2008 R2 হলো হয়
Behrooz

2
@ বেহরোজ ইয়াইকস আমাদের বন্ধু জন্মদিনের প্যারাডক্সটির পক্ষে এটি অসম্ভব ধন্যবাদ, তবে এটি এখনও পুরোপুরি এলোমেলো ভি 4 জিইউইডিগুলির সাথে অত্যন্ত দুর্ভাগ্যজনক। হতে পারে আপনি দুর্বল জিইউডি প্রজন্মের কৌশলটি ব্যবহার করছেন?
ক্রেগ রিঞ্জার

6
@ বেহরোজ বাহ! এটাই হতবাক ভাগ্য।
ক্রেগ রিঞ্জার

6
@ বেহরোজ এটি সম্ভবত এমএসএসকিউএলে ব্যবহৃত ত্রুটিযুক্ত সিউডো এলোমেলো সংখ্যা (যদি তাদের জেনারেটরে 32-বিট বীজ থাকে বা তাদের সফ্টওয়্যারটির গুণমান দেওয়া হয় তবে আমি অবাক হব না)। গণিত মিথ্যা বলে না। এই সম্ভাবনাটি এত ছোট যে আপনি 99.9999999999 (এবং 9 এর পরে অনেক বেশি)% হয়ে উঠতে পারেন যে এমএসএসকিউএল গাইড জেনারেটরটি ত্রুটিযুক্ত (অথবা জিইউডি তৈরি করতে ব্যবহৃত ছদ্ম র্যান্ডম জেনারেটর হতে পারে) অথবা আপনি কোনও ভুল করেছেন।
অ্যালেক্স

2
এই সঠিক মুহুর্তে কীভাবে প্রশ্ন করুন, প্রশ্ন এবং নির্বাচিত উত্তর দুটিই 128 এর স্কোর রয়েছে। কাকতালীয়? 🤔
কাইও

উত্তর:


127

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

সংঘর্ষের 1% সম্ভাবনার জন্য, আপনাকে প্রায় 2,600,000,000,000,000,000 জিইউডি উত্পন্ন করতে হবে ।


3
এটাই আমি বুঝতে পেরেছি, তবে আমি কেবল এটি নিশ্চিত করতে চেয়েছিলাম যে আমি এটিকে রক্ষা করতে পারি না। 8 বছরের পুরানো সফ্টওয়্যারটিতে কী ধরণের কী কী সমস্যা রয়েছে তা আপনি কখনই জানেন না never :)
জেসন বেকার 21

6
আসলে এটি আর সত্য নয়। এটি ভি 1 জিআইডি-র জন্য সত্য ছিল, তবে বর্তমান ভি 4 এর জন্য নয়। আরও তথ্যের জন্য en.wikedia.org/wiki/Globally_Unique_Identifier#Algorithm দেখুন ।
গ্রেগ বিচ 8-10

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

13
১% এর ফলাফল পেতে ওল্ফ্রাম আলফায় "[[এক্স-এক্সপ্রেট [- (n ^ 2 / (2 * 2 ^ 128))]> 0.01, n] লিখুন ... এই সংখ্যাটি বৃহত বলে মনে হচ্ছে এক আবেদনের প্রসঙ্গ, এটি অবশ্যই পুরো বিশ্বের পক্ষে বড় নয়। যদি পৃথিবীর প্রতিটি কম্পিউটার সত্য জিআইডি তৈরি করে তবে তারা প্রায় এক সেকেন্ডের মধ্যেই 1% সম্ভাবনার সাথে সংঘর্ষের কারণ ঘটবে বলে ধরে নিবেন যে তারা প্রতিটি ন্যানোসেকেন্ডকে জিআইডি তৈরি করতে পারে (যা সম্ভবত আজকাল বেশ বাস্তবসম্মত)। সুতরাং আপনি যদি আপনার ডাটাবেস আইডির জন্য জিইউইডি ব্যবহার করেন তবে সেগুলি অনন্য। পৃথিবীতে করা প্রতিটি গণনার জন্য জিআইডিগুলি, সাথে সাথে সংঘর্ষ করবে।
থেইসেন্ট

11
'না' বললে এটি সম্ভব নয়, এবং তারপরে বলা হচ্ছে যে নির্দিষ্ট পরিমাণ উত্পন্ন হওয়ার পরে সংঘর্ষের 1% সম্ভাবনা রয়েছে, এটি সরাসরি দ্বন্দ্ব। সঠিক প্রতিক্রিয়া তাত্ত্বিকভাবে হওয়া উচিত - হ্যাঁ, সংঘর্ষ এলোমেলোভাবে হতে পারে। যাইহোক, একটি সংঘর্ষের সম্ভাবনা পৃথিবীর সাথে আঘাতকারী গ্রহাণুটির চেয়ে পরিসংখ্যানগতভাবে ছোট, পৃথিবী থেকে ঝাঁকিয়ে পড়ে এবং পরের এক ঘন্টার মধ্যে, দ্বিতীয়বার পৃথিবীতে আঘাত করার জন্য চাঁদটিকে রিবাউন্ড করে।
বালেওস

112

মূলত এগুলি সম্ভব হয় না! , সম্ভাবনাগুলি মহাকাশীয়ভাবে কম

তবে ... আমি বিশ্বের একমাত্র ব্যক্তি যাকে আমি চিনি, তার একবার জিইউইডি কোলিশ ছিল (হ্যাঁ!)।

এবং আমি এটি সম্পর্কে নিশ্চিত, এবং এটি কোনও ভুল ছিল না।

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

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


38
সম্মত। রাষ্ট্র সংরক্ষণ করুন এবং পুনরায় খেলুন সত্যই সদৃশ গাইড তৈরি করবে।
জোশুয়া

35
সম্ভবত যা ঘটেছিল তা হ'ল "খারাপ" জিইউডি বাস্তবায়ন। তাত্ত্বিক মতভেদ খুবই কম ছিল, কিন্তু পকেট পিসিতে ?? কে বলবেন যে তারা কোনও শর্টকাট নেন নি যা এই প্রতিকূলতাকে "সম্ভাব্য, তবে সম্ভাব্য" বিভাগে ফেলেছে।
ডেভ ডপসন

9
যেহেতু কোনও কিছুর খুব কম সম্ভাবনা থাকে তার অর্থ এটি ঘটে না।
রেনান

3
আমি উপরে যেমনটি বলেছি যে এর সম্ভাবনাগুলি এত ক্রমশঃ ছোট হয়ে গেছে যে আপনি ভুল করেছেন বা এমএসএসকিউএল ত্রুটিযুক্ত পিআরএনজি ( এন.ইউইকিপিডিয়া . org / উইকি / সিউডোরেন্ডম_নিবার_জেনেটর ) ব্যবহার করে এটি নিরাপদ বলে ধরে নেওয়া নিরাপদ । উদাহরণস্বরূপ সম্ভবত এই পিআরএনজি ছোট আকারের বীজ সহ সূচিত হয়েছে। ত্রুটিযুক্ত PRNGs বিরল নয় (দেখুন schneier.com/paper-prngs.html ) - উদাহরণস্বরূপ সম্প্রতি একটি ত্রুটি অ্যান্ড্রয়েড এসডিকে আবিষ্কার করা হয়েছিল - android-developers.blogspot.com/2013/08/… + usenix.org/conferences/woot14 / ওয়ার্কশপ-প্রোগ্রাম / উপস্থাপনা /…
অ্যালেক্স

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

34

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

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


"তবে 3.4E38 সম্ভাব্য সংখ্যা সহ" - না। একই মেশিনে প্রায় একই সাথে উত্পন্ন দুটি জিইউইডি অত্যন্ত সমৃদ্ধ জিইউডিগুলির সাথে শেষ হয়।
কির্ক স্ট্রুয়েজার 21

4
এটি জিইডিইউ কীভাবে উত্পন্ন হবে তার উপর নির্ভর করবে এবং সিপিইউ সময় বা মিলিসেকেন্ডের উপর ভিত্তি করে কিছু বাস্তবায়ন (আশাবাদী) মিলিসেকেন্ডগুলি ব্যতীত দু'টি জিইউইডের উত্পন্ন তার গণনা ব্যতিরেকে আলাদা পার্থক্য পাবে hope
ডালিন সেয়েভরাইট

4
একটি মেশিনে 1 টিরও বেশি প্রসেসর সহ, যদি কোনও গাইড সময় এবং ম্যাক ঠিকানার ভিত্তিতে থাকে তবে প্রতিটি কোর একই মুহুর্তে একই নির্দেশিকা ইস্যু করতে পারে।
অ্যান্ডিএম

12
আমি দৃ sure়ভাবে নিশ্চিত যে কোনও শালীন জিইউডি বাস্তবায়ন হবে না
গিলাইউমূম

1
@ ম্যাথেললক জন্মদিনের প্যারাডক্সটি উত্সটিতে আচ্ছাদিত। লিঙ্কটি পরীক্ষা করুন।
জিরো 3

21

প্রথমে দুটি জিইউআইডি-র সংঘর্ষের সম্ভাবনাটি দেখুন। এটি অন্যান্য উত্তর হিসাবে যেমনটি বলা হয়েছে, জন্মদিনের প্যারাডক্সের কারণে 2 2 ^ 128 (10 ^ 38) এর মধ্যে 1 , যার অর্থ হ'ল সম্ভাবনাটির সাথে সংঘর্ষের জন্য দুটি জিইউইডির 50% সম্ভাবনার জন্য আসলে 2 ^ 64 (10 in) এ 1 19) যা অনেক ছোট। যাইহোক, এটি এখনও একটি খুব বড় সংখ্যা, এবং যেমন সংঘর্ষের সম্ভাবনা আপনি ধরে নিচ্ছেন যে আপনি যুক্তিসঙ্গত সংখ্যক জিইউইডি ব্যবহার করছেন low

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

সুতরাং মূলত উত্তরটি হ্যাঁ, সংঘর্ষ সম্ভব। তবে এগুলির অত্যন্ত সম্ভাবনা নেই।

সম্পাদনা: 2 ^ 64 বলার জন্য স্থির


2
যদিও আমি আপনার সমস্ত সত্যের সাথে একমত, আপনার গণিতে সতর্ক থাকুন। আপনার যে কোনও দুটি জিইউআইডি সংঘর্ষের সম্ভাবনা 10 এ 19 chance 19 আছে সেটির উপর নির্ভর করে কতটি জিইউইডস সেটে রয়েছে তার উপর নির্ভর করে। সেই সুযোগের জন্য আপনার ~ 2 ^ 32 জিইউডি প্রয়োজন, সুতরাং প্রায় সমস্ত বাস্তব-জগতের পরিস্থিতিতে প্রতিকূলতা অনেক কম।
ডকম্যাক্স

1
আপনার টাইপ রয়েছে 1 in 10^64 (10^19), যা আমার মনে হয় 1 in 2^64 (10^19)। আপনার জন্মদিনের প্যারাডক্সটি মাত্র 2 সংখ্যার ক্ষেত্রে কীভাবে প্রযোজ্য তা আপনি খুব বিভ্রান্ত হয়ে পড়েছি। আমি ধরে নিলাম আপনি en.wikiki.org/wiki/Birthday_paradox এ দেখেছেন । সারণীটি দেখায় যে সদৃশটির প্রদত্ত সম্ভাবনার জন্য আপনার কতগুলি গাইড দরকার। সেই টেবিল থেকে 10 ^ 18 এ 1 এর সম্ভাব্যতার জন্য 2.6 * 10 ^ 10 গাইড দরকার, কেবল দুটি জিইউইডের কাছাকাছি কিছু নয়।
টনি লি

একটি পয়েন্ট - ভি 1 গাইডগুলি এখনও ব্যাপক ব্যবহারে রয়েছে এবং ম্যাকের ঠিকানার উপর নির্ভর করে, বিশেষত ডাটাবেসে যেমন তাদের পছন্দসই বৈশিষ্ট্য রয়েছে। UuidCreateSequential দেখতে এবং এটি এর NewSequentialID মোড়কের SQL সার্ভার ( msdn.microsoft.com/en-us/library/windows/desktop/... )।
ইবার

18

দু'টি এলোমেলো জিইউআইডি সংঘর্ষের সম্ভাবনা (10 ^ 38 এর মধ্যে 1 ডলার) কোনও দুর্নীতিগ্রস্থ টিসিপি / আইপি প্যাকেট সনাক্ত না করার সুযোগের চেয়ে কম (10 ^ 10 তে 1 ডলার)। http://wwwse.inf.tu-dresden.de/data/courses/SE1/SE1-2004-lec12.pdf , পৃষ্ঠা ১১, এটি ডিস্ক ড্রাইভ, সিডি ড্রাইভ ইত্যাদির ক্ষেত্রেও সত্য ...

জিইউইডিগুলি পরিসংখ্যানগতভাবে অনন্য এবং আপনি ডিবি থেকে পড়া ডেটা কেবল পরিসংখ্যানগতভাবে সঠিক।


আপনি কি নিশ্চিত যে আমি সম্ভবত আমার নেটওয়ার্কটিকে এতটা সাজাতে পারিনি যে 10 in 28 এর মধ্যে 1 টিরও কম 28 প্যাকেটগুলি দূষিত?
জোশুয়া

13

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


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

11

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

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

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





9

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


দুটি পৃথক মেশিনের একই ইথারনেট ম্যাক ঠিকানা থাকা কি সাধারণ?
ডেভ লুক্রে

@ ডেভলুক্রে: না, তবে ঘটনা রেকর্ড করা হয়েছে।
জোশুয়া

আমি সত্যিই কৌতুহলী, কীভাবে এটি ঘটে। ভিএমএসের সাথে কি আরও বেশি সম্ভাবনা রয়েছে যা প্রতিটি এনআইসির জন্য এলোমেলোভাবে একটি ম্যাক তৈরি করে? আমি কখনও কখনও শারীরিক এনআইসিকে সদৃশ ম্যাকগুলি দিয়ে তৈরি হওয়ার কথা শুনিনি! যদি সম্ভব হয় তবে বিভিন্ন ধরণের কাজগুলিতে একটি বিশাল স্প্যানার ছুড়ে ফেলে!
ডেভ লুক্রে

কি দারুন! লিঙ্কের জন্য ধন্যবাদ জোশুয়া! কি বিশাল স্ক্রু আপ!
ডেভ লুক্রে

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

5

আমি এটির সাথে "আমি কোনও নেটওয়ার্কিং ব্যক্তি নই, তাই আমি নিম্নলিখিতটি পুরোপুরি অসম্পূর্ণ বাক্যগুলি বানাতে পারি" with

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


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

5

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


11
এছাড়াও আপনি নেটওয়ার্ক ব্যবহার না করার পরামর্শ দিন। বা কম্পিউটার। প্যারিটি বিট কেবল এত কিছু করতে পারে!
রুশयो

তুমি ভুল বুঝেছিলে. এই পোস্টে আমি দুটি জিনিস বলতে চাইছিলাম: 1) আপনার যদি একটি বড় এলোমেলো সংখ্যা প্রয়োজন হয় তবে একটি বড় এলোমেলো নম্বর ব্যবহার করুন। একটি বৃহত্তর এলোমেলো সংখ্যা হিসাবে একটি জিইউডি ব্যবহার করা অকারণে বিভ্রান্তিকর। (২)
রিক ইওর্জসন

4
যা সম্পর্কে আমি পুরোপুরি সচেতন। আপনি বলেছিলেন "যদি আপনি কোনও বড় এলোমেলো নম্বর ব্যবহার করতে স্বাচ্ছন্দ্য বোধ করেন না।" তবে জিইউইডিগুলি এতটাই অনন্য যে আপনি কম্পিউটারে থাকা সমস্ত কিছুর চেয়ে বেশি এলোমেলো, এমনকি অপারেশনগুলিও মঞ্জুর করেছেন। (সত্য) জিইউডি সংঘর্ষ হওয়ার চেয়ে ফ্রিক মেমরির সমস্যা আপনার পরিচয় কলামটি ভেঙে দেবে এমন আরও সম্ভাবনা রয়েছে। এগুলি সম্পর্কে আপনার অস্বস্তি বোধ করা উচিত নয়। যদি তারা দৃশ্যের জন্য আদর্শ না হন তবে জরিমানা - তবে তাদের বিশেষ সতর্কতার প্রয়োজন নেই।
রুশ्यो

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

1
@ রিক, আপনার সংখ্যা কত বড় তা নির্ভর করে। অবশ্যই 4 বাইট ইনট বা 8 বাইট বিগিন্টের সাথে নয়। জিআইডি = 16 বাইট, সুতরাং একই 2 ^ 128 সম্ভাব্য সংমিশ্রণগুলি অর্জন করতে আপনার পছন্দসই 16 বাইট বিগ সংখ্যা বাস্তবায়ন প্রয়োজন। তাই সাধারণভাবে বলতে, যদি ব্যবহার 'স্বাভাবিক' int- এ বা bigint র্যান্ডম সংখ্যা, একটি GUID সঙ্গে collisions সম্ভাবনা নেই LOWER (প্রত্যেকের জন্য র্যান্ডম algo বিবেচনার বাইরে রেখে)।
উইম হলব্র্যান্ডস

3

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


2

অবশ্যই এটি সম্ভব .... সম্ভাব্য? সম্ভবত না, তবে এটি সম্ভব।

মনে রাখবেন, একই মেশিনটি প্রতিটি জিইউইডি (সার্ভার) তৈরি করে, তাই মেশিনের নির্দিষ্ট তথ্যের উপর ভিত্তি করে প্রচুর "র্যান্ডমনেস" হারিয়ে যায়।


1

কেবল গ্রিনগুলির জন্য, নিম্নলিখিত স্ক্রিপ্টটি ব্যবহার করে দেখুন ... (এসকিউএল 2005 এ কাজ করে, 2000 সম্পর্কে নিশ্চিত নয়)

declare @table table
(
    column1 uniqueidentifier default (newid()),
    column2 int,
    column3 datetime default (getdate())
)

declare @counter int

set @counter = 1

while @counter <= 10000
begin
    insert into @table (column2) values (@counter)
    set @counter = @counter + 1
end

select * from @table

select * from @table t1 join @table t2 on t1.column1 = t2.column1 and t1.column2 != t2.column2

এটি বারবার চালানো (এক সেকেন্ডেরও কম সময় নেয়) প্রথম নির্বাচন থেকে মোটামুটি প্রশস্ত পরিসীমা তৈরি করে, এমনকি খুব স্বল্প সময়ের ব্যবধান সহ। এখনও পর্যন্ত দ্বিতীয় নির্বাচন কিছুই উত্পাদন করেনি।


1
প্রতিলিপিটির 50% সুযোগ পাওয়ার জন্য আপনার আরও 15 জিরো দরকার। কিন্তু, পিটের পক্ষে এটি করবেন না!
জিম বিরচল

0

যদি ব্যবহারকারীদের নেটওয়ার্ক কার্ড সহ বিভিন্ন মেশিন থাকে এবং তা না হয় তবে এটি এখনও একটি অত্যন্ত প্রান্তিক প্রায় তাত্ত্বিক ঝুঁকি।

ব্যক্তিগতভাবে আমি অন্য কোথাও দেখতে চাই কারণ এটি সম্ভবত জিইউইডি সংঘর্ষের চেয়ে বাগ সম্ভবত ...

আপনি GID কে আরও ছোট করে তুলতে বিট কাটবেন না এমনটি অবশ্যই প্রদান করা।


জিইউইডিগুলি সার্ভারে উত্পন্ন হবে, সুতরাং ব্যবহারকারীর নেটওয়ার্ক কার্ডগুলি খেলতে আসবে না।
টম রিটার 21

0

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


0

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

আরও তথ্যের জন্য এখানে বিভিন্ন উত্তর দেখুন:

জাভাস্ক্রিপ্টে ইউআইডিগুলি তৈরি করার সময় সংঘর্ষ?

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