2011-11-10 14 views
7

मैं SQL सर्वर में बहु-किरायेदारी के लिए एक कार्यान्वयन को देख रहा हूं। मैं यहां साझा किए गए साझा डेटाबेस, साझा स्कीमा और किरायेदार दृश्य फ़िल्टर पर विचार कर रहा हूं। केवल दोष यह एक खंडित कनेक्शन पूल है ...बहु-किरायेदार अनुप्रयोगों में SQL सर्वर खंडित कनेक्शन पूल प्रदर्शन

प्रति http://msdn.microsoft.com/en-au/architecture/aa479086, किरायेदार देखें फ़िल्टर इस प्रकार वर्णित है:

"एसक्यूएल विचारों व्यक्तिगत किरायेदारों प्रदान करने के लिए इस्तेमाल किया जा सकता एक में पंक्तियों की कुछ के लिए पहुँच उन्हें अन्य पंक्तियों तक पहुंचने से रोकते हुए,

एसक्यूएल में, एक दृश्य एक क्वेरी क्वेरी के परिणामों द्वारा परिभाषित वर्चुअल टेबल है। परिणामी दृश्य को क्वेरी किया जा सकता है और संग्रहित प्रक्रियाओं में उपयोग किया जा सकता है जैसे कि यह था वास्तविक डेटाबेस तालिका। उदाहरण के लिए, निम्न SQL कथन कर्मचारी नामक एक तालिका का दृश्य बनाता है, जिसे फ़िल्टर किया गया है टी केवल एक ही किरायेदार से संबंधित पंक्तियों दिखाई दे रहे हैं:

CREATE VIEW TenantEmployees AS 
SELECT * FROM Employees WHERE TenantID = SUSER_SID() 

यह बयान उपयोगकर्ता खाता डेटाबेस (जो, जैसा कि आपको याद करेंगे तक पहुँचने की सुरक्षा पहचानकर्ता (SID) प्राप्त है, एक खाता है किरायेदार, नहीं अंत उपयोगकर्ता) से संबंधित और निर्धारित करने के लिए कौन-सी पंक्तियां दृश्य "

के माध्यम से इस सोच रही थी, अगर हम एक डेटाबेस का कहना है कि 5000 अलग किरायेदारों भंडारण है में शामिल किया जाना चाहिए इसे इस्तेमाल करता है, तो कनेक्शन पूल है पूरी तरह से खंडित और हर बार डेटाबेस में एक अनुरोध भेजा जाता है ADO.NET को एक नया कनेक्शन स्थापित करने और प्रमाणित करने की आवश्यकता है (प्रत्येक अद्वितीय कनेक्शन स्ट्रिंग के लिए कनेक्शन पूलिंग कार्य याद रखें) और इस दृष्टिकोण का मतलब है कि आपके पास 5,000 कनेक्शन स्ट्रिंग हैं ...

मुझे इस बारे में कितना चिंतित होना चाहिए? क्या कोई मुझे कुछ वास्तविक विश्व उदाहरण दे सकता है कि एक व्यस्त बहु-किरायेदार डेटाबेस सर्वर पर कनेक्शन पूल पर कितना प्रभाव पड़ता है (प्रति सेकंड 100 अनुरोधों की सेवा करना)? क्या मैं समस्या पर और अधिक हार्डवेयर फेंक सकता हूं और यह दूर चला जाता है?

विचार ??

+0

देखें आप प्रत्येक किरायेदार एसक्यूएल सर्वर के लिए अपने कनेक्शन स्थापित हैं, या आप एक मध्यस्थ सेवा होने पर योजना बना रहे हैं होने पर योजना बना रहे हैं (उदाहरण के लिएडब्ल्यूसीएफ) जहां सभी अनुरोधों के माध्यम से गुजरता है? – Alexander

+0

संक्षेप में: दस्तावेज़ों का वर्णन करने का क्या बुरा विचार है ... – usr

उत्तर

1

मेरा समस्या आपके डेटाबेस पर एक ठोस एपीआई विकसित करना होगा। स्केलेबिलिटी, मॉड्यूलरिटी, एक्स्टेंसिबिलिटी, अकाउंटिंग मुख्य कारण होंगे। SUSER_SID() के साथ खेलने के लिए आप अपने आप को शपथ ग्रहण कर सकते हैं कि लाइन के नीचे कुछ साल। उदाहरण के लिए, एक खाते या श्वेतसूची जैसे परिस्थितियों में प्रबंधित कई किरायेदारों पर विचार करें ...

डेटा एक्सेस एपीआई है, जो प्रमाणीकरण का ख्याल रखेगा। आप अभी भी डीबी स्तर पर प्रमाणीकरण कर सकते हैं, लेकिन यह तब एक अलग विषय है। उपयोगकर्ताओं और शायद समूह हैं और उन्हें किरायेदारों को अनुमति देते हैं।

बड़ी परियोजनाओं के लिए, फिर भी, आपको अभी भी एक बड़ा खिलाड़ी प्रति डीबी होना बेहतर लगेगा।

मुझे लगता है कि मैंने खंडित कनेक्शन पूल प्रदर्शन के बारे में आपके मुख्य प्रश्न का उत्तर नहीं दिया है, लेकिन मुझे विश्वास है कि कई वैध तर्क हैं कि फिर भी उस रास्ते पर जाने के लिए नहीं।

संबंधित मुद्दे