মংগোডিবি কি আমার ক্ষেত্রে সঠিক পছন্দ? [বন্ধ]


9

আমি আমার প্রথম আসল প্রকল্পটি রেলগুলিতে তৈরি করতে যাচ্ছি যা 3 টি মূল অংশ নিয়ে তৈরি একটি ওয়েব অ্যাপে অন্তর্ভুক্ত:

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

এখানে বেশ কয়েকটি আইটেমের ধরণ থাকবে এবং প্রত্যেকের আলাদা আলাদা বিকল্প থাকবে উদাহরণস্বরূপ আমার সাথে নিম্নলিখিত ভিডিওগুলি সহ "ভিডিও" আইটেম থাকতে পারে:

  • আইডি
  • ব্যবহারকারীর প্রমানপত্র
  • collection_id
  • শিরোনাম
  • প্ল্যাটফর্ম (এম্বেড থাকলে)
  • ইউআরএল (এম্বেড থাকলে)
  • ফাইলের নাম (যদি আমার অ্যাপে হোস্ট করা থাকে)
  • ফাইলের আকার (আমার অ্যাপে আইডি হোস্ট করা)

এবং "মানচিত্র" আইটেম:

  • আইডি
  • ব্যবহারকারীর প্রমানপত্র
  • collection_id
  • শিরোনাম
  • প্ল্যাটফর্ম (গুগল ম্যাপস, বিং ম্যাপস ...)
  • অবস্থান
  • URL
  • মানচিত্রের আকার

আপনি যখন ব্যবহারকারীদের পক্ষে পারেন তখন আমি মাইএসকিউএল আইটেমগুলির জন্য ব্যবহার করতে পারি মঙ্গোডিবিয়ের নমনীয়তা কার্যকর হতে পারে যেহেতু প্রতিটি আইটেমের জন্য অন্য বিকল্পের প্রয়োজন হতে পারে

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

আমার শেখার সময় আছে তবে আমি 1 মাসের মতো কিছুতে কংক্রিটের কিছু করতে সক্ষম হতে চাই।

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

  • আমার পরিস্থিতিতে আপনি কী উপার্জন করবেন? কেন?
  • স্কেলাবিলিটি সম্পর্কে মঙ্গোডিবিতে সমস্যা হতে পারে? যদি হ্যাঁ কখন (ডিবি আকারের শর্তে) এবং এই সমস্যাগুলি আমার অ্যাপ্লিকেশনটিকে যথেষ্ট গতি কমিয়ে দিতে পারে?

সম্পাদনা করুন: অ্যাপটি কীভাবে কাজ করবে

যেহেতু অনেকেই জিজ্ঞাসা করেছিলেন যে আমি কীভাবে অ্যাপটিকে কাজ করতে চাই:

  1. একটি ব্যবহারকারী সাইন আপ
  2. তিনি লগ ইন করেছেন
  3. তিনি তার প্রথম সংগ্রহটি তৈরি করেন যা তিনি অসীম আইটেম তৈরি করতে পারেন
  4. আইটেমগুলি বিভিন্ন ধরণের এবং ডাটাবেসে সংরক্ষণ করার জন্য প্রতিটি প্রকারের জন্য আলাদা আলাদা ডেটা প্রয়োজন এবং আইটেমের ধরণ যুক্ত বা সংশোধন করা যেতে পারে

ব্যবহারকারীরা এর ভিতরে অন্যান্য সংগ্রহ এবং আইটেম তৈরি করতে পারে।

সুতরাং সেগুলির ভিতরে সংগ্রহ এবং আইটেমগুলির জন্য আমাদের কাছে CRUD রয়েছে এবং প্রতিটি সংগ্রহ / আইটেম একটি নির্দিষ্ট ব্যবহারকারীর কাছে উল্লেখ করা হয়

মাইএসকিউএল এর প্রধান সমস্যাটি হ'ল এটি কোনও নমনীয় স্কিমা নেই, এটি সমাধান করার উপায় আছে (একটি কার্যবিধে?)?

