আইডিস হিসাবে ডোমেন অবজেক্টগুলি কিছু জটিল / সূক্ষ্ম সমস্যা তৈরি করে:
ধারাবাহিকতাতে / Deserialization
আপনি যদি কী হিসাবে অবজেক্টগুলি সঞ্চয় করেন এটি অবজেক্টের গ্রাফকে সিরিয়ালাইজ করে তোলে অত্যন্ত জটিল। stackoverflowপুনরাবৃত্তির কারণে জেএসএন বা এক্সএমএলে একটি নিষ্পাপ সিরিয়ালাইজেশন করার সময় আপনি ত্রুটিগুলি পেয়ে যাবেন । তারপরে আপনাকে একটি কাস্টম সিরিয়ালাইজার লিখতে হবে যা প্রকৃত অবজেক্টগুলিকে তাদের আইডি ব্যবহার করতে রূপান্তর করে পরিবর্তে অবজেক্টের উদাহরণটি সিরিয়ালাইজ করার পরিবর্তে এবং পুনরাবৃত্তি তৈরি করে।
প্রকার সুরক্ষার জন্য অবজেক্টগুলিতে পাস করুন তবে কেবল আইডিকে সংরক্ষণ করুন, তারপরে আপনার কাছে এমন একটি অ্যাকসেসর পদ্ধতি থাকতে পারে যা অলসতার সাথে সম্পর্কিত সত্তাকে লোড করা হয়। দ্বিতীয় স্তরের ক্যাচিং পরবর্তী কলগুলির যত্ন নেবে।
সূক্ষ্ম রেফারেন্স ফাঁস:
আপনি যেমন কন্সট্রাক্টরগুলিতে ডোমেন অবজেক্ট ব্যবহার করেন আপনি এমন বিজ্ঞপ্তি রেফারেন্স তৈরি করবেন যা অবজেক্টগুলি সক্রিয়ভাবে ব্যবহার না করার জন্য মেমরিটিকে পুনরায় দাবি করতে দেওয়া খুব কঠিন হবে।
আদর্শ পরিস্থিতি:
ওপাক আইডস বনাম ইন / দীর্ঘ:
একটি idএকটি সম্পূর্ণ অস্বচ্ছ আইডেন্টিফায়ার এটি কি চিহ্নিত সম্পর্কে কোন তথ্য বহন করে হওয়া উচিত। তবে এটির কিছুটা যাচাইয়ের প্রস্তাব দেওয়া উচিত যে এটি এর সিস্টেমে একটি বৈধ শনাক্তকারী।
কাঁচা ধরণেরগুলি এটি ভেঙে দেয়:
int, longএবং Stringআরডিবিএমএস সিস্টেমে সনাক্তকারীদের জন্য সর্বাধিক ব্যবহৃত কাঁচা প্রকার। বাস্তব কারণগুলির দীর্ঘ ইতিহাস রয়েছে যা কয়েক দশক আগের এবং সেগুলি সমস্ত আপস যা সংরক্ষণ spaceবা সঞ্চয় timeবা উভয় ক্ষেত্রেই উপযুক্ত।
সিক্যুয়াল আইডগুলি হ'ল সবচেয়ে খারাপ অপরাধী:
আপনি যখন সিক্যুয়াল আইডি ব্যবহার করেন আপনি অস্থায়ী অর্থ সংক্রান্ত তথ্যটি ডিফল্টরূপে আইডিতে প্যাক করছেন। এটি ব্যবহার না করা অবধি খারাপ নয় । লোকেরা যখন আইডিটির শব্দার্থক মানের উপর ভিত্তি করে বা ফিল্টার করে এমন ব্যবসায়ের যুক্তি লিখতে শুরু করে, তখন তারা ভবিষ্যতের রক্ষণাবেক্ষণকারীদের জন্য বেদনার একটি পৃথিবী স্থাপন করে।
String ক্ষেত্রগুলি সমস্যাযুক্ত কারণ নিষ্পাপ ডিজাইনারগণ বিষয়বস্তুগুলিতে তথ্য সাধারণত প্যাক করবে, সাধারণত অস্থায়ী শব্দার্থবিদ্যাও।
এগুলি বিতরণকারী ডেটা সিস্টেম তৈরি করাও অসম্ভব, কারণ বিশ্বব্যাপী 12437379123এটি অনন্য নয় । যখন আপনি কোনও সিস্টেমে পর্যাপ্ত পরিমাণ ডেটা পাবেন তখন কোনও বিতরণকারী সিস্টেমে অন্য নোড একই নম্বর সহ একটি রেকর্ড তৈরি করার সম্ভাবনা বেশ গ্যারান্টিযুক্ত।
তারপরে হ্যাকগুলি এর চারপাশে কাজ শুরু করে এবং পুরো জিনিসটি বাষ্পীয় জঞ্জালের গাদা হয়ে যায়।
বিশাল বিতরণকারী সিস্টেমগুলি ( ক্লাস্টারগুলি ) উপেক্ষা করে আপনি অন্যান্য সিস্টেমের সাথেও ডেটা ভাগ করার চেষ্টা শুরু করলে এটি একটি সম্পূর্ণ দুঃস্বপ্ন হয়ে যায়। বিশেষত যখন অন্য সিস্টেম আপনার নিয়ন্ত্রণে থাকে না।
আপনার আইডিটিকে কীভাবে বিশ্বব্যাপী অনন্য করা যায়, ঠিক একই সমস্যাটি শেষ করবেন।
ইউইউডিটি একটি কারণে তৈরি এবং মানক করা হয়েছিল:
UUIDVersionআপনি যেটি ব্যবহার করেন তার উপর নির্ভর করে উপরে তালিকাভুক্ত সমস্ত সমস্যা থেকে ভুগতে পারেন।
Version 1একটি অনন্য আইডি তৈরি করতে একটি ম্যাক ঠিকানা এবং সময় ব্যবহার করে। এটি খারাপ কারণ এটিতে অবস্থান এবং সময় সম্পর্কে অর্থপূর্ণ তথ্য বহন করে। এটি নিজেই কোনও সমস্যা নয়, যখন নিষ্পাপ বিকাশকারীরা ব্যবসায়িক যুক্তির জন্য সেই তথ্যের উপর নির্ভর করতে শুরু করেন। এটি এমন কোনও তথ্যও ফাঁস করে যা কোনও অনুপ্রবেশ প্রচেষ্টাতে ব্যবহার করা যেতে পারে।
Version 2কোনও ব্যবহারকারী UIDবা GIDডোমিয়ান ব্যবহার করে UIDবা GUIএর থেকে সময়ের পরিবর্তে ডেটা ফাঁস এবং এই তথ্যটিকে ব্যবসায়ের যুক্তি হিসাবে ব্যবহার করার জন্য ঝুঁকিপূর্ণ Version 1করার মতোই খারাপ Version 1।
Version 3অনুরূপ তবে ম্যাকের ঠিকানা এবং সময়কে এমন কিছু থেকে MD5কিছু অ্যারের একটি হ্যাশ দিয়ে প্রতিস্থাপন করে byte[]যার অবশ্যই শব্দার্থক অর্থ রয়েছে। চিন্তার জন্য কোনও তথ্য ফাঁস নেই, এটির byte[]কাছ থেকে পুনরুদ্ধার করা যায় না UUID। এটি আপনাকে নির্বিচারে UUIDউদাহরণস্বরূপ ফর্ম এবং কোনও ধরণের বাহ্যিক কী তৈরির জন্য একটি ভাল উপায় দেয় ।
Version 4 এটি কেবল এলোমেলো সংখ্যার উপর ভিত্তি করে যা একটি ভাল সমাধান, এটি একেবারে কোনও অর্থ সংক্রান্ত তথ্য বহন করে না, তবে এটি নির্বিচারে পুনরায় সৃজনশীল নয়।
Version 5ঠিক মত Version 4তবে sha1পরিবর্তে ব্যবহার করে md5।
ডোমেন কী এবং লেনদেনের ডেটা কীগুলি
ডোমেন অবজেক্ট আইডির জন্য আমার পছন্দটি হ'ল ব্যবহার করা Version 5বা কোনও প্রযুক্তিগত কারণে Version 3ব্যবহার থেকে বিরত থাকলে Version 5।
Version 3 লেনদেনের ডেটার জন্য দুর্দান্ত যা অনেকগুলি মেশিনে ছড়িয়ে পড়ে।
আপনি যদি স্থান দ্বারা সীমাবদ্ধ না হন তবে কোনও ইউইউডি ব্যবহার করুন:
এগুলির অনন্য গ্যারান্টিযুক্ত, একটি ডাটাবেস থেকে ডেটা ডাম্প করা এবং অন্যটিতে পুনরায় লোড করার জন্য আপনাকে কখনই নকল আইডির বিষয়ে চিন্তা করতে হবে না যা প্রকৃতপক্ষে বিভিন্ন ডোমেন ডেটার উল্লেখ করে।
Version 3,4,5 সম্পূর্ণরূপে অস্বচ্ছ এবং এটি তাদের হওয়া উচিত।
আপনার কাছে প্রাথমিক কী হিসাবে একটি একক কলাম থাকতে পারে UUIDএবং তারপরে প্রাকৃতিক যৌগিক প্রাথমিক কী কী হত তার জন্য আপনার কাছে যৌগিক অনন্য সূচি থাকতে পারে।
সংগ্রহস্থল নেই না হতে হবে CHAR(36)পারেন। আপনি UUIDপ্রদত্ত ডেটাবেসের জন্য দেশীয় বাইট / বিট / সংখ্যা ক্ষেত্রে সংরক্ষণ করতে পারেন যতক্ষণ না এটি সূচকযোগ্য।
উত্তরাধিকার
আপনার যদি কাঁচা ধরণের থাকে এবং সেগুলি পরিবর্তন করতে না পারেন তবে আপনি এগুলি এখনও আপনার কোডে বিমূর্ত করতে পারেন।
একটি ব্যবহার Version 3/5এর UUIDজন্য আপনি পাস করতে পারেন Class.getName()+ + String.valueOf(int)হিসেবে byte[]এবং একটি অস্বচ্ছ রেফারেন্স কী recreatable এবং নির্ণায়ক আছে।