每日科普-计算机专业名词-blob

319 阅读7分钟

如果你去查英语词典,好奇blob是什么意思?你会看到blob主要有以下词性和含义:

名词

  1. (不明形状的)一团,一滴,一串
    • 例如:a blob of ink(一滴墨水);a blob of jam(一团果酱)。在计算机领域,它常用来表示二进制大对象(Binary Large Object)。
  2. (科学幻想作品中的)太空生物,黏液状小生物
    • 例如在一些科幻电影或小说中,会描述外星的小型、胶状、类似水母的“blob”生物。

动词

  1. (使)成块,成团;(使)聚集
    • 例如:The paint has blobbed on the wall.(油漆在墙上形成了一团团污渍。)

在计算机世界,它则是一个术语,是 Binary Large Object的缩写。

二进制大对象Blob

在计算机领域,BlobBinary Large Object 的缩写,中文通常翻译为“二进制大对象”。Blob 用于表示和存储大量的二进制数据,这些数据可以是图像、音频、视频、文档等各种类型的文件。以下是关于 Blob 在计算机领域中的详细说明:

1. 定义与特点

  • 二进制数据:Blob 主要用于存储非结构化的二进制数据,区别于文本数据(如 JSON、XML 等)。
  • 大容量:Blob 通常用于处理较大的数据文件,如多媒体内容,因此称为“大对象”。
  • 不可分割性:作为一个整体进行存储和管理,Blob 数据通常不进行内部结构解析。

2. 应用场景

  • 数据库存储

    • 许多关系型数据库(如 MySQL、PostgreSQL)和 NoSQL 数据库(如 MongoDB)支持 Blob 类型的字段,用于存储文件数据。
    • 例如,将用户上传的图片或文档直接存储在数据库中,便于管理和备份。
  • 文件系统与云存储

    • 在分布式文件系统或云存储服务(如 Amazon S3、阿里云 OSS)中,Blob 用于表示存储的对象,每个 Blob 对应一个具体的文件或数据块。
  • Web 开发

    • 在 Web 应用中,Blob 常用于处理文件上传、下载以及通过 AJAX 或 Fetch API 进行二进制数据的传输。
    • 例如,使用 JavaScript 的 Blob 对象可以动态生成文件并提供下载链接。

3. 具体实现

  • 数据库中的 Blob

    • MySQL:支持 BLOB 数据类型,包括 TINYBLOBBLOBMEDIUMBLOBLONGBLOB,根据存储的数据大小选择合适的类型。

      CREATE TABLE images (
          id INT PRIMARY KEY,
          name VARCHAR(100),
          data LONGBLOB
      );
      
    • PostgreSQL:使用 BYTEA 类型来存储二进制数据。

      CREATE TABLE documents (
          id SERIAL PRIMARY KEY,
          filename VARCHAR(100),
          content BYTEA
      );
      
  • 编程语言中的 Blob

    • JavaScript

      • Blob 对象表示不可变的、原始数据的类文件对象,常用于处理文件数据。
      const blob = new Blob(["Hello, world!"], { type: "text/plain" });
      const url = URL.createObjectURL(blob);
      const a = document.createElement("a");
      a.href = url;
      a.download = "hello.txt";
      a.click();
      
    • Python

      • 在 Python 中,虽然没有专门的 Blob 类型,但可以使用 bytesbytearray 来表示二进制数据,或使用数据库驱动中的 Blob 支持。
      with open('image.png', 'rb') as f:
          blob_data = f.read()
      # 将 blob_data 存储到数据库中
      

4. 优缺点

  • 优点

    • 集中管理:将文件数据存储在数据库中,便于备份、恢复和事务管理。
    • 简化架构:减少对独立文件存储系统的依赖,简化应用架构。
  • 缺点

    • 性能问题:对于非常大的 Blob 数据,数据库的性能可能受到影响,读取和写入速度较慢。
    • 扩展性差:随着数据量的增长,数据库的存储和管理压力增大,不利于水平扩展。

    因此,在实际应用中,常常采用 混合存储 的方式,将 Blob 数据存储在专门的文件存储系统(如对象存储)中,而在数据库中仅保存文件的元数据和访问路径。

5. 现代应用中的替代方案

随着技术的发展,许多现代应用选择将大型二进制数据存储在专门的文件存储服务中,如:

  • 对象存储:Amazon S3、Google Cloud Storage、阿里云 OSS 等,提供高扩展性和高效的文件管理。
  • 分布式文件系统:HDFS、Ceph 等,适用于大数据处理和分布式计算环境。

在这些方案中,数据库仅用于存储文件的元信息(如文件名、路径、大小、创建时间等),而实际的文件数据则存储在专门的存储系统中,这种方式能够更好地平衡性能、扩展性和管理复杂度。

总结

Blob 在计算机领域主要用于表示和存储大量的二进制数据。尽管在某些场景下直接将 Blob 数据存储在数据库中具有便利性,但随着数据量的增长和应用需求的提高,越来越多的应用选择将 Blob 数据迁移到专门的文件存储系统中,以实现更高效和可扩展的数据管理。

为什么不是 large binary object,即 lbob?

“Blob” 这个名称在计算机领域中被广泛接受和使用,主要是由于历史原因、简洁性以及社区约定俗成的惯例。以下是一些具体原因,解释为什么 “Blob” 被命名为 “Blob” 而不是 “lbob” 或其他变体:

1. 历史起源

  • 早期数据库系统:Blob 这个术语最早出现在早期的数据库系统中,用于表示“二进制大对象”(Binary Large Object)。这个名称简洁明了,直接反映了其用途。
  • 自然语言联想:在英语中,“blob” 本身就有“一团”、“块”的意思,形象地描述了大型二进制数据的特性。这种自然语言的联想使得 “Blob” 成为一个直观且易于理解的术语。

2. 简洁性和易记性

  • 简短:四个字母的单词更加简洁,便于记忆和使用。相比之下,“lbob” 不仅不符合英语拼写习惯,而且读起来也不够流畅。
  • 发音简单:“Blob” 的发音简单明了,而 “lbob” 则显得不自然,容易引起混淆。

3. 社区和行业标准

  • 广泛接受:随着时间的推移,“Blob” 已经成为数据库和编程领域的标准术语。几乎所有相关的文档、教程和工具都使用 “Blob” 这一名称,使得更换为其他名称(如 “lbob”)没有实际意义。
  • 一致性:保持术语的一致性有助于减少学习曲线和沟通成本。开发者、数据库管理员和工程师都熟悉 “Blob” 这一术语,无需额外学习新的名称。

4. 语义清晰

  • 描述性强:“Blob” 直观地传达了其存储的是“大块”的二进制数据,而 “lbob” 则没有明显的语义关联,无法直观反映其用途。
  • 避免混淆:使用 “Blob” 可以避免与其他技术术语混淆,而 “lbob” 可能会让人联想到其他概念或缩写,增加理解难度。

5. 文化和语言因素

  • 英语习惯:在英语中,缩写和首字母缩略词通常保留原有单词的拼写和发音。“Blob” 符合这一习惯,而 “lbob” 则打破了这种惯例,显得不自然。
  • 技术社区惯例:技术领域内的许多术语和命名约定都遵循一定的惯例和标准,“Blob” 作为其中之一,已经成为一种惯例,改变它可能会引起不必要的混乱。

6. 技术和实现的历史演变

  • 早期实现:在早期的数据库实现中,Blob 数据通常被视为不可分割的大块数据,名称中的 “BLOB” 强调了其“大”和“块”的特性。随着技术的发展,虽然 Blob 的实现方式有所变化,但名称依然保留下来,成为一种历史遗产。
  • 兼容性:保持术语的一致性有助于维护向后兼容性,确保现有的代码和文档无需因名称变更而进行大规模修改。

总结

“Blob” 之所以被称为 “Blob” 而不是 “lbob”,主要是因为它在语义上更直观、简洁且易于记忆,同时符合英语的语言习惯和技术社区的命名惯例。此外,历史原因和广泛接受度也使得 “Blob” 成为描述二进制大对象的标准术语。更换为其他名称不仅没有明显优势,反而可能带来混淆和不便。