`
piperzero
  • 浏览: 3542932 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

[转]关于NoSQL的思考:为什么我们要优化存储的写性能

阅读更多

在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/

分享到:
评论

相关推荐

    2013年中国数据库大会-09-主流开源NoSQL及分布式存储的应用与思考

    接着,我们看到了大会中关于主流开源NoSQL及分布式存储的应用与思考的 Agenda,包括对传统数据库与NoSQL的选择、典型开源NoSQL存储方案分析、分布式存储经典架构、大规模分布式存储系统设计等关键议题。 从提供的...

    noSQL技术 Polyglot

    5. **未来趋势展望**:对NoSQL技术和Polyglot Persistence的发展趋势进行了预测,为读者提供了前瞻性的思考。 通过上述内容的学习,读者不仅能够深入了解NoSQL技术本身,还能掌握如何将这些技术应用于复杂的业务...

    大云NOSQL系统设计思考 --NOSQL在电信行业的应用 高清完整中文版PDF下载

    ### NoSQL在电信行业的应用及系统设计思考 #### 一、NoSQL概述及其在电信行业的应用背景 NoSQL(Not Only SQL / Non-relational)是一种非关系型数据库系统的统称,它突破了传统关系型数据库的限制,在面对大规模...

    高性能高并发服务器架构

    - 使用NoSQL数据库存储非结构化数据。 - CDN服务。 - **案例二**:eBay的数据量及架构 - **策略**: - 分布式数据库。 - 数据库读写分离。 - 缓存技术。 #### 10. 性能优化方法 - **前端性能优化**: - 减少...

    QQ邮箱存储平台SimpleDB

    综上所述,QQ邮箱存储平台SimpleDB是一个专门为QQ邮箱等应用设计的高效、灵活的存储系统。它不仅能够处理海量数据,还支持复杂的数据模型和查询需求,同时具备高性能和良好的可扩展性。通过对SDB的设计原理和技术...

    数据库思考题

    11. **性能优化**:包括索引优化、查询优化、存储优化等,通过调整数据库配置、优化查询语句和合理设计数据库结构来提升数据库性能。 12. **安全性**:数据库安全涉及到权限管理、角色、审计和加密等,确保只有授权...

    藏经阁-No.3 当HBase遇上云的思考.pdf

    24. 基于共享存储的成本:HBase提供了基于共享存储的成本优化,降低了存储成本。 25. 冷、温、热分布式KV:HBase提供了冷、温、热分布式KV的支持,满足了不同的业务场景的需求。 26. 分布式索引融合:HBase提供了...

    云存储压缩文件

    此外,了解这些先进的云存储系统还能启发我们思考如何在实际项目中应用这些技术,比如如何构建自己的云存储服务,或者如何优化现有系统的架构。同时,这些知识也对理解其他云服务,如云计算、大数据分析、人工智能等...

    中级数据库系统工程师2006上半年试题 含答案.zip

    4. 数据库性能优化:索引设计、查询优化、存储过程与触发器的应用。 5. 并发控制:事务的概念,隔离级别,死锁及其预防。 6. 数据安全与备份:权限管理、角色、加密技术,以及备份策略和恢复方法。 7. 系统架构:...

    Java+数据库面试题!!!!!!!

    - **数据库性能监控**:了解如何分析和优化数据库性能,如使用 Explain 分析SQL执行计划。 5. **面试技巧**: - **问题解答**:学会清晰、有条理地回答问题,展示自己的思考过程。 - **项目经验**:准备并能讲述...

    java-大数据基础面试思考.zip

    这份“java-大数据基础面试思考”资料涵盖了Java在大数据领域的核心概念和技术,对于准备面试或者想要深入理解Java大数据的开发者来说极具价值。 1. **Hadoop与MapReduce** Hadoop是Apache基金会的一个开源项目,...

    高并发直播系统服务端架构设计与思考.pdf

    在构建高并发直播系统服务端架构时,设计者必须面对一系列挑战,包括如何处理海量用户同时在线、保证视频流的稳定传输、优化延迟以及确保服务质量。以下是对这一主题的详细探讨: 1. **负载均衡**:为了应对大量...

    No.3当HBase遇上云的思考.pdf

    根据文件内容,我们可以提炼出关于HBase在云计算环境下的应用以及相关的知识点。 首先,文档提到了为何选择HBase。HBase是一个开源的非关系型分布式数据库(NoSQL),它建立在Hadoop文件系统(HDFS)之上,提供高...

    DTCCNoSQL数据库最新发展趋势所在.pdf

    NoSQL数据库,即非关系型数据库,因其高性能、高可用性和易扩展的特性,在处理大规模数据存储方面拥有关系型数据库无法比拟的优势,尤其在处理非结构化数据时更为高效。 随着云计算技术的蓬勃发展,NoSQL数据库与...

    MongoDB Base de donnée orientée documents.pdf

    在设计MongoDB的数据模型时,应考虑如何利用文档的嵌套结构、数组和其他特性来优化查询性能。例如,将常用的数据字段存储在同一文档中可以减少查询次数,从而提高性能。 #### 性能优化:索引的重要性 为了进一步...

    Java开发与技术挑战——关于技术的技术思考.docx

    - 后端存储可能涉及关系数据库、NoSQL数据库的混合使用,根据性能和数据模型需求选择合适的技术栈。 5. **技术挑战**: - 垃圾回收可能导致的性能问题,如对象引用错误和内存设置不当,需要精细调优。 - 系统的...

    oracle 大数据介绍

    - **Oracle Database (DW) 和 Oracle Database (OLTP)**:为企业提供高性能的数据仓库和事务处理能力。 - **In-Database Analytics**:利用内置分析功能,如R Mining、Text Mining等,直接在数据库内进行数据挖掘和...

Global site tag (gtag.js) - Google Analytics