在NoSQL的许多产品中,我们通过benchmark可以看到的都是写性能极度提升,而读性能并没有太大的涨幅甚至相对传统RDBMS还有下降。比如Cassandra,MongoDB这两个NoSQL的杰出代表。究其原因,我们可能会想到是因为当前UGC模式已经发展到白热化,用户产生内容导致读写比已经接近或者说小于1:1。
但是我认为这绝不是个中真实原因。
1. 缓存导致存储的raw read效率不再重要
真实原因是我们对读的优化已经做得足够多了,数据存储我们使用Memcached,TokyoTyrant/TokyoCabinet等缓存存储,页面及文件缓存我们使用squid,nginx proxy_cache等存储,都可以达到非常好的读缓存效果,如果数据即时性要求不高,或者说缓存设计合理(读写皆缓存),缓存命中率会足够的高,因此我们无需再过分优化底层存储的raw read效率。
试想缓存层如果有高达99%以上的命中率,那么相对于raw read设备,我们的亿级的数据读取请求就轻松的变成百万级请求,上千并发轻松变成数十并发。当然,这需要我们的缓存层足够靠谱。比如 nginx proxy_cache 可以多较多,这时候宕掉一台不至于使全部读请求穿透到底层存储。至于多了之后purge等操作如何全面的执行,不在本文讨论之列。
综上,raw read效率不需要再提升,因为其需求已经被缓存层大量取代。
2. 无法取代的rawwrite功能
看到缓存减轻raw read的工作量,我们可以在想是否有方法可以减轻rawwrite的工作量。答案是不可以的。如果您认为可以。可以留言探讨。既然rawwrite的工作量是不可取代的,那么我们大概可以有两种方法提升写操作的性能。
3.1 sharding
通过对数据的分区,我们可以将数据进行分布式的存储,于是每个结点只会分配到一部分的rawwrite请求。这样相当于公司员工效率不变,多招了人。但由于结点的增多,其中有结点出问题的效率也大大增加。于是我们不得不做一些replication操作来提供HA方案。
3.2 提升rawwrite效率
如上面的举例,我们只能选择提升rawwrite效率来实现总体(包括cache层)更好的读写效率。这里通常使用的方法就是将随机的写操作在内存中进行序列化,并在一定量后进行顺序的flush到磁盘操作。所谓将内存当成硬盘,将硬盘当作磁带就是这个意思。(可参见我更早的一篇文章:《NoSQL理论之-内存是新的硬盘,硬盘是新的磁带》)所以我们看到前面说到的很多NoSQL产品着重对写操作进行了优化,而对读性能提升并不明显,甚至不惜以更慢的读作为提升写操作性能的代价。
4. 总结
由于读性能可以通过设置合理的缓存策略来减少raw read操作的数量。因此不仅对读写比不大的情形需要着重进行写操作的优化,对读写比大的情况下,仍旧需要优化写性能而非读性能。
原文地址:http://news.cnblogs.com/n/77216/
分享到:
相关推荐
《Oracle NoSQL数据库:实时大数据管理》讲述如何全面运用Oracle NoSQL数据库这个经济实惠的解决方案来存储、检索和更新海量的非结构化数据。本书在紧贴实用的示例的引导下,介绍Oracle NoSQL数据库的安装、配置、...
yolo知识领域: 数据库管理 技术关键词: SQL、关系数据库、NoSQL 内容关键词: 数据建模、查询优化、事务处理 用途: 学习有效管理和操作数据的技术和方法 资源描述: 《数据库系统概念》一书
技术关键词: SQL、关系数据库、NoSQL 内容关键词: 数据建模、查询优化、事务处理 用途: 理解数据存储和管理的基本原理,确保数据的有效性和安全性 资源描述: "MySQL官方文档"提供了MySQL数据库的详尽文档和教程,...
#资源达人分享计划#
深入NoSQL 原作名: Professional NoSQL 作者: Shashank Tiwari 译者: 巨成 出版社: 人民邮电出版社 出版年: 2012 11 页数: 294 定价: 69 00元 装帧: 平装 ISBN: 9787115296382《深入NoSQL》是一本全面的NoSQL实践...
技术关键词: SQL、NoSQL、数据库优化、数据建模 内容关键词: 数据库设计、查询优化、事务处理 用途: 学习有效管理和操作数据的技术和方法 资源描述: Coursera 上的《数据库管理原理》课程由知名大学教授授课,涵盖了...
MongoDB 是一种流行的开源非关系型数据库(NoSQL),它以文档为模型,使用类似于 JSON 的 BSON 格式进行数据存储。MongoDB 具有强大的查询和索引功能,并且支持各种语言的驱动程序,例如 Java、Python、C#等。在...
NULL 博文链接:https://treemp3.iteye.com/blog/1491682
2. 性能优化:包括 SQL 查询优化、索引优化、数据表分区、缓存机制等。 3. 备份与恢复:包括数据备份和恢复的方法、备份数据的类型、备份与恢复的策略、日志文件管理等。 4. 数据库设计:包括数据库设计范式、数据库...
NoSQL Distilled PDF .
为什么使用NoSQL数据库? 1、阻抗失衡 关系模型和内存中的数据结构不匹配 采用更为方便的数据交互方式提升开发效率 2、待处理的数据量很大 数据量超过关系型数据库的承载能力 大集群的出现 ...
非关系数据库(经常被称为NoSQL)的特点是弹性和可伸缩性。另外,它们可以存储大数据并与云计算系统协同工作。这些因素导致非关系数据库非常流行。在2013年,NoSQL数据库的种类达到了150多个,并且一直在增长,多种...
高性能NoSQL数据库Redis,盛大在线的资料。
NoSQL精粹 中文版+英文 NoSQL Distilled Pramod J. Sadalage, Martin Fowler
高性能NoSQL系统BladeCube的设计与优化.pdf
高性能NoSQL系统BladeCube的设计与优化
为什么使用NoSQL? 为什么使用NoSQL? NoSQL的分类 NoSQL有什么特点? NoSQL有什么特点? NoSQL是否完美? NoSQL的一些概念——CAP NoSQL的一些概念——ACID NoSQL的一些概念——BASE NoSQL的一些概念——BASE NoSQL...
NoSQL与大数据简介、NoSQL的数据一致性、NoSQL的水平扩展与其他基础知识、BigTable与Google云计算原理、Google云计算的开源版本——Hadoop、Dynamo:Amazon的高可用键值对存储、LevelDb——出自Google的Key-Value...
CHAPTER 1: NOSQL: WHAT IT IS AND WHY YOU NEED IT 3 CHAPTER 2: HELLO NOSQL: GETTING INITIAL HANDS-ON EXPERIENCE 21 CHAPTER 3: INTERFACING AND INTERACTING WITH NOSQL 43 PART II: LEARNING THE NOSQL ...
随着web2.0的快速发展,非关系型、分布式数据存储得到了快速的发展,它们不保证关系数据的ACID特性。NoSQL概念在2009年被提了出来。NoSQL最常见的解释是“non-relational”,“Not Only SQL”也被很多人接受。