4 पॉइंट द्वारा xguru 2023-07-07 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • SQLite डेटाबेस को cloud storage में स्टोर करने के बाद, पूरे DB को डाउनलोड किए बिना भी read और write संभव बनाने वाला सिस्टम
    • फिलहाल Azure Blob Storage और Google Cloud Storage का समर्थन
  • Block Cache VFS मॉड्यूल का उपयोग: daemonless मोड (read/write) और daemon मोड (read-only) में काम करता है

GN⁺ द्वारा संक्षेपित सामग्री

  • "cloud-supported SQLite" (CBS) सिस्टम डेटाबेस को cloud storage account में स्टोर करता है और पूरे डेटाबेस को डाउनलोड किए बिना storage client को उस तक access करने देता है।
  • कई client एक साथ डेटाबेस को access कर सकते हैं, लेकिन केवल एक client ही डेटाबेस में write कर सकता है।
  • CBS फिलहाल Azure Blob Storage और Google Cloud Storage को support करता है, और अन्य cloud storage systems को भी support कर सकता है।
  • SQLite डेटाबेस को fixed-size blocks में बाँटकर cloud storage system में स्टोर किया जाता है।
  • यह सिस्टम cloud storage container management के लिए base elements, remote database के लिए local access देने वाली daemon process, और cloud database access के लिए VFS module से बना है।
  • CBS का उपयोग करने के लिए application को आवश्यक C files और header files को build और link करना होगा, और libcurl तथा openssl से link करना होगा।
  • सिस्टम को automated test suite का उपयोग करके test किया जा सकता है।
  • डेटाबेस को command-line tool का उपयोग करके cloud storage account में upload किया जा सकता है।
  • cloud storage में स्टोर किए गए डेटाबेस तक access करने के लिए VFS बनाना, container को attach करना, database handle खोलना, और SQL script चलानी होती है।
  • सिस्टम नए cloud storage systems को support करने और virtual tables को implement करने के लिए API प्रदान करता है।
  • इस लेख में cloud storage system में secure container के उपयोग पर चर्चा की गई है।
  • container को secure या insecure तरीके से attach किया जा सकता है, और secure connection AES OFB encryption का उपयोग करके डेटा को encrypt करता है।
  • local client को daemon process से encryption key प्राप्त करने के लिए वैध cloud storage credentials की आवश्यकता होती है।
  • इस लेख में cloud storage system के लिए "azure" और "google" built-in modules का उल्लेख है।
  • CBS API और command-line tools के लिए module specification, user name, और authentication value की आवश्यकता होती है।
  • इस लेख में "azure" module का विवरण और authentication के लिए SAS token बनाने की विधि दी गई है।
  • "google" module को CBS को Google Cloud Storage से जोड़ने के लिए project ID और access token की आवश्यकता होती है।
  • इस लेख में कई clients से concurrent access और changes की पुष्टि के लिए container को poll करने की आवश्यकता का उल्लेख है।
  • Blockcachevfs तीन PRAGMA statements को support करता है: bcv_upload, bcv_poll, और bcv_client।
  • virtual table interface में bcv_container और bcv_database tables शामिल हैं।
  • bcv_container table में जुड़े हुए containers की जानकारी होती है, और bcv_database table में हर container के डेटाबेस की जानकारी होती है।
  • इस लेख में blockcachevfs डेटाबेस की विभिन्न tables की संरचना और कार्यों पर चर्चा की गई है।
  • "bcv_database" table में डेटाबेस के local changes की जानकारी होती है।
  • "bcv_http_log" table, VFS या जुड़े हुए daemon द्वारा किए गए HTTP requests को रिकॉर्ड करता है।
  • "bcv_kv" table application को cloud storage container में डेटा लिखने की अनुमति देता है।
  • "bcv_kv_meta" table cloud storage server के HTTP headers पर read-only access देता है।
  • इस लेख में blockcachevfs डेटाबेस में विभिन्न operations के लिए command-line reference भी दिया गया है।
  • daemon command blockcachevfsd process को server की तरह चलाने और clients से connections स्वीकार करने देता है।
  • daemon process configuration और logging के लिए विभिन्न options को support करती है।

1 टिप्पणियां

 
GN⁺ 2023-07-07
Hacker News की राय
  • एक डेवलपर ने बड़े SQLite डेटाबेस को chunks में serve करने और HTTP range requests के ज़रिए query करने का अपना अनुभव साझा किया
  • इस प्रक्रिया में मदद करने वाली sql.js-httpvfs नाम की लाइब्रेरी का उल्लेख किया गया
  • डेवलपर ने 350MB के SQLite डेटाबेस को छोटे हिस्सों में बाँटकर GitHub पर अपलोड किया
  • प्रोजेक्ट देखने और console व network tab में इसे test करने की सिफारिश की गई
  • एक अन्य टिप्पणीकार ने remote data storage इस्तेमाल करते समय cache consistency, concurrency, network interruption और authentication समस्याओं को लेकर चिंता जताई
  • एक सरल समाधान के रूप में सुझाव दिया गया कि डेटाबेस को समय-समय पर tmpfs file system में कॉपी किया जाए और फिर object storage में कॉपी किया जाए
  • इसके फ़ायदों के तौर पर समस्या का समाधान, सस्ती और तेज़ file copy, कोई external daemon नहीं, सरल global lock, thread safety, network interruption न होना, और external authentication जैसी बातों पर ज़ोर दिया गया
  • एक अन्य टिप्पणीकार ने सवाल उठाया कि जब PostgreSQL पहले से यही समस्या हल करता है, तो embedded database SQLite को cloud service पर deploy करने की ज़रूरत क्यों है
  • उनका तर्क है कि storage को cloud में ले जाने से latency बढ़ेगी और सादगी कम हो जाएगी
  • एक अन्य टिप्पणीकार पूछता है कि क्या SQLite के लिए pg_dump और mysqldump के बराबर कोई command मौजूद है
  • यह उल्लेख किया गया कि सिस्टम फ़िलहाल Azure Blob Storage और Google Cloud Storage को support करता है, जबकि AWS शामिल न भी हो सकता है
  • एक अन्य टिप्पणीकार को यक़ीन नहीं है कि यह फीचर आधिकारिक रूप से supported है या सिर्फ़ "तकनीकी रूप से संभव है" वाली स्थिति है
  • वह यह भी जानना चाहता है कि क्या external cloud storage पर Datasette चलाया जा सकता है
  • एक अन्य टिप्पणीकार ने इस बात पर चिंता जताई कि डेटाबेस में एक समय में सिर्फ़ एक client ही लिख सके, यह कैसे सुनिश्चित किया जाएगा
  • यह बताया गया कि SQLite की VFS layer cloud object storage को implement करने के लिए काफ़ी flexible है और आसानी से इस्तेमाल की जा सकती है
  • यह भी उल्लेख किया गया कि caching implementation का पेचीदा हिस्सा हो सकती है
  • एक अन्य टिप्पणीकार ने cloud में SQLite इस्तेमाल करने के बजाय किसी दूसरे relational database के उपयोग के विचार पर उलझन जताई, क्योंकि SQLite मूल रूप से local use के लिए डिज़ाइन किया गया था।