ফিল্টারিং অ্যাপ্লিকেশনটির জন্য ইলাস্টিক স্যারচ বনাম মঙ্গোডিবি [বন্ধ]


180

এই প্রশ্নটি পরীক্ষা-নিরীক্ষার এবং বাস্তবায়নের বিশদটি সন্ধান করার আগে একটি স্থাপত্য পছন্দ করার বিষয়ে। এটি কিছুটা সুনির্দিষ্ট উদ্দেশ্যে বনাম ইলাস্টিকসার্চ বনাম মোংগোডিবির উপযুক্ততার বিষয়ে, দক্ষতার ক্ষেত্রে এবং পারফরম্যান্সের ক্ষেত্রে।

হাইপোথিটিকভাবে উভয়ই ডেটা অবজেক্টগুলিকে সঞ্চয় করে যার ক্ষেত্র এবং মান রয়েছে এবং বস্তুর সেই অংশটি অনুসন্ধানের অনুমতি দেয়। সুতরাং সম্ভবত অ্যাডহক বাছাই করা ক্ষেত্রগুলি অনুযায়ী অবজেক্টগুলির সাবসেটগুলি ফিল্টার করা, উভয়ের পক্ষে উপযুক্ত something

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

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

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

আপনি কি মনে করেন? এবং, আপনি এই দিকটি পরীক্ষা করেছেন?

এই ধরণের কাজের জন্য আমি দুটি ডেটা স্টোরের প্রত্যেকটির কর্মক্ষমতা এবং এর স্কেল্যাবিলিটিতে আগ্রহী। এটি আর্কিটেকচারাল ডিজাইং প্রশ্নের ধরণ, এবং স্টোর-নির্দিষ্ট বিকল্পগুলি বা কোয়েরো কর্নস স্টোনগুলির বিশদ যা এটিকে ভালভাবে আর্কিটেক্ট করা উচিত, পুরোপুরি চিন্তা-ভাবনা পরামর্শের প্রদর্শন হিসাবে স্বাগত as

ধন্যবাদ!


আমি জানি না কেন এটি ভোট পেতে থাকে, তারা কি এত দীর্ঘ সময় পরে এই জাতীয় বিকল্প?
ম্যাটানস্টার

8
মাত্র 6 বছর আগে আপনি কী বেছে নিয়েছেন এবং এখন পর্যন্ত আপনার ভ্রমণটি কী ছিল :)?
অ্যারানাস স্মালিউকাস

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

উত্তর:


391

প্রথমত, এখানে তৈরি করার জন্য একটি গুরুত্বপূর্ণ পার্থক্য রয়েছে: মঙ্গোডিবি একটি সাধারণ উদ্দেশ্য ডাটাবেস, ইলাস্টিকসার্ক লুসিনের সমর্থিত একটি বিতরণযোগ্য পাঠ্য অনুসন্ধান ইঞ্জিন। লোকে ইলাস্টিকসার্ককে সাধারণ উদ্দেশ্যে ডেটাবেস হিসাবে ব্যবহার করার কথা বলছে তবে তারা জানে যে এটি এর 'আসল নকশা নয়'। আমি মনে করি যে সাধারণ উদ্দেশ্য নোএসকিউএল ডেটাবেস এবং সার্চ ইঞ্জিনগুলি একীকরণের দিকে পরিচালিত হয়েছে তবে এটি যেমন দাঁড়িয়েছে, দুটি দুটি খুব আলাদা ক্যাম্প থেকে আসে from

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

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

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

পুরানো রেকর্ডগুলির মেয়াদ শেষ হওয়ার জন্য, ইলাস্টিকের টিটিএল বৈশিষ্ট্য একটি বিল্ট রয়েছে। মঙ্গো এটি কেবলমাত্র সংস্করণ ২.২ হিসাবে চালু করেছে বলে আমি মনে করি।

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


92
কেবলমাত্র মন্তব্য করতেই এটি সম্ভবত এই সাইটটির কোনও আর্কিটেকচার বিষয়ে আশা করা সর্বোচ্চ স্তরের প্রতিক্রিয়া। অদ্ভুত, বিশ্লেষণী, কৃত্রিম এবং সত্যই দৃশ্যের সাথে জড়িত থাকার জন্য ধন্যবাদ।
ম্যাটানস্টার

12
নির্ভুলতার বিষয়ে, আপনি কীভাবে আপনার ক্ষেত্রগুলিকে টোকানাইজ করতে এবং বিশ্লেষণ করে তা চয়ন করে আপনি ইলাস্টিক / লুসিনের সাহায্যে এটি নিয়ন্ত্রণ করতে সক্ষম হতে পারেন। যদি আপনার ক্ষেত্রগুলি বিশ্লেষণ না করা হয় (অর্থাত্ মহাকাশ দ্বারা পৃথক শর্তে বিভক্ত), আপনি সার্চ ইঞ্জিনকে তাদের সাথে তেমন আচরণ করতে বাধ্য করতে পারেন। তারপরে, আপনি যদি শর্তাদি কোয়েরি ( elasticsearch.org/guide/references/query-dsl/term-query.html ) ব্যবহার করে জিজ্ঞাসা করেন তবে আপনি নিশ্চিত করতে পারেন যে আপনি কেবল সঠিক ম্যাচের ফলাফল পেয়েছেন। এই পদ্ধতির অনুরূপ হবে কীভাবে একটি নিয়মিত ডিবি সঠিক ম্যাচ করবে।
gstathis

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

@ জেসনআরেল আমাকে শুনতে হবে যে কারও কাছ থেকে, ইন্টারনেটে অন্য সমস্ত নিবন্ধগুলি পাঠ্য সূচি প্রকাশের আগে লেখা হয়েছিল যখন স্লো রেজেক্স একমাত্র বিকল্প ছিল। আমি MongoDB এবং elasticsearch মধ্যে একটি গতি তুলনা দেখতে চাই,
Dheeraj
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.