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

S3 फ़ाइलों के लिए है, लेकिन फ़ाइल सिस्टम नहीं है

  • Amazon S3, 2006 में लॉन्च की गई मूल cloud तकनीकों में से एक है। इसे "object storage" कहा जाता है, लेकिन व्यवहार में यह फ़ाइलों के लिए है।
  • S3 को "Amazon Cloud Filesystem" मानना लोगों को S3 अपनाने के लिए प्रेरित करने वाला एक उपयोगी विश्वास हो सकता है, लेकिन वास्तव में S3 फ़ाइल सिस्टम नहीं है।

फ़ाइल सिस्टम क्या है, और module "depth"

  • Unix file API पाँच बुनियादी functions से बना है, और यही फ़ाइल पढ़ने-लिखने के लिए ज़रूरी लगभग सब कुछ देता है।
  • ये functions buffering, page cache, fragmentation, permissions, IO scheduling जैसी कई समस्याओं को संभालते हैं, लेकिन उन्हें user के सामने उजागर नहीं करते।
  • Deep modules का फ़ायदा यह है कि user जटिलता के बारे में सोचे बिना functionality का उपयोग कर सकता है।

S3 की विशेषताएँ (यह भी deep है)

  • S3, Unix file system API को फिर से implement नहीं करता, और उसका मूल call pattern अलग है।
  • S3 API, Unix file API से सरल है, लेकिन इसमें objects को आंशिक रूप से overwrite न कर पाने की सीमा है।

फ़ाइल सिस्टम software, खासकर database, Amazon S3 पर migrate नहीं हो सकता

  • Databases को data स्टोर करने की जगह चाहिए होती है, और यह आम तौर पर file system की विभिन्न files में रखा जाता है।
  • Databases आंशिक overwrite capability पर बहुत अधिक निर्भर करते हैं, और S3 में यह संभव नहीं है।

S3 क्या अच्छा करता है और क्या नहीं

  • S3 की ताकत यह है कि read और write bandwidth बहुत अधिक है।
  • लेकिन S3 में partial overwrite, rename या move operations नहीं हैं, और files की सूची निकालना भी धीमा है।
  • इसके बावजूद, S3 maintenance कम करता है और backup setup, replication, provisioning जैसे कामों को सरल बनाता है।

संगठनों के बीच module depth का महत्व

  • यह आश्चर्य की बात नहीं है कि S3 पहला लोकप्रिय cloud API बना, क्योंकि deep APIs संगठनों के बीच जटिलता प्रबंधित करने में मदद करते हैं।
  • SAP जैसे जटिल enterprise software को integrate करना कष्टदायक काम है, और इसका एक कारण यह है कि SAP deep module नहीं है।

अन्य जानकारी

  • यह लेख यह सुझाने के लिए नहीं है कि S3 को बढ़ा-चढ़ाकर पेश किया गया है, बल्कि यह deep modules बनाम अपेक्षाकृत shallow modules की अवधारणा समझाता है।
  • कुछ databases ऐसे डिज़ाइन किए गए हैं कि वे storage के लिए S3 API का उपयोग करें; यह संभव है, लेकिन पारदर्शी नहीं है।
  • S3 में कई file formats, disk की तुलना में खराब performance देते हैं।

GN⁺ की राय

  • यह समझना महत्वपूर्ण है कि S3, file system का replacement नहीं है, बल्कि खास use cases के लिए optimized storage solution है। उदाहरण के लिए, यह बड़े immutable files को स्टोर और ट्रांसफर करने के लिए उपयुक्त है, लेकिन database जैसी applications के लिए नहीं, जहाँ बार-बार partial updates की ज़रूरत होती है।
  • S3 की performance और scalability बहुत ऊँची है, लेकिन cost efficiency और management complexity को देखते हुए यह हर project के लिए सही नहीं है। उदाहरण के लिए, open source project MinIO उन संगठनों के लिए अच्छा विकल्प हो सकता है जो अपनी infrastructure पर S3-compatible storage बनाना चाहते हैं।
  • S3 का उपयोग करते समय data consistency, network cost, access control जैसी अतिरिक्त बातों पर भी विचार करना पड़ता है, और ये तत्व पूरे system design को प्रभावित कर सकते हैं।
  • भले ही S3 के use cases सीमित हों, लेकिन data lake या backup solution जैसी कुछ applications में यह बेहद शक्तिशाली tool है। data को सुरक्षित रूप से स्टोर करने और ज़रूरत पड़ने पर तेज़ी से retrieve करने की इसकी क्षमता कई businesses के लिए महत्वपूर्ण मूल्य प्रदान करती है।
  • यह लेख S3 की technical details और वास्तविक use cases की गहरी समझ देकर तकनीकी निर्णय लेने में मदद कर सकता है।

