Çfarë është S3 Select?

Sipas "dokumenteve" zyrtare të AWS,

Me Amazon S3 Select, ju mund të përdorni deklarata të thjeshta të gjuhës së strukturuar të pyetjeve (SQL) për të filtruar përmbajtjen e një objekti Amazon S3 dhe për të marrë vetëm nëngrupin e të dhënave që ju nevojiten. Duke përdorur Amazon S3 Select për të filtruar këto të dhëna, ju mund të zvogëloni sasinë e të dhënave që transferon Amazon S3, gjë që zvogëlon koston dhe vonesën për marrjen e këtyre të dhënave.

Ju mund të përdorni Amazon S3 Select për të kërkuar objekte që kanë vetitë e formatit të mëposhtëm:

CSV, JSON dhe Parket — Objektet duhet të jenë në format CSV, JSON ose Parket

UTF-8 — UTF-8 është i vetmi lloj kodimi që mbështet Amazon S3 Select

GZIP ose BZIP2 — Skedarët CSV dhe JSON mund të kompresohen duke përdorur GZIP ose BZIP2. GZIP dhe BZIP2 janë formatet e vetme të kompresimit që Amazon S3 Select mbështet për skedarët CSV dhe JSON. Amazon S3 Select mbështet kompresimin kolone për parket duke përdorur GZIP ose Snappy. Amazon S3 Select nuk mbështet kompresimin e të gjithë objektit për objektet e parketit.

Ai funksionon më mirë me skedarët e ngjeshur, sepse me kompresim, numri i bajteve të skanuara zvogëlohet ndjeshëm dhe do të përjetoni performancë më të mirë me skedarë më të mëdhenj kur kompresohen.

Për qëllimin e këtij postimi, unë do të tregoj një shembull duke përdorur formatin JSON dhe një shembull tjetër duke përdorur një format CSV.

Skedari JSON për këtë shembull do të duket kështu -

Ju mund të ekzekutoni pyetjen S3 Select direkt në tastierën AWS

dhe CSV do të duket kështu

Dhe përsëri, ju mund të ekzekutoni pyetjen S3 Select në tastierën AWS si kjo

Dhe, tani te funksioni TypeScript që mund të kërkojë në atë objekt të grupit JSON.

Funksioni s3Select pret një objekt të llojit S3.SelectObjectContentRequest.

S3.SelectObjectContentRequest pret këto atribute të mëposhtme

Kovë: Emri i kovës S3 ku është objekti juaj

Çelësi: Çelësi i objektit në S3

Typi i shprehjes: Lloji i shprehjes së dhënë (Mund të jetë varg ose SQL)

InputSerialization: Përshkruan formatin e të dhënave në objektin që kërkohet. Në shembullin e mësipërm ka një objekt fëmijë me një çelës JSONmund të zëvendësohet me CSV kur kërkon një skedar CSV.

OutputSerialization:Përshkruan formatin e të dhënave që dëshironi të kthejë Amazon S3 në një përgjigje. Në, shembulli i mësipërm ka gjithashtu një objekt fëmijë me një çelës JSON dhe mund të zëvendësohet me CSV kur kërkon një skedar CSV.

Record Delimiter:Vlera e përdorur për të ndarë regjistrimet individuale në dalje. Nëse nuk specifikohet asnjë vlerë, Amazon S3 përdor një karakter të linjës së re (‘\n’).

Kërkesa e mësipërme do të kthejë një rekord që përputhet për id të kaluar në pyetje. Për shembull, nëse kaloni '88cda7' si id, atëherë do ta merrni këtë

Dhe tani për të kërkuar një skedar CSV, pyetja do të duket kështu

Janë disa ndryshime të dukshme nga kërkimi i një skedari JSON

FileHeaderInfo: Përshkruan rreshtin e parë të hyrjes. Vlerat e vlefshme janë -

ASNJË: Rreshti i parë nuk është një kokë.

INJORO: Rreshti i parë është një titull, por nuk mund të përdorni vlerat e kokës për të treguar kolonën në një shprehje. Ju mund të përdorni pozicionin e kolonës (si p.sh. _1, _2, ...) për të treguar kolonën (ZGJIDH s._1 NGA OBJEKTI s).

Përdor: Rreshti i parë është një titull dhe ju mund të përdorni vlerën e titullit për të identifikuar një kolonë në një shprehje.

Record Delimiter:Një karakter i vetëm i përdorur për të ndarë regjistrimet individuale në hyrje. Në vend të vlerës së paracaktuar, mund të specifikoni një kufizues arbitrar

Field Delimiter:Një karakter i vetëm që përdoret për të ndarë fushat individuale në një rekord. Ju mund të specifikoni një kufizues arbitrar.

Rezultati i ekzekutimit të mësipërm do t'ju marrë një përgjigje si kjo

Ju mund të merrni një shembull pune të kësaj si një funksion lambda nga depoja ime GitHub këtu - https://github.com/metacollective9/url-shortner

Faleminderit që lexoni dhe nëse doni të më mbështesni, atëherë ju lutem më ndiqni dhe mbështesni komunitetin e gjerë duke u bërë anëtar "https://medium.com/@metacollective/membership"