যেহেতু অন্যরা ইতিমধ্যে আপনার প্রশ্নের সুনির্দিষ্ট উত্তর দিয়েছে। আমি ভেবেছিলাম কেন কেন ইনডেক্সিং প্রয়োজন এবং এটি কীভাবে ম্যাজেন্টো এবং আধুনিক ডাটাবেসের সাথে সম্পর্কের সাথে সম্পর্কিত তা ব্যাখ্যা করা ভাল ।
সূচক: নাম, বিষয় ইত্যাদির বর্ণানুক্রমিক তালিকা, যেখানে তারা ঘটে থাকে সেই জায়গাগুলির উল্লেখ, সাধারণত কোনও বইয়ের শেষে পাওয়া যায়।
সুতরাং ডাটাবেসের ক্ষেত্রে একটি সূচক ঠিক কী ?
একটি সূচক একটি ডেটা স্ট্রাকচার যা এক বা একাধিক ক্ষেত্রের মধ্যে বেশ কয়েকটি রেকর্ড সাজিয়ে তোলে এবং ডেটা পুনরুদ্ধারের গতি বাড়ায়। ডাটাবেসগুলির মাধ্যমে অনুসন্ধানের সময় এটি কোনও টেবিল দ্বারা বিস্তৃত ডিস্ক ব্লকগুলির মাধ্যমে স্ক্যান করা এড়ানো।
এবং ম্যাজেন্টোর নিরিখে ইনডেক্সিং কী ? EAV (সত্তা গুণ মান) এর উপ-পণ্য একা একটি ডাটাবেসের মধ্যে একটি ডাটাবেস। একাধিক অনুসন্ধান সারণী সহ, দ্রুত অনুসন্ধান এবং কম আই / ও, এবং সিপিইউ চক্রের জন্য, সমস্ত অনুসন্ধানের টেবিলের একটি সমতল টেবিলের সাথে একত্রে সূচকযুক্ত হিসাবে চিহ্নিত সমস্ত বৈশিষ্ট্য সংগ্রহ করা।
আমি একটি উল্লেখ স্মরণ করি যে প্রথমদিকে যখন ম্যাজেন্টো বিকাশ করা হচ্ছিল তখন অগ্রাধিকার তালিকার উপর নমনীয়তা বেশি ছিল যা তারা EAV ডেটা মডেলের সাথে কেন যেতে বেছে নিয়েছিল তা বোধগম্য। শেষ পর্যন্ত তবে এই ধরনের নমনীয়তার জন্য ব্যয় সম্পাদনের জন্য ব্যয় হয়েছিল এবং এটি শুরু থেকেই ম্যাজেন্টোকে জর্জরিত করেছে।
সাধারণভাবে, ম্যাজেন্টো ইঞ্জিনিয়ারদের প্রথম এবং সর্বাগ্রে সর্বাধিক নমনীয়, কাস্টমাইজযোগ্য সিস্টেম তৈরি এবং পরবর্তী সময়ে কর্মক্ষমতা সম্পর্কে উদ্বেগের সাথে দায়িত্ব দেওয়া হয়েছিল। ম্যাজেন্টো এত ধীর কেন?
EAV ডেটা গুদামজাতের জন্য দুর্দান্ত তবে লেনদেনের জন্য ভয়ানক। তাহলে আমাদের সূচকের প্রয়োজন কেন শুরু করা উচিত? যেহেতু সম্পর্কের মডেলটির একই পদ্ধতির পুনরায় প্রয়োগ করা হয়েছে, তাই মাইজেন্টোকে এখন মাইএসকিউএল অভ্যন্তরীণভাবে সমস্ত কিছু পরিচালনা করতে হবে। কিছু বিষয় বিবেচনা করা উচিত, যেমন মাইএসকিউএল টেবিলগুলিতে সূচকগুলি ইতিমধ্যে বিদ্যমান। এটিও মাথায় রেখে, এখনই ইএভি ডেটা মডেলটি বিবেচনা করুন:
- E ntity = টেবিল
- একটি ttribute = ক্ষেত্র
- ভি alue = মান
একইটি পুনরায় প্রয়োগ করতে হবে, এটি অত্যন্ত "অ্যান্টি-প্যাটার্ন" আইএমও।
এছাড়াও, সূচকটি সূচক প্রক্রিয়াটি লক করতে ব্যবহারvar/locks করে এমনটি একই কারণে আপনি খুঁজে পান । একই কারণে ডাটাবেসে সারি / সারণী লক করা থাকে।
এখন যখন একটি রেকর্ড, বলুন একটি পণ্যের মান পরিবর্তন করা হয়েছে flat tableবা index(মাইএসকিউএল এটি হিসাবে কী উল্লেখ করবে) নতুন রেকর্ডের মাধ্যমে স্ক্যান না করে দ্রুত এবং দক্ষতার সাথে সন্ধান করা নতুন পরিবর্তিত তথ্য সম্পর্কিত প্রশ্নের জন্য প্রতিফলিত হওয়ার জন্য আপডেট করতে হবে। ফ্ল্যাট টেবিলগুলির উপস্থিতি যেমন মাইএসকিউএল তাদের একই কারণেই ব্যবহার করে, যেমন একটি সূচি (কোনও বইয়ের মতো) ছাড়াই রেকর্ডটি পুনরুদ্ধার করতে একটি পূর্ণ টেবিল স্ক্যান প্রয়োজন scan এর অর্থ হ'ল ডিস্ক এবং মেমরি উভয়ের জন্য প্রচুর পরিমাণে I / O পাশাপাশি অনুরোধ করা ডেটা সনাক্ত করতে সিপিইউ চক্র, যা কার্য সম্পাদনের জন্য খুব খারাপ।
যেহেতু ম্যাজেন্টো EAV ডেটা মডেল ব্যবহার করে, তাই অনেকগুলি সন্ধানের টেবিল রয়েছে যা অনুরোধ করা হয়েছে এমন ডেটা সনাক্ত করতে সমস্ত ডেটা একসাথে টুকরো টুকরো করে স্ক্যান করতে হবে। আপনি ফ্ল্যাট ক্যাটালগগুলি অক্ষম করলে এটিই ঘটে। মাইএসকিউএলের মতো, মূল্যবান আই / ও সাইকেল সংরক্ষণের সময় রেকর্ডটি দ্রুত সনাক্ত করতে ব্যবহার করতে একটি সূচক (ফ্ল্যাট টেবিল) ব্যবহার করে রেকর্ডের জন্য স্ক্যান করা। একটি টেবিল তৈরি করা এবং কোনও সূচক যুক্ত না করা ম্যাজেন্টোতে ফ্ল্যাট টেবিল ব্যবহার না করার সমান। এই দুটি পরিস্থিতিতে বিভিন্ন পরিস্থিতিতে ভাল কাজ করতে পারে, সোনাসির এই প্রশ্নের খুব ভাল উত্তর দেখুন বেন । (ইঙ্গিত এটি ডেটার সুযোগ বুঝতে জড়িত।)
যদিও এটি আপনার প্রশ্নের সরাসরি উত্তর নয়, চলমান অংশগুলি বোঝা এবং সেগুলির জন্য আরও ভালভাবে প্রস্তুত হওয়ার জন্য ইনডেক্সিংয়ের সাথে আগত কিছু মাথাব্যথা হ্রাস করতে সহায়তা করা উচিত। " উপসর্গের চেয়ে সমস্যার সমাধান করুন। "
আধুনিক ডাটাবেস সিস্টেমগুলির অভ্যন্তরীণ বিষয়ে আরও অন্বেষণ করা ইনডেক্সিং কীভাবে এবং কেন প্রয়োজনীয় এবং এটি ম্যাজেন্টোর সূচকগুলির সাথে (কিছুটা) কীভাবে সম্পর্কিত তা আরও ভালভাবে বুঝতে সাহায্য করতে পারে।
সংক্ষিপ্তসার হিসাবে: অন্ধভাবে সমাধান প্রয়োগের আগে আপনার সমস্যার স্কোপগুলি বুঝতে। প্রতিটি বিট ডেটা হুবহু একই রকম হবে না এবং পরিকল্পনার সমাধান এবং প্রয়োগের সমাধানের পরে আপনি সমস্যার ভাল / সম্পূর্ণ উপলব্ধি পেয়ে গেছেন । ডেটাবেস অপ্টিমাইজেশন পরিবর্তন পরিচালনার জন্য খুব পুরস্কৃত হতে পারে। যেমন ভয়ঙ্করতা রোধ করা DEADLOCKS।
আপনি আপনার সমস্ত সূচককে সেট করার বিষয়ে বিবেচনা করতে পারেন এবং Manualঅফ-পিক টাইম ঘন্টা (যখন প্রশাসকরা দূরে থাকবেন) এ সূচিটি পুনর্নির্মাণের জন্য বিকল্প প্রক্রিয়াগুলি সেটআপ করতে পারেন। শুধুমাত্র Product Pricesএবং Stock Statusসেট করা উচিত Update on Save।
প্রযুক্তিগত দৃষ্টিকোণ থেকে সূচি কীভাবে কাজ করে তা বিবেচনা করুন। মূল মডিউল সূচকের জন্য দায়বদ্ধ Mage_Index। Indexer মৌলিক মডেল: Indexer, Process, Event।
Mage_Index_Model_Indexerসূচক হয়, অন্যান্য মডিউল মডিউলগুলির সাথে সমস্ত মিথস্ক্রিয়া Mage_Indexএই পরিষেবার মাধ্যমে ঘটে। এটিতে নিম্নলিখিত পদ্ধতি রয়েছে:
processEntityAction() ইভেন্টটি তৈরি এবং নিবন্ধভুক্ত করে এবং সূচীকরণ প্রক্রিয়া শুরু করে
logEvent() একটি ইভেন্ট তৈরি করে এবং পরবর্তী সূচকের জন্য এটি নিবন্ধন করুন;
indexEvent() সূচকের ইভেন্টগুলি চালায়;
getProcessesCollection()সমস্ত বৈশিষ্ট্য যেমন পণ্য বৈশিষ্ট্য, পণ্য মূল্য, ক্যাটালগ url পুনরায় লেখাগুলি ইত্যাদির সংগ্রহ ফিরিয়ে দেয় সাধারণত পদ্ধতিটি পরিবর্তনের পরে যেমন পদ্ধতি _afterSaveবা _afterCommitআমরা আংশিক পুনরায় সূচি সম্পাদন করি।
Mage_Index_Model_Processঅথবা পদ্ধতি আপনার indexer সারাংশ যে দোকানে অবস্থা, শেষ রান অপারেশন। সমস্ত প্রক্রিয়া সারণীতে সংরক্ষণ করা হয় index_process। প্রোগ্রামটির একটি পদ্ধতি রয়েছে getIndexer()যা মডেলটির সূচক ফেরত দেয়। সূচক মডেলের প্রক্রিয়া দ্বারা বেশিরভাগ কার্য নির্ধারিত।
Mage_Index_Model_Eventঘটনা ঘটেছে সম্পর্কে তথ্য সঞ্চয় করে। উদাহরণস্বরূপ, আমরা পণ্যটি সংরক্ষণ করি এবং সংরক্ষণের পরে, আমরা একটি নতুন ইভেন্ট তৈরি করি এবং কী সত্ত্বার সুনির্দিষ্টভাবে আমরা কী সংরক্ষণ করেছি তা কী আইডির স্পিরিট রয়েছে এবং এই পদার্থের জন্য আমরা কী পদক্ষেপ নিয়েছি।
যখন অবৈধতা ঘটে তার একটি সাধারণ তালিকা:
- ক্যাটালগ / পণ্য (সংরক্ষণ করুন, মোছা, ম্যাসেজ_এ্যাকশন)
- ক্যাটালগ / বিভাগ (সংরক্ষণ করুন, মোছা)
- ক্যাটালগ / রিসোর্স_ইভ_ট্রিবিউট (সংরক্ষণ করুন, মোছা)
- গ্রাহক / গোষ্ঠী (সংরক্ষণ)
- ক্যাটালগের তালিকাভুক্ত / স্টক_ইটেম (সংরক্ষণ করুন)
- ট্যাগ / ট্যাগ (সংরক্ষণ)
- কোর / স্টোর (সংরক্ষণ করুন, মোছা)
- কোর / স্টোর_গোষ্ঠী (সংরক্ষণ করুন, মোছা)
- মূল / ওয়েবসাইট (সংরক্ষণ করুন, মোছা)
config.xmlলেনদেনের সংরক্ষণের পরে মডিউলটিতে নিবন্ধিত সূচী সহ যে কোনও সংস্থান মডেল । afterCommitCallback()একটি উপসর্গ সঙ্গে বলা হয়। এটিই সূচক ইভেন্টগুলি লগইন করা হয়, যেহেতু এটি একটি সফল লেনদেনের শেষে।
... এবং এটি আমার দু: খিত করে তোলে যে EAV এখনও ম্যাজেন্টো ২: এর মধ্যেই রয়েছে (
তথ্যসূত্র: