阿里云「飞天发布时刻」2024来啦!新产品、新特性、新能力、新方案,等你来探~ 了解详情
写点什么

采访与书评:NoSQL Distilled

  • 2012-12-05
  • 本文字数:3428 字

    阅读完需:约 11 分钟

Pramod Sadalage 和 Martin Fowler 合著的《 NoSQL Distilled 》一书,介绍了 NoSQL 数据库以及混合持久化( Polyglot Persistence )的概念。随着各种 NoSQL 数据存储的出现,混合持久化也越来越流行。书中还介绍了 NoSQL 数据存储所支持的数据模型,如键值、文档和列族存储等聚合数据模型(Aggregate Data Model)。两位作者也探讨了支持数据实体之间关系的关系(Relationship)概念和图数据库(Graph Database)。

在介绍流行的 NoSQL 数据存储的各章中,他们使用了统一的格式。对于每种 NoSQL 数据库,如键值、文档、列族和图数据库等,相应章节都包含了“特性”、“适用情况”和“何时不应使用”等几个部分。

他们也探讨了相对于 NoSQL 数据存储,如何管理关系数据库中的模式变更。他们还谈到了用于解决不同数据存储需求的混合持久化这一概念,并探讨了如何直接在数据存储之上使用服务。

最后一章探讨的主题是,为了满足数据存储需求,在选择数据库时需要考虑哪些因素。

InfoQ 采访了 Pramod 和 Martin,访谈内容主要涉及这本书、NoSQL 数据库市场和 NoSQL 中的新趋势。

InfoQ:相对于传统的关系数据库,当数据库架构师和开发者使用 NoSQL 数据库时,在设计方面有哪些不同的考虑因素(如一致性、可用性和并发控制等)呢?

Pramod:这在很大程度上依赖于所开发应用的需求。有些应用可能需要高可用性,但是对数据一致性没有那么高的要求,像日志聚合系统和内容显示系统很可能就适合这样的模型。而其他系统可能对数据一致性要求很高,却没有高可用性需求。因此开发者需要根据 CAP 理论中的选项做出决策。在传统的关系数据库中,有些决策已经由数据库本身确定了。

Martin:还需要记住,一个应用程序,使用情况不同,对可用性、响应时间和一致性的需求也有所不同。要做出正确的决策,必须理解底层业务需求。

InfoQ:NoSQL 数据库是无模式的。在支持企业级应用时,对数据架构师和 DBA 来说,这一特性对他们在数据治理和数据管理方面的工作有什么影响?

Pramod:数据存储是无模式的,但这并不等于说没有模式或者不需要模式设计。模式是由负责写数据库的应用定义的。数据治理和数据架构可用于应用层,并影响应用层。这种变化意味着 DBA 和数据架构团队需要理解一些 NoSQL 技术和基于服务的集成,而不能总是依赖于基于数据库的集成。

Martin:我们听到有人这么说,无模式数据库意味着不必担心数据库迁移问题。这是严重地误解。当然,没有模式是提供了一些选择,但往往还是需要一些与传统关系数据库中所用技术类似的迁移技术

InfoQ:随着 NoSQL 数据库的出现,分片(Sharding)和复制(Replication)等技术也越来越受欢迎了,你们能否更多地谈一下这些技术?这些技术有哪些优点和限制呢?

Martin:NoSQL 数据库的原始动力之一就是为了在集群上更好地工作,并支持大量的复制和分片。这是我们所分类的面向聚合(aggregate-oriented)的数据库的一个明显特征。之所以这样分类,是因为聚合能形成一个自然的分布数据的单元。

Pramod:即便在传统关系数据库中,复制也总是有效的。分片指的是这种能力,数据库能够基于某些键值在不同的节点间移动数据,在这里键值也叫做 shard-key。分片支持水平伸缩(horizontal scaling),而且它也是一种用于伸缩应用程序的强有力的技术。如果需要聚合所有分片中的数据,因为这些数据并不在同一个节点上,所以聚合起来非常困难。像 Riak 和 Cassandra 这样的数据库,可以通过环(Ring)的配置将数据划分到集群中的所有节点上,而且这些数据库也提供了划分数据的算法。可以认为分片类似于关系数据库中的分区,不过分片的优点是在不同的节点上划分,而关系数据库中则是在同一个节点上。

InfoQ:这个问题几年前提的话听起来可能很奇怪,但随着 NoSQL 数据库的爆炸性增长,我想现在可以问了。请问关系数据库的未来会是什么样子的,在新兴的 NoSQL 和大数据背景下,它们又能扮演什么角色?

