मैं एक RESTful API बना रहा हूं। मैं अपने संसाधनों के चारों ओर अपने डेटाबेस तालिकाओं को डिजाइन करने का सबसे अच्छा तरीका तय करने के लिए संघर्ष कर रहा हूं।
प्रारंभ में, मैं हालांकि प्रति संसाधन एक तालिका जाने के लिए एक अच्छा तरीका होगा, लेकिन मुझे अब चिंता है कि इससे आपके द्वारा जाने वाले संसाधन श्रृंखला में और भी बड़ी तालिकाओं का परिणाम होगा।
उदाहरण के लिए, कल्पना करें कि मेरे पास तीन संसाधन हैं - उपयोगकर्ता, ग्राहक, बिक्री। उपयोगकर्ता मेरे एपीआई के ग्राहक हैं, ग्राहक उपयोगकर्ता ग्राहक हैं, और बिक्री प्रत्येक ग्राहक द्वारा उपयोगकर्ता खाते में की गई खरीदारी की है।
एक बिक्री संसाधन निम्नानुसार पहुँचा जाता है
GET /users/{userID}/clients/{clientID}/sales/{salesID}
इसलिए यदि 10 उपयोगकर्ता हैं, प्रत्येक के पास 10 ग्राहक हैं, और प्रत्येक ग्राहक के लिए 10 बिक्री हैं, तो टेबल का आकार संसाधन श्रृंखला से और अधिक बड़ा हो जाता है।
मुझे पूरा विश्वास है कि एसक्यूएल बड़ी तालिकाओं के साथ सामना कर सकता है, लेकिन मुझे यकीन नहीं है कि कैसे पढ़ा और लिखी चीजें धीमी हो जाएंगी। ऊपर दिया गया उदाहरण शायद इसे स्पष्ट नहीं करता है, लेकिन मेरी एपीआई में उत्तरोत्तर और अधिक लिखना होगा और संसाधन श्रृंखला को और नीचे जाना होगा। इसलिए मेरे पास ऐसा परिदृश्य है जहां मेरे डेटाबेस में सबसे बड़ी तालिकाओं को पढ़ा जाएगा और छोटी तालिकाओं की तुलना में अधिक बार लिखा जाएगा।
क्वेरी चलाने से पहले तालिकाओं में शामिल होना भी आवश्यक होगा। कारण यह है कि मैं प्रत्येक उपयोगकर्ता को एक ही नाम के साथ एक ग्राहक रखने की अनुमति देता हूं। गलत क्लाइंट डेटा प्राप्त करने से बचने के लिए, उपयोगकर्ता तालिका और क्लाइंट टेबल {userID} से जुड़ जाते हैं। बिक्री का भी यही हाल है। क्या बड़े टेबल से जुड़ना और पढ़ना और लिखना धीमा हो जाएगा?