写点什么

采访与书评: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:033643
用户头像
臧秀涛 略懂技术的运营同学。

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

关注

评论

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

kafka教程pdf,spring入门教程,你会的还只有初级工程师的技术吗

Java 程序员 后端

linux内核教程推荐,尚硅谷mysql,一文轻松搞定

Java 程序员 后端

linux基础教程试题,linux驱动程序开发视频教程,netty入门与实战

Java 程序员 后端

Mybatis-Plus的使用小技巧,linux数据恢复教程,Nginx面试

Java 程序员 后端

kafka入门与实践百度云,牛客网平安科技,和快手大牛的技术面谈

Java 程序员 后端

linux内核教程推荐,兄弟连尚硅谷,顺利收获Offer

Java 程序员 后端

Kafka必须掌握的核心技术,尚硅谷java入门,Nginx面试

Java 程序员 后端

kafka入门教程,linux教程第四版pdf下载,mysql基础教程

Java 程序员 后端

JVM虚拟机原理深入解析,springboot实战视频教程百度云,你不懂还不学?

Java 程序员 后端

kafka面试题阿里,牛客网面试题库java,农民工看完都会了

Java 程序员 后端

Mybatis-plus常用API全套教程,springcloud实战视频

Java 程序员 后端

kafka实战最佳经验,牛客网华为机试题答案,Java开发面试问题

Java 程序员 后端

Java高级知识体系,java性能调优实战网盘,大厂首发

Java 程序员 后端

linux学习笔记,springboot前后端分离教程,我先收藏为敬

Java 程序员 后端

Java高级技术架构,linux操作系统教程海南师范大学,nginx入门书籍推荐

Java 程序员 后端

Java高级软件工程师面试题,java菜鸟教程多态,Java程序员面试笔记pdf

Java 程序员 后端

JDK、JRE与JVM的区别与联系,springmvc基础知识pdf下载

Java 程序员 后端

jvm常见面试题,尚硅谷和黑马,2021国内知名大厂Java岗面经

Java 程序员 后端

kafka入门教程,springboot高级教程,聊聊你对分布式锁技术方案的理解

Java 程序员 后端

linux应用开发面试题,java黑马程序员资源,如何保证redis高可用

Java 程序员 后端

linux应用开发面试题,极客时间破解付费课程百度云盘,Java面试官

Java 程序员 后端

Java高级技术经理面试题,西安尚学堂教育,已开源下载

Java 程序员 后端

Java高级知识体系,kalilinux新手教程,Java实习面试经验汇总

Java 程序员 后端

Java高级面试手册,架构师修炼之道pdf百度云,Java开发实战经典答案

Java 程序员 后端

JVM面试题附答案,Dubbo高频面试题+解析

Java 程序员 后端

linux基础入门知识,kafka入门教程步骤,2021年Java网络编程总结篇

Java 程序员 后端

mybatis入门案例,图灵学院第三期视频百度云,阿里中间件

Java 程序员 后端

Java高级开发面试视频,nginx教程pdf,linux初学者入门书籍

Java 程序员 后端

Java高级架构师面试题,李玉婷尚硅谷漂亮,程序员怎样优雅度过35岁中年危机

Java 程序员 后端

jvm常见面试题,图灵it教育学院多大,这个框架直接干掉了Servlet

Java 程序员 后端

Java高级工程师面试题目,尚硅谷kafka文档,和腾讯大牛的技术面谈

Java 程序员 后端

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