রেডিস কবে? মঙ্গোডিবি কবে? [বন্ধ]


466

আমি যা চাই তা রেডিস এবং মঙ্গোডিবিয়ের তুলনা নয়। আমি জানি তারা আলাদা; কর্মক্ষমতা এবং এপিআই সম্পূর্ণ আলাদা totally

রেডিস খুব দ্রুত, তবে এপিআই খুব 'পারমাণবিক'। মঙ্গোডিবি আরও সংস্থান গ্রহণ করবে তবে এপিআই ব্যবহার করা খুব সহজ এবং আমি এতে খুশি।

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

সুতরাং আপনি উভয় ব্যবহার সম্পর্কে কি মনে করেন? রেডিস কখন বাছবি? মংগোডিবি কখন বাছবি?

উত্তর:


308

আমি বলব, এটি নির্ভর করে আপনি যে ধরণের দেব দল এবং আপনার অ্যাপ্লিকেশনটির প্রয়োজন।

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

মোঙ্গোডিবি traditionalতিহ্যবাহী ডিবি এবং এসকিউএল অভিজ্ঞতার সাথে বিকাশকারীদের জন্য সরলতা, আরও খাটো শেখার বক্ররেখার প্রস্তাব দেয়। যাইহোক, রেডিসের অপ্রচলিত পদ্ধতির শেখার জন্য আরও পরিশ্রম প্রয়োজন, তবে আরও নমনীয়তা।

যেমন। রেডিসে সম্ভবত একটি ক্যাশে স্তর আরও কার্যকর করা যেতে পারে। আরও স্কিমা-সক্ষম ডেটার জন্য মঙ্গোডিবি আরও ভাল। [দ্রষ্টব্য: মঙ্গোডিবি এবং রেডিস উভয়ই প্রযুক্তিগতভাবে স্কিমবিহীন]

আপনি যদি আমাকে জিজ্ঞাসা করেন তবে আমার ব্যক্তিগত পছন্দটি বেশিরভাগ প্রয়োজনীয়তার জন্য রেডিস।

শেষ অবধি, আমি আশা করি এখনই আপনি http://antirez.com/post/MongoDB- এবং- Redis.html দেখেছেন


16
fyi, mongodb স্কিমলেস।
üzgür

18
মোগোডিবি স্কিমহীন। এবং ডাটাবেসে সঞ্চিত ডেটা আরও বড় হতে থাকে, মঙ্গোডিবি প্রমাণ করে যে এটি রেডিসের চেয়ে অনেক দ্রুত faster সঞ্চিত ডেটা যখন ছোট হয় তখনই রেডিস দ্রুত হয়।
অ্যান্ডারসন

4
আমি ভালোবাসি schemaless হচ্ছে MongoDB পদ্ধতির এবং তারপর এটি আপ যাব ORM লেখক যারা তাদের প্রয়োজন জন্য স্কিমার বাস্তবায়ন। মঙ্গুজ একটি দুর্দান্ত ওআরএম যা আপনার যদি প্রয়োজন হয় তবে সহজেই ব্যবহারযোগ্য স্কিমার পরিচয় করিয়ে দিন :)
শেভ

18
আপনার জানা উচিত যে redis ডাটাবেসের আকার মেশিনে র‌্যামের পরিমাণের দ্বারা সীমাবদ্ধ। এর চেয়ে বড় আর আপনাকে ক্লাস্টারিং ভাবতে হবে যা ম্যানুয়াল এবং নিবিড়।
আকাশ অগ্রওয়াল

4
মঙ্গোডিবি কোনও স্কিমা প্রয়োগ করে না, তবে আমি এমন একটি মামলা দেখতে চাই যেখানে কেউ স্কিমা ছাড়াই এটি ব্যবহার করে ... এটি আপনি স্কিমা শব্দটি কীভাবে সংজ্ঞায়িত করেন
রবি গিলফয়েলে

236

