কীভাবে দু'জন ব্যবহারকারীকে একই ব্যবহারকারীর সাথে একই তাত্ক্ষণিক নিবন্ধকরণ থেকে রোধ করবেন?


11

একই সাথে লক্ষ লক্ষ ব্যবহারকারী নিবন্ধভুক্ত হওয়ায় আমরা নিবন্ধগুলি সিরিয়ালাইজ করতে পারি না। সমান্তরাল নিবন্ধগুলি হওয়া দরকার need

ধরা যাক ডাটাবেসটিতে ব্যবহারকারীর নাম 'ব্যবহারকারী 1' নেই doesn't যখন দু'জন ব্যবহারকারী একই মুহুর্তে 'ব্যবহারকারীর সাথে' নিবন্ধভুক্ত করার চেষ্টা করবেন এটি তা গ্রহণ করবে। তবে এটি পরে সমস্যা তৈরি করবে। এটি হওয়া উচিত নয়।

আমি একটি যৌক্তিক সমাধান খুঁজছি। নির্দিষ্ট কিছু নয়। এটি সমাধান করার জন্য কেবল একটি ধারণা।



4
এটি একটি বৈধ সফ্টওয়্যার আর্কিটেকচার সমস্যা। এমন ধরণের সমস্যা নয় যা কেবলমাত্র একটি ভাল সাক্ষাত্কারের প্রশ্ন তোলে এবং অন্য কিছু নয়।
কার্ল বিলেফেল্ড

7
লক্ষ লক্ষ ব্যবহারকারী একই সাথে নিবন্ধন করছেন? সত্যি? আপনার যদি একই সাথে মিলিয়ন মিলিয়ন ব্যবহারকারী নিবন্ধভুক্ত হন তবে আপনার আরও বড় সমস্যা রয়েছে - কোটি কোটি নিবন্ধিত ব্যবহারকারীদের পরিচালনা করার মতো। এবং সম্ভবত এটি সার্ভারগুলি বহন করার জন্য অর্থ
gnasher729

2
@ অ্যাডজিকে এই ভবিষ্যতে যে অনুমানের মুখোমুখি হচ্ছে আপনি এটির যৌক্তিক সমাধান চান? খুব নিশ্চিত যে এখানে সুযোগ বাইরে।
পাপারাজ্জো

3
এখানে একটি অনুমানমূলক উত্তর: অন্য কাউকে এটি করার জন্য অর্থ প্রদান করুন যা ইতিমধ্যে কী করতে হবে তা জানে। কয়েক মিলিয়ন নতুন ব্যবহারকারী / সেকেন্ডের সাথে আপনার নগদ থাকবে।
কিশোর নাম

উত্তর:


15

ধরা যাক ডাটাবেসটিতে ব্যবহারকারীর নাম 'ব্যবহারকারী 1' নেই doesn't যখন দু'জন ব্যবহারকারী একই মুহুর্তে 'ব্যবহারকারীর সাথে' নিবন্ধভুক্ত করার চেষ্টা করবেন এটি তা গ্রহণ করবে।

কেন এটি গ্রহণ করবে? একটি অনন্য বাধা প্রয়োগ করা, প্রাথমিক কী হিসাবে ব্যবহারকারীর নাম ব্যবহার করা বা কোনও লেনদেনের মধ্যে অ্যাপ্লিকেশন কোডটি কেবল চালানো সহজ।

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

স্কেলিংয়ের ক্ষেত্রে, ডাটাবেসগুলি আপনাকে প্রয়োজনীয় প্রযুক্তিগুলি ইতিমধ্যে উদ্ভাবিত করেছে, ঠিক কী ধরণের ধারাবাহিকতা আপনার প্রয়োজনের উপর নির্ভর করে লক করার বিভিন্ন পদ্ধতি, একাধিক ডাটাবেস সার্ভারের জন্য বিতরণ করা ডেটাবেস ইত্যাদি etc.


নিবন্ধগুলি লক করা কি একই সাথে অন্য ব্যবহারকারীদের নিবন্ধকরণ থেকে বাধা দেয় না?
অ্যাডজি কে

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

2
@ অ্যাডিজিকে: লকিং কেবল সংক্ষিপ্ত মুহুর্তের জন্য ঘটে যে ডাটাবেসকে অবশ্যই সীমাবদ্ধতাগুলি প্রয়োগ করতে হবে। হ্যাঁ, একই সাথে নিবন্ধভুক্ত অন্যান্য ব্যবহারকারীদের অবশ্যই লাইনে অপেক্ষা করতে হবে, তবে সেই অপেক্ষাটি খুব ছোট এবং খুব বড় ব্যবস্থায় খুব কমই ঘটে।
রবার্ট হার্ভে

1
@ গ্র্যান্ডমাস্টারবি গড়গুলি এখানে পুরো গল্পটি না বলতে পারে। আমি এই প্রশ্নের উপর ভিত্তি করে ধরেছিলাম যে এটি ভারী শিখর লোড পরিচালনার জন্য was উদাহরণস্বরূপ অস্ট্রেলিয়ান আদমশুমারি স্টাফ।
ডেডএমজি

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

7

এটির একটি স্ট্যান্ডার্ড সমাধান রয়েছে। নিবন্ধগুলি করতে একাধিক কর্মী তৈরি করুন। প্রতিটি অনুরোধটির ব্যবহারকারীর নামটিতে একটি হ্যাশ প্রয়োগ করা হয় এবং হ্যাশ নির্ধারণ করে যে কোন কর্মী অনুরোধটি প্রক্রিয়াকরণ করে। একইভাবে একই ব্যবহারকারীর জন্য দুটি অনুরোধের একযোগে প্রক্রিয়া করা সম্ভব নয়।

