Agentic AI、具身智能、强化学习框架、端侧大模型……来QCon上海站,感受AI的未来! 了解详情
写点什么

采访与书评: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

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

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

关注

评论

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

tinymce 如何实现动态国际化

Five

插件开发 tinymce 富文本编辑器 8月月更

leetcode 448. Find All Numbers Disappeared in an Array 找到所有数组中消失的数字(简单)

okokabcd

数组 LeetCode 数据结构与算法

浅谈程序员的职业操守

阿里技术

安全狗《云原生安全威胁分析报告》首次提出双检测模型

极客天地

Webpack5新特性:使用 Assets Module 处理图片和字体资源

昆吾kw

前端 前端工程化 webpack

什么是研发效能的「黄金三角」?如何助力企业提升效能?

万事ONES

字节算法大神手写算法笔记,已连续多次霸榜 GitHub Trending 首页

冉然学Java

GitHub 算法 Java 分布式 字节

利用华为云ECS服务器搭建安防视频监控平台【华为云至简致远】

科技云未来

nginx securecrt RTMP SSH工具

超多精美礼品等你来拿!2022年中国混沌工程调查启动

混沌工程实验室

混沌工程

易观分析:2022年Q2中国网络零售B2C市场交易规模达23444.7亿元

易观分析

B2C 网络零售

web前端面授培训课程

小谷哥

通过Gitea实现内外网repo管理

吴脑的键客

git

基于ModelArts的动漫头像自动生成丨【华为云至简致远】

科技云未来

华为云ModelArts

如何在 UE4 中制作一扇自动开启的大门

HelloWorld杰少

8月月更

树莓派 USB摄像头 实现网络监控( MJPG-Streamer)

Five

树莓派 网络监控 #web 8月月更

上海web前端培训课程

小谷哥

使用华为HECS云服务器打造Telegraf+Influxdb+Grafana 监控系统【华为云至简致远】

科技云未来

Grafana Influxdb 系统管理 开源监控系统 提高效率

TiFlash 计算层概览

TiDB 社区干货传送门

数据库 分布式数据库 TiDB

源码阅读其实很简单!阿里业务架构师手写JDK源码笔记(2022版)真香

Java永远的神

Java 程序员 面试 程序人生 jdk源码

拿来即用!Get计算机视觉核心知识,看这本书就够了!

博文视点Broadview

使用域名注册服务 Domains配置域名【华为云至简致远】

科技云未来

域名配置 端口映射

java培训机构与自学的优缺点有什么

小谷哥

Mysql重启后innodb和myisam插入的主键id变化总结

知识浅谈

8月月更

SpringBoot如何优雅地进行响应数据封装、异常处理?

程序员小毕

Java 源码 程序员 面试 spring-boot

Android技术分享| 一对一音视频呼叫邀请开发流程(一)

anyRTC开发者

android 音视频 移动开发 视频通话 呼叫邀请

大型连锁百货运维审计用什么软件好?有哪些功能?

行云管家

IT运维 运维审计 运维软件 百货

多图预警!华为 ECS 与 阿里云 ECS 对比实战【华为云至简致远】

科技云未来

华为云 虚拟私有云VPC ECS

Python爬虫抢购某宝秒杀商品

弑着去忘记う

后端

Tinymce plugins [Tinymce扩展插件集合]

Five

插件开发 tinymce 富文本编辑器 8月月更

阿里巴巴2022最新Java架构师进阶宝典!助力程序员金九银十面试跳槽涨薪

程序员小毕

Java 程序员 架构 面试 算法

大数据培训学习开发技术费用

小谷哥

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