আমি কেবল লক্ষ্য করেছি যে এই প্রশ্নটি বেশ পুরানো। তবুও, আমি নিম্নলিখিত দিকগুলি যুক্তিযুক্ত হিসাবে বিবেচনা করি:

  • আপনি কীভাবে আপনার ডেটা অনুসন্ধান করতে চলেছেন তা যদি আপনি এখনও না জানেন তবে মঙ্গোডিবি ব্যবহার করুন।

    মঙ্গোডিবি হ্যাকাথনস, স্টার্টআপস বা প্রতিটি সময় আপনি কীভাবে আপনার theোকানো ডেটা কীভাবে জিজ্ঞাসা করবেন তা জানেন না for মঙ্গোডিবি আপনার অন্তর্নিহিত স্কিমা সম্পর্কে কোনও অনুমান করে না। যদিও মঙ্গোডিবি স্কিমহীন এবং অ-সম্পর্কযুক্ত, এর অর্থ এই নয় যে কোনও স্কিমা নেই। এর সহজ অর্থ হ'ল আপনার স্কিমাটি আপনার অ্যাপে সংজ্ঞায়িত করা দরকার (উদাঃ মঙ্গুজ ব্যবহার করা)। তদ্ব্যতীত, প্রোটোটাইপিং বা জিনিসগুলি চেষ্টা করে দেখার জন্য মঙ্গোডিবি দুর্দান্ত। এর অভিনয়টি দুর্দান্ত নয় এবং রেডিসের সাথে তুলনা করা যায় না।

  • আপনার বিদ্যমান অ্যাপ্লিকেশনটির গতি বাড়ানোর জন্য রেডিস ব্যবহার করুন।

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

  • রেডিস আপনার ডেটার উপর ভিত্তি করে কোনও অনুমান করে না।

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

রেডিস কখন ব্যবহার করবেন?

  • ক্যাশিং

    মঙ্গোডিবি ব্যবহার করে ক্যাচ করা সহজভাবে কোনও অর্থবোধ করে না। এটা খুব ধীর হবে।

  • আপনার ডিবি ডিজাইন সম্পর্কে ভাবার জন্য যদি পর্যাপ্ত সময় থাকে।

    আপনি কেবলমাত্র আপনার নথিগুলি রেডিসে ফেলে দিতে পারবেন না। আপনি কীভাবে আপনার ডেটা সঞ্চয় এবং পরিচালনা করতে চান তা আপনাকে ভাবতে হবে। একটি উদাহরণ হ'ল রেডিসে। এগুলি "traditionalতিহ্যবাহী", নেস্টেড বস্তুগুলির থেকে একেবারেই আলাদা, যার অর্থ আপনাকে নেস্টেড ডকুমেন্টগুলি কীভাবে সংরক্ষণ করবেন সে বিষয়ে আপনাকে পুনর্বিবেচনা করতে হবে। একটি সমাধান হ্যাশের অভ্যন্তরে অন্য হ্যাশের একটি রেফারেন্স সংরক্ষণ করা হবে ( কী জাতীয় কিছু : [দ্বিতীয় হ্যাশের আইডি] )। আর একটি ধারণা হ'ল এটি JSON হিসাবে সংরক্ষণ করা হবে যা একটি * এসকিউএল-ব্যাকগ্রাউন্ড সহ বেশিরভাগ ব্যক্তির কাছে বিপরীতজ্ঞ বলে মনে হচ্ছে।

  • আপনার যদি সত্যই উচ্চ পারফরম্যান্সের প্রয়োজন হয় ।

    রেডিস সরবরাহ করে এমন পারফরম্যান্সকে মারধর করা প্রায় অসম্ভব। আপনার ডেটাবেস আপনার ক্যাশে হিসাবে দ্রুত হিসাবে কল্পনা করুন। রিডিসকে আসল ডাটাবেস হিসাবে ব্যবহার করার মতো এটিই অনুভব করে।

  • আপনি কি দেখেন না তাহলে যে স্কেলিং সম্পর্কে অনেক।

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

