मैं एक एंड्रॉइड मोबाइल ऐप विकसित कर रहा हूं जिसमें संभावित रूप से बहुत से उपयोगकर्ता हैं (चलो लगभग 1 मिलियन)। ये उपयोगकर्ता अन्य उपयोगकर्ताओं (जैसे ट्विटर) का अनुसरण कर सकते हैं। ऐप रिमोट आरईएसटी बैकएंड के माध्यम से उपयोगकर्ता डेटा को सिंक करता है। उपयोगकर्ता डेटा स्वयं दस्तावेज़ उन्मुख डेटाबेस में जारी रहता है (मेरे मामले में यह एक मोंगोडीबी है)।MongoDB: MongoDB में ट्विटर-शैली अनुयायियों/निम्नलिखित संबंध मॉडल को कैसे डिज़ाइन किया जाए?
वर्तमान में मैं अपने अनुयायी और निम्नलिखित संबंधों सहित उपयोगकर्ता मॉडल को डिजाइन करने का सबसे अच्छा तरीका पूछता हूं। पहला विचार उपयोगकर्ता दस्तावेज़ के भीतर संबंधों को एम्बेड करना था।
उदाहरण उपयोगकर्ता दस्तावेज़:
{
"_id":"50fd6bb530043e3c569af288",
"name":"Marsha Garcia",
"follower"["50fd6bb530043e3c569af287","50fd6bb530043e3c569af289","50fd6bb530043e3c569af28c"],
"following":["70fd6bb530043e3c569af289","10fd6bb530043e3c569af222","89fd6bb530043e3c569af45o"]
}
सकारात्मक बात यह है कि अनुवर्ती/निम्नलिखित संबंधों को पहले से ही उपयोगकर्ता के साथ शामिल हो रहे हैं। हालांकि मान लें कि कोई उपयोगकर्ता लगभग 100,000 या उससे अधिक अन्य उपयोगकर्ताओं का अनुसरण करता है। फिर दस्तावेज़ का आकार बहुत बड़ा हो जाएगा। अगर मैं अपने मोबाइल ऐप में आरईएसटी सेवा के माध्यम से इस उपयोगकर्ता ऑब्जेक्ट को लोड करता हूं तो इसमें कुछ समय लग सकता है। इसके अलावा सबसे खराब स्थिति में उपयोगकर्ता दस्तावेज़ MongoDb 16MB दस्तावेज़ सीमा से अधिक हो सकता है।
इसलिए मेरा दूसरा विचार अनुयायियों को मॉडल करना और अधिक क्लासिक तरीके से संबंधों का पालन करना था: प्रत्येक उपयोगकर्ता के निम्नलिखित संबंधों वाला एक अतिरिक्त दस्तावेज़।
उदाहरण 'उपयोगकर्ता संबंध' दस्तावेज़:
सकारात्मक बात यह है कि प्रत्येक उपयोगकर्ता दस्तावेज़ का आकार स्थिर रहेंगे। नकारात्मकता यह है कि बहुत से उपयोगकर्ताओं और निम्नलिखित संबंधों के साथ मैं अपने मोंगोडीबी 'उपयोगकर्ता संबंधों' संग्रह में आसानी से लाखों प्रविष्टियां प्राप्त कर सकता हूं। बेशक मैं खेतों पर एक इंडेक्स सेट करने जा रहा हूं लेकिन मुझे पूरा यकीन नहीं है कि यह समाधान ऐप उपयोगकर्ता के वर्तमान अनुयायियों से पूछने वाले ऐप उपयोगकर्ता के उपयोग के मामले के बारे में बहुत अच्छी तरह से स्केल करेगा या नहीं।
मैं किसी भी विचार, मेरी मॉडलिंग समस्या के बारे में अनुभवों की सराहना करता हूं। शायद किसी के पास भी एक बेहतर समाधान दृष्टिकोण है।
Thx बहुत पहले से ही।
एक और विचार पर, आप मोबाइल डिवाइस पर 1 मिलियन अनुयायी सूची कैसे प्रदर्शित कर रहे हैं? –
बेशक मैं उन्हें एक साथ दिखाने के लिए नहीं जा रहा हूं।शायद मैं एक पेजिंग तंत्र का उपयोग करने जा रहा हूँ। जैसे पहले 50 अनुयायियों को लोड करें। यदि उपयोगकर्ता अगले 50 अनुयायियों को और अधिक लोड देखना चाहता है। – user1425635