Notion का संकट: उन्होंने अपनी डेटाबेस समस्या कैसे सुलझाई
2021 में, Notion की लोकप्रियता आसमान छू गई, लेकिन इसकी सेवा असहनीय रूप से धीमी हो गई। समस्या इसके अनोखे डेटा मॉडल में थी, जहाँ सब कुछ एक ब्लॉक है, जो टेक्स्ट का एक टुकड़ा, एक इमेज, या एक संपूर्ण पेज खुद हो सकता है। यह संरचना अविश्वसनीय बहुमुखी प्रतिभा की अनुमति देती है, लेकिन इसका मतलब यह भी है कि एक साधारण दस्तावेज़ में भी सैकड़ों या हज़ारों डेटाबेस प्रविष्टियाँ हो सकती हैं।
प्रत्येक ब्लॉक को अपने स्वयं के अद्वितीय ID के साथ एक Postgres डेटाबेस में एक पंक्ति के रूप में संग्रहीत किया जाता है। डेटा की विशाल मात्रा ने अंततः उपयोगकर्ताओं को पेज डेटा का अनुरोध करते समय बढ़ी हुई विलंबता को नोटिस करने का कारण बना दिया। Notion का एकल विशाल डेटाबेस अब लोड को संभाल नहीं सकता था, और इसकी Postgres वैक्यूम प्रक्रिया लगातार स्थापित होने लगी, जिससे फूले हुए टेबल और प्रदर्शन में गिरावट आई।
हल: क्षैतिज स्केलिंग और शार्डिंग
Notion ने अपने डेटाबेस को शार्ड करने का फैसला किया, 32 भौतिक डेटाबेस उदाहरण बनाए, प्रत्येक में 15 अलग-अलग तार्किक स्कीमा थे। प्रत्येक स्कीमा का अपना टेबल होगा, जैसे ब्लॉक, वर्कस्पेस और टिप्पणियाँ, 32 भौतिक डेटाबेस में कुल 480 कुल शार्ड के लिए। राउटिंग तंत्र डेटा के संग्रहीत होने के स्थान को निर्धारित करने के लिए एप्लिकेशन स्तर पर निर्धारित किया गया था।
चुनौतियाँ: डेटा माइग्रेशन और कनेक्शन सीमाएँ
Notion को डेटा संगति बनाए रखते हुए अपने मौजूदा डेटा को नए शार्ड में माइग्रेट करना पड़ा। उन्होंने नए डेटाबेस में लगातार नए परिवर्तन लागू करने के लिए Postgres तार्किक प्रतिकृति का उपयोग किया। इस प्रक्रिया में प्रत्येक मौजूदा डेटाबेस पर तीन Postgres प्रकाशन स्थापित करना शामिल था, जिसमें प्रत्येक प्रकाशन नए डेटाबेस पर पाँच तार्किक स्कीमा को कवर करता था। तीन प्रकाशनों में से एक का उपभोग करने के लिए सदस्यताएँ बनाई गई थीं, जो प्रभावी रूप से डेटा के प्रासंगिक सेट को कवर करती हैं।
हालांकि, परीक्षण ने एक गंभीर समस्या का पता लगाया: प्रत्येक पुराने शार्ड को तीन नए शार्ड में मैप किया गया था, जिससे उन्हें या तो प्रति PG बाउंसर इंस्टेंस कनेक्शनों की संख्या कम करनी पड़ी या उसे 3x तक बढ़ाना पड़ा। उन्होंने कनेक्शन सीमा को बढ़ाने का विकल्प चुना, जिससे उन्हें उत्पादन में परिवर्तन शुरू करने से पहले कनेक्शनों की उचित संख्या बनाए रखने की अनुमति मिली।
परिणाम: बढ़ी हुई क्षमता और बेहतर प्रदर्शन
रीचार्टिंग परियोजना Notion के लिए एक महत्वपूर्ण सफलता थी। कुछ प्रमुख परिणामों में शामिल हैं:
- बढ़ी हुई क्षमता
- बेहतर प्रदर्शन
- CPU और IOPS उपयोग में नाटकीय रूप से कमी आई, पिछले 90% की तुलना में पीक ट्रैफ़िक के दौरान लगभग 20% के आसपास नए उपयोग के साथ
- इस नए आर्किटेक्चर ने Notion को निरंतर उपयोगकर्ता वृद्धि और निरंतर डेटा मांगों को संभालने के लिए तैनात किया।
निष्कर्ष में, Notion का संकट क्षैतिज स्केलिंग और शार्डिंग, सावधानीपूर्वक डेटा माइग्रेशन और कनेक्शन सीमाओं के लिए सरल समाधानों के संयोजन के माध्यम से हल किया गया था। उनके नए आर्किटेक्चर ने उन्हें निरंतर विकास और सफलता के लिए तैयार किया है।