पाठ फ़ाइल में डेटा संग्रहीत करने पर डेटा संग्रहीत करने के लिए एक डेटाबेस को कब प्राथमिकता दी जानी चाहिए?
विकिपीडिया हमें बताता है कि एक डेटाबेस डेटा का एक संगठित संग्रह है । कि उपाय से, अपने पाठ फ़ाइल है एक डेटाबेस। यह कहा जाता है:
डेटा को आम तौर पर वास्तविकता के प्रासंगिक पहलुओं को मॉडल करने के लिए व्यवस्थित किया जाता है जो इस जानकारी की आवश्यकता वाली प्रक्रियाओं का समर्थन करता है। उदाहरण के लिए, होटलों में कमरों की उपलब्धता को इस तरह से मॉडलिंग करना जो रिक्तियों के साथ होटल खोजने में सहायक हो।
वह हिस्सा व्यक्तिपरक है - यह हमें विशेष रूप से यह नहीं बताता है कि डेटा को कैसे मॉडल किया जाना चाहिए या किन कार्यों को अनुकूलित करने की आवश्यकता है। आपकी पाठ फ़ाइल में प्रत्येक दिन के लिए कई अलग-अलग रिकॉर्ड होते हैं, इसलिए आप वास्तविकता का एक पहलू इस तरह से बना रहे हैं जो आपकी समस्या के लिए प्रासंगिक हो।
मुझे एहसास है कि जब आप कहते हैं "डेटाबेस" आप शायद किसी प्रकार के संबंधपरक डेटाबेस प्रबंधन प्रणाली के बारे में सोच रहे हैं, लेकिन डेटाबेस के रूप में आपकी पाठ फ़ाइल के बारे में सोचने से आपका प्रश्न "कब मुझे डेटाबेस का उपयोग करना चाहिए?" "मुझे किस तरह के डेटाबेस का उपयोग करना चाहिए?" उस प्रकाश में चीजों को देखने से उत्तर को देखना आसान हो जाता है: एक बेहतर डेटाबेस का उपयोग करें जब आपको जो मिल गया है वह आपकी आवश्यकताओं को पूरा नहीं करता है।
यदि आपकी पायथन लिपि और सरल पाठ फ़ाइल पर्याप्त रूप से काम करते हैं, तो बदलने की कोई आवश्यकता नहीं है। प्रति दिन केवल एक नया रिकॉर्ड और प्रत्येक वर्ष कंप्यूटर तेज होने के साथ, मुझे संदेह है कि आपका वर्तमान समाधान लंबे समय तक व्यवहार्य हो सकता है। एक दशक के आंकड़े से आपको केवल 3650 रिकॉर्ड मिलेंगे, जिसे एक बार पार्स करने के बाद, संभवतः 75 किलोबाइट से भी कम की आवश्यकता होगी।
कल्पना करें कि प्रति दिन एक छोटे रिकॉर्ड के बजाय, आपने कोडरव्यू पर पूछे गए प्रत्येक प्रश्न को रिकॉर्ड करने का निर्णय लिया, जिसने इसे पूछा, और कब। इसके अलावा, आप सभी उत्तर और प्रासंगिक मेटाडेटा भी एकत्र करते हैं। आप एक पाठ फ़ाइल में वह सब संग्रहीत कर सकते हैं, लेकिन एक सपाट फ़ाइल के लिए आवश्यक जानकारी प्राप्त करना मुश्किल हो जाएगा। संपूर्ण चीज़ को मेमोरी में पढ़ने के लिए बहुत अधिक डेटा होगा, इसलिए जब भी आप कोई प्रश्न या उत्तर ढूंढना चाहते हैं, तो आपको फ़ाइल के माध्यम से स्कैन करना होगा जब तक कि आपको वह नहीं मिला जो आप खोज रहे थे। जब आप किसी दिए गए उपयोगकर्ता द्वारा पूछे गए सभी प्रश्नों को ढूंढना चाहते हैं, तो आपको संपूर्ण फ़ाइल के माध्यम से स्कैन करना होगा। यदि आप टैग के रूप में "बग" वाले सभी प्रश्नों को ढूंढना चाहते हैं, तो आपको फ़ाइल के माध्यम से स्कैन करना होगा।
यह बहुत धीमी गति से होगा, इसलिए आप कुछ ऐसे इंडेक्स बनाकर चीजों को गति देने का निर्णय ले सकते हैं जो आपको बताएंगे कि किसी दिए गए रिकॉर्ड को खोजने के लिए फ़ाइल में कहाँ देखना है। आपके पास प्रश्नों के लिए एक इंडेक्स, उपयोगकर्ताओं के लिए एक और उत्तर के लिए एक तीसरा, और इसी तरह का कोई भी एक सूचकांक हो सकता है। जब आप एक प्रश्न ढूंढना चाहते थे, तो आप (बहुत छोटा) प्रश्न सूचकांक खोज लेंगे, मुख्य डेटा फ़ाइल में प्रश्न की स्थिति प्राप्त करेंगे, और फ़ाइल में सही स्थान पर जल्दी से कूदेंगे। यह एक बड़ा प्रदर्शन सुधार होगा। वास्तव में, यह एक डेटाबेस प्रबंधन प्रणाली बहुत सुंदर है।
तो, एक DBMS का उपयोग करें जब आपको इसकी आवश्यकता हो। जब आपके पास बहुत अधिक डेटा हो तब इसका उपयोग करें, जब आपको उस डेटा को जल्दी और शायद उन तरीकों से एक्सेस करने में सक्षम होना चाहिए जो आप पूरी तरह से शुरू होने की भविष्यवाणी नहीं कर सकते। यदि आपके पास विभिन्न प्रकार के डेटा हैं - विभिन्न प्रकार के रिकॉर्ड - जो एक दूसरे से जुड़े हुए हैं, तो RDBMS का उपयोग करें ताकि आप विभिन्न रिकॉर्डों को उचित रूप से संबंधित कर सकें ।