《大数据系统构建:可扩展实时数据系统构建原理与最佳实践》一第3章 大数据的数据模型:示例-阿里云开发者社区

开发者社区> 华章出版社> 正文

《大数据系统构建:可扩展实时数据系统构建原理与最佳实践》一第3章 大数据的数据模型:示例

简介:

本节书摘来自华章出版社《大数据系统构建:可扩展实时数据系统构建原理与最佳实践》一书中的第3章,第3.1节,南森·马茨(Nathan Marz) [美] 詹姆斯·沃伦(JamesWarren) 著 马延辉 向 磊 魏东琦 译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

第3章

大数据的数据模型:示例

本章内容
Apache Thrift
使用Apache Thrift实现图模式
序列化框架的局限性
在第2章中,你知道了形成一个数据模型的原则—原始数据的价值、处理语义规范化和不变性的至关重要作用。你知道了图模式可以满足所有这些属性,并了解了SuperWebAnalytics.com的图模式。
本章是第一个示例章节,将使用现实世界的工具演示前一章的概念。你可以只阅读本书的理论章节,学习整个Lambda架构,但示例章节展示了将理论转换为真正代码的细微差异。在本章中,我们将使用Apache Thrift实现SuperWebAnalytics.com的数据模型—Apache Thrift是一个序列化框架。你会看到,即使在一个类似写模式的简单任务中,理想化的理论和实践中的实现之间也是有冲突的。

3.1 为什么使用序列化框架

许多开发人员都曾将原始数据写为无模式的格式,如JSON。这是有吸引力的,因为它很容易入门,但这种方法很容易会导致问题。无论是由于错误还是不同开发人员之间的误解,数据损坏会不可避免地发生。根据经验,数据损坏错误是调试起来最耗时的错误之一。
数据损坏问题很难调试,因为你很难知道损坏是如何发生的。通常只有当处理的下游出现错误时,你才会注意到这一问题—在损坏的数据已经写入很长一段时间之后。例如,由于必需字段的丢失,你可能会得到一个空指针异常。你很快就会意识到这是由一个丢失的字段引起的,但绝对不会第一时间知道数据为什么会这样。
当创建一个可实施的模式时,你会在写数据时获得错误—返回完整的关于数据如何以及为什么变得无效的上下文(类似堆栈跟踪)。此外,错误阻止了程序通过写入这些数据来损坏主数据集。
序列化框架是一种能实现可实施模式的简单途径。如果你曾使用过面向对象和静态类型语言,那么会很快熟悉序列化框架的使用方法。序列化框架可以生成任何你希望用来读、写和验证可匹配模式的对象的代码。
然而,当谈到实现全面严格的模式时,序列化框架是有局限性的。讨论完如何将序列化框架应用到SuperWebAnalytics.com数据模型之后,我们将讨论这些局限性及其解决方法。

版权声明:如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:developerteam@list.alibaba-inc.com 进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:

华章出版社

官方博客
官网链接