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