आमतौर पर डेटा को इस तरह से विभाजित किया जाता है जिससे क्रॉस-सर्वर जॉइन से बचा जा सके। क्योंकि यह ऑपरेशन कठिन और महंगा है। यदि आपका उदाहरण काल्पनिक है, तो मैं सुझाव दूंगा कि सभी डेटा को user_id फ़ील्ड या user_group_id से विभाजित करें।
उदाहरण के लिए शार्प ए में उपयोगकर्ताओं की जानकारी के साथ सभी टेबल होंगे जो user_id% 3 =0, shard B - कौन सा user_id% 3 =1, shard C - कौन सा user_id% 3 =2. इसलिए अधिकांश आवश्यक जॉइन एक शार्ड के अंदर होंगे। कुछ जटिल क्रॉस-सर्वर प्रश्नों के लिए आपके पास मेमकैच्ड या रेडिस जैसे सामान्य नो-एसक्यूएल स्टोरेज हो सकते हैं, जिसमें सभी शार्क से आवश्यक डेटा की प्रतियां होंगी (बेशक यह सभी तालिकाओं की पूर्ण प्रति नहीं है)। इस तरह के स्टोरेज को जितनी जरूरत हो उतने सर्वर पर आसानी से दोहराया जा सकता है। हाईलोड प्रोजेक्ट इस तरह काम करते हैं।