1 पॉइंट द्वारा GN⁺ 2024-09-26 | 1 टिप्पणियां | WhatsApp पर शेयर करें

पृष्ठभूमि

  • 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 टिप्पणियां

 
GN⁺ 2024-09-26
Hacker News की राय
  • हर application server द्वारा SQLite database file की कॉपी रखकर उसे समय-समय पर बदलने वाले मॉडल में रुचि है

    • इसका उपयोग web application firewall rules के लिए किया जाता है
    • इसे feature flag configuration के लिए भी इस्तेमाल किया जा सकता है
    • feature flags में अपडेट होने में कुछ सेकंड लगें तो भी ठीक है
  • Redis की read/write latency query की गई keys की संख्या के अनुपात में बढ़ती है

    • Postgres और Redis का उपयोग करने वाला monolithic app अच्छी तरह काम कर रहा था
    • Redis single-threaded है, इसलिए बड़े पैमाने पर read operations दूसरे कामों को धीमा कर सकते हैं
    • Redis key या छोटे fixed key sets को पढ़ने और लिखने के लिए अच्छा है
    • यह दिलचस्प था कि SQLite का प्रदर्शन local Redis instance की तुलना में अच्छा था
  • Dataset 12 लाख items का दिखता है, लेकिन वास्तव में बड़ा नहीं है

    • IPv4 addresses 4.8MB हैं, और साधारण compression से इसे और छोटा किया जा सकता है
    • अगर Ruby mmap को support करे, तो सीधे IP list का उपयोग करना बेहतर होगा
  • Neon के internal hackathon में Redis protocol को Postgres queries में बदलने वाला एक Node.js server लिखा गया था

    • यह एक मज़ेदार hacking project था
  • RailsWorld 2023 में Redis को लेकर नकारात्मक माहौल था

    • यह मान लिया गया था कि Redis server की ज़रूरत होती है
    • Redis के साथ अनुभव कम होने के कारण यह जिज्ञासा थी कि क्या मौजूदा ecosystem Redis के खिलाफ है
  • SQLite server side पर बिना replication के अच्छी तरह काम करने वाला एक niche use case लगता है

    • दूसरा विकल्प memory में लोड की गई static files हो सकती हैं
    • SQLite एक अच्छा विकल्प है
  • Redka नाम का एक project है, जो Redis को SQLite के रूप में implement करता है

  • सबसे अच्छा उद्धरण: "SQLite client/server database से प्रतिस्पर्धा नहीं करता। SQLite fopen() से प्रतिस्पर्धा करता है।"

  • Redis पारंपरिक RDBMS की तुलना में तेज़ है, लेकिन इसके लिए management चाहिए

    • हर database को किसी न किसी स्तर का management चाहिए
    • अगर joins की चिंता न करें, तो rows insert करना और search करना भी बहुत तेज़ है
  • Benchmarking बहुत सटीक दिखने वाली संख्याओं से खुद को धोखा देने की एक अँधेरी कला है