पृष्ठभूमि
- Wafris एक open source web application firewall कंपनी है, जो Rails middleware client प्रदान करती है
- शुरुआती v1 client को local Redis data store की आवश्यकता थी, लेकिन अब SQLite का उपयोग करने वाला v2 client जारी किया गया है
- यह लेख Redis से SQLite में migration के फ़ैसले की प्रक्रिया, performance considerations, और architecture changes पर चर्चा करता है
सारांश
- SQLite, Redis, और पारंपरिक RDBMS(Postgres/MySQL) — सभी के अपने फायदे और नुकसान हैं
- ये data stores एक-दूसरे के पूर्ण विकल्प नहीं हैं, और ऐसा करने की कोशिश समस्याएँ पैदा कर सकती है
- यह लेख Redis-आधारित v1 client को SQLite-आधारित v2 client में फिर से संरचित करने की प्रक्रिया समझाता है
इस बदलाव को मजबूर करने वाला कारण?
- Wafris का लक्ष्य है कि developers अपनी साइट को आसानी से सुरक्षित कर सकें
- v1 client Redis data store का उपयोग करता था, लेकिन कई users को Redis deployment में समस्याएँ हुईं
- users पर Redis administrator बनने का बोझ कम करने के लिए SQLite पर स्विच किया गया
गति आखिर है क्या?
- Redis पारंपरिक RDBMS की तुलना में तेज़ है, लेकिन फिर भी इसमें प्रबंधन की कई चीज़ें होती हैं
- cloud environments में network latency एक बड़ी समस्या बन जाती है
- SQLite network round-trip time को कम करके बेहतर performance दे सकता है
monolithic assumptions
- कई distributed applications, Redis के उपयोग में समस्याएँ पैदा करती हैं
- Redis के उपयोग की जटिलता कम करने के लिए architecture पर फिर से विचार किया गया
SQLite अपनाना
- SQLite network IO bottleneck को कम करता है
- SQLite
fopen() के साथ प्रतिस्पर्धा करता है, client/server database के साथ नहीं
SQLite और Redis benchmarking
- कुछ खास use cases में SQLite, Redis से लगभग 3 गुना तेज़ है
- network latency को ध्यान में न रखने पर भी SQLite अधिक तेज़ है
चार्ट में क्या छूटा है
- भले ही benchmark में SQLite की performance खराब दिखे, वास्तविक environments में network latency के कारण वह अधिक तेज़ हो सकता है
- SQLite horizontal scaling को आसान बनाता है और user installation व configuration का बोझ कम करता है
synchronization architecture बनाना
- v1(Redis) में, जब user rules अपडेट करता था, तो Redis data store में update हो जाता था
- v2(SQLite) में, client समय-समय पर updated rules की जाँच करता है और नया SQLite database डाउनलोड करता है
SQLite distributed architecture
- SQLite DB को हर computing instance के साथ sync करके database bottleneck समस्या हल की जाती है
निष्कर्ष
- SQLite-आधारित v2 architecture कई sites को हमलों के दौरान टिके रहने और online बने रहने में मदद करता है
- यह users पर कम बोझ डालता है और अधिक सुरक्षित, security-hardened internet प्रदान करता है
GN⁺ का सार
- यह लेख Redis से SQLite migration की प्रक्रिया और उसके कारणों को समझाता है
- SQLite network latency कम करके performance बेहतर बनाता है और user installation व configuration का बोझ घटाता है
- SQLite की distributed architecture database bottleneck समस्या का समाधान करती है
- यह लेख इस बात पर उपयोगी insight देता है कि web application firewall को आसानी से deploy करके तेज़ी से कैसे चलाया जाए
1 टिप्पणियां
Hacker News की राय
हर application server द्वारा SQLite database file की कॉपी रखकर उसे समय-समय पर बदलने वाले मॉडल में रुचि है
Redis की read/write latency query की गई keys की संख्या के अनुपात में बढ़ती है
Dataset 12 लाख items का दिखता है, लेकिन वास्तव में बड़ा नहीं है
mmapको support करे, तो सीधे IP list का उपयोग करना बेहतर होगाNeon के internal hackathon में Redis protocol को Postgres queries में बदलने वाला एक Node.js server लिखा गया था
RailsWorld 2023 में Redis को लेकर नकारात्मक माहौल था
SQLite server side पर बिना replication के अच्छी तरह काम करने वाला एक niche use case लगता है
Redka नाम का एक project है, जो Redis को SQLite के रूप में implement करता है
सबसे अच्छा उद्धरण: "SQLite client/server database से प्रतिस्पर्धा नहीं करता। SQLite
fopen()से प्रतिस्पर्धा करता है।"Redis पारंपरिक RDBMS की तुलना में तेज़ है, लेकिन इसके लिए management चाहिए
Benchmarking बहुत सटीक दिखने वाली संख्याओं से खुद को धोखा देने की एक अँधेरी कला है