ডায়ানমোডিবি সেরা অনুশীলনগুলি এটি পরিষ্কার করে দেয় যে:
ডায়নামোডিবি অ্যাপ্লিকেশনটিতে আপনার যতটা সম্ভব সারণী বজায় রাখা উচিত। সর্বাধিক নকশাকৃত অ্যাপ্লিকেশনগুলির জন্য কেবল একটি টেবিলের প্রয়োজন।
আমি এটি মজাদার মনে করি যে আমি ডায়ানমোডিবি'র সাথে লেনদেন করতে দেখেছি এমন প্রতিটি টিউটোরিয়ালের একটি বহু-সারণি নকশা রয়েছে।
বাস্তবে এর অর্থ কী?
আসুন তিনটি প্রধান সত্তা সহ একটি সাধারণ অ্যাপ্লিকেশন বিবেচনা করুন: ব্যবহারকারী, প্রকল্প এবং ডকুমেন্টস। একজন ব্যবহারকারী একাধিক প্রকল্পের মালিক, এবং একটি প্রকল্পে একাধিক ডকুমেন্ট থাকতে পারে। আমাদের সাধারণত কোনও ব্যবহারকারীর জন্য প্রকল্পগুলি এবং কোনও প্রকল্পের নথিতে জিজ্ঞাসা করতে হয়। একটি উল্লেখযোগ্য ব্যবধানে সংখ্যা ছাড়িয়ে লেখায় পঠন।
একটি নিষ্পাপ টিউটোরিয়াল এর টেবিল ডিজাইন তিনটি টেবিল ব্যবহার করবে:
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
প্রত্যক্ষ ডকুমেন্ট লুকআপের জন্য একটি গ্লোবাল ইনডেক্স করব ।
এটি কীভাবে কাজ করার কথা? এই জাতীয় বুনো-ডাইভারজেন্ট ধরণের ডেটা একই টেবিলের মধ্যে ফেলে দেওয়া কি বৈধ? অথবা দ্বিতীয়, দ্বি-সারণির নকশা কি আরও ভাল পদ্ধতির?
দ্বিতীয় টেবিল যুক্ত করা কোন পর্যায়ে সঠিক হবে?