নোএসকিউএল সম্পর্কে আমার কেবল সন্দেহের বিষয়ে ভাবনা যোগ দেওয়া সম্পর্কে, উদাহরণস্বরূপ একটি নির্দিষ্ট সংকলন দেওয়াতে আমি সংগ্রহে আইডি = ইউজার_আইডি ফিল্ডের সাথে ব্যবহারকারীর সাথে সম্পর্কিত ডেটাগুলি পুনরুদ্ধার করতে চাই

সম্পাদনা: মাইএসকিউএল ব্যবহার করা আইডিয়া

Itemsচ্ছিক সেটিংস সহ "আইটেমগুলি" সারণিতে একটি ক্ষেত্র তৈরি করুন, প্রতিটি সেটিংস একটি দ্বারা বিভক্ত বা অন্য প্রতীক।

তারপরে আমি প্রতিটি আইটেমের somewhereচ্ছিক সেটিংসের কাঠামোটি কোথাও সংরক্ষণ করব, উদাহরণস্বরূপ "নোটস" আইটেম টাইপের জন্য দুটি optionচ্ছিক সেটিংস "রঙ" এবং "অদ্ভুত_সেটিং" প্রয়োজন, যখন আমি মাইএসকিউএল থেকে ডেটা পেয়েছি আমি alচ্ছিক সেটিংসের জন্য ক্ষেত্রটিকে একটিতে ভাগ করব অ্যারে জেনেও অ্যারে প্রথম আইটেমটি "রঙ" ইত্যাদির জন্য।

আপনি কি মনে করেন? সমাধান আছে কি সমস্যা আছে? আপনার অন্যান্য ধারণা আছে?


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

উত্তর:


10

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

যেমন কেউ একবার এখানে এসওতে আমাকে বলেছিল:

রিলেশনাল ডিবির রিলেশনাল অংশটি অন্যান্য কয়েকটি অংশের তুলনায় অনেক বেশি অনুকূলিত

এর অর্থ এটি যদি আপনার ব্যবহারের ক্ষেত্রে ফিট হয় তবে আপনি একটি রিলেশনাল ডাটাবেসও ব্যবহার করতে পারেন। এর নমনীয়তা / স্কেলিবিলিটির কারণে কেবল মঙ্গোডিবি-র সাথে এগিয়ে যাবেন না। এটি উইকিপিডিয়ায় মঙ্গোডিবি সম্পর্কে প্রথম লাইন:

মঙ্গোডিবি ("হুমংস" থেকে) একটি ওপেন সোর্স ডকুমেন্ট-ভিত্তিক নোএসকিউএল ডাটাবেস সিস্টেম।

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

বিটিডাব্লু, আমি একটি প্রকল্পও করছি যেখানে আমি এসকিউএল এবং নোএসকিউএল উভয়ের সেরা অংশ ব্যবহার করি।

সম্পাদনা: আমি আবারও বলি:

পরীক্ষা করে দেখুন Neo4j বনাম Hadoop এর বিভাগে এই নিবন্ধ। এটা বলে:

নীতিগতভাবে, হাদুপ এবং অন্যান্য কী-মান স্টোরগুলি বেশিরভাগ তুলনামূলকভাবে ফ্ল্যাট ডেটা কাঠামোর সাথে উদ্বিগ্ন । এটি হ'ল মান, নথি বা এমনকি বস্তুর মতো সাধারণ বস্তুগুলির পুনরুদ্ধার সম্পর্কিত এগুলি অত্যন্ত দ্রুত এবং স্কেলেবল।

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

অতিরিক্তভাবে, আপনি এই প্রশ্নগুলি উল্লেখ করতে চাইতে পারেন:

/programming/2124274/mongodb-what-to-know-before-using

/programming/1476295/when-to-use-mongodb-or-other-document-oriented-database-systems

