आंतरिक-उपयोग वाली वेबसाइटें: क्या SQLite के खिलाफ एक सम्मोहक मामला है?


23

कई वेब फ्रेमवर्क, जैसे फ्लास्क या Django SQLite को उनके डिफ़ॉल्ट डेटाबेस के रूप में उपयोग करते हैं । SQLite सम्मोहक है क्योंकि यह अजगर में शामिल है, और प्रशासनिक ओवरहेड बहुत कम है।

हालांकि, अधिकांश उच्च यातायात सार्वजनिक उत्पादन साइटें एक भारी डेटाबेस का उपयोग करके हवा देती हैं: mySQL, Oracle, या postgresql।

प्रश्न :

मान लीजिये:

  • साइट ट्रैफ़िक मध्यम है, और डेटाबेस तक समवर्ती पठन / लेखन पहुंच होगी
  • हम SQLite लेखन ताले के साथ SQLAlchemy का उपयोग करेंगे (हालांकि यह टिप्पणी मुझे थोड़ा परेशान करती है)
  • डेटाबेस में संभवतः 60,000 रिकॉर्ड होंगे
  • डेटा संरचनाओं को भारी डेटाबेस में पाए जाने वाले उन्नत सुविधाओं की आवश्यकता नहीं होती है

क्या कभी वेबसाइटों के लिए SQLite समवर्ती के खिलाफ एक सम्मोहक मामला है जो मध्यम-यातायात आंतरिक कॉर्पोरेट टूल के रूप में काम करता है? यदि ऐसा है, तो किन स्थितियों के कारण SQLite को समवर्ती समस्याएँ होंगी ?

मैं सामान्य भय / निराधार उंगली की ओर इशारा करने के बजाय ज्ञात विशिष्ट मूल कारणों की तलाश कर रहा हूं।


प्रतिकृति आदि जैसी सुविधाओं के साथ स्काईलाइट कैसे है जो बैकअप आदि के लिए उपयोगी हो सकता है? SQLlite में मुझे लगता है कि ऐप db का मालिक है। क्या आप अपने ऐप के चालू होने पर व्यवस्थापक स्क्रिप्ट आदि चला सकते हैं?
डग टी।

1
SQLite और संगामिति के बारे में कुछ उपाख्यान (ज्यादातर सकारात्मक): sqlite3 समवर्ती पहुँच
डैनियल बी

1
एक आंतरिक वेबसाइट के मामले में, SQLite के लिए सम्मोहक कारण क्या है? RDBMS स्थापित करने पर कोई प्रतिबंध?
जेएफओ

व्यक्तिगत डेवलपर के लैपटॉप पर विकास के माहौल को सरल बनाने के अलावा कोई कारण नहीं है। बेशक सवाल यह है कि क्या हम यथोचित रूप से विकास और उत्पादन के माहौल को सरल बना सकते हैं
माइक पेनिंगटन

जवाबों:


23

मैं आपके प्रश्न का आधिकारिक उत्तर पढ़ने की सलाह देता हूं, उपयुक्त उपयोग SQLite के लिए । विशेष रूप से, "स्थिति जहां एक और RDBMS बेहतर काम कर सकता है" चेतावनी देता है कि SQLite समवर्ती लेखन का समर्थन नहीं करता है :

SQLite एक साथ पाठकों की एक असीमित संख्या का समर्थन करता है, लेकिन यह केवल एक लेखक को किसी भी समय पर अनुमति देगा। कई स्थितियों के लिए, यह कोई समस्या नहीं है। प्रत्येक एप्लिकेशन अपना डेटाबेस तेज़ी से काम करता है और आगे बढ़ता है, और कोई भी लॉक कुछ दर्जन से अधिक मिलीसेकंड तक नहीं रहता है। लेकिन कुछ एप्लिकेशन ऐसे होते हैं जिनके लिए अधिक संगति की आवश्यकता होती है, और उन अनुप्रयोगों को एक अलग समाधान की आवश्यकता हो सकती है।

एक उपयुक्तता के दृष्टिकोण से, मैं SQLite को बहुत परिष्कृत फ़ाइल प्रारूप के रूप में देखता हूं जो SQL प्रश्नों का समर्थन करता है। यदि मैं अपने डेटाबेस को अपने वेब एप्लिकेशन से अलग करना चाहता था, तो मैं SQLite से बचना चाहूंगा, क्योंकि यह इस मामले के लिए अनुकूलित नहीं है। संक्षेप में, कुछ परिदृश्यों में उपयोग के लिए SQLite अपर्याप्त रूप से स्केलेबल है, इसलिए किसी दिन आशा रखने वाली वेबसाइट चलाने वाले लोग SQLite के साथ जाने के बजाय कुछ स्केलेबल के साथ शुरू करने से बेहतर हो सकते हैं और बाद में स्विच करने के लिए मजबूर हो सकते हैं।

कहा जा रहा है कि, सभी आंतरिक वेबसाइटों के लिए SQLite शायद ठीक है; आम तौर पर आंतरिक वेबसाइटों को समान स्तर और सुगमता के समान स्तर की आवश्यकता नहीं होती है।


और ना ही ज्यादातर बाहरी वेबसाइट। डेटाबेस इंजन को स्वैप किया जा सकता है यदि EF जैसी किसी चीज़ का उपयोग किया जाता है, हालाँकि PostGres शायद शुरू से ही एक बेहतर विकल्प होगा।
रॉबर्ट हार्वे

