पोस्टग्रेज में हजारों उपयोगकर्ताओं के लिए संभव है?


9

हम SAAS का निर्माण कर रहे हैं जहाँ हम 50.000 ग्राहक होंगे। हम प्रत्येक ग्राहक के लिए Postgres डेटाबेस में एक उपयोगकर्ता बनाने पर विचार कर रहे हैं। हम डेटाबेस में एक उपयोगकर्ता के लिए हमारी सेवा में प्रवेश करने वाले प्रत्येक उपयोगकर्ता को बहुत सुनिश्चित करने के लिए मैप करेंगे कि उनके पास केवल अपने स्वयं के डेटा तक पहुंच है। हम इस समाधान द्वारा सीधे डेटाबेस में एक ऑडिट ट्रेल लागू करना चाहते हैं , जो ट्रिगर्स का उपयोग करता है। यदि प्रत्येक ग्राहक का अपना डेटाबेस उपयोगकर्ता है, तो यह देखना बहुत आसान होगा कि किसने क्या किया, भले ही दो ग्राहक एक ही डेटा साझा करेंगे।

क्या हम अपने डेटाबेस में 50.000 उपयोगकर्ता होने के कारण कुछ अप्रत्याशित समस्याओं में भाग रहे हैं? प्रदर्शन-वार या प्रशासन-वार। शायद कनेक्शन पूलिंग अधिक कठिन होगा, लेकिन मुझे वास्तव में नहीं पता कि हमें इसकी आवश्यकता होगी या नहीं।


2
यदि आप DB बल प्रयोग करेंगे तो आप किसी भी प्रकार का कनेक्शन पूलिंग नहीं कर पाएंगे? प्रदर्शन के लिए महत्वपूर्ण मुद्दा समवर्ती कनेक्शन की संख्या और डीबी में उपयोगकर्ताओं की संख्या के बजाय वे कितना संसाधन का उपयोग कर रहे हैं।
जैक का कहना है कि टॉपसान्वर्स की कोशिश करें ।xyz

2
@JackDouglas हां, आप कनेक्शन पूलिंग का उपयोग कर सकते हैं। "कॉमनर" के रूप में कनेक्ट करेंset role actualUser
नील

2
@ यकीन है, लेकिन यह DB विशेषाधिकार नहीं है। यदि आप डेटाबेस उपयोगकर्ता के पासवर्ड का उपयोग करके प्रमाणित कर रहे हैं, तो आपको पोस्टग्रेज में किसी प्रकार के बाहरी स्रोत का उपयोग करने की आवश्यकता होगी।
जैक का कहना है कि topanswers.xyz

2
@JackDouglas आप सही हैं, यह प्रॉक्सी ऑर्ट डीबी ऑर्ट के विपरीत है।
नील मैकगिन

अब तक के उत्तर एक उच्च संख्या के समवर्ती उपयोगकर्ता मान रहे हैं, क्या यह मामला होगा?
जैक का कहना है कि topanswers.xyz

जवाबों:


12

हां, यह ठीक होना चाहिए। हालाँकि, आपको कनेक्शन पूलिंग का उपयोग करना चाहिए, क्योंकि pg प्रति कनेक्शन मेमोरी की उचित मात्रा का उपयोग करता है (लगभग 10MB AFAIK)।

प्रति बॉक्स 500 से अधिक एक साथ कनेक्शन हालांकि एक समस्या होगी (जैसे कि उसी समय डेटाबेस को सक्रिय रूप से क्वेरी करना)। अधिक cpus / कोर बेहतर है। RAID 10 के साथ SSDs का उपयोग करें।

आपके सास एप्लिकेशन को एक उपयोगकर्ता के रूप में, फिर set roleवास्तविक उपयोगकर्ता से कनेक्ट होना चाहिए । यह आपको कनेक्शन पूलिंग का उपयोग करने की अनुमति देता है, क्योंकि कनेक्शन स्ट्रिंग समान होगी, लेकिन विभिन्न उपयोगकर्ताओं का उपयोग करें। आपको reset roleपूल से कनेक्शन लौटते समय करना चाहिए ।

यह वास्तव में डेटाबेस प्रमाणीकरण नहीं है। यह प्रॉक्सी प्रमाणीकरण (उर्फ प्रतिरूपण) है।

आप प्रति कंपनी या प्रति भूमिका के लिए अलग पूल पर भी विचार कर सकते हैं।

व्यवस्थापक को आसान बनाने के लिए, आप उपयोगकर्ताओं को समूहों में रख सकते हैं और समूहों के माध्यम से अनुमतियाँ सेट कर सकते हैं। इसे RBAC कहा जाता है।

अपडेट: मैं 2.4 सेकंड में 50,000 उपयोगकर्ता बनाने में सक्षम था। उपयोगकर्ताओं की संख्या के कारण PGAdmin काफी धीमा है। हालाँकि JDBC के माध्यम से जुड़ना पहले की तरह तेज़ है। मैं एक बार में 50,000 उपयोगकर्ताओं को छोड़ने में असमर्थ था, लेकिन एक बार में लगभग 10,000 कर सकता था।


आपके शोध के लिए आपका बहुत-बहुत धन्यवाद। क्या PGAdmin में काम करना संभव था? क्या वहां प्रदर्शन के साथ यह एक बड़ी समस्या थी?
डेविड

@ डेविड PGAdmin ठीक था, बस धीमा। psql ठीक होना चाहिए। चीजों को गति देने के लिए PGAdmin को ट्वीक करने में सक्षम हो सकता है।
नील मैकगिन

2

प्रदर्शन: हजारों समवर्ती कनेक्शन आपकी मेमोरी खाएंगे, कनेक्शन पूलिंग का उपयोग करने के लिए 1,000 समवर्ती कनेक्शन के ऊपर लगभग एक मूल्य, पेगाउन्सर एक अच्छा है, जो स्काइप द्वारा विकसित किया गया है।

व्यवस्थापन: 50,000 उपयोगकर्ताओं को व्यवस्थापन करना एक बड़ा काम IMO होगा। कैसे एक ही डेटा एक्सेस के साथ अलग-अलग कॉस्ट्यूमर अलग-अलग उपयोग कर रहे हैं application_name, इसलिए प्रत्येक कॉस्ट्यूमर एक ही उपयोगकर्ता नाम का उपयोग करके डेटाबेस से कनेक्ट होगा।

उदाहरण :

अन्य उपयोगकर्ता के नाम का उपयोग कर, प्रत्येक ग्राहक के कनेक्शन स्ट्रिंग होगा: --user user1, --user user2, आदि

लेकिन विभिन्न का उपयोग कर application_name, प्रत्येक ग्राहक के कनेक्शन स्ट्रिंग होगा: --user user1 --application_name costumer1, --user user1 --aplication_name costumer2, आदि

application_nameमें दर्ज की गई है pg_stat_activityऔर यह भी लॉग इन किया जा सकता है। मुझे लगता है कि इसे लागू करना आसान होगा। और वह application_nameऑडिट ट्रिगर भी लॉग इन है जिसे आप लागू करना चाहते हैं। अधिक जानकारी यहाँ

आशा है ये मदद करेगा।


4
50,000 ऐप उपयोगकर्ताओं की तुलना में 50,000 डीबी उपयोगकर्ताओं को कैसे प्रबंधित किया जाता है?
नील मैकगिगन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.