ডায়নামোডিবিতে একাধিক সারণী কখন ব্যবহার করবেন?


11

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

ডায়নামোডিবি অ্যাপ্লিকেশনটিতে আপনার যতটা সম্ভব সারণী বজায় রাখা উচিত। সর্বাধিক নকশাকৃত অ্যাপ্লিকেশনগুলির জন্য কেবল একটি টেবিলের প্রয়োজন।

আমি এটি মজাদার মনে করি যে আমি ডায়ানমোডিবি'র সাথে লেনদেন করতে দেখেছি এমন প্রতিটি টিউটোরিয়ালের একটি বহু-সারণি নকশা রয়েছে।

বাস্তবে এর অর্থ কী?

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

একটি নিষ্পাপ টিউটোরিয়াল এর টেবিল ডিজাইন তিনটি টেবিল ব্যবহার করবে:

Users
Hash key
user-id

Projects
Hash key       Global Index
project-id     user-id

Documents
Hash key       Global Index
document-id    project-id

আমরা চমত্কার সহজে ভেঙ্গে পারে Projectএবং Documentএক মধ্যে Documentsটেবিল:

Documents
Hash key    Sort key        Global Index
project-id  document-id     user-id

তবে ওখানে থামবে কেন? একটি টেবিল না কেন তাদের সব শাসন? যেহেতু Userসবকিছুর মূল ...

Users
Hash key    Sort key
user-id     aspect
---------   ---------
foo         user                   email: foo@bar.com ...
foo         project:1              title: "The Foo Project"
foo         project:1:document:2   document-id: 2     ...

তারপরে আমরা emailব্যবহারকারী রেকর্ড দেখার জন্য ক্ষেত্র এবং অন্যটি document-idপ্রত্যক্ষ ডকুমেন্ট লুকআপের জন্য একটি গ্লোবাল ইনডেক্স করব ।

এটি কীভাবে কাজ করার কথা? এই জাতীয় বুনো-ডাইভারজেন্ট ধরণের ডেটা একই টেবিলের মধ্যে ফেলে দেওয়া কি বৈধ? অথবা দ্বিতীয়, দ্বি-সারণির নকশা কি আরও ভাল পদ্ধতির?

দ্বিতীয় টেবিল যুক্ত করা কোন পর্যায়ে সঠিক হবে?

উত্তর:


7

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

  1. আপনি এই অ্যাপ্লিকেশন এবং ডেটা মডেলটির সাথে কী ধরণের স্কেল পেতে চান?
  2. অ্যাপ্লিকেশনটির অ্যাক্সেস নিদর্শনগুলির মধ্যে those নিদর্শনগুলির মধ্যে পঠনের অনুপাত কী। যার অর্থ অন্যকে সবচেয়ে বেশি আঘাত করা হয়।
  3. আপনার তালিকাভুক্ত অ্যাক্সেস প্যাটার্নগুলির মধ্যে, তারা প্রতি সেকেন্ডে কতবার সঞ্চালিত হয়?

উদাহরণস্বরূপ, যদি সমস্ত পাঠের ৮০% কোনও প্রকল্পে ব্যবহারকারীদের সন্ধান করা হয় এবং এটির জন্য ৩০,০০০ / সেকেন্ডের প্রয়োজন হয় তবে আপনার আবেদনে এত লোকের পদক্ষেপটি আরও এগিয়ে যাবে না এবং প্রকল্পগুলির জন্য নথিগুলি সন্ধান করবে, তবে এটি সামগ্রিক পাঠের 20% হ'ল এবং এটি কেবল 2000 পাঠ / সেকেন্ড হতে পারে। প্রথমটি হ'ল আপনার অ্যাপ্লিকেশনটির "হট পাথ" এবং এটির জন্য অনুকূলিত হওয়া উচিত।

এটিও এইভাবে চিন্তা করুন, ডায়নামোডিবি-র মতো কোনও সম্পর্কহীন ডাটাবেসের সাহায্যে আপনার অ্যাপ্লিকেশন কীভাবে ডেটা ব্যবহার করে এবং অ্যাক্সেস করে এবং রিলেশনাল ডাটাবেসের মতো নয় যেখানে এটি কীভাবে ডাটাবেসে সঞ্চিত হয় সে সম্পর্কে আপনাকে অনেক চিন্তা করতে হবে এমনটি করতে পারেন ize


পুনরায় একটিতে: অচল কথাবার্তা, একজন সিনিয়র ইঞ্জিনিয়ার মোটামুটিভাবে নিম্নলিখিতটি বলেছিলেন - অতীতে, সঞ্চয়ের গণনা তুলনায় তুলনামূলকভাবে ব্যয়বহুল ছিল; সুতরাং আমরা স্টোরেজ (রিলেশনাল ডিবি) জন্য অনুকূলিতকরণ করেছি তবে এখন স্টোরেজটি ময়লা সস্তা! গণনা তুলনামূলকভাবে বেশি ব্যয়বহুল; সুতরাং আমরা গণনার জন্য অপ্টিমাইজ করি (NoSQL, পড়ার জন্য অনুকূলিত)
গাজ_এডজ

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