看看 Pat 的
关于分布式系统的零散思考

pathelland.substack.com

逃离奇点

  下载本文的 PDF 版本 PDF

XML 和 JSON 就像纸板

纸板在物品跨越边界时环绕并保护它们。

Pat Helland


在当今世界,纸板是生活中极其重要的一部分。考虑到资源和资金的巨大投入,您可能会质疑它是否值得。事实证明,纸板带来的效率和节省超过了其制造和后续回收的成本。

半结构化数据表示不是最便宜的格式。它通常包含很多额外的东西,比如尖括号。JSON、XML 和其他半结构化表示形式允许出色的灵活性和动态解释。从灵活性中获得的效率和节省足以弥补开销。

环绕和保护

纸板在物品跨越边界时环绕并保护它们。没有人会在工厂内部使用纸板来移动零件。相反,他们使用专门为生产零件而定制设计的容器。纸板用于在物品离开工厂时保护它们。

JSON 和 XML 用于在数据跨越信任边界时保护数据。半结构化数据将单个消息或键值存储中的单个项目包裹起来,从而实现灵活性和可扩展性。在应用程序内部,关系数据受到更严格的控制并且格式良好。在应用程序的信任和管理边界内演化您的关系数据是可行的。

SQL 和关系数据更易于处理且更适合处理信任边界内的数据。XML 和 JSON 更灵活和动态,因为它们捕获信息及其元数据。这使得跨信任边界传输数据变得容易且灵活。

自描述和自识别

纸板通常是自描述的。您新买的电视机的包装盒外面印有文字,告诉您盒子里装的是什么。当您将旧电视机搬到新家时,您会在搬家纸箱外面写上“电视机”。

JSON 和 XML 通常是自描述的。这可以通过引用模式或检查文档/文件本身中表达的属性来完成。

通用与定制

上次我们搬到新家时,我买了一堆不同尺寸的箱子、胶带、包装纸和填充物,以及一堆记号笔。像大多数其他忙于打包和搬家的人一样,我们努力描述我们装满的每个箱子的内容,但我们偶尔会搞砸,并在所有东西都装进箱子时遗漏一些物品。大多数东西都能很好地放入标准箱子之一中,尽管我们的一些家用物品涉及到纸板、胶带和填充物的非常有创意的用途,因为我们努力保护我们的东西。

制造的物品通常具有定制的纸板保护。我的妻子喜欢某个特定制造商的吸尘器。确实,吸尘器的形状、形式和工作方式可能既有趣又令人惊讶。对我来说,一半的乐趣在于拆卸纸板箱内部使用的纸板保护。每台吸尘器的每个角落和缝隙都塞满了数十个特殊的纸板片。天哪,这吸尘器保护得真好!我怀疑他们有一个工厂专门生产这些特殊的纸板片。我也怀疑避免损坏所节省的费用是非常值得的。

XML 源于文档标记世界。它源于 SGML(标准通用标记语言),SGML 最初旨在将文档的文本与其格式分开。XML 非常强调让您使用格式“做自己的事情”。  

然而,在灵活的“做自己的事情”方法之上,还有一些机制可以对 XML 文档施加严谨性和约束。XML Schema 在 2000 年代初期应运而生,作为确保一组消息一致性的一种手段。如果文档符合 XML 模式定义,则该文档通过验证。通过这种方式,XML 的某些用法被约束为适合特定的形状和形式。

XML 和 JSON 最美妙的事情之一是它们的灵活性。在某些应用程序中,它们支持严格规定的模式,就像保护吸尘器的纸板一样。在其他应用程序中,它们允许您将所有家庭用品,包括厨房水槽都扔进去。有时,存在严格规定的必需数据模式,而发送者可以随意添加扩展。

跨越边界

一般来说,半结构化数据用于跨越计算环境中的边界。包含人类可读内容的文档保存在网站上。REST 调用是在可能位于或可能不位于同一公司内的服务之间进行的。

半结构化数据的松散耦合允许发送和接收服务分别演化,摩擦力更小。更改紧密耦合的东西需要协调,这非常困难。 