( নিশ্চিতভাবে দ্বিতীয় প্রশ্নের শীর্ষ / নির্বাচিত উত্তরটি দেখুন You're আপনি সেই দ্বিধায় রয়েছেন যা সম্ভবত এটি সমাধান করতে পারে ))

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

আবার সম্পাদনা করুন (মাইএসকিউএল অংশের জন্য): আমি এটি বুঝতে পেরেছি, আপনি ডিবিতে কিছু সঞ্চয় এবং বিভাজকের মাধ্যমে পৃথক করার পরিকল্পনা করছেন। এটি 2 টি সমস্যা উপস্থাপন করে:

  1. আপনাকে অতিরিক্তভাবে যে কোনও ইনপুট হ্যান্ডেল করতে হবে যাতে বিভাজক থাকবে।
  2. একটি রিলেশনাল ডাটাবেসের রিলেশনাল স্টোরেজ অংশ স্ট্রিং মেলানো অংশের চেয়ে অনেক বেশি অনুকূলিত। আমি এমন কোনও স্কিমের জন্য যাব না যেখানে সুনির্দিষ্ট ফলাফল পেতে আমাকে একটি ডাটাবেসে স্ট্রিং ম্যাচিং করতে হবে। আবার আমি জোর দিচ্ছি:

    রিলেশনাল ডিবির রিলেশনাল অংশটি অন্যান্য কয়েকটি অংশের (যেমন স্ট্রিং ম্যাচিং) তুলনায় অনেক বেশি অনুকূলিত হয়েছে

  3. বহুবিধ বৈশিষ্ট্য ব্যবহার করবেন না। মানুষ সাধারণত তাদের ভয় পায়।

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

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

8

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

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

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

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

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

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

fyi রিক Obsorne একটি দুর্দান্ত আশ্চর্যজনক তুলনা ডায়াগ্রাম যে বেশ অনন্য!


এটি রেলের ক্ষেত্রে আমার প্রথম আসল প্রকল্প: এটি একটি শখ এবং আপাতত আমি জানি না যে এটি সফল হতে চলেছে বা ব্যর্থ হ'ল আমার প্রথম উদ্দেশ্যটি এখানে রেলের সাথে পরিচিত হওয়া যাতে আমি ট্র্যাফিকের বিষয়ে কথা বলতে পারি না।
পাঠগুলি

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

আমার -1 সম্পর্কে নিশ্চিত না বা কেন 0 টি খারাপ পরামর্শ বা একমত?
মাইকেল ডুরান্ট

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


3

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

যদি আপনি সত্যিই নোএসকিউএল রুটটি যেতে চান (এবং এটির সাথে ব্যয় করতে প্রস্তুত - যেমন যোগ না দেওয়া) তবে অ্যাডাব্লুএস ডায়নামোডিবি (http://aws.amazon.com/dynamodb/) বিবেচনা করবেন না। এখানে আপনি এটির পুরো ডাটাবেস স্কেলিংয়ের অংশটি ভুলে যেতে পারেন এবং আপনার অ্যাপ্লিকেশনটিতে মনোনিবেশ করতে পারেন। শুভকামনা।

দাবি অস্বীকার: আমি এডাব্লুএস ডায়নামোডিবি দলের একজন বিকাশকারী, তবে আমি সত্যই আমাদের পণ্যটিতে বিশ্বাস করি। চেষ্টা করে দেখুন :)


1

সুতরাং, আপনার নকশাটি আপনার ডাটাবেসে দুটি ভিন্ন ধরণের অবজেক্ট সংরক্ষণ করতে পারে:

  • ব্যবহারকারীর অবজেক্ট (যা সর্বদা ক্ষেত্র থাকে)।
  • অ্যাপ্লিকেশন অবজেক্টস (যার বিভিন্ন ক্ষেত্র থাকতে পারে)। একটি অ্যাপ্লিকেশন কেবলমাত্র একজন ব্যবহারকারীর অন্তর্ভুক্ত।

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

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

মাইএসকিউএলে আপনার বিভিন্ন অ্যাপ্লিকেশনের জন্য বিভিন্ন ফর্ম্যাট নিয়ে কাজ করতে সমস্যা হবে তবে এটি সম্ভব is কিছু ধারণা:

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

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

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

সম্পাদনা: দুটি টেবিল এবং অন্য একটি মাইএসকিউএল বিকল্প অ্যাক্সেস করার সময় সম্পর্কে মন্তব্য যুক্ত করা হয়েছে


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

দয়া করে আমার শেষ আপডেটটি দেখুন
মাত্তিও পাগলিয়াজি

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

1

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

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

  • টেবিল-প্রতি-টাইপ: প্রতিটি টেবিলটিতে প্রতিটি ধরণের অবজেক্টের জন্য নির্দিষ্ট কলাম থাকে

    অসুবিধাগুলি : সমস্ত ডেটা ধরণের জুড়ে এন কোয়েরি।

    সুবিধাগুলি : ভাল ওও ডিজাইন, সহজেই বজায় রাখা যায়

  • একক টেবিল: একটি বিশাল টেবিল যা সমস্ত প্রকারের জন্য সমস্ত সম্ভাব্য বৈশিষ্ট্যযুক্ত, যার বেশিরভাগই কোনও নির্দিষ্ট প্রবেশের জন্য বাতিল

    অসুবিধাগুলি : যে কোনও বস্তুর পরিবর্তনের জন্য টেবিলটি বড় হয়ে যাওয়ার পরে টেবিলের পরিবর্তনের দরকার হয় painful বজায় রাখা কঠিন।

    সুবিধা : কার্যকর করা সহজ implement

  • মেটা-ডেটা সহ কোর টেবিল: আপনার মূল বৈশিষ্ট্যগুলির সাথে একটি একক টেবিল রয়েছে, শিরোনাম, তারিখগুলি বলুন এবং অতিরিক্ত বৈশিষ্ট্যের জন্য কী-মান জোড়া সহ একটি মেটাডেটা টেবিল রয়েছে have

    অসুবিধাগুলি : একটি একক সামগ্রীর জন্য সমস্ত ডেটা পেতে দুটি ক্যোয়ারী।

    সুবিধা : চূড়ান্ত নমনীয়, কার্যকর করা খুব কঠিন নয় to

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

{_id:"collection1",
 name:"My first Collection",
 owner: "user123243342",
 entries: [
    {type:"video",
     url: "http://www.youtube.com/234324",
     tags: ["roadtrip", "fun", "camera"]
     },
    {type:"map",
     coordinates: [LOC: [38, –102], LOC: [43, –33], LOC: [228, –102]],
     description: "Road trip to nowhere",
 ]
}

তবে আপনাকে স্কিমা ডিজাইন সম্পর্কে সত্যই চিন্তা করতে হবে না, কারণ আপনার ডোমেন অবজেক্টগুলি সরাসরি যেমন চালিয়ে যেতে পারে। মংগোডিবি হ'ল আপনার অবজেক্ট স্টোর যার বিরুদ্ধে আপনি জিজ্ঞাসা করতে পারেন।

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

সম্পাদন করা

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

  • ব্যবহারকারীর জন্য ব্যবহারকারীর টেবিল +
  • পোস্ট টেবিল + পোস্টমেটা টেবিল পোস্ট

এটি ডেটা স্ট্রাকচারকে অত্যন্ত নমনীয় এবং যুক্তিসঙ্গত গতির সাথে এখনও ক্যোরি-সক্ষম করে তোলে।


আমি মেটাডেটা বিকল্পটি পছন্দ করি না ... তবে আমি একক টেবিলের উপর দিয়ে ক্ষেত্রগুলি ব্যবহার না করা হলে
নালাগুলির সাথে ভাবতে চাইছি

একক টেবিল পদ্ধতির সম্ভবত গুচ্ছ সবচেয়ে খারাপ। আপনি যখন একক ক্যোয়ারিতে সমস্ত কিছু করতে পারেন, কোনও একক ডেটা টাইপের যে কোনও পরিবর্তনের জন্য পরিবর্তনের টেবিলের প্রয়োজন হবে। আপনার টেবিলটি বড় হয়ে গেলে এটি মাইএসকিএল-এ ব্যথা হয়।
ltfishie

0

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

http://www.moredevs.ro/mysql-vs-mongodb-performance-benchmark/

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

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