@ रोबर्टहवे ईएफ क्या है?
माइक पेनिंगटन 19

@ माइकपेनिंगटन: एंटिटी फ्रेमवर्क। मैं कल्पना करता हूं कि अन्य ओआरएम हैं जिनमें डेटाबेस पारदर्शिता भी है, या कम से कम ड्राइवरों को स्वैप कर सकते हैं।
रॉबर्ट हार्वे

1
पाइथोनिक समतुल्य कुछ कुछ ऐसा होगा जैसे SQL कीमिया
व्यट बार्नेट

"मैं SQLite को बहुत परिष्कृत फ़ाइल प्रारूप के रूप में देखता हूं जो SQL प्रश्नों का समर्थन करता है।" सही परिभाषा।
वाइल्डकार्ड

4

अपने आईटी निदेशक की टोपी लगाने पर मुझे यहाँ कुछ नो-गोस दिखाई दे रहे हैं:

  • डेटा भ्रष्टाचार का खतरा। शायद असली की तुलना में अधिक विकृत, लेकिन दिन के अंत में यह एक गैर-लेन-देन फ़ाइल प्रकार डीबी है जिसमें बहुत ज्यादा नहीं है अगर कोई हाल ही में बैकअप मिला है, तो पूछने के अलावा खराब लिखता है। बाते कर रहे हैं जिससे कि । । ।
  • मैं इस बात को कैसे वापस करूं? एक तरीके से मुझे पता है कि मुझे अच्छी कॉपी मिली है। अधिमानतः एप्लिकेशन ऑफ़लाइन लेने के बिना।
  • मैं डीबी तक कैसे पहुंच सकता हूं? मेरी सामान्य समझ है SQL लाइट में फाइलसिस्टम एक्सेस के बाहर कोई भी नहीं है, जो कि एक अच्छी शुरुआत है, लेकिन सभी के लिए अंत-सभी नहीं है। विशेष रूप से वेब ऐप्स के लिए जहां आप डीबीए या कुछ नहीं की तुलना में अधिक स्नातक की अनुमति प्राप्त कर सकते हैं।

एक डेवलपर दृष्टिकोण से मुझे लगता है कि यह जानना महत्वपूर्ण है कि SqlLite डिफ़ॉल्ट क्यों है - यह इसलिए है क्योंकि यह आसान है और यह अच्छी तरह से डेमो करता है। यदि आप नए डेवलपर्स के लिए एक मंच "बेच" रहे हैं, तो कम से कम उपद्रव के साथ एक काम कर रहे वेब ऐप को आग लगाने में सक्षम होना महत्वपूर्ण है। और एक डेटाबेस सर्वर को खड़ा करने और ठीक से कॉन्फ़िगर करने के लिए एक बड़े पैमाने पर ठोकर से बचना होगा।


1
खैर, बैकअप SQLite बैकअप एपीआई के माध्यम से किया जा सकता है । मैं स्वीकार करता हूं कि SQLite डिफ़ॉल्ट रूप से काफी सुरक्षित नहीं हो सकता है, क्योंकि सेवा-उन्मुख सिस्टम के विपरीत, SQLite क्लाइंट डेटाबेस फ़ाइल से अधिक सीधे बात करते हैं। उस ने कहा, SQLite सिस्टम विफलताओं से बचाने के लिए एक जर्नल का उपयोग करता है, और विश्वसनीय होना चाहिए अगर होस्ट ओएस ठीक से लॉकिंग प्राइमेटिस SQLite का उपयोग करता है (नेटवर्क डिस्क I / O नहीं करता है)। आधिकारिक साइट कई परिदृश्यों को सूचीबद्ध करती है जो भ्रष्ट SQLite डेटाबेस का नेतृत्व करेंगे।
ब्रायन

SQLite ट्रांसेक्शनल हैबैकअप API का उपयोग करें या ऑनलाइन बैकअप करने के लिए MediaWiki की बैकअप स्क्रिप्ट को अनुकूलित करें । SQLite के सुरक्षा मॉडल के बारे में आपकी सामान्य समझ सही है। सरकारी सुरक्षा सलाह है 'सामान्य ज्ञान का उपयोग करें': कैसे लोगों को अपने डेटाबेस फ़ाइल का उपयोग और उसके अनुसार अपनी वेब अनुप्रयोग डिजाइन सकता है के बारे में सोचते हैं।
इयान सैमुअल मैकलीन एल्डर

@ ब्रायन - मुझे एक और डीबी के बारे में सोचने में मुश्किल होगी, जिसमें एक पूरा पृष्ठ "यह डेटाबेस कैसे भ्रष्ट हो सकता है" के लिए समर्पित है। मैं जोड़ूंगा कि मुझे sql लाइट परियोजना आश्चर्यजनक लगती है - उनके पास वह पृष्ठ होने की संभावना है क्योंकि वे एक प्रकार के पागल होते हैं और उत्पादन कोड की प्रत्येक पंक्ति के लिए परीक्षण कोड की 10 पंक्तियों की तरह कुछ भी होते हैं और वास्तव में सुनिश्चित और पूरी तरह से पसंद करते हैं।
व्याट बार्नेट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.