Azure 数据基础知识探究核心数据概念-半结构化数据和非结构化数据

描述非关系数据的类型

非关系数据通常分为两类:半结构化和非结构化。 

什么是半结构化数据?

半结构化数据是包含字段的数据。 每个实体中的字段不必相同。 只需基于每个实体依据来定义字段。 上一单元中介绍的客户实体就是半结构化数据的示例。 数据格式必须以这样一种方式来设置,即应用程序可以对其进行分析和处理。 执行此操作的常用方法是将每个实体的数据存储为 JSON 文档。 术语 JSON 代表 JavaScript 对象表示法;它是 JavaScript 应用程序用于在内存中存储数据的格式,但也可用于在文件中读取和写入文档。

JSON 文档括在大括号({ 和 })中。 每个字段都有名称(标签),后接冒号,然后是字段的值。 字段可包含简单值或子文档(每个都以大括号开头和结尾)。 字段还可以有多个值,以数组形式保存,并用方括号([ 和 ])括起来。 字段中的文本(或固定值)用引号引起来,字段之间以逗号隔开。

下面的示例显示上一单元的客户,格式为 JSON 文档:

{
  "ID": "1",
  "Name": "Mark Hanson",
  "Telephone": [ 
    { "Home": "1-999-9999999" }, 
    { "Business": "1-888-8888888" }, 
    { "Cell": "1-777-7777777" }
  ],
  "Address": [ 
    { "Home": [
      { "StreetAddress": "121 Main Street" }, 
      { "City": "Some City" },
      { "State": "NY" }, 
      { "Zip": "10110" }
    ] },
    { "Business": [
      { "StreetAddress": "87 Big Building" },
      { "City": "Some City" },
      { "State": "NY" },
      { "Zip": "10111" }
    ] }
  ] 
}


{
  "ID": "2",
  "Title": "Mr",
  "Name": "Jeff Hay",
  "Telephone": [ 
    { "Home": "0044-1999-333333" }, 
    { "Mobile": "0044-17545-444444" }
  ],
  "Address": [
    { "UK": [
      { "StreetAddress": "86 High Street" },
      { "Town": "Some Town" }, 
      { "County": "A County" }, 
      { "Postcode": "GL8888" }, 
      { "Region": "UK" }
    ] },
    { "US": [
      { "StreetAddress": "777 7th Street" }, 
      { "City": "Another City" },
      { "State": "CA" },
      { "Zip": "90111" }
    ] }
  ]
}

可以自由定义任何喜欢的字段。 重要的一点是,数据遵循 JSON 语法。 当应用程序读取文档时,它可以使用 JSON 分析器将文档拆分为其组件字段并提取各个数据片段。

其他可能出现的格式包括 Avro、ORC 以及 Parquet:

  • Avro 是一种基于行的格式。 它由 Apache 创建。 每条记录都包含一个标头,用于描述记录中的数据结构。 此标头以 JSON 格式存储。 数据以二进制信息的形式存储。 应用程序使用标头中的信息来分析二进制数据,并提取其中包含的字段。 Avro 是一种非常好的格式,用于压缩数据和最小化存储和网络带宽需求。 此示例部分显示了上例的标头信息(采用 Avro 格式):
{
  "type": "record",
  "name": "contact_schema",
  "fields": [
   {
      "name": "id",
      "type": "int",
      "doc": "ID of the contact"
    },
    {
      "name": "name",
      "type": "string",
      "doc": "Name of the contact"
    },
{
      "name": "telephone",
      "type": [
        "null",
        {
          "type": "array",
          "items": {
            "type": "record",
            "name": "contact_schema.telephone",
            "fields": [
              {
                "name": "phoneid",
                "type": "int"
              },
              {
                "name": "phonetype",
                "type": [ "null", "string" ]
              }
            ]
          }
        }
      ]
    }
  ]
}
  • ORC(优化的行列式格式)将数据组织成列而不是行。 它由 HortonWorks 开发,用于优化 Apache Hive 中的读取和写入操作。 Hive 是一个数据仓库系统,支持快速数据汇总和查询大型数据集。 Hive 支持对非结构化数据进行类似于 SQL 的查询。 ORC 文件包含数据的带区。 每个带区都包含一列或一组列的数据。 带区包含对该带区中行的索引、每行的数据,以及保存着每列统计信息(count、sum、max、min 等)的脚注。

  • Parquet 是另一种列式数据格式。 它由 Cloudera 和 Twitter 创建。 Parquet 文件包括行组。 每列的数据一起存储在同一行组中。 每个行组都包含一个或多个数据块。 Parquet 文件包括描述在每个块中找到的行集的元数据。 应用程序可以使用此元数据快速找到给定行集的正确块,并为这些行检索指定列中的数据。 Parquet 专门用于有效地存储和处理嵌套数据类型。 它支持高效的压缩和编码方案。

什么是非结构化数据?

非结构化数据是不包含字段的数据。 示例包括视频、音频和其他媒体流。 每项都是二进制数据的无定形 blob。 无法在此数据中搜索特定元素。

可以选择将此类数据存储在专门为此目的设计的存储中。 在 Azure 中,可以将视频和音频数据存储为 Azure 存储帐户中的块 blob。 (blob 这个词表示“二进制大型对象”*)。 块 blob 仅支持基本的读取和写入操作。

也可以将文件视为非结构化数据的一种形式,尽管在某些情况下,文件可能包含用于指示文件类型(照片、Word 文档、Excel 电子表格等)的元数据、所有者以及可以存储为字段的其他元素。 但是,文件的主要内容是非结构化的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值