আমি মঙ্গোপ্যাপার চেষ্টা করেছি এবং এটি সম্পূর্ণ বৈশিষ্ট্যযুক্ত (প্রায় সমস্ত এআর কার্যকারিতা সরবরাহ করে) তবে বড় ডেটাসেট ব্যবহার করার সময় আমি পারফরম্যান্সে খুব খুশি ছিলাম না। কেউ কি মঙ্গয়েডের সাথে তুলনা করেছেন? কোন পারফরম্যান্স লাভ?
উত্তর:
আমি কিছুক্ষণের জন্য মঙ্গোমাপার ব্যবহার করেছি তবে মঙ্গোআইডে স্থানান্তরিত করার সিদ্ধান্ত নিয়েছি। কারণ লুকানো ইস্যু এবং ব্যবহারকারীদের প্রতি অহংকার। মংগোপ্যাপারকে শসাবারের সাথে কাজ করতে (শেষ পর্যন্ত সফল) করতে এবং বেশ কয়েকটি প্যাচ এমনকি প্রকল্পটি সহজসাধ্য করার জন্য আমাকে হুপের মধ্য দিয়ে ঝাঁপিয়ে পড়তে হয়েছিল, তবে এটি মূল বিষয় নয়। আমি যখন একটি বাগ ফিক্স জমা দেওয়ার চেষ্টা করেছি (অ্যাক্টিভেকর্ডের সাথে অসঙ্গতির কারণে), তারা আপাতদৃষ্টিতে হতাশ হয়ে পড়েছিল যে আমি একটি সমস্যা পেয়েছি এবং আমাকে চারপাশে ঠেলে দেওয়া হয়েছে। আমি পরীক্ষার সময়, আমি তাদের জিজ্ঞাসা বাস্তবায়নের সাথে একটি বড় ত্রুটির মুখোমুখিও হয়েছিলাম, যখন পরীক্ষাগুলি পাস করার পথে তাদের পরীক্ষাটি এমনভাবে করা হয়েছিল। আমার আগের অভিজ্ঞতার পরে, এটি জমা দেওয়ার সাহস হয়নি।
তাদের কাছে মংগোআইডের তুলনায় তুলনামূলকভাবে তুলনামূলক অনুরোধ এবং বাগ / বৈশিষ্ট্য জমা দেওয়ার সংখ্যা কম রয়েছে, অর্থাৎ সম্প্রদায়ের অংশগ্রহণ অনেক কম। আমার মতো একই অভিজ্ঞতা?
এই মুহূর্তে কোনটির আরও বৈশিষ্ট্য রয়েছে তা আমি জানি না, তবে মঙ্গোমাপ্পারে আমি খুব বেশি ভবিষ্যত দেখতে পাচ্ছি না। আমি সমস্যাগুলি স্থির করতে এবং নিজে কার্যকারিতা যুক্ত করতে কিছু মনে করি না, তবে যখন তারা বাগগুলি ঠিক না করে তখন আমার পরিস্থিতি মনে হয়।
আমি গত দু'সপ্তাহ ধরে উভয়ই ব্যবহার করে আসছি। মোঙ্গোমাপার রিলেশনাল অ্যাসোসিয়েশনগুলির (এমবেডড নয়) আরও ভাল সমর্থন এবং তৃতীয় পক্ষের বৃহত্তর সমর্থন রয়েছে। মঙ্গয়েডের আরও ভাল ক্যোয়ারী সমর্থন রয়েছে, আরও ভাল ডকুমেন্টেশন রয়েছে (এমএমের কোনওটির কাছেই নেই, যদিও কোনও ওয়েবসাইটের কাজ চলছে বলে ধারণা করা হচ্ছে), রেল 3 সমর্থন (এবং এইভাবে সাপোর্ট ডিভাইস সমর্থন) এবং গুগল গ্রুপগুলিতে কিছুটা সক্রিয় সম্প্রদায়।
আমি মঙ্গয়েডের সাথে শেষ করলাম।
পার্থক্য
মঙ্গোমাপার
মঙ্গয়েড
সাদৃশ্য
কনফিগারেশন
মঙ্গোমাপার
defaults: &defaults
host: 127.0.0.1
port: 27017
development:
database: database_name
মঙ্গয়েড
development:
sessions:
default:
database: database_name
hosts:
- 127.0.0.1:27017
তৃতীয় পক্ষের গ্রন্থাগারসমূহ
উভয় পক্ষই তৃতীয় পক্ষের উন্নত সমর্থন পাওয়ার দাবি করেছে। গিথুব নিম্নলিখিতগুলি প্রকাশ করেছেন:
উল্লেখযোগ্যভাবে, ডিভাইস মঙ্গোম্যাপার সমর্থন করে না।
ক্রিয়াকলাপ প্রতিশ্রুতিবদ্ধ
গত এক বছরে, দেখে মনে হচ্ছে মঙ্গোড মঙ্গোমাপ্পারের চেয়ে নিয়মিত রক্ষণাবেক্ষণ এবং আপডেট হয়েছে।
মঙ্গোমাপার
মঙ্গয়েড
একটি পার্থক্য যা আমি পেয়েছি তা হল update_attribute
মোংগোপ্যাপারে পুরো ডকুমেন্টটি লিখতে দেখা যায়, বৈশিষ্ট্যগুলি কী পরিবর্তিত হয়েছিল তা নির্বিশেষে। মঙ্গয়েডে এটি কেবল পরিবর্তিত বৈশিষ্ট্যগুলি লিখে দেয়। এটি বড় রেকর্ডগুলির জন্য একটি গুরুত্বপূর্ণ পারফরম্যান্সের সমস্যা হতে পারে। এটি এম্বেড থাকা নথিগুলির (বিশেষত labels
) উদাহরণস্বরূপ সত্য
profile = Profile.find(params[:id])
label = profile.labels.find_or_create_by(idx: params[:idx])
# MongoMapper doesn't have find_or_create_by for embedded docs
# -- you'll have to write custom code
profile.save
অন save
, মঙ্গোম্যাপার পুরো profile
রেকর্ডটি সংরক্ষণ করবে , তবে মোংগোআইড $set
কেবলমাত্র পরিবর্তিত লেবেলটি আপডেট করতে অবস্থানগত যুক্তিযুক্ত অপারেটরটি ব্যবহার করবে ।
অন্য সমস্যাটি কোন ক্ষেত্রগুলিতে ফিরে আসবে তা নির্বাচন করছে। উভয়ই একটি only
মানদণ্ড সমর্থন করে , তবে মঙ্গয়েডও এটিকে সমর্থন করেwithout
, যা মঙ্গো দ্বারা স্থানীয়ভাবে সমর্থিত।
এটি আমার কাছে উপস্থিত হয়েছে যে মঙ্গোডই কেবল আরও "বৃত্তাকার" এবং এর এপিআইতে সম্পূর্ণ, এটি সম্ভবত এটি ব্যাখ্যা করে যে এটি একটি বৃহত্তর কোড বেস। এটি আরও ভাল নথিভুক্ত প্রদর্শিত হবে।
আপনি কি মঙ্গো_েক্সট ইনস্টল করেছেন? আমি মনে করি পারফরম্যান্সটি ম্যাপারের নিজে থেকে ড্রাইভারের সাথে বেশি সম্পর্কিত। মঙ্গো লগতে তাকানোর সময়, আমি এক্সটেনশন ছাড়াই দেখতে পাচ্ছি, ট্রানজারটিতে কিছুটা ল্যাগ রয়েছে বলে মনে হচ্ছে।
তারা মনোগডিবির সাইটে যেমন পরামর্শ দেয় তেমনটি করুন, কেবলমাত্র আপনার প্রয়োজন ক্ষেত্রগুলি নির্বাচন করুন।
mongo_ext
আর প্রয়োজন হয় না এবং এটি মৌলিক mongo
রত্নে পরিণত হয়।
গত সপ্তাহে মঙ্গোপ্যাপারের সাথে কিছু পরীক্ষা করা হয়েছিল, এটি স্থিতিশীল ছিল তবে আমি জিজ্ঞাসা ইন্টারফেসটি কিছুটা সীমাবদ্ধ পেয়েছি (এছাড়াও কিছু এআর যুক্তিটিও বিরল ছিল), আজ মঙ্গয়েডে স্যুইচ করা হয়েছে এবং এটি ব্যবহার করা আরও ভাল অনুভূত হয়েছে - এবং আপনি যদি ব্যবহার করেন তবে আরও স্বজ্ঞাত এআর
এখনও কোনও গতির উপসংহার নেই - তবে স্যুইচ ওভারটি বেদনাদায়ক ছিল - এটি রেল 3 এর সাথেও কাজ করে।
আপনি যদি রেল 3 ব্যবহার করছেন তবে আমি মঙ্গয়েডকে প্রস্তাব দিচ্ছি - এটি ক্লাস চালিয়ে যেতে উত্তরাধিকারের পরিবর্তে "অন্তর্ভুক্ত" "<" ব্যবহার করে - অধ্যবসায় যোগ করার জন্য রুবিতে "অন্তর্ভুক্ত" ব্যবহার করা আরও ভাল উদাহরণ। ডিঙ্গিসের সাথে মঙ্গয়েড আমার পক্ষে ভাল কাজ করে।
কর্মক্ষমতা উন্নত করতে নিম্ন স্তরের অ্যাক্সেসকে বেছে বেছে ব্যবহার করার চেষ্টা করুন, যেমন মোপড - আমি এটি 10x পর্যন্ত দ্রুত হতে দেখেছি
আমি তাদের উভয় ব্যবহার করেছি এবং তারা কার্যকারিতা সমান প্রায়, কিন্তু এটি কোড পরিসংখ্যান দেখুন
দেখে মনে হচ্ছে মোংগোপ্যাপারের কোডের মান আরও ভাল (যদি এটি কম দিয়ে একই রকম হয়)।
আপনি এই পরিসংখ্যানটি নিজের দ্বারা গণনা করতে পারেন, বিশ্লেষকটি এখানে https://github.com/alexeypetrushin/code_stats
আমি মনে করি কনফিগারেশন এবং ম্যাপিংয়ে মঙ্গয়েড আরও ভাল।
আমি পারফরম্যান্সটি একই রকম প্রত্যাশা করবো, গতবার আমি মঙ্গোমাপ্পারকে পরীক্ষা করেছিলাম রেলস 3 সমর্থনটির অভাব রয়েছে - তাই আমি আপাতত মঙ্গয়েডের দিকে তাকাচ্ছি।
sudo gem install mongo_ext
পারফরম্যান্স পাওয়ার মূল চাবিকাঠি।
মংগোডিবি কাঁচা গতির ক্ষেত্রে কাউচডিবিকে উড়িয়ে দিয়েছে - যদিও সিডিবির নিজস্ব সুবিধার একটি সেট রয়েছে।
বেঞ্চমার্ক: http://www.snailinaturtleneck.com/blog/?p=74
mongo_ext
আর প্রয়োজন হয় না এবং এটি মৌলিক mongo
রত্নে পরিণত হয়।
ডিভাইস মঙ্গোমাপারকে সমর্থন করেনি এবং আমিও রেল 3 পথে চলা পছন্দ করি। তাই আমি মঙ্গয়েডে স্যুইচ করেছি।
মঙ্গয়েডের রেল 3 এর সাথে পুরো সমর্থন রয়েছে এবং পরিচয় মানচিত্রের বৈশিষ্ট্য রয়েছে।
আরও ডকুমেন্টটি http://mongoid.org এ রয়েছে
এখানে পারফরম্যান্স দেখুন http://mongoid.org/performance.html
আমি আশা করি নীচের পয়েন্টগুলিতে উপরের উত্তরে মান যুক্ত হবে।
1.মঙ্গোড সম্পূর্ণরূপে রেল 3 সামঞ্জস্যপূর্ণ এবং পুরো জায়গা জুড়ে অ্যাক্টিভোডেল ব্যবহার করে (বৈধকরণ, সিরিয়ালাইজেশন, ইত্যাদি), যেখানে মঙ্গোম্যাপার এখনও রেল 2 এর উপর দৃষ্টি নিবদ্ধ করে এবং তার বৈধতার জন্য বৈধতাযোগ্য রত্ন ব্যবহার করে।
2. মোঙ্গয়েড আনুষ্ঠানিকভাবে রুবি 1.8.7, 1.9.1 এবং 1.9.2 হেডে সমর্থন করে এবং কাজ করে।
৩.মঙ্গয়েড এম্বেডড ডকুমেন্টগুলিকে আরও দৃust়তার সাথে সমর্থন করে, অভ্যন্তরীণভাবে স্তরক্রমের যে কোনও অঞ্চলে মঙ্গোডিবি পারমাণবিক ক্রিয়াকলাপ সম্পাদন করে। ($ সেট, $ পুশ, $ পুল, ইত্যাদি)। এমএম সহ আপনার এই ক্রিয়াকলাপগুলি করার জন্য স্পষ্টভাবে এটি বলা দরকার।
৪.মঙ্গোম্যাপারের আরও ভাল সম্পর্কযুক্ত সহযোগিতা রয়েছে এবং এটি ডিফল্ট হিসাবে কাজ করে।
৫.মঙ্গোমাপ্পার আরও বর্ধিত, একটি প্লাগইন আর্কিটেকচার সহ যা এটি তাদের নিজস্ব লাইব্রেরি দিয়ে লোকেরা প্রসারিত করা বেশ সহজ করে তোলে। মঙ্গয়েডের এটি নেই।
MM.এমএম পরিচয় মানচিত্র সমর্থন করে, মঙ্গয়েড তা সমর্থন করে না।
MM.এমএম এর বৃহত্তর সম্প্রদায় রয়েছে এবং সম্ভবত তৃতীয় পক্ষের লাইব্রেরি সমর্থন রয়েছে। আমি ডকুমেন্টেশন এবং rdoc এ পাগল হয়ে গেলাম।
8.মঙ্গোড মাস্টার / স্লেভ রেপ্লিকেশন ক্লাস্টারগুলিকে সমর্থন করে। (মাস্টারকে লিখেছেন, গোলাকার রবিন দাসদের কাছে পড়ে) এমএম করে না।
9.মঙ্গোডের একটি অত্যন্ত সমৃদ্ধ আর্ল স্টাইলের মানদণ্ড এপিআই রয়েছে, এমএম এআর 2 শৈলী অনুসন্ধানকারী ব্যবহার করে।