写点什么

James Phillips 谈从关系型数据库转到 NoSQL

  • 2011-12-13
  • 本文字数:1225 字

    阅读完需:约 4 分钟

James Phillips, Couchbase 的创始人之一。他最近的一场演讲谈到分布式面向文档的数据库和关系型数据库模型之间的差别,以及从关系型数据库转到NoSQL 时数据库开发者需掌握的知识。InfoQ 就面向文档的NoSQL 的优缺点采访了James。

InfoQ:在谈及数据持久和数据管理时,您提到了“大数据 (Big Data)”和“大用户 (Big User)”,可否解释这两个概念之间的区别以及如何在二者之间做选择?

James Phillips大数据:需要收集并存储大量信息,然后对信息进行分析和学习。它需要持续的高吞吐的写(收集信息时)和读(分析信息时)。数据本地化模型的优化方法是将“关联的数据”放在物理上临近的地方,从而确保分析的高效性。通常来说,它需要少量做数据插入的同步写和少量做信息分析的同步读。

大用户:需要为随机的读和写,以及大量并发读和写提供服务。数据本地化模型的优化方法则应该将“关联的数据”尽可能地分散开,从而将读和写操作最大限度地分散到不同的服务器和转轴之上。

InfoQ:NoSQL 数据库与关系型数据库相比,在数据建模和应用开发上其最主要的差别是什么?

James:关系型数据模型(及其数据建模)关注的是数据规范化的过程——将“记录”分解成许多表以及表之间的关系,降低数据冗余。在过去,系统资源有限时,其意义非常大,因为每个字节的处理效率都很关键。而面向文档的方式存储数据则是更加自然的方式。其缺点是在某些情况下,数据要冗余,查询模型也自然更复杂一些。但是,数据建模要简单得多,因为现实世界中,信息并不总需要规范。而且,因为限制少了,应用开发者的生产力也提高了。

InfoQ:在演讲中您谈到面向文档的数据库。在哪些情况下,用面向文档的数据库优于关系型数据库?

James:面向文档的数据库在以下场景中更胜一筹:需要数据模型的灵活性(数据管理过程中,需求变更无需变更 schema);低延迟、持久、高吞吐的读写性能;通过将数据和 I/O 方便地分散到廉价服务器和虚拟机之上,使基础设施费用与应用程序性能成正比。

InfoQ:面向文档的数据库支持哪些数据持久和数据管理的架构模式?

James:大多数 NoSQL 及面向文档的数据库都支持多种持久化模型:从完全的同步策略(比如,只有当数据写入磁盘或持久设备之后才报告写操作成功)到多种异步存储策略(比如,接受写请求之后,在实际写入磁盘之前就报告成功;或者,仅仅在完成数据备份之后即报告成功)。

InfoQ:面向文档的数据库有哪些缺点?应用架构师和开发者在使用这类数据库时应考虑哪些问题?

James:目前,面向文档的数据库不直接支持连接(join),事务的支持通常只针对单个文档,之前提到的数据持久灵活性也可算作缺点。它产生了数据冗余,在某些情况下,当数据变更时需要在多处更新数据。所以,基于面向文档数据库的应用要为处理相互依赖的更新做更多事情。将来,我们会看到使用外部事务监控器来填补目前对事务支持上的断层。同样,在应用层也有办法实现诸如连接查询之类的功能。


查看英文原文: James Phillips on Moving from Relational to NoSQL Databases

2011-12-13 04:234556
用户头像

发布了 184 篇内容, 共 79.3 次阅读, 收获喜欢 8 次。

关注

评论

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

微信业务架构

一叶知秋

架构实战营

redis6安装和可视化工具

4ye

redis 后端 8月日更

模块一

树建

架构实战营

ShardingSphere Proxy 初步体验

ShardingSphere-Proxy

JIT-动态编译与AOT-静态编译:java/ java/ JavaScript/Dart乱谈

zhoulujun

dart JIT AOT 动态编译 静态编译

从λ演算到函数式编程聊闭包(2):彻底理解JavaScript闭包规则

zhoulujun

闭包 闭包函数

在线JSON转YAML工具

入门小站

工具

JS遍历循环方法性能对比:for/while/for in/for of/map/foreach/every

zhoulujun

foreach map for for in

使用明道云搭建电梯维修与保养系统

明道云

JavaScript 有关数组的 slice 截断函数

HoneyMoose

太厉害了!腾讯T4大牛把《数据结构与算法》讲透了,带源码笔记

编程susu

Java 编程 程序员 计算机 技术宅

特斯拉依旧头铁坚持视觉路线,激光雷达会笑到最后吗?

脑极体

正经人一辈子都用不到的 JavaScript 方法总结 (一)

编程三昧

JavaScript 大前端 8月日更 模板字符串 String.raw

微信业务架构图-外包学生管理系统架构

毛先生

架构实战营

下载超过10万次?阿里大佬的《高并发、性能调优笔记》一战封神

Java架构师迁哥

本科毕业六年,裸辞备战三个月,四面阿里巴巴定级P7

编程susu

Java 编程 程序员 面试 计算机

netty系列之:在netty中使用protobuf协议

程序那些事

Java Netty 程序那些事

Rust从0到1-高级特性-Traits 进阶

rust Traits 高级特性

每天学习10个实用Javascript代码片段(五)

devpoint

定时器 JavaScrip 8月日更

IntelliJ IDEA 如何显示提交输入的信息历史

HoneyMoose

docker入门:vue和可视化界面的部署,另附ngxin配置

小鲍侃java

8月日更

InnoDB解决幻读的方案——LBCC&MVCC

阿Q说代码

MySQL innodb MVCC 8月日更 LBCC

百度地图开发-显示实时位置信息 04

Andy阿辉

android Android 小菜鸟 Android端 8月日更

混合模型与期望最大化算法(三)

Databri_AI

算法 混合模型

从λ演算到函数式编程聊闭包(1):闭包概念在Java/PHP/JS中形式

zhoulujun

闭包 闭包函数

Go,一文搞懂 defer 实现原理

微客鸟窝

Go 语言 8月日更

Linux之nc命令

入门小站

Linux

微信业务架构图 & 学生管理系统方案

缘分呐

架构 设计

LeetCode刷题09-简单 回文数

ベ布小禅

8月日更

微信业务架构和学生管理系统架构设计

Geek_db27b5

微信业务架构 学生管理系统架构

Vue进阶(六十四):iframe更改src后页面未刷新问题解决

No Silver Bullet

Vue iframe 跨域 8月日更

James Phillips谈从关系型数据库转到NoSQL_DevOps & 平台工程_Srini Penchikala_InfoQ精选文章