Pramod:NoSQL 数据库的出现提供了一种选择。在设计满足特定应用需求的系统时,这种选择是很有帮助的。我们认为,能够选择混合持久化真是一件幸事,而且 IT 行业应该拥抱这些技术并理解如何使用。传统的数据库从业人员应该以开放的心态来学习一些这方面的技术,并且应该能够做到为应用或企业需求选择正确的数据库技术。在这个多元化的技术领域,关系数据库和非关系数据库将共存下去。

Martin:我们认为关系数据库仍然是大多数情况下的选择,至少未来几年是这样的。毕竟,关系数据库产品很成熟,有丰富的支持工具,而且相对来说人们对它们已经有很好地理解了。但是在 ThoughtWorks,我们这几年来一直在所选的项目中使用 NoSQL 数据库,而且很多项目是非常令人满意的,这也是我们对企业中许多准备采用 NoSQL 技术的项目信心满满的原因。

InfoQ:近来内存数据网格(In-memory Data Grids,IMDG)的使用也有所增多。你们能否谈一下这种新的 NoSQL 数据存储类型?

Pramod:因为内存数据网格的数据存储是基于内存的,并且允许集群中的机器访问,所以它的吸引力在增加。Coherence 和 Gigaspaces 就是这类产品中的两个。

InfoQ:书中介绍了混合持久化这一主题。你们能否谈一下,对应用架构的其他层次尤其是数据访问层、域和服务层而言,这种新的持久化方法有何影响?混合持久化方面是否有什么设计实践或需要注意的地方?

Martin:最重要的结果是这种变化,原来将数据库作为集成点,而现在意识到应用程序需要封装其数据存储并通过高层服务来通信。

其他方面可能没这么明确。一个较大的问题是,面对同一应用的其他部分,我们应该将数据存储封装到什么程度。这些数据库有不同的数据模型,而且使用它们的部分原因是不同的数据模型能够更干净地映射到适合的应用。所以这又提出了问题,你想封装多少……现在要看到答案还为时过早。

InfoQ:随着 NoSQL 数据库的广泛应用,情感分析(Sentiment analysis)成为另一个受到关注的趋势。你们能否大概谈一下 NoSQL 数据库背景下的情感分析和数据分析?

Pramod:NoSQL 数据库和 Hadoop、Pig 以及 Hive 等数据处理框架使对海量数据的分析成为可能。这种能够写入大量数据,之后还能查询返回的能力,让人们能够分析大量数据,并从中获得像趋势、情感或由 Flightcaster 提供的航班状态分析等信息。

InfoQ:书的最后一章专门探讨数据库的选择这一主题。这里探讨了开发者生成率和数据访问性能等注意事项。你们能否谈一下这一点,并告诉我们的读者如何才能选出世界上最好的 NoSQL 数据库呢?

Martin:为什么人们对采用 NoSQL 很有兴趣呢?我们认为可以归结为两个主要原因

  • 以适当成本快速访问大量数据,这种需求致使很多人将目光投向大规模集群,而这正是人们最初对 NoSQL 产生兴趣的主要原因。
  • 很多情况下,关系数据模型并不是非常合适,选择数据模型更为匹配的 NoSQL 数据库可以获得更高的生产率。高度连通的数据会将你引向图数据库,而聚合结构则会将你引向面向聚合的数据库。

但无论做什么,关键是尝试一种数据库。仅仅是使用一下数据库,并通过一些关键场景建立原型,就能判断该数据库是否合适了。这就是大多数开源数据库具有明显优势的地方。

InfoQ:在 NoSQL 数据库市场有什么新趋势吗?

Martin:在我看来,现在的一切都是在添加工具和成熟度,使这些数据库更容易很好地使用。大部分工作来自我们这些早期使用者的经验,我们非常高兴看到这种演进。

Pramod:这些 NoSQL 技术使用得越多,就意味着大量工作正在完成,这里的工作包括工具、驱动、监控功能以及很多其他特性。我们也看到了一些新技术,比如 Datomic,它在云中将数据库作为服务提供给用户;还有 VoltDB,它尝试在提供可伸缩性的同时使用 SQL 范型,这还有一个术语叫做“NewSQL”。现在真是数据的好时候。

关于作者