使用键值存储跨越边界

通常,文档或文件中的半结构化数据存储在文件系统或键值存储中。让这些文档/文件的读者和作者在元数据中解耦是有价值的。让数据的形状和形式在文档和文件的内容中描述出来,使得演化各种用户成为可能,与您在元数据严格且僵化时看到的情况相比,摩擦力更小。这就是我们看到半结构化表示法在存储内容方面取得成功的原因。

重要的不是大小!

事实证明,纸板的重量和尺寸并不是什么大问题。您肯定有过这样的经历:收到一些小物件,例如包装在盒子里的计算机芯片,其重量远远超过了被保护的物品。很好地保护微小物品在经济上是有意义的。

大型电子商务网站运送成千上万种不同尺寸的商品。尽管如此,他们发现使用相对较少的箱子尺寸更有效率。因此,打开箱子发现一件小东西和一大堆填充物是很常见的。 

同样,您也不应该太担心文件和文档的体积。嵌入的元数据可能会占用大量空间。天知道,一个 XML 文件有很多尖括号!尽管如此,从半结构化数据的特性中获得的价值是值得的。只要世界不耗尽尖括号,一切都会好起来的。

必须照顾好您的物品!

在纸板方面,安全和照顾物品是其存在的重要原因。同样,在 XML 和 JSON 中,数据在传输和存储过程中的安全和照顾是我们费心使用的原因。 

现在,如果我们能找到回收旧尖括号的有效方法,那就一切顺利了……

相关文章

胡言乱语的力量
期待不断地和愉快地感到困惑
Pat Helland
https://queue.org.cn/detail.cfm?id=3003188

移动性能优化的规则
加速页面加载的技术概述
Tammy Everts,Radware
https://queue.org.cn/detail.cfm?id=2510122

Schema.org:Web 上结构化数据的演变
大数据使通用模式更加必要。
R.V. Guha、Dan Brickley 和 Steve Macbeth,微软
https://queue.org.cn/detail.cfm?id=2857276

Pat Helland 自 1978 年以来一直从事事务系统、数据库、应用程序平台、分布式系统、容错系统和消息传递系统的实施工作。为了消遣,他偶尔撰写技术论文。他目前在 Salesforce 工作。

版权 © 2017 年归所有者/作者所有。出版权已许可给 。

acmqueue

最初发表于 Queue 第 15 卷,第 4 期
数字图书馆 中评论这篇文章





更多相关文章

Qian Li, Peter Kraft - 事务和无服务器是天生一对
数据库支持的应用程序是无服务器计算令人兴奋的新领域。通过紧密集成应用程序执行和数据管理,事务性无服务器平台实现了许多在现有无服务器平台或基于服务器的部署中不可能实现的新功能。


Pat Helland - 任何其他名称的身份
新兴的系统和协议既收紧又放松了我们对身份的概念,这很好!它们使完成工作变得更容易。REST、IoT、大数据和机器学习都围绕着有意保持灵活有时甚至含糊不清的身份概念。身份的概念是我们分布式系统的基本机制的基础,包括互换性、幂等性和不变性。


Raymond Blum, Betsy Beyer - 实现数字永恒
当今的信息时代正在为世界所依赖的数据创造新的用途和新的管理方式。世界正在从熟悉的物理人工制品转向更接近其本质信息的新表示方式。我们需要流程来确保知识的完整性和可访问性,以保证历史将被知晓和真实。


Graham Cormode - 数据草图
您是否曾经感到被源源不断的信息淹没?似乎永无止境的新电子邮件和短信要求持续关注,还有电话要接听、文章要阅读以及敲门声要回应。将这些碎片拼凑在一起以跟踪重要内容可能是一个真正的挑战。为了应对这一挑战,流数据处理模型越来越受欢迎。其目的不再是捕获、存储和索引每一分钟的事件,而是快速处理每个观察结果,以便创建当前状态的摘要。





© 保留所有权利。

© . All rights reserved.