प्रत्येक साधनाने काहीतरी वाईट गोष्ट बदलली — आणि तेच साधन कुठेतरी चुकीचे ठरते. प्रत्येक मोठ्या कल्पनेसाठी: आधी जीवन कसे होते, प्रामाणिक फायदे ✅ / तोटे ❌, आणि कुठे वापरावी 👍 विरुद्ध कुठे नाही 👎.
Apps वापरकर्त्याचे input SQL strings मध्ये चिकटवत आणि quotes हाताने escape करण्याचा प्रयत्न करत; एक चुकलेली केस आणि टाइप केलेले ' OR '1'='1 संपूर्ण tables वाचू किंवा पुसू शकत असे — दोन दशके SQL injection OWASP यादीच्या जवळजवळ शिखरावर होते.
standby म्हणजे दुसऱ्या machine वर restore केलेला कालच्या रात्रीचा backup; failover म्हणजे एक दिवसाचा data गमावणे आणि तासन्तास बंद राहणे.
व्यवसायाचे नियम फक्त एका application मध्ये होते; दुसरे app, data दुरुस्ती किंवा एखादी झटपट script थेट tables मध्ये लिहायची आणि database मध्ये कोणीच न ठेवलेला नियम मोडायची.
महिनाअखेरचे reports चालू database वरच चालत; report पूर्ण होई, पण दर वेळी कार्यालय वीस मिनिटे ठप्प होई.
नोंदी ॲप-विशिष्ट रचनेच्या फाइल्समध्ये राहायच्या; प्रत्येक प्रोग्राम स्वतःचे format वाचायचा आणि नव्या कोडशिवाय कोणीच नवा प्रश्न विचारू शकत नव्हता. Relational डेटाबेसनी प्रश्न SQL मध्ये आणले. मग web scale मुळे काही टीम्सनी वेगासाठी constraints फेकून दिले — आणि अनेकांनी नंतर ते परत विकत घेतले.
एक मोठा spreadsheet-सारखा table: शिक्षकाचा फोन 30 ओळींत कॉपी, 29 मध्ये अद्ययावत, आणि वर्षभर चुकीचा राहिलेला अहवाल.
प्रत्येक प्रश्न प्रत्येक ओळ वाचायचा. 5 ओळींना ठीक; 200,000 ओळींच्या attendance table ला प्रत्येक शोधासाठी पूर्ण scan.
दोन कारकून एकाच वेळी एकच नोंदवही लिहिली की फाटलेल्या ओळी तयार व्हायच्या; उपाय होता 'फाइल फक्त एकच प्रोग्राम वापरेल' — दोन प्रोग्राम येईपर्यंत.
कोणीतरी शुक्रवारी production खोलीवर हाताने ALTER TABLE चालवले; schema काय आहे हे कोणीच सांगू शकत नव्हते, आणि rollback म्हणजे स्मरणशक्ती.
एकच मशीन; ते भरले की उत्तर होते मोठे मशीन — आणखी मोठे मशीन उरेपर्यंत.
प्रत्येक टीम स्वतःचा Postgres चालवायची: patching, backups, failover scripts, आणि WAL कुठे जातो हे माहीत असलेली एकच व्यक्ती.