Pramod J. Sadalage,ThoughtWorks 首席咨询师,喜欢弥合数据库从业人员和应用开发者之间的鸿沟这一不太常见的角色。他会定期为数据需求方面碰到了挑战、需要新技术和技巧的客户提供咨询。他开发了一些开创性的技术,使关系数据库可以以一种渐进的、基于版本控制的模式迁移方式来设计。他和 Scott Ambler 合著了《

数据库重构》(Addison-Wesley,2006)一书。

“NoSQL Distilled:A Brief Guide to the Emerging World of Polyglot Persistence”,Pramod Sadalage 和Martin Fowler 合著,由Pearson/Addison-Wesley Professional 于2012 年8 月出版,ISBN 0321826620,Copyright 2013 Pearson Education,Inc。更多信息请访问出版社网站

参考英文原文 Interview and Book Review: NoSQL Distilled

公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2012-12-05 06:032923
用户头像
臧秀涛 略懂技术的运营同学。

发布了 300 篇内容, 共 130.2 次阅读, 收获喜欢 34 次。

关注

评论

发布
暂无评论
发现更多内容

老师讲的真棒!阿里P7级别面试经验总结,终获offer

欢喜学安卓

android 程序员 面试 移动开发

架构师训练营第 1 期 - 第 11周 - 学习总结

wgl

极客大学架构师训练营

DolphinDB与Pandas对于大文本文件处理的性能对比

DolphinDB

数据库 pandas tsdb 数据库选择 DolphinDB

开发者,别让自己孤独

阿里巴巴云原生

开源 开发者 云原生 OAM CloudNative

观点|发展区块链金融,长三角如何建设“四梁八柱”

CECBC

区块链

Gemini双子新约系统软件开发|Gemini双子新约APP开发

系统开发

企业面临大危机,CRM崩溃告急,程序员竟用特殊手段化解危机!

Learun

敏捷开发 CRM

终于拿到蚂蚁金服Offer!!!分享一下全程面试题和面试经验!

小Q

Java 学习 编程 架构 面试

高并发下,如何让你的数据库再快一点?

数据君

数据库

只需三步!慢日志去无踪

数据君

数据库

老师讲的真棒!总结2020年最全180道Android岗面试题,Android校招面试指南

欢喜学安卓

android 程序员 面试 移动开发

疫情之下,被公司优化掉!同事大部分都去了创业型的公司,而我仅仅一年经验,却斩获多家大厂offer

Java~~~

Java 面试 架构师技能

TensorFlow2 Fashion-MNIST图像分类(一)

书豪

tensorflow 学习

JVM调优不知道怎么回答,阿里总结四大模块,学不会就背过来

小Q

Java 学习 架构 面试 JVM

了不起!靠技术脱贫,他们只用了短短两年!

华为云开发者联盟

人工智能 华为 技术

深入Linux内核架构——进程虚拟内存

赖猫

c++ Linux

TensorFlow2 Fashion-MNIST图像分类(二)

书豪

数据库面试要点:关于MySQL数据库千万级数据查询和存储

华为云开发者联盟

数据库 sql 存储

电信新报告 | 数字化转型:搁置还是加速?

VoltDB

5G安全 通信 电子信息

快速学会!啃完999页Android面试高频宝典,挥泪整理面经

欢喜学安卓

android 程序员 面试 移动开发

专访 CNCF 大使张磊:让云原生不再是大厂专属

阿里巴巴云原生

开源 开发者 云原生 OAM CloudNative

IO问题成顽疾,鹅厂专家来教你

数据君

数据库

http client 中的 connectionRequestTimeout, connectTimeout, socketTimeout

不在调上

诚招译者 | Bruce Eckel On Java 8 中文版

图灵社区

Java

案件数同比下降七成 北京引入“区块链”化解物业纠纷

CECBC

区块链 法律

加密货币可能是人类历史上最大的/富国银行报告:加密货币投资像19世纪50年代的早期淘金热财富转移

CECBC

数字货币

得不到提升的开发老鸟,试试这3个方法,让你事半功倍!

Linux服务器开发

程序员 后端 互联网人 底层应用开发 Linux服务器开发

关于Redis分布式锁这一篇应该是讲的最好的了,赶紧收藏起来

比伯

Java 编程 架构 面试 技术宅

Redis为什么这么快?

数据君

redis

深入浅出 WebRTC AEC(声学回声消除)

阿里云视频云

阿里云 音视频 WebRTC 音频技术 视频云

一道腾讯面试题目:没有listen,能否建立TCP连接

linux大本营

c++ Linux TCP 后台开发 TCP/IP

采访与书评:NoSQL Distilled_大数据_Srini Penchikala_InfoQ精选文章