Service Upload To Blob Storage

==⚠ Switch to EXCALIDRAW VIEW in the MORE OPTIONS menu of this document. ⚠== You can decompress Drawing data with the command palette: 'Decompress current Excalidraw file'. For more info check in plugin settings under 'Saving'

Excalidraw Data

Text Elements

API gateway ^rf5kUexk

User ^imrhSwWj

(1) Send upload request ^SR0JTSF1

(3.1) Serve upload URL to user ^zjZaTnQ3

Metadata service ^TyglTuRV

(2) Create metadata ^c8H0uK0y

Metadata database ^GRjlXhLe

Blob service ^HO0U8Db2

(4.1) Upload file ^4eYfDT1V

(4.2) Get metadata ^enLzQEOD

Blob storage ^1BLJX5TA

(4.3) Upload chunk ^cbsuYzRr

Blob storage ^GzVDL5b4

Cold storage ^FwTKQdcG

(3) Serve Signed upload URL to user ^gCEAOMyU

(4) Upload the file ^SxWo7sxS

Service upload to blob storage ^3zqwPbql

The blob service directly handle file uploads

Therefore we have control over:

  • File splitting
  • Encryption

^cBINab0a

Using our own blob services, we have the control over

  • Delta sync (only upload the difference in block)
  • Compression
  • File splitting
  • Encryption

^05REdSXE

Block:
id: bigInt
order: bigInt
file_version_id: bigInt

File:
id: bigInt
latestVersion: id

FileVersionId:
id: bigInt
file_id: bigInt ^9XCRf4Hq

%%

Drawing

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

%%