এই জাতীয় অনুরোধের ভলিউমের জন্য কোনও বিতরণের মূল মান স্টোর বিবেচনা করুন যেমন ডেটা স্টোর হিসাবে সমস্ত ডাটাবেসের পরিবর্তে ঝুঁকি।


2

এটা কি কোনো সমস্যা ?

লগ-ইন করার জন্য ব্যবহারকারীর নাম (এবং ব্যবহারকারীর ইমেল নয়) ব্যবহার করে দু'জন ব্যবহারকারীকে একটি অনন্য অনন্য ব্যবহারকারীর সাথে নিবন্ধকরণ শেষ করতে দেওয়া গ্রহণযোগ্য নয় is

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

হ্যাঁ এটি একটি সমস্যা

আপনি যেমন জিজ্ঞাসা করছেন, আমি অনুমান করি যে ব্যবহারকারীর নামটি একটি অনন্য আইডি বলে মনে করা হচ্ছে। নিম্নলিখিত পদ্ধতিগুলি ব্যবহার করা যেতে পারে:

  1. পূর্বে: রেজিস্ট্রেশন প্রক্রিয়ায়, এমন একটি পদক্ষেপের পূর্বে আগে থেকে আগেই ধারণা রাখুন যেখানে নতুন ব্যবহারকারীকে তার নামের উপলব্ধতা পরীক্ষা করতে হয়। এটি করার সময়, অস্থায়ী স্থিতি এবং একটি সেশন আইডি সহ উপলভ্য অ্যাকাউন্টের নামটি সংরক্ষণ করুন যা নিবন্ধকরণ শেষ করার অনুমতি দেবে।
  2. একই সময়: gnasher729 জবাবের আরও সাধারণ এবং নমনীয় রূপটি হ'ল একটি সাধারণ হ্যাশ ফাংশন (যেমন প্রতীক টেবিল পরিচালনার জন্য ব্যবহৃত হয়) ব্যবহার করতে হবে, আইডিটি একটি অনন্য রেজিস্ট্রেশন সার্ভারের জন্য আই (আই = এইচ (ব্যবহারকারীর নাম) মডিউলকে নির্ধারণ করতে হবে) number_of_servers) যা তার সীমাবদ্ধ / বিভাগযুক্ত সুযোগে স্বতন্ত্রতা পরিচালনা করবে
  3. পরে: রেজিস্ট্রেশন শেষে, ব্যবহারকারী registerআপনার লেনদেনের ডাটাবেজে অনুরোধটি প্রেরণ করতে ক্লিক করে , যদি আপনি ক্ষেত্রটি অনন্য হিসাবে সংজ্ঞায়িত করতে পারেন। ত্রুটি হওয়ার পরে, অশুভ ব্যবহারকারীর "ওফস, একটি সমস্যা ছিল" বার্তা প্রেরণ করুন এবং তাকে অন্য আইডি চয়ন করতে বলুন।
  4. অ্যাসিনক্রোনাস: ব্যবহারকারীর নিবন্ধন করুন। এটি অপরিবর্তিত এবং একক রেকর্ড নিশ্চিত করার জন্য ঠিক পরে ব্যবহারকারী রেকর্ডটি পুনরায় পড়ুন। যদি সমস্যাটি হয় ব্যবহারকারীকে পরিবর্তনের জন্য বলুন (অতএব অ্যাসিনক্রোনাস নয়), বা তাঁকে এমন কোনও মেল পাঠান যে কোনও সমস্যা রয়েছে (অ্যাসিনক্রোনাস, তবে ব্যবহারকারী দৃষ্টিকোণ থেকে বিরক্তিকর), অথবা তাকে নিবন্ধন করতে দিন তবে তার ইমেলের জন্য জিজ্ঞাসা করুন (বিচ্ছিন্ন করতে) এবং লগইন পদ্ধতির অংশ হিসাবে তাকে ব্যবহারকারীর নাম পরিবর্তন করতে বাধ্য করুন।

1

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


0

লক্ষ লক্ষ ব্যবহারকারী একই সাথে নিবন্ধভুক্ত হওয়ার সাথে সাথে আপনি কেবল ২ x x ২ registration রেজিস্ট্রেশন সার্ভার ব্যবহার করেন, এএ দিয়ে শুরু করা ব্যবহারকারীদের জন্য একটি, আব দিয়ে শুরু করা ব্যবহারকারীদের জন্য একটি। ফলস্বরূপ, একই সাথে প্রতিটি সার্ভারে কেবল কয়েক হাজার ব্যবহারকারী নিবন্ধভুক্ত রয়েছেন। আপনি যদি এখনও এটি পরিচালনা করতে না পারেন তবে 26 x 26 x 26 সার্ভার ব্যবহার করুন।


5
... এবং তারপরে আপনার পণ্যের মালিক আন্তর্জাতিক যেতে চান ...
টেলাস্টিন

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

1
আপনার অর্থ কি একই দেশে তাদের লক্ষ লক্ষ ব্যবহারকারী একই সাথে নিবন্ধভুক্ত রয়েছে ? সেক্ষেত্রে তাদের সত্যিকারের সমাধানের জন্য আরও অর্থ দেওয়ার জন্য পর্যাপ্ত অর্থ থাকা উচিত।
gnasher729

আরও সুনির্দিষ্টভাবে, ডিএইচটি কীভাবে করা হয় এটি কেবল এটিই শুরু।
ডেড এমএমজি

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