- कुछ दिनों तक SQLite को इस्तेमाल करने के बाद पता चलीं कुछ चौंकाने वाली कमियां
ALTER COLUMN सपोर्ट नहीं होता। किसी कॉलम को बदलने के लिए आधिकारिक सिफारिश: "नई टेबल बनाएं"
DROP CONSTRAINT सपोर्ट नहीं होता। constraint हटाने के लिए आधिकारिक सिफारिश: "नई टेबल बनाएं"
- SQLite में कॉलम का data type नहीं होता। data type (सिर्फ 5 होते हैं) केवल values पर लागू होते हैं, इसलिए कहीं भी कुछ भी जा सकता है
- अगर आप unsupported या अस्तित्वहीन type वाले columns मांगते हैं, तो यह warning या error के बिना गलत काम कर देता है।
CREATE TABLE my_table (id bigserial, messages jsonb[]) जैसी schema चलाने पर ऐसा लगता है जैसे यह काम कर रही हो, इसलिए पहले दिन मुझे गलतफहमी हुई कि SQLite serial और arrays को सपोर्ट करता है
CREATE TABLE my_table (...) STRICT का उपयोग करके आप केवल सपोर्टेड 5 types में से एक को ही अनुमति दे सकते हैं: integer, real, text, blob, any
- हाल में SQLite के नए
jsonb सपोर्ट को लेकर काफी रुचि रही है। Postgres के विपरीत, jsonb वास्तव में data type नहीं है, बल्कि built-in jsonb* functions के input/output का format है। स्थायी रूप से स्टोर होने पर यह 5 बुनियादी types में से एक blob होता है
timestamptz जैसे दूसरे बहुत महत्वपूर्ण types भी नहीं हैं। अगर आपको date/time चाहिए, तो उसे Unix timestamp integer या ISO8601 format की string के रूप में स्टोर करें, और ऐसे कामों के लिए कई built-in functions दिए गए हैं
- SQLite में streaming से जुड़ी कुछ प्रभावशाली क्षमताएं हैं जिन्हें मैं आजमाना चाहता हूं, लेकिन शुरुआती DX अनुभव निश्चित रूप से थोड़ा असुविधाजनक था
- कभी-कभी सोचता हूं कि हम किसी कहानी से कितने ज्यादा प्रभावित हो जाते हैं। जैसे, क्या Postgres सच में दुनिया का सबसे अच्छा database है? इस अनुभव ने निश्चित रूप से मेरे भरोसे को और मजबूत किया। हाँ, Postgres ही सबसे अच्छा है
6 टिप्पणियां
लगता है कि उन्हें SQLite नहीं, बल्कि SQLHeavy चाहिए।
ऐसे भी DB हैं और वैसे भी DB हैं। मुझे लगा कि SQLite अपनी अलग फिलॉसफी के साथ चलता है।
आख़िर उन्होंने SQLite को Postgres की तरह इस्तेमाल करने की कोशिश क्यों की?
यह कुछ वैसा ही लगता है जैसे कोई व्यक्ति जिसने पहली बार Linux इस्तेमाल किया हो, कहे, “Hancom Office भी ठीक से नहीं चलता और जो गेम मैं खेलता हूँ वे भी नहीं चलते। आख़िर operating system तो Windows ही है!”
Hacker News पर आने वाली sqlite से जुड़ी चर्चा (hype) क्या कुछ ज़्यादा नहीं है? 2022 से Hacker News पर ऐसे कई दावे आए हैं कि sqlite अलग से चलने वाले RDBMS की जगह ले सकता है.
1: https://news.ycombinator.com/item?id=31318708
2. https://news.ycombinator.com/item?id=31152490
3. https://news.ycombinator.com/item?id=34812527
4. https://news.ycombinator.com/item?id=36208568
अन्य: https://hn.algolia.com/?dateEnd=1720854657&dateRange=custom&da…
जब Postgres या MySQL जैसे database products का इस्तेमाल करना overkill लगता है, तब मुझे लगता है कि SQLite एक काफ़ी आकर्षक alternative हो सकता है.
उदाहरण के लिए, छोटे service के मामले में managed DB की लागत कई बार ज़रूरत से कहीं ज़्यादा लग सकती है, और उसे खुद operate करना भी बोझिल होता है.
वहीं SQLite के मामले में कहा जाता है कि एक हद तक scale पर performance की कोई खास कमी नहीं होती, और खासकर Litestream जैसे tools का इस्तेमाल करें तो operations का बोझ भी लगभग नहीं के बराबर रहता है, इसलिए इसमें काफ़ी फ़ायदे दिखते हैं.
रेप्लिकेशन फीचर तक जाने की भी ज़रूरत नहीं है; sqlite में बैकअप भी आसान है और बस service daemon की स्थिति मैनेज करनी होती है, इसलिए यह काफ़ी अच्छा है। लेकिन इसे JPA से जोड़ने के लिए यह-वह बहुत कुछ करना पड़ता है, इसलिए ऐसे प्रोजेक्ट में जहाँ किसी और को हैंडओवर करना हो, इसे इस्तेमाल नहीं कर पाता/पाती। और अगर मूल लेख की तरह data schema को थोड़ा अधिक सख्ती से संभालने की इच्छा हो, तो उस उपयोग के लिए भी यह उपयुक्त नहीं है.
मैंने पिछला कमेंट लिखते-लिखते अधूरा छोड़ दिया था, लेकिन मैं यह कहना चाहता/चाहती था कि sqlite के बारे में फैली निराधार बातें ऐसा भ्रम पैदा करती हैं मानो sqlite हर काम की万能 चीज़ हो.