Blob Storage and Blob 筆記

Blob Storage是一種用於儲存非結構化資料的雲端儲存服務,廣泛應用於各種場景,例如影像儲存、影片串流、資料備份等等。AWS S3、MinIO 等服務就是用來儲存 Blob 的 object storage,這篇文章將介紹Blob的概念、Blob Storage和傳統儲存方式的差異和好處。

什麼是 Blob

在Object Storage中,Blob是儲存的基本單位,且彼此之間獨立。Blob沒有任何Schema或是格式的限制,他們可以是任何類型的資料,例如文字、影像、影片、音訊等等。雖然Blob通常被指涉成Binary Large Object,但似乎在Object Storage中,Blob只是指涉儲存的基本單位和概念,而不一定是二進制的資料。

在Blob Storage中,每個Blob會包含以下幾個部分:

  • Data: 內容本身,如影片。
  • Metadata: 與內容相關的資訊,例如檔案大小、檔案類型等等。
  • Unique identifier: 用來識別Blob的唯一ID,可用來找到該blob。

Blob Storage

我在Cloudflare的文件中找到了一篇介紹Blob Storage的文章,裡面有一個很好的比喻來說明Blob Storage和傳統的儲存方式的差異。裡面是這樣寫的:


想像一下,Alice 將她的衣服成套存放,非常方便穿戴,而 Bob 只是將他的衣服扔成一堆。Bob 的方法更像是 Blob 儲存體:任何一件衣服都可以放入他的堆中,並且不必以任何特定的方式整理衣服。Bob 的方法是有利的,因為他可以快速且幾乎無休止地往他的衣服堆上繼續放衣服:他只要繼續往上放就可以了,而不用像 Alice 那樣摺疊和整理它們。

儘管 Bob 的服裝儲存方法讓他難以快速找到某一件特定的衣服,但許多組織需要類似的資料儲存方法。他們有大量資料,他們需要儲存大量資料,而無需將其組織到階層中或將其調整為給定格式。

相較於傳統階層式的儲存方式(像是資料夾),Blob Storage是以物件為儲存的基本單位,而每個物件都有一個ID可以讓使用者存取。通常被用來存圖片、影片、logs、備份、機器學習訓練資料。

這樣的儲存方式有幾個好處:

  • Scalability更好,增加或減少伺服器就能做到水平擴展,
  • 一個Object可以分散在不同的伺服器上,所以不會有單一伺服器的瓶頸。
  • 因為每個Object都是獨立的,所以可以獨立地存取,彈性更高。
  • 利用HTTP API可以直接存取Object,在開發上更方便。
  • 更便宜有效率,用多少HTTP Request流量、儲存空間就算多少錢

缺點:

  • 不能作為一般資料庫使用,因為太慢

  • 不適合用於儲存需要頻繁更新的資料。

  • 操作都是以Object為單位,所以沒辦法作部分更改(例如append a line要整個拿出來改再放回去),有效能問題

特性 Blob Storage 傳統檔案儲存
可擴展性 非常好 較差
效能 較差 較好
成本 較低 較高
適用場景 影像儲存、影片串流、資料備份 頻繁操作的資料庫、精細的權限掌控

以上是我對Blob Storage的理解,如果有錯誤或是補充的地方,歡迎留言指教。

參考資料:

作者

Yen-Ting Li

發表於

2024-02-18

更新於

2024-02-18

許可協議

評論