最佳开放数据格式:首选比较
开放数据格式已发布,用于编码和交换数据的免版税规范,以便任何兼容工具都可以在未经供应商许可的情况下读取它。该环境涵盖四个系列(文本、柱状、图形和模式/建模)的数十种规范,其中 JSON、CSV、Parquet、Avro、ORC 和 RDF Turtle 是企业管道中部署最广泛的规范。
开放数据格式解释
开放数据格式是文件和馈送规范,其定义是公开记录的并且可以免费实施。决定标准不是受欢迎程度,而是许可和治理:当其规范可以在不支付费用或签署合同的情况下被阅读、实施和扩展,并且没有供应商可以单方面更改规则时,格式是开放的。
三个属性将真正的开放格式与普通格式区分开来。首先,规范的可用性:语法、二进制布局或模式语言已完整发布。其次,实现自由:多个独立项目(不仅仅是原始供应商)提供合规的读取器和写入器。第三,治理:管理是标准机构、基金会或开放社区的责任,而不是单个公司产品路线图的责任。
维基百科的开放文件格式列表是一个有用的引导图,但它混合了在实践中表现非常不同的类别。像 ZIP 这样的容器格式、像 CSV 这样的表格格式、像 Parquet 这样的柱状格式以及像 RDF Turtle 这样的图形序列化解决了不同的问题,并且不能相互替代。将“开放格式”视为单一决策的企业架构师通常会得到一个堆栈,而不是赢家。
什么是开放数据格式
开放数据格式是一种记录的约定,用于表示任何人都可以实现的结构化或半结构化数据(其语法、类型系统,通常还包括其模式演化规则)。规范就是产品;库是它的实现。
这些格式分为四个实用系列:
Related: — The fully pipeline that just keeps running.
- 文本和交换格式。 JSON、CSV、YAML、XML 和 NDJSON。人类可读、普遍支持、API 和配置默认。这些格式用存储效率和扫描性能来换取透明度和工具的普遍性。
- 列和二进制格式。 Apache Parquet、Apache ORC 和 Apache Avro。专为大规模分析而构建,具有压缩、编码和嵌入式架构。 Parquet和ORC是柱状的; Avro 是面向行的,采用模式前向设计。
- 图形和语义格式。 RDF 的序列化(Turtle、N-Triples、JSON-LD、RDF/XML),以及属性图形格式,例如 GraphML 和基于 Cypher 的导出约定。它们具有意义,而不仅仅是结构。
- 架构和建模格式。 JSON Schema、Avro IDL、Protobuf
.proto、OpenAPI 和模型交换规范,例如云信息模型。它们描述数据而不是存储数据,这使得跨应用程序互操作性变得可行。
序列化格式和建模格式之间的区别比大多数比较所承认的更重要。 Parquet 告诉读者字节是如何布局的;共享模型告诉两个系统“客户”对双方来说意味着相同的事物。云数据建模序列化格式属于第二类,并且通常是集成项目中缺失的层。
开放数据格式含义
“开放数据格式”的含义根据上下文而变化,含义的混乱会导致真正的架构错误。
在开放数据/公民技术意义上,该短语指的是以机器可读、开放许可的格式(CSV、JSON 以及越来越多的 RDF)发布政府或研究数据集,以便任何人都可以重复使用它们。开放数据格式规范以及围绕 opendataformats.org 和 odf.dev 的社区工作属于这一传统,强调可移植性和公共重用。
Our pick: — that business teams can actually build on.
从数据工程的意义上来说,该表达指的是管道中使用的存储和交换格式:Parquet、Avro、ORC 及其元数据层。在这里,“开放”意味着避免将自己锁定在专有的仓库或文件格式中。
从语义网和知识图的意义上来说,这是指 RDF 序列化格式及其所承载的本体,其目标是在组织之间共享含义。
从企业集成的意义上来说,这意味着允许独立创建的应用程序无需自定义映射即可交换数据的架构和模型格式。云信息模型是开放的、与应用程序无关的模型的一个示例,旨在解决云和本地系统中的后一个目标。
单个组织通常同时需要所有四种含义:已发布数据的开放许可证、lakehouse 的开放存储格式、知识工作的开放图形格式以及应用程序互操作性的开放模型。
开放数据格式的好处
开放格式提供了四个随着时间的推移而复合的具体好处。
供应商独立性。 用 Parquet、Avro 或 RDF 编写的数据可以通过许多供应商的工具读取。迁移成本降低,因为数据比生成数据的平台寿命更长。这是企业采用开放格式的最常被提及的原因,也是最有效地度过采购周期的原因。
系统之间的互操作性。 共享格式就是共享合同。当两个应用程序都向 Avro 发出已注册架构时,集成工作将从自定义映射转移到架构验证。开源数据建模格式将其从语法扩展到语义,这才是集成成本的真正所在。
持久性和可审核性。 CSV 和 JSON 等文本格式在几十年后仍然可以通过文本编辑器来读取。可以重新实现具有已发布规范的二进制格式。专有格式取决于供应商的持续存在和持续关注。
生态系统杠杆。 开放格式吸引库、连接器和基准。 Parquet 的性能故事与为其优化的各种引擎密不可分。 RDF 工具(三元组存储、SPARQL 引擎、验证器)的存在是因为规范是开放且稳定的。
开放数据格式的优缺点
| 格式 | 家庭 | 优势 | 权衡 | 最适合 |
|---|---|---|---|---|
| CSV | 文字 | 通用、易于解析、人类可读 | 没有类型,没有架构,引用不明确,嵌套不佳 | 导出、小表格交换 |
| JSON / NDJSON | 文字 | 无处不在的嵌套结构,原生于 Web API | 冗长、无本机模式、弱数字类型 | API、配置、事件流 |
| Apache Parquet | 柱状 | 出色的压缩和扫描性能,嵌入式架构 | 不可读,行级更新尴尬 | 分析,湖屋存储 |
| Apache Avro | 行二进制 | 紧凑、模式演化、强大的 Kafka 集成 | 面向行的扫描速度较慢以进行分析流媒体、面向记录的管道 | |
| Apache ORC | 柱状 | 强压缩、谓词下推、Hive 血统 | 比 Hive/Spark 之外的 Parquet 更小的生态系统 | Hive 和 Spark 仓库 |
| RDF 海龟 | 图 | 人类可读的三元组、IRIs、基于标准的语义 | 规模庞大、学习曲线陡峭 | 知识图谱、关联数据 |
| JSON-LD | 图 | 具有链接数据语义的 JSON 语法 | 上下文处理让新手感到困惑 | 网络发布的链接数据 |
| Protobuf | 模式/二进制 | 紧凑、快速、强类型、代码生成 | 需要模式分布,而不是自描述 | 服务到服务 RPC |
| JSON Schema | 架构 | 与语言无关的验证,可读 | 仅验证,不序列化 | API 合约、数据质量门 |
上面的优缺点表只是一个起点,而不是结论。诚实的总结是,文本格式在可访问性方面获胜,柱状格式在分析成本方面获胜,行二进制格式在流吞吐量方面获胜,而当意义必须与数据一起传播时图形格式获胜。
开放数据格式值得吗
当数据必须在工具中保存、跨越组织边界或由您无法控制的各方读取时,开放格式是值得的。对于单个应用程序中短暂的中间状态,它们的说服力较差,其中专有的内存表示更快、更简单。
成本是真实的,但也是有限的。采用 Parquet 或 Avro 意味着对模式管理、编目和版本控制规则进行投资。采用 RDF 意味着对本体设计和查询技能进行投资。采用共享企业模型需要在可能不同意定义的团队之间进行治理工作。这些成本都不是格式问题;这些是专有格式仅隐藏到迁移当天的数据管理问题。
实际测试:如果格式规范明天消失,您的团队还能读取去年的数据吗?如果答案是否定的,那么无论其速度如何,该格式都会构成一种负担。
开放数据格式问题
开放格式存在真实的、有详细记录的问题,而供应商很少强调这些问题。
碎片化。 “开放”并不意味着“单一”。 RDF 本身就有多种序列化,在它们之间进行选择是一个真正的决定——因此 rdf 序列化格式比较至关重要。 JSON 具有竞争的模式方言。 Parquet、ORC 和 Avro 都占据了分析利基市场。碎片化将集成工作推给了消费者。
**规范漂移和部分实现。**已发布的规范不保证实现一致。读者可能支持类型的子集、错误处理嵌套结构或在边缘情况(例如处理空值和时间戳精度)上出现分歧。合规性测试通常是找出答案的唯一方法。
治理差距。 一些“开放”格式由控制路线图的单个供应商管理。该规范是可读的,但事实上的标准是供应商提供的任何标准。这是许可上的开放,但实际上并非如此。
**模式和语义债。**开放格式解析语法,而不解析含义。两个团队都可以发布有效的 Avro,但仍然对字段代表的内容存在分歧。这正是开放数据建模格式和共享企业模型(例如云信息模型)旨在填补的空白。
运营开销。 架构注册表、版本控制策略和兼容性规则添加流程。没有这种纪律的团队经常会发现开放格式会出现专有格式所推迟的问题。
在考虑大数据的开放数据格式或 etl 的 rdf 序列化格式时,查看开源 rdf 序列化格式并执行基准测试 rdf 序列化格式以确定最适合特定工作负载的格式会很有帮助。
选择 RDF 序列化格式
RDF 值得单独对待,因为它是最常评估企业知识工作的家族,而且它的序列化经常相互比较。在执行 rdf 序列化格式比较 时,不同的需求决定了选择。
Turtle 是最具人类可读性的 RDF 序列化,也是创作和审阅的常用选择。 N-Triples 是严格基于行的子集,非常适合流式传输和比较,因为每行都是独立的。 JSON-LD 将链接数据嵌入到 JSON 中,使其成为 Web API 和 JavaScript 工具的实用桥梁。 RDF/XML 是最古老且最冗长的,保留主要是为了遗留互操作性。 TriG 和 N-Quads 分别将 Turtle 和 N-Triples 扩展到命名图。
对 RDF 序列化格式进行基准测试始终显示相同的结果模式:二进制和压缩形式的解析速度最快且占用的空间最少,N-Triples 和 Turtle 处于中间,而 RDF/XML 通常是最慢且最大的。 ETL 的 **rdf 序列化格式的实际含义是解析速度很少成为瓶颈(三重存储摄取和查询规划通常占主导地位)。因此,出于可读性和工具原因,团队必须选择序列化,而不是微观优化解析时间。
对于 ETL 管道,常见模型是将 RDF 置于 N-Triples 或 N-Quads 中以实现流式处理和可比较性、在内存中进行转换,并将 JSON-LD 暴露给 API 边界。对于大数据工作负载的 rdf 序列化格式,RDF 通常会转换为用于分析连接的列表示形式,并保留图形用于关系查询。 开源 RDF 序列化库(以及其他开源 RDF 序列化格式**)几乎适用于每种通用语言,这使得该模型对于使用 开放数据格式 的人来说非常实用。
用于云互操作性和企业人工智能的数据序列化格式
云互操作性取决于足够自描述以跨越信任边界的格式。 Avro 和 Protobuf 包含数据的模式; Parquet 将架构嵌入到文件元数据中; JSON Schema 和 OpenAPI 描述带外有效负载。可行的业务模型是在线上的 Protobuf 或 Avro、静态的 Parquet 以及作为事实来源的模式注册表。
企业人工智能增加了第二个要求:模型不仅需要类型正确的数据,还需要一致的“命名”数据。当同一概念出现在源系统上的五个不同字段名称下时,特征存储、获取流水线和训练集都会降级。这就是开源数据建模格式的用武之地。共享的、与应用程序无关的模型(云信息模型是一个开放的示例)为人工智能和分析团队提供了规范的词汇表,即使底层存储格式发生变化,该词汇表也能继续存在。
对大多数企业的分层建议是:选择用于存储分析的列式格式、用于流式传输的二进制行格式、用于 API 的 JSON 以及用于语义的共享开放模型。将模型层视为持久资产,将序列化层视为可替换的。
要点
- 开放数据格式由已发布的规范、多个独立的实现和中立的治理来定义——而不仅仅是流行度。
- 实践中有四个系列:文本(JSON、CSV)、柱状和二进制(Parquet、ORC、Avro)、图形(RDF 序列化)和模式/建模(JSON Schema、Protobuf、共享企业模型)。
- 格式的选择是一个堆栈决策,而不是单一的赢家:大多数企业需要一种柱状格式、一种流式传输格式、API 的 JSON 和语义的共享模型。
- 基准测试 RDF 序列化格式在解析速度和大小方面始终倾向于二进制和压缩形式,但三重存储摄取通常主导 ETL 成本,因此可读性和工具应指导 ETL 的 RDF 序列化格式的选择。
- 开放格式反复出现的问题是碎片和语义漂移,而不是许可:共享数据模型填补了序列化格式开放的空白。
资料来源和进一步阅读
- 开放数据 — 维基百科:开放数据是任何人出于任何目的可公开访问、利用、编辑和共享的数据。开放数据通常根据开放许可证获得许可…
- 开源 — 维基百科:开源是公开发布数字资源及其源代码或源文件的做法,以便使用、研究、修改和重新分发…
- 大数据 — 维基百科:大数据主要是指传统数据处理软件无法处理的太大或太复杂的数据集。具有许多条目(行)的数据提供…
- 数据建模 — 维基百科:软件工程中的数据建模是通过应用某些形式化技术为信息系统创建数据模型的过程。它可能会被应用…
常见问题
什么是开放数据格式?
开放数据格式是公开记录的、免版税的数据编码规范,以便任何兼容的工具都可以读取和写入它。它们包括 JSON 和 CSV 等文本格式、Parquet 和 ORC 等列格式、Avro 等内联二进制格式、RDF Turtle 等图形格式以及 JSON Schema 等模式语言。其定义特征是构成合同的是规范,而不是供应商的产品。
开放格式和开放标准有什么区别?
开放格式具有任何人都可以实施的已发布规范;开放标准还具有中立的治理,例如控制变化的标准机构或基金会。一些广泛使用的格式是公开许可的,但由单一供应商有效驱动,限制了社区对路线图的影响。对于长期的企业数据来说,中立的治理是最好的保证。
哪种开放数据格式最适合分析?
Apache Parquet 因其列式布局、压缩和广泛的引擎支持而成为分析存储的默认选择。 Apache ORC 是 Hive 和 Spark 中心环境中的一个有趣的替代方案。两者都集成模式并支持谓词下推。决定因素通常是现有的引擎投资和生态系统工具,而不是原始性能差异。
开放数据格式值得采用吗?
当数据必须在工具更迭中延续、跨越组织边界或由您无法控制的各方读取时,开放格式值得采用。它们增加了模式管理和治理开销,这是真正的工作。对于应用程序内的短期内部状态,专有表示通常更简单、更快。权衡是可持续性和互操作性与操作纪律。
开放数据格式会导致哪些问题?
主要问题是竞争规范之间的碎片化、同一规范的部分或不同实现、一个供应商控制路线图时的治理差距,以及两个系统使用相同格式但含义不一致时的语义漂移。这些问题都不是格式本身就能解决的;它们需要模式注册表、一致性测试和共享数据模型。
开放数据格式如何支持企业人工智能?
企业人工智能依赖于所有源系统中类型正确且命名一致的数据。开放序列化格式处理捕获和传输,而开放数据建模格式(例如云信息模型)提供共享词汇表,使特征存储、检索管道和训练集保持一致。如果没有建模层,人工智能团队会花费过多的精力来协调字段名称和定义,而不是创建模型。
Frequently asked questions
什么是开放数据格式?
开放数据格式是公开记录的、免版税的数据编码规范,以便任何兼容的工具都可以读取和写入它。它们包括 JSON 和 CSV 等文本格式、Parquet 和 ORC 等列格式、Avro 等内联二进制格式、RDF Turtle 等图形格式以及 JSON Schema 等模式语言。其定义特征是构成合同的是规范,而不是供应商的产品。
开放格式和开放标准有什么区别?
开放格式具有任何人都可以实施的已发布规范;开放标准还具有中立的治理,例如控制变化的标准机构或基金会。一些广泛使用的格式是公开许可的,但由单一供应商有效驱动,限制了社区对路线图的影响。对于长期的企业数据来说,中立的治理是最好的保证。
哪种开放数据格式最适合分析?
Apache Parquet 因其列式布局、压缩和广泛的引擎支持而成为分析存储的默认选择。 Apache ORC 是 Hive 和 Spark 中心环境中的一个有趣的替代方案。两者都集成模式并支持谓词抑制。决定因素通常是现有的引擎投资和生态系统工具,而不是原始性能差异。
开放数据格式值得采用吗?
当数据必须在工具中生存、跨越组织边界或由您无法控制的各方读取时,开放格式值得采用。它们增加了模式管理和治理开销,这是真正的工作。对于应用程序内的短期内部状态,专有表示通常更简单、更快。权衡是可持续性和互操作性与操作纪律。
开放数据格式会导致哪些问题?
主要问题是竞争规范之间的碎片化、同一规范的部分或不同实现、一个供应商控制路线图时的治理差距,以及两个系统使用相同格式但含义不一致时的语义漂移。这些问题都不是格式本身就能解决的;它们需要模式注册表、一致性测试和共享数据模型。
开放数据格式如何支持企业人工智能?
企业人工智能依赖于所有源系统中类型正确且命名一致的数据。开放序列化格式处理捕获和传输,而开放数据建模格式(例如云信息模型)提供共享词汇表,使特征存储、检索管道和训练集保持一致。如果没有建模层,人工智能团队会花费过多的精力来协调字段名称和定义,而不是创建模型。
See how Boomi handles your hybrid integration map
Enterprise iPaaS for hybrid cloud-to-on-prem integration