আমি জানি এখানেও অনুরূপ প্রশ্ন রয়েছে তবে তারা আমাকে নিয়মিত আরডিবিএমএস সিস্টেমে ফিরে যেতে বলছেন যদি আমার লেনদেনের প্রয়োজন হয় বা পারমাণবিক ক্রিয়াকলাপ বা দ্বি-পর্যায়ের অঙ্গীকারের প্রয়োজন হয় । দ্বিতীয় সমাধানটি সেরা পছন্দ বলে মনে হচ্ছে। তৃতীয়টি আমি অনুসরণ করতে চাই না কারণ মনে হচ্ছে অনেক কিছুই ভুল হতে পারে এবং আমি প্রতিটি দিক দিয়ে এটি পরীক্ষা করতে পারি না। পারমাণবিক ক্রিয়াকলাপ সম্পাদন করার জন্য আমার প্রকল্পটি রিফেক্টর করতে আমার খুব কষ্ট হচ্ছে। এটি আমার সীমিত দৃষ্টিকোণ থেকে এসেছে কিনা আমি জানি না (আমি কেবলমাত্র এসকিউএল ডেটাবেসগুলির সাথে এখনও কাজ করেছি), বা এটি আসলে করা যায় না কিনা।
আমরা আমাদের সংস্থায় মোংগোডিবি পরীক্ষা করতে চাই। আমরা একটি অপেক্ষাকৃত সহজ প্রকল্পটি বেছে নিয়েছি - একটি এসএমএস গেটওয়ে। এটি আমাদের সফ্টওয়্যারটি সেলুলার নেটওয়ার্কে এসএমএস বার্তা প্রেরণের অনুমতি দেয় এবং গেটওয়েটি নোংরা কাজ করে: আসলে বিভিন্ন যোগাযোগ প্রোটোকলের মাধ্যমে সরবরাহকারীদের সাথে যোগাযোগ করে। গেটওয়ে বার্তাগুলির বিলিং পরিচালনাও করে। এই পরিষেবাটির জন্য আবেদনকারী প্রতিটি গ্রাহককে কিছু ক্রেডিট কিনতে হবে। কোনও বার্তা প্রেরণ করা হলে সিস্টেমটি স্বয়ংক্রিয়ভাবে ব্যবহারকারীর ভারসাম্য হ্রাস করে এবং ব্যালেন্স অপর্যাপ্ত হলে অ্যাক্সেসটিকে অস্বীকার করে। এছাড়াও আমরা তৃতীয় পক্ষের এসএমএস সরবরাহকারীদের গ্রাহক হওয়ায় তাদের সাথে আমাদের নিজস্ব ব্যালেন্সও থাকতে পারে। আমাদের পাশাপাশি তাদেরও নজর রাখতে হবে।
আমি কিছু জটিলতা (বাহ্যিক বিলিং, সারিবদ্ধ এসএমএস প্রেরণ) কেটে দিলে আমি কীভাবে মঙ্গোডিবি-র সাথে প্রয়োজনীয় ডেটা সঞ্চয় করতে পারি সে সম্পর্কে ভাবতে শুরু করি। এসকিউএল বিশ্ব থেকে আগত আমি ব্যবহারকারীদের জন্য পৃথক টেবিল তৈরি করব, এসএমএস বার্তাগুলির জন্য আরেকটি এবং ব্যবহারকারীদের ভারসাম্য সম্পর্কিত লেনদেন সংরক্ষণ করার জন্য একটি। ধরা যাক আমি মঙ্গোডিবি-র সকলের জন্য পৃথক সংগ্রহ তৈরি করেছি।
এই সরলীকৃত সিস্টেমে নিম্নলিখিত পদক্ষেপগুলি সহ একটি এসএমএস প্রেরণের টাস্কটি কল্পনা করুন:
ব্যবহারকারীর পর্যাপ্ত ব্যালেন্স রয়েছে কিনা তা পরীক্ষা করুন; পর্যাপ্ত creditণ না থাকলে অ্যাক্সেস অস্বীকার করুন
বিশদ এবং ব্যয় সহ এসএমএস সংগ্রহের মধ্যে বার্তাটি প্রেরণ এবং সঞ্চয় করুন (লাইভ সিস্টেমে
status
মেসেজটির একটি বৈশিষ্ট্য থাকবে এবং কোনও কাজ এটিকে সরবরাহের জন্য গ্রহণ করবে এবং এসএমএসের বর্তমান অবস্থা অনুযায়ী দাম নির্ধারণ করবে)প্রেরিত বার্তার দাম দ্বারা ব্যবহারকারীদের ভারসাম্য হ্রাস করুন
লেনদেন সংগ্রহে লেনদেন লগ
এখন তাতে সমস্যা কী? মঙ্গোডিবি কেবলমাত্র একটি নথিতে পারমাণবিক আপডেট করতে পারে। পূর্বের প্রবাহে এটি ঘটতে পারে যে কোনও ধরণের ত্রুটিটি প্রবেশ করে এবং বার্তাটি ডাটাবেসে সঞ্চিত হয়ে যায় তবে ব্যবহারকারীর ভারসাম্য আপডেট হয় না এবং / অথবা লেনদেনটি লগ হয় না।
আমি দুটি ধারণা নিয়ে এসেছি:
ব্যবহারকারীদের জন্য একটি একক সংগ্রহ তৈরি করুন এবং ক্ষেত্র হিসাবে ভারসাম্য, ব্যবহারকারী সম্পর্কিত লেনদেন এবং ব্যবহারকারীর নথিতে সাব ডকুমেন্ট হিসাবে বার্তা সংরক্ষণ করুন। যেহেতু আমরা নথিগুলি পরমাণুভাবে আপডেট করতে পারি, এটি আসলে লেনদেনের সমস্যা সমাধান করে। অসুবিধাগুলি: ব্যবহারকারী যদি অনেকগুলি এসএমএস বার্তা প্রেরণ করেন তবে নথির আকারটি বড় হতে পারে এবং 4 এমবি নথির সীমাতে পৌঁছে যেতে পারে। এই জাতীয় পরিস্থিতিতে আমি ইতিহাসের নথি তৈরি করতে পারি তবে আমি মনে করি এটি ভাল ধারণা হবে না। এছাড়াও আমি জানি না যদি আমি একই বড় ডকুমেন্টে আরও বেশি সংখ্যক ডেটা ঠেলা করি তবে সিস্টেমটি কত দ্রুত হবে।
ব্যবহারকারীদের জন্য একটি সংগ্রহ এবং লেনদেনের জন্য একটি সংগ্রহ তৈরি করুন। দুই ধরণের লেনদেন হতে পারে: ইতিবাচক ভারসাম্য পরিবর্তনের সাথে creditণ ক্রয় এবং নেতিবাচক ভারসাম্য পরিবর্তনের সাথে প্রেরিত বার্তা । লেনদেনের একটি সাব-ডকুমেন্ট থাকতে পারে; উদাহরণস্বরূপ প্রেরিত বার্তাগুলিতে এসএমএসের বিশদটি লেনদেনে এম্বেড করা যেতে পারে। অসুবিধাগুলি: আমি বর্তমান ব্যবহারকারীর ভারসাম্য সংরক্ষণ করি না সুতরাং যখনই কোনও ব্যবহারকারী বার্তাটি প্রেরণ করতে পারে বা না যেতে পারে তা জানানোর জন্য যখনই আমি কোনও বার্তা প্রেরণ করার চেষ্টা করি তখন আমাকে এটি গণনা করতে হবে। আমি আশঙ্কা করছি যে সঞ্চয়কৃত লেনদেনের সংখ্যা বাড়ার সাথে সাথে এই গণনা ধীর হয়ে যেতে পারে।
আমি কোন পদ্ধতিটি বেছে নেব সে সম্পর্কে আমি খানিকটা বিভ্রান্ত। অন্যান্য সমাধান আছে? এই ধরণের সমস্যার আশেপাশে কীভাবে কাজ করা যায় সে সম্পর্কে অনলাইনে আমি কোনও সেরা অনুশীলন খুঁজে পাইনি। আমার অনুমান যে অনেক প্রোগ্রামার যারা নোএসকিউএল জগতের সাথে পরিচিত হওয়ার চেষ্টা করছেন তারা শুরুতে একই ধরণের সমস্যার মুখোমুখি হচ্ছেন।