সিনেমা থিয়েটারের আসন বুকিং সিস্টেম কীভাবে একাধিক ব্যবহারকারীকে একই আসন সংরক্ষণ থেকে বাধা দেয়?


34

মুভি থিয়েটারে আমি যাই তাদের কাছে টিকিট কিয়স্ক রয়েছে যা আপনাকে আপনার পছন্দ মতো আসন নির্বাচন করতে দেয়; তাদের একটি ওয়েবসাইটও রয়েছে যা একই কাজ করে (ওয়েবসাইটটিতে 30 সেকেন্ডের মতো একটি কাউন্টডাউন টাইমারও রয়েছে যাতে আপনাকে অবশ্যই একটি আসন নির্বাচন করতে হবে)।

একাধিক যুগপত ব্যবহারকারীদের পরিচালনা করার জন্য যেমন ডাটাবেস লেনদেন এবং অন্যান্য কৌশলগুলি আমি বুঝতে পেরেছি, তবে একই সাথে একাধিক লোককে কীভাবে একটি আসন নির্বাচন করার অনুমতি দেওয়া যেতে পারে সে সম্পর্কে আমি আমার মাথা পেতে পারি না; প্রথমটি কেনার মত বুয় টিপতে আসনটি পাওয়া যায় এবং অন্য ব্যক্তিটি ত্রুটির বার্তা পাবে, বা আমি কি কিছু মিস করছি?


10
"BUY টিপতে প্রথমটির মতো আসনগুলি পাওয়া যায় এবং অন্য ব্যক্তি একটি ত্রুটি বার্তা পাবে" এর মতোই সহজ? যে।
ইন্নিস

2
হ্যাঁ, সম্ভবত এক ডজন মেশিনের মতো উত্তাল দিনে মনে হয় যদিও এটি একটি ব্যথা হবে।
এমবিওয়াসি

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

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

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

উত্তর:


27

এটি করার সর্বোত্তম পদ্ধতিটি হ'ল একটি লেনদেনের ডাটাবেস ব্যবহার করা (যাতে কোনও সংঘর্ষ হয় না) এবং আপনার কাছে সিটের একটি অস্থায়ী বরাদ্দ করা যা কিছু সময়ের পরে শেষ হয় (যেমন, কিওস্কের জন্য 10 মিনিট) যা আপনাকে যথেষ্ট সময় দেয় to বেতন। যদি (গ্রাহক-দৃশ্যমান) লেনদেনের সময় বা সময়সীমা পড়ে যায় তবে আসন বন্টনটি পুলটিতে ছেড়ে দেওয়া যেতে পারে। (সমস্ত রাজ্যের পরিবর্তনগুলি লেনদেনের ডাটাবেসের মাধ্যমে প্রক্রিয়াজাত হয় এবং একটি গ্রাহক-দৃশ্যমান লেনদেনের জন্য অনেকগুলি ডাটাবেস-স্তরের লেনদেনের প্রয়োজন হতে পারে))

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


মনে মনে, আমার স্থানীয় সিনেমা থিয়েটার আসলে আসনগুলি সাধারণত বরাদ্দ করে না। পরিবর্তে, তারা আসনগুলিকে অতিরিক্ত বিধান দিয়েছে যাতে লোকেরা কেবল ন্যূনতম কোলাহলে শুরু করতে পারে। এটি ভিন্ন কৌশল, তবে আপনার প্রশ্নের সাথে প্রাসঙ্গিক নয়!
ডোনাল ফেলো

ক্রীড়া ইভেন্টের জন্য আসন বাছাইয়ের অনুরূপ। আপনি আপনার এন নম্বরগুলি 3 মিনিটের জন্য সংরক্ষিত রাখবেন যখন আপনি স্থির করেন যে আপনি আসলে সেগুলি চান এবং অর্থ প্রদান সম্পূর্ণ করুন।
AndyMcKenna

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

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

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

4

আপনি যে 30 সেকেন্ড দেখেছেন তা আজকাল প্রায়শই 15 মিনিটের মতো হয়। আমি বিশ্বাস করি না যে এই সময়ের জন্য একটি ডাটাবেস লেনদেন সক্রিয় আছে।

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

