Casey Rosenthal访谈:使用键值类NoSQL数据存储时的数据建模

2014 年 7 月 24 日

键值类数据存储中,数据被表示为键- 值对的集合。键- 值模型是最简单的非基本数据模型之一,而其他更复杂的数据模型则都是在它的基础上构建的。

这些数据库提供RESTful API 和协议缓冲区(Protocol Buffer)接口用于数据访问。而诸如 Riak 等键值数据存储还支持以下额外特性:

  • 搜索:分布式、完全基于文本的搜索引擎,并带有一套查询语言。
  • 二级索引:存储标签对象时附加了额外的值,可以通过确切匹配或范围进行查询。
  • MapReduce针对大型数据结合进行不基于键的查询。

在使用键值数据库的过程中,数据建模的工作聚焦在访问模式上。

InfoQ 邀请了出品开源 KV 数据库 Riak 的 Basho 公司的专业服务总经理 Casey Rosenthal,针对使用 NoSQL 数据库进行数据管理时的数据建模理念,以及最佳实践进行了访谈。

InfoQ:对于哪些类型的数据来说,它的存储并不适合采用关系型数据库,而是适宜选择键值数据库?

Casey:当数据具有以下三类特征的时候,我们更适宜选用键值存储而不是关系型存储:

  1. 数据的格式不固定。以 HTML 页面为例,各个页面有着互不相同的结构。某些页面有 header 标签部分,某些页面使用了表格(table 标签),而某些页面则拥有图片。HTML 页面中的结构多样性,使得很难为它们构建一套通用模式,但对关系型数据库来说,这却是必不可少的。而键值数据库并不需要定义模式,因此它能够存储类似 HTML 页面这样具有不确定格式的数据。
  2. 数据的规模或数量非常大。关系型数据库是针对少量行数进行优化的,需要其行数足够少,以便一张数据表可以安置在一个服务器上。键值数据库存储大型对象会更容易;而当大型对象的数量非常庞大时,我们还必须将它们分布存储在多台服务器上。
  3. 数据之间不存在相关性。书、作者、出版商这三类信息是相关的,因此在某个单一应用里,它们可能适合采用关系型数据库。然而,大型文件和缓存的应用数据,则可能互不相干,然而其存储可能依旧需要满足同一个应用对其同时分别使用的需求。在键值数据库中存储这些不相关的数据类型,可能要比使用关系型数据库容易许多,因为在这些数据之间将不会存在需要进行建模的关联关系。

原文链接:【 https://www.infoq.cn/article/data-modeling-with-key-value-nosql-data-stores 】。未经作者许可,禁止转载。

登录后可解锁全站优质内容

免费畅享技术公开课、顶尖技术团队访谈、一线互联网大厂技术实践

文章
视频
电子书
研究报告
立即登录
2014 年 7 月 24 日 21:05 3690
用户头像

发布了 1 篇内容,共 476636 次阅读,收获喜欢 1 次。

关注

评论

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

Java引入第三方包的路径问题

谷鱼

路径

一个线程池中的线程异常了,那么线程池会怎么处理这个线程?

Java架构师迁哥

(2)skynet ubuntu下载与安装

休比

架构师训练营第 1 期 第 1 周作业

李循律(祥龙)

c++杂谈-1

菜鸟小sailor 🐕

c++

判断一个请求是否是Ajax异步请求

麦叔

ajax

高并发下为什么更喜欢进程内缓存

架构师修行之路

缓存 架构设计

我把某大厂P8大牛手写的 Linux+网络编程 手册搞到手了

互联网架构师小马

Java Linux 程序员 网络编程 操作系统

nginx 实现接口版本控制

lockdown56

php nginx laravel Nginx PHP-FPM 版本控制

华为云推UGO:一手抓结构迁移,一手抓SQL转换

华为云开发者社区

区块链用于支付手段只是开端

CECBC区块链专委会

区块链 金融

golang 表格编程降低圈复杂度

猴子胖胖

golang 表格开发

众盟科技2020智能化白皮书:穿越新商业周期,读懂商业智能化的真义

脑极体

救人于无形的“环境智能”,到底是一种什么智能?

脑极体

知乎万赞,获得腾讯offer后自述,编程能力是如何突飞猛进的

周老师

Java 编程 程序员 架构 面试

华为云IoT智简联接,开启物联世界新纪元

华为云开发者社区

物联网

分布式系统实践解读丨详解高内聚低耦合

华为云开发者社区

深度解析物联网设备的区块链技术

CECBC区块链专委会

区块链 智能合约 物联网

船长梁晓玲的猎鹰号真的能赚钱嘛?不分析不知道……

成周

心理学 船长梁晓玲 诈骗

新疆采风笔记:送行·出发·火车上

刘新吾

随笔 旅行 新疆

flutter 高效开发工具集

Daniel

阿里P8大牛的建议,工作1-5年的Java工程师如何让自己变得更值钱

Geek_71bb95

Java 编程 程序员 面试

添加字幕哪个视频剪辑软件比较简单?

Geek_96964a

视频创作 视频剪辑 视频后期 自媒体 后期字幕

“大数据+区块链”的智慧城市建设!

CECBC区块链专委会

区块链 大数据

数据库

ltc

数据库

HTTP

ltc

HTTP

一个草根的日常杂碎(9月22日)

刘新吾

生活 随笔 记录

时空碰撞优化系列·二

誓约·追光者

hive Sparksql 计算效率 优化

2020大厂面试一道高频Spring题,90%的Java开发者都拜倒在它脚下!

Java架构师迁哥

从全备中恢复单库或单表,小心有坑!

Simon

MySQL mysqldump MySQL 运维

时空碰撞优化系列·一

誓约·追光者

hive 数据分析 Sparksql 计算效率 优化

众安黑客马拉松大赛总决赛-InfoQ小编探班

众安黑客马拉松大赛总决赛-InfoQ小编探班

Casey Rosenthal访谈:使用键值类NoSQL数据存储时的数据建模-InfoQ