1 टिप्पणियां

 
GN⁺ 2024-03-11
Hacker News राय
  • मैंने S3 की durability को लेकर कभी कोई समस्या नहीं सुनी, लेकिन मैंने इन दावों को टेस्ट होते भी नहीं देखा। इन दावों को लेकर जिज्ञासा है।

    • S3 की durability इंडस्ट्री में अग्रणी है, और पारंपरिक file system से इसकी तुलना नहीं की जा सकती।
    • AWS का availability zone isolation दूसरे cloud providers से बेहतर है।
    • S3 को data integrity और प्राकृतिक आपदाओं को लेकर बहुत अधिक चिंता के साथ डिज़ाइन किया गया है।
    • S3 इतने बड़े scale पर चलाया जाता है कि यह 'bit rot' तक detect कर सकता है।
    • महत्वपूर्ण data को S3 के अलावा कहीं और store नहीं करूंगा।
    • स्रोत: S3 batch system लिखने वाला व्यक्ति।
  • file list करना धीमा है। S3 में read और write बहुत तेज़ हैं, लेकिन file list करना बहुत धीमा है।

    • S3 में तेज़ read और write उपयोगी बात नहीं है, बल्कि file list करने की सुविधा उपयोगी है।
    • versioning न किए गए bucket में दिए गए prefix को list करना व्यावहारिक रूप से constant time में संभव है।
    • data को कई तरीकों से partition किया जा सकता है और performance की चिंता किए बिना ज़रूरी identifiers इस्तेमाल किए जा सकते हैं।
  • हाल ही में यह देखकर हैरानी हुई कि file list करना धीमा है। S3 में assets manage करने के लिए script पर काम करते हुए समझ आया कि file list cache की ज़रूरत है।

    • लगभग 100,000 root-level directories हैं, और हर एक में कुछ directories हैं जिनमें कुछ files हैं।
    • files को recursively list करने में 15 मिनट लगते हैं।
    • सोचता हूँ Amazon ने अब तक इस समस्या को हल क्यों नहीं किया।
  • Amazon S3 मूल cloud तकनीक है, जिसे 2006 में लॉन्च किया गया था। उस समय "object" लोकप्रिय शब्द था और S3 को "object store" कहा गया।

    • S3 file system नहीं बल्कि object store है।
    • S3 file नहीं है, और file system भी नहीं है।
    • file abstraction से जो अपेक्षा की जाती है, वह mutability है।
    • S3 immutable objects की mutable list प्रदान करता है।
    • S3 अलग समस्या हल करता है, और इसे file system जैसा दिखाने की कोशिश ग्राहकों की गलतफहमी से आती है।
  • Apache Arrow के object_store और Apache OpenDAL द्वारा दिए गए API की तुलना पर चर्चा है।

    • Apache OpenDAL एक library है जो S3 सहित कई cloud storage के लिए FS-जैसा API देती है।
    • GreptimeDB और Databend जैसे कुछ database systems cloud storage में data access करने के लिए OpenDAL का उपयोग करते हैं।
    • Alluxio और JuiceFS जैसी दूसरी solutions भी S3 के ऊपर file system-जैसा interface मैनेज करती हैं।
  • file system software, खासकर database, को Amazon S3 पर port नहीं किया जा सकता।

    • लेकिन किया जा सकता है।
    • हर INSERT/UPDATE/DELETE पर पूरी DB file को overwrite करने की ज़रूरत नहीं होती।
    • SQLite के मामले में Litestream जैसे tools हैं जो S3 पर replication और restore को support करते हैं।
  • dataset और model checkpoint store करने के लिए local "S3" के रूप में Minio का उपयोग करता हूँ।

    • Minio में बहुत सी ऐसी features हैं जिनकी ज़रूरत नहीं है।
    • CRUD files कर सकने और list दिखा सकने वाली न्यूनतम S3-जैसी "चीज़" के लिए अभी सबसे अच्छा self-hosted, single-node विकल्प क्या है?
  • S3 की बात हो रही है तो Backblaze B2 का ज़िक्र करना उचित है।

    • S3 की तुलना में 3 गुना कम कीमत पर मैं इससे बहुत संतुष्ट हूँ।
  • S3 का गलत तरीके से file system की तरह इस्तेमाल किया जा सकता है।

    • S3 objects चाहता है, और यहाँ 512 या 4096 byte objects हैं जिन्हें clusters कहा जाता है।