উপলভ্য আসনগুলি আনার সময়, আপনি উভয় বুকিং এবং সংরক্ষণগুলি জিজ্ঞাসা করবেন।

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



1

এখানে কমপক্ষে 2 টি ব্যবসায়িক প্রক্রিয়া জড়িত রয়েছে।

  • প্রক্রিয়া এক:

উপলব্ধ আসনগুলি দেখান।

  • প্রক্রিয়া দুটি:

একটি নির্বাচিত আসন বুক করুন।

যেহেতু এই প্রক্রিয়াগুলি একে অপরকে অনিবার্যভাবে অনুসরণ করে না, এবং যেহেতু 2 জন লোক একই আসনটি নির্বাচন করতে পারে তাতে সম্মতি সংক্রান্ত সমস্যাটি দেখা দেয়।

যদি আপনার ডাটাবেস ডিজাইনটি সঠিক স্বতন্ত্রতার সীমাবদ্ধতা নির্ধারণ করে যাতে এর সংমিশ্রণ:

-TheaterID

-SeatID

-EventID

অনন্য, তারপর ডাটাবেস সদৃশ প্রতিরোধ করবে।

নিম্নলিখিত পরিস্থিতিটিও সম্ভব তবে উপরের প্রস্তাবিত প্রয়োগের দ্বারা যত্ন নেওয়া হবে:

প্রদত্ত থিয়েটারের জন্য উপলব্ধ গ্রিড ভিউ ধরে নেওয়া এবং প্রদত্ত ইভেন্টটি প্রদর্শিত হতে পারে:

  1. ব্যবহারকারী 1 উপলভ্য আসনগুলি প্রদর্শন করে (এবং আসন 1 এবং 2 পান)
  2. ব্যবহারকারী 2 উপলব্ধ আসনগুলি প্রদর্শন করে (এবং আসন 1 এবং 2 পান)
  3. ইউজার 1 ফোনে গ্রাহকের সাথে কিছুটা কথা বলে
  4. ইউজার 2 যায় এবং তার গ্রাহকের জন্য সিট 2 বুক করে
  5. ব্যবহারকারী 1 তার গ্রাহকের জন্য আসন 2 বুক করার চেষ্টা করে (কারণ এটি তার স্ক্রিনে উপলব্ধ হিসাবে প্রদর্শিত হয়)
  6. অনন্য সূচকটি 5 তম পদক্ষেপে ডেটা পরিবর্তন করতে বাধা দেয়।

সুতরাং আপনাকে যা করতে হবে তা হ'ল সঠিক ডাটাবেস ডিজাইন এবং সীমাবদ্ধতার উপর সঠিক পছন্দ হতে পারে।

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

সত্যিই আকর্ষণীয় অংশটি হল ব্যবহারকারী 1 শোয়ের জন্য তালিকা গ্রিডটি কী করা উচিত?


1

আপনি নির্দিষ্ট আসন বরাদ্দ করতে দেরি করলে আপনি দৌড় শর্ত এড়াতে পারেন।

  1. গ্রাহকের কাছ থেকে বসার পছন্দগুলি সংগ্রহ করুন (আসন সংখ্যা, দাম, থিয়েটারের ক্ষেত্র, সংলগ্ন আসনগুলি বাধ্যতামূলক, ইত্যাদি ...)
  2. অনুরোধের বসার পছন্দগুলি একটি কাতারে সংরক্ষণ করুন
  3. এক এক করে বসার অনুরোধগুলি সারি থেকে টানা হয়, পছন্দ অনুযায়ী বরাদ্দকৃত আসন এবং আসন পাওয়া গেলে বুকিং সম্পন্ন হয়।
  4. বুকিং সম্পন্ন হলে, গ্রাহকদের এবং মেইল ​​টিকিটকে অবহিত করুন; অন্যথায়, গ্রাহককে অবহিত করুন যে কোনও টিকিট পছন্দগুলির সাথে মেলে না।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.