মংগোডিবি কখন ব্যবহার করবেন

  • প্রোটোটাইপিং, স্টার্টআপস, হ্যাকাথনস

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

  • আপনি যখন আপনার স্কিমা দ্রুত পরিবর্তন করতে হবে।

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

টিএল; ডিআর - যদি পারফরম্যান্স গুরুত্বপূর্ণ হয় এবং আপনি আপনার ডেটা অনুকূল করতে এবং সংগঠিত করতে সময় ব্যয় করতে রাজি হন তবে রেডিস ব্যবহার করুন। - আপনার ডিবি সম্পর্কে খুব বেশি চিন্তা না করে আপনার যদি প্রোটোটাইপ তৈরি করার প্রয়োজন হয় তবে মঙ্গোডিবি ব্যবহার করুন।

আরও পড়া:


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

223

Redis। ধরা যাক আপনি পিএইচপি তে একটি সাইট লিখেছেন; যে কারণেই হোক না কেন, এটি জনপ্রিয় হয়ে ওঠে এবং এটি তার সময়ের চেয়ে আগে বা এতে জনপ্রিয়। আপনি বুঝতে পারছেন যে এই পিএইচপিটি এত ধীরে ধীরে প্রকাশ পাচ্ছে, "আমি আমার ভক্তদের হারাতে চাইছি কারণ তারা কেবল একটি পৃষ্ঠার জন্য 10 সেকেন্ড অপেক্ষা করবে না।" আপনার হঠাৎ উপলব্ধি ঘটেছে যে কোনও ওয়েব পৃষ্ঠায় একটি ধ্রুবক url থাকে (এটি কখনই বদলে যায় না), আপনি যদি চান তবে একটি প্রাথমিক কী এবং তারপরে আপনি স্মরণ করতে পারেন যে ডিস্কটি ধীর এবং পিএইচপি এমনকি ধীর গতিতে রয়েছে memory :( তারপরে আপনি মেমোরি ব্যবহার করে একটি স্টোরেজ মেকানিজম এবং আপনি যে ওয়েবপৃষ্ঠা বিষয়বস্তুটিকে "মান" বলার সিদ্ধান্ত নেওয়ার সময় আপনি একটি "কী" কল করেন এটি ফ্যাশন করেন That's আপনার কাছে কী - বিষয়বস্তু এবং সামগ্রী রয়েছে You আপনি এটিকে "মেম ক্যাশে" বলছেন। আপনি রিচার্ড ডকিন্সকে পছন্দ করেন কারণ তিনি দুর্দান্ত। আপনি আপনার এইচটিএমএলকে কাঠবিড়ালি জাতীয় ক্যাশগুলি ক্যাশে করেন You আপনার ক্র্যাপ পিএইচপি কোডটি পুনরায় লেখার দরকার নেই। আপনি খুশি. তারপরে আপনি দেখতে পাচ্ছেন যে অন্যরা এটি করেছে - তবে আপনি রেডিস চয়ন করেন কারণ অন্যটিতে বিড়ালের বিভ্রান্তিমূলক চিত্র রয়েছে, কিছু ফ্যাং সহ।

মোঙ্গো। আপনি একটি সাইট লিখেছেন। হেক আপনি অনেক লিখেছেন এবং যে কোনও ভাষায়। আপনি বুঝতে পেরেছেন যে আপনার বেশিরভাগ সময় সেই দুর্গন্ধযুক্ত এসকিউএল ধারা লিখতে ব্যয় হয়েছে। আপনি একটি ডিবিএ নন, তবুও আপনি সেখানে আছেন, বোকা এসকিএল স্টেটমেন্ট লিখছেন ... কেবল একটি নয়, সর্বত্র ছড়িয়ে পড়ে। "এটি নির্বাচন করুন, এটি নির্বাচন করুন"। তবে বিশেষত আপনি বিরক্তিকর WHOE ক্লজটি মনে রাখবেন। যেখানে শেষের নামটি "থর্টন" এবং মুভিটি "খারাপ সান্তা" সমান। Urgh। আপনি মনে করেন, "কেন এই ডাবাসগুলি তাদের কাজটি করে না এবং আমাকে কিছু সঞ্চিত পদ্ধতি দেয় না?" তারপরে আপনি মিডলনামের মতো কিছু ছোটখাটো ক্ষেত্রটি ভুলে গেছেন এবং তারপরে আপনাকে টেবিলটি ফেলে দিতে হবে, সমস্ত 10G বড় ডেটা রফতানি করতে হবে এবং এই নতুন ক্ষেত্রটি দিয়ে অন্যটি তৈরি করতে হবে, এবং ডেটা আমদানি করতে হবে - এবং পরবর্তী 14 দিনের মধ্যে আপনি 10 বার চলেছেন অভিবাদন, শিরোনাম, প্লাস্টিকের সাথে বিদেশী কী যুক্ত করা। তারপরে আপনি বুঝতে পারবেন যে লাস্টনামটি সর্বশেষ নাম হওয়া উচিত। দিনে প্রায় এক পরিবর্তন। তারপরে আপনি ডারনিট বলুন। আমাকে একটি ওয়েব সাইট / সিস্টেমটি পেতে এবং লিখতে হবে, এই ডেটা মডেলকে কিছু মনে করবেন না s সুতরাং আপনি গুগল করেছেন, "আমি এসকিউএল লেখা ঘৃণা করি, দয়া করে কোনও এসকিউএল লিখুন না, এটি বন্ধ করুন" তবে পপস 'এনএসকিএল' এবং তারপরে আপনি কিছু স্টাফ পড়েন এবং এটি বলে যে এটি কোনও স্কিমা ছাড়াই ডেটা ফেলে দেয়। আপনার মনে আছে গত সপ্তাহের ফিয়াস্কো আরও টেবিল এবং হাসি ফেলেছে। তারপরে আপনি মঙ্গো বেছে নিন কারণ কিছু বড় ছেলেরা 'এয়ারবড' পছন্দ করে যেমন অ্যাপার্টমেন্ট ভাড়া সাইট এটি ব্যবহার করে। মিষ্টি। আর কোনও ডেটা মডেল পরিবর্তিত হবে না কারণ আপনার কাছে এমন একটি মডেল রয়েছে যা আপনি কেবল পরিবর্তন করে চলেছেন।


আপনি কী বলতে চাচ্ছেন You don't need to rewrite your crap php code?, কেভি স্টোরটি কীভাবে এটি সমাধান করে? :)
রায় লি

13
@ রোলি তার অর্থ হ'ল ধীর এবং কৃপণ পিএইচপি এইচটিএমএলে একটি ওয়েবপৃষ্ঠা তৈরি করে। কোডটিকে দ্রুত / আরও দক্ষ করে তোলার জন্য নিখুঁতভাবে পুনরায় লেখার পরিবর্তে, আপনি পিএইচপি শুরুতে একবার চালান এবং তারপরে চিরকালের জন্য, কেবল আপনার কেভি স্টোর ব্যবহার করে এইচটিএমএলে প্রাক-নির্মিত ওয়েবপৃষ্ঠাটি স্মরণ করুন।
মাইকপোট

আপনি যেভাবে এই গল্পটি বলেছেন তা অবশেষে ধারণাটি করতে সহায়তা করেছিল যে স্কিমা-কম কেন দুর্দান্ত! শক্তিটি বোঝার জন্য এসকিউএলকে ডিল করার জন্য কয়েক বছর বাঁচিয়েছেন।
নিক

4
'আর কোনও মডেল পরিবর্তন হয় না' পরিস্থিতিটি সত্যই গ্রহণ করে না। আপনার সমস্ত বিদ্যমান এন্ট্রিগুলি আপডেট করার জন্য আপনি যদি ডেটা মোশন কোড না লিখে থাকেন তবে আপনার 'এন' এর মতো আরও কিছু ভিন্ন মডেল একই সময়ে একই ডিবিতে বসবাস করছেন এবং আপনার কোডটি কোন মডেলের সাথে কাজ করছে তা নির্ধারণ করতে হবে when এটি ডিবি থেকে কিছু পড়ে।
টেরি কোটা

2
আমি দেখেছি নিখুঁত সেরা উত্তরগুলির মধ্যে একটি।
এটিতে

16

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

http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis


11

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

তাদের মধ্যে কোনটি আপনার চাহিদা সন্তুষ্ট করেছে তা দেখতে আপনার উভয়কে পরীক্ষা করতে হবে।

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


10

রেডিস হ'ল মেমোরি ডেটা স্টোর যা এটি ডিস্কে স্থির থাকতে পারে (পুনরায় আরম্ভের পরে পুনরুদ্ধার সক্ষম করতে)। তবে, ইন-মেমরি ডেটা স্টোর হওয়া মানে ডেটা স্টোরের আকার (একক নোডে) সিস্টেমের মোট শারীরিক মেমরির স্থান (শারীরিক র‌্যাম + সোয়াপ স্পেস) অতিক্রম করতে পারে না। বাস্তবে, এটি এর চেয়ে অনেক কম হবে কারণ রেডিস সেই স্পেসটি সিস্টেমে অন্যান্য অনেক প্রক্রিয়ার সাথে ভাগ করে নিচ্ছেন এবং যদি এটি সিস্টেমের মেমরির স্থানটি নিঃশেষ করে দেয় তবে সম্ভবত এটি অপারেটিং সিস্টেম দ্বারা মারা যাবে।

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

রেডিস এবং মঙ্গো উভয়ই উচ্চ প্রাপ্যতা, ব্যাকআপ এবং ডেটাস্টোরের সামগ্রিক আকার বাড়াতে ক্লাস্টার করা যায়।


10

উত্তরগুলির সমস্ত (এই লেখার সময়) রেডিস, মঙ্গোডিবি এবং সম্ভবত একটি এসকিউএল-ভিত্তিক সম্পর্কযুক্ত ডাটাবেস হ'ল মূলত একই সরঞ্জাম: "স্টোর ডেটা"। তারা ডেটা মডেলগুলি মোটেই বিবেচনা করে না।

মঙ্গোডিবি: জটিল তথ্য

মঙ্গোডিবি একটি ডকুমেন্ট স্টোর। একটি এসকিউএল-চালিত রিলেশনাল ডাটাবেসের সাথে তুলনা করতে: রিলেশনাল ডাটাবেসগুলি ইনডেক্সড সিএসভি ফাইলগুলিতে সরল করে, প্রতিটি ফাইল একটি টেবিল; ডকুমেন্ট স্টোরগুলি ইনডেক্সড জেএসওএন ফাইলগুলিতে সরল করে, প্রতিটি ফাইল নথি হয়, একাধিক ফাইল একসাথে গ্রুপ করা হয়।

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

{
  _id:  0x194f38dc491a,
  Name:  "John Smith",
  PhoneNumber:
    Home: "555 999-1234",
    Work: "555 999-9876",
    Mobile: "555 634-5789"
  Accounts:
    - "379-1111"
    - "379-2574"
    - "414-6731"
}

উপরের নথিতে একটি কী রয়েছে PhoneNumber.Mobile, যার মান রয়েছে555 634-5789 । আপনি দস্তাবেজগুলির সংগ্রহের মাধ্যমে অনুসন্ধান করতে পারেন যেখানে কীটির PhoneNumber.Mobileকিছু মূল্য রয়েছে; তারা সূচকযুক্ত।

এটিতে একটি অ্যারে রয়েছে Accountsযার একাধিক সূচক রয়েছে। এটা একটা দলিল যেখানে জন্য আপনার জিজ্ঞাসিত প্রশ্নের করা সম্ভব Accountsরয়েছে ঠিক , মান কিছু উপসেট সব মূল্যবোধের কিছু উপসেট, অথবা কোন মূল্যবোধের কিছু উপসেট হয়। এর অর্থ আপনি উপরেরটি সন্ধান করতে Accounts = ["379-1111", "379-2574"]এবং খুঁজে পেতে পারেন না; আপনি Accounts includes ["379-1111"]উপরের নথির সন্ধান এবং সন্ধান করতে পারেন ; এবং আপনি অনুসন্ধান করতে পারেনAccounts includes any of ["974-3785","414-6731"] উপরের এবং যে কোনও নথিতে অ্যাকাউন্ট "974-3785" অন্তর্ভুক্ত রয়েছে , যদি কোনও হয়।

ডকুমেন্টগুলি আপনি চান হিসাবে গভীর যান। PhoneNumber.Mobileএকটি অ্যারে, এমনকি একটি উপ-নথি ( PhoneNumber.Mobile.Workএবং PhoneNumber.Mobile.Personal) ধরে রাখতে পারে । আপনার ডেটা যদি উচ্চতর কাঠামোগত হয় তবে ডকুমেন্টগুলি আপেক্ষিক ডেটাবেসগুলি থেকে একটি বড় পদক্ষেপ।

যদি আপনার ডেটা বেশিরভাগ সমতল, সম্পর্কিত এবং কঠোরভাবে কাঠামোগত হয় তবে আপনি একটি সম্পর্কিত ডেটাবেস দিয়ে আরও ভাল better আবার, বড় চিহ্নটি হ'ল আপনার ডেটা মডেলগুলি আন্তঃসম্পর্কিত সিএসভি ফাইলগুলির সংগ্রহ বা এক্সএমএল / জেএসএন / ওয়াইএমএল ফাইলগুলির সংকলনের পক্ষে সেরা whether

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

পুনরায়: মূল-মান

রেডিস হ'ল মূলত একটি মূল-মূল্যের দোকান। রেডিস আপনাকে এটিকে একটি কী দিতে এবং একক মান সন্ধান করতে দেয়। রেডিস নিজেই স্ট্রিং, তালিকা, হ্যাশ এবং কয়েকটি অন্যান্য জিনিস সঞ্চয় করতে পারে; তবে এটি কেবল নাম অনুসারে দেখায়।

কম্পিউটার বিজ্ঞানের অন্যতম জটিল সমস্যা ক্যাশে অবৈধতা; অন্যটি জিনিস নামকরণ করা হয়। এর অর্থ আপনি যখন ব্যাক-এন্ডে শত শত অতিরিক্ত লুক আপগুলি এড়াতে চান তখন আপনি রেডিস ব্যবহার করবেন তবে আপনাকে যখন নতুন চেহারা দেখার দরকার হবে তখন আপনাকে খুঁজে বের করতে হবে।

অবৈধতা অধিকাংশ সুস্পষ্ট ক্ষেত্রে লেখার আপডেট: যদি আপনি পড়তে user:Simon:lingots = NOTFOUND, আপনি পারে SELECT Lingots FROM Store s INNER JOIN UserProfile u ON s.UserID = u.UserID WHERE u.Username = Simonএবং ফলাফল সংরক্ষণ 100, যেমন SET user:Simon:lingots = 100। অতঃপর যখন তোমরা সাইমন 5 lingots পুরস্কার, আপনি পড়তে user:Simon:lingots = 100, SET user:Simon:lingots = 105এবং UPDATE Store s INNER JOIN UserProfile u ON s.UserID = u.UserID SET s.Lingots = 105 WHERE u.Username = Simon। আপনার ডাটাবেসে এবং রেডিসে এখন আপনার 105 টি রয়েছে এবং তা পেতে পারেনuser:Simon:lingots অনুসন্ধান না করেই

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

$t = GetStringFromRedis("templates:StatsBox:" + $playerName);
if ($t == null) {
  $t = BuildTemplate("StatsBox.tmpl",
                     GetStatsFromDatabase($playerName));
  SetStringInRedis("Templates:StatsBox:" + $playerName, $t);
}
print $t;

আপনি কেবল এর ফলাফল আপডেট করেছেন GetStatsFromDatabase("Simon")বলে আপনাকে বাদ দিতে হবেtemplates:*:Simon আপনার কী-মান ক্যাশেটি হবে। আপনি যখন এই টেমপ্লেটগুলির কোনও রেন্ডার করার চেষ্টা করেন, তখন আপনার অ্যাপ্লিকেশনটি আপনার ডাটাবেস (পোস্টগ্রিসএসকিউএল, মঙ্গোডিবি) থেকে ডেটা আনার এবং এটি আপনার টেমপ্লেটে সন্নিবেশ করিয়ে দেবে; তারপরে এটি ফলাফলটি রেডিসে সংরক্ষণ করবে এবং আশা করি, পরের বার এটি আউটপুটটির ব্লক প্রদর্শন করার সময় ডাটাবেস প্রশ্ন তৈরি এবং উপস্থাপনা টেমপ্লেটগুলি বিরক্ত করবে না।

রেডিস আপনাকে প্রকাশক-সাবস্ক্রাইব বার্তাগুলির সারিগুলি এবং এগুলি করতে দেয়। এটি সম্পূর্ণরূপে অন্য একটি বিষয়। এখানে পয়েন্ট হ'ল রেডিস হ'ল একটি মূল-মান ক্যাশে, যা একটি সম্পর্কিত ডেটাবেস বা একটি নথির দোকান থেকে পৃথক।

উপসংহার

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


2
"কম্পিউটারের বিজ্ঞানের একটি কঠিন সমস্যা ক্যাশে অবৈধকরণ; অন্যটি জিনিসগুলির নামকরণ করে।" আসলেই সত্য!
আরেল

2

আপনার প্রচুর পরিমাণে র‍্যাম থাকলে আপনার কোনওটিই ব্যবহার করা উচিত নয়। রেডিস এবং মঙ্গোডিবি একটি সাধারণ উদ্দেশ্যে সরঞ্জামের দামে আসে। এটি প্রচুর ওভারহেডের পরিচয় দেয়।

প্রবাদটি ছিল যে রেডিস মঙ্গোর চেয়ে 10 গুণ দ্রুত। এটি আর সত্য হতে পারে না। মঙ্গোডিবি (যদি আমি সঠিকভাবে মনে করি) ডকুমেন্টগুলি সংরক্ষণ এবং ক্যাশে করার জন্য মেমক্যাচকে বীট করার দাবি করেছে যতক্ষণ মেমরির কনফিগারেশনগুলি একই থাকে।

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


2

রেডিস এবং মঙ্গোডিবি উভয়ই অ-সম্পর্কযুক্ত ডাটাবেস তবে সেগুলি বিভিন্ন বিভাগের।

রেডিস হ'ল একটি কী / মান ডাটাবেস এবং এটি ইন-মেমরি স্টোরেজ ব্যবহার করে যা এটিকে দ্রুততর করে তোলে। এটি ক্যাচিং স্টাফ এবং অস্থায়ী ডেটা স্টোরেজ (স্মৃতিতে) এবং মেঘ প্ল্যাটফর্মগুলির বেশিরভাগ হিসাবে (যেমন অ্যাজুরে, এডাব্লুএস) সমর্থন করে, এটির মেমরির ব্যবহারটি স্কেলযোগ্য B তবে আপনি যদি নিজের মেশিনে এটি ব্যবহার করতে চান তবে সীমিত সংস্থানসমূহ, এটির মেমরির ব্যবহার বিবেচনা করুন।

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


1

যদি আপনার প্রকল্পটি অঙ্কিত হয় তবে আপনাকে আপনার পরিবেশে যথেষ্ট পরিমাণ র‌্যাম মেমরি রাখতে দেয় - উত্তরটি হ'ল রেডিস। বিশেষত ক্লাস্টারের কার্যকারিতা সহ নতুন রেডিস 3.2 গ্রহণ করা।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.