एक ख़ास पल है जहाँ एक प्रबंधित डेटाबेस सुविधाजनक होना बंद होकर एक दीवार बनना शुरू होता है। आप एक एक्सटेंशन चाहते हैं जो टियर नहीं देता। आप असल क्वेरी प्लान देखना और work_mem ट्यून करना चाहते हैं। आप एक superuser चाहते हैं। एक प्रबंधित सेवा एक बढ़िया डिफ़ॉल्ट है ठीक तब तक जब तक आपको चीज़ का मालिक बनना न हो — और फिर पूरे root वाला एक VPS ईमानदार जवाब है।
यह पेज अपना ख़ुद का PostgreSQL या Redis सही ढंग से चलाने के बारे में है, और यह साफ़ करने के बारे में कि एक साझा बॉक्स कहाँ सही फ़ैसला है और कहाँ नहीं।
एक डेटाबेस को असल में क्या चाहिए
डेटाबेस दो चीज़ों की परवाह करते हैं जिनकी एक गेम सर्वर नहीं करता: वर्किंग सेट के लिए मेमोरी और डिस्क I/O। मोटा आकार:
- एक ऐप — एक Postgres (या Redis) इंस्टेंस प्लस एक बैकएंड सेवा। वर्किंग सेट आमतौर पर 1.7-2 GB है। Small ($8) इसे बिना नाटक संभालता है।
- कुछ ऐप, या असली प्रोडक्शन समवर्तीता — ज़्यादा कनेक्शन, बड़े कैश, बैकग्राउंड जॉब। Medium ($12) आपको गुंजाइश देता है।
- दूसरी मशीनों को इस तक पहुँचना है — आप एक स्थिर, रूट-योग्य पता चाहते हैं, तो एक डेडिकेटेड-IPv4 प्लान (Small-IP $16 और ऊपर)। इस पर नीचे और।
Redis और भी हल्का है — यह मेमोरी-बद्ध है, तो प्लान को अपने डेटासेट प्लस ओवरहेड के हिसाब से साइज़ करें और आप हो गए। Postgres वह है जो थोड़ी ट्यूनिंग को पुरस्कृत करता है।
स्व-होस्ट करने की असली वजह: नियंत्रण
यहीं एक VPS अपनी जगह कमाता है। अपने ख़ुद के बॉक्स पर आपको मिलता है:
- पूरा
postgresql.conf—shared_buffers,work_mem,max_connections, WAL सेटिंग्स, यह सब, एक वेंडर के डिफ़ॉल्ट के बजाय आपके कार्यभार के हिसाब से ट्यून। - कोई भी एक्सटेंशन। एम्बेडिंग और सिमेंटिक खोज के लिए
pgvector, भू-स्थानिक के लिएPostGIS, समय-श्रृंखला के लिएTimescaleDB,pg_cron,pg_stat_statements— जो आपको चाहिए इंस्टॉल करें। प्रबंधित टियर अक्सर एक्सटेंशन सूची प्रतिबंधित करते या इसे एक उच्च प्लान के पीछे गेट करते हैं। - Superuser और उसके नीचे OS। आप डेटा डायरेक्टरी हिला सकते हैं, कर्नेल ट्यून कर सकते हैं, अपने ख़ुद के शेड्यूल पर
pg_dumpचला सकते हैं, और अगर चाहें तो दूसरे बॉक्स पर स्ट्रीमिंग रेप्लिकेशन सेट कर सकते हैं।
अगर इनमें से कुछ आपके लिए मायने नहीं रखता, एक प्रबंधित डेटाबेस सचमुच ठीक है और आपको एक इस्तेमाल करना चाहिए। यह पेज उस मामले के लिए है जहाँ रखता है।
एक साझा बॉक्स कहाँ ग़लत टूल है
इसके बारे में सीधे: एक साझा-vCPU VPS भारी OLTP के लिए नहीं बना — प्रति सेकंड सैकड़ों लेनदेन लेटेंसी-नाज़ुक राइट के साथ। वह कार्यभार गारंटीड डिस्क I/O और एक स्थिर घड़ी पर जीता या मरता है, और साझा प्लान किसी का वादा नहीं करते। अगर वह आप हैं, आप समर्पित हार्डवेयर चाहते हैं, और हम आपकी p99 लेटेंसी को हम दोनों को शर्मिंदा करते देखने के बजाय अभी बताना पसंद करेंगे।
कहीं ज़्यादा आम मामले के लिए — एक ऐप के पीछे एक डेटाबेस, एक आंतरिक टूल, एक एनालिटिक्स स्टोर, एक कैश — एक साझा प्लान ठीक सही है।
बैकअप वैकल्पिक नहीं हैं
स्व-होस्टिंग मतलब बैकअप आपका काम हैं, और एक नियम है: उन्हें ज़रूरत होने से पहले करें। Postgres के लिए, लॉजिकल बैकअप के लिए एक cron पर pg_dump, या किसी भी चीज़ के लिए point-in-time रिकवरी को WAL archiving जिसकी आप असल में परवाह करते हैं। डंप को बॉक्स से बाहर भेजें — ऑब्जेक्ट स्टोरेज या किसी अन्य सर्वर पर — ताकि एक मृत डिस्क बैकअप को अपने साथ न ले जाए। एक बार कम से कम एक रिस्टोर परखें। एक बैकअप जिसे आपने कभी रिस्टोर नहीं किया एक उम्मीद है, एक बैकअप नहीं।
दूसरे सर्वरों को जुड़ने देना
अगर डेटाबेस सिर्फ़ उसी बॉक्स पर एक ऐप को सर्व करता है, इसे localhost से बाँधें और आप हो गए — उजागर करने को कुछ नहीं। जिस पल दूसरी मशीन को अंदर चाहिए, दो चीज़ें बदलती हैं:
- आपको एक स्थिर, रूट-योग्य पता चाहिए — वह एक डेडिकेटेड-IPv4 प्लान (Small-IP $16, Medium-IP $20) है। NAT प्लान एक पता साझा करते हैं, जो आउटबाउंड के लिए ठीक पर एक ऐसा डेटाबेस होने के लिए नहीं जिसमें दूसरे सर्वर डायल करें।
- आप इसे कड़ाई से फ़ायरवॉल करते हैं। 5432 (या 6379) सिर्फ़ उन ख़ास IP को खोलें जिन्हें इसकी ज़रूरत है,
0.0.0.0/0को कभी नहीं, और TLS की माँग करें। सार्वजनिक इंटरनेट पर एक खुला Postgres पोर्ट मिनटों में मिल जाता है।
प्लान चुनना
| सेटअप | प्लान |
|---|---|
| एक ऐप के पीछे DB, सिर्फ़ localhost | Small ($8) |
| कुछ ऐप / प्रोडक्शन समवर्तीता | Medium ($12) |
| दूसरे सर्वरों को अंदर जुड़ना है | Small-IP ($16) / Medium-IP ($20) |
| भारी OLTP, सैकड़ों TPS | समर्पित हार्डवेयर, एक साझा VPS नहीं |
ज़्यादातर स्व-होस्टेड डेटाबेस Small पर शुरू होते और Medium या एक डेडिकेटेड-IP प्लान में बढ़ते हैं जैसे-जैसे वे ज़्यादा ऐप या बाहरी क्लाइंट लेते हैं।
यहाँ क्यों
पूरा root मतलब यह आपका डेटाबेस है, पूरी तरह नीचे तक — हर कॉन्फ़िग लाइन, हर एक्सटेंशन, आपका ख़ुद का बैकअप शेड्यूल, कोई टियर तय नहीं करता कि आपको क्या इंस्टॉल करने की अनुमति है। भुगतान क्रिप्टो (Base, Ethereum, या Polygon पर USDC या USDT) है, कोई KYC नहीं, कोई दस्तावेज़ नहीं। भुगतान के लगभग 60 सेकंड बाद root, और आप कुछ मिनट बाद Postgres को कनेक्शन स्वीकारते करा सकते हैं।
ईमानदार पुनर्कथन: स्व-होस्ट करें जब आप नियंत्रण चाहें — एक्सटेंशन, ट्यूनिंग, superuser — और जब आपका कार्यभार मध्यम हो। एक छोटे-से-मध्यम ऐप के डेटाबेस के लिए, एक साझा प्लान सही टूल है। लेटेंसी-नाज़ुक OLTP के सैकड़ों TPS के लिए, यह नहीं, और हम यह कहेंगे। तैयार? एक प्लान चुनें।
टिप्पणियाँ
अभी तक कोई टिप्पणी नहीं। पहले बनें।