`
xumingyong
  • 浏览: 180319 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

NoSQL探讨之一

阅读更多

 

http://robbin.iteye.com/blog/524977

 

 

===========================================================

 

随着互联网web2.0网站的兴起,非关系型的数据库现在成了一个极其热门的新领域,非关系数据库产品的发展非常迅速。而传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,例如:

1、High performance - 对数据库高并发读写的需求
web2.0网站要根据用户个性化信息来实时生成动态页面和提供动态信息,所以基本上无法使用动态页面静态化技术,因此数据库并发负载非常高,往往要达到每秒上万次读写请求。关系数据库应付上万次SQL查询还勉强顶得住,但是应付上万次SQL写数据请求,硬盘IO就已经无法承受了。其实对于普通的BBS网站,往往也存在对高并发写请求的需求,例如像JavaEye网站的实时统计在线用户状态,记录热门帖子的点击次数,投票计数等,因此这是一个相当普遍的需求。

2、Huge Storage - 对海量数据的高效率存储和访问的需求
类似Facebook,twitter,Friendfeed这样的SNS网站,每天用户产生海量的用户动态,以Friendfeed为例,一个月就达到了2.5亿条用户动态,对于关系数据库来说,在一张2.5亿条记录的表里面进行SQL查询,效率是极其低下乃至不可忍受的。再例如大型web网站的用户登录系统,例如腾讯,盛大,动辄数以亿计的帐号,关系数据库也很难应付。

3、High Scalability && High Availability- 对数据库的高可扩展性和高可用性的需求
在基于web的架构当中,数据库是最难进行横向扩展的,当一个应用系统的用户量和访问量与日俱增的时候,你的数据库却没有办法像web server和app server那样简单的通过添加更多的硬件和服务节点来扩展性能和负载能力。对于很多需要提供24小时不间断服务的网站来说,对数据库系统进行升级和扩展是非常痛苦的事情,往往需要停机维护和数据迁移,为什么数据库不能通过不断的添加服务器节点来实现扩展呢?

在上面提到的“三高”需求面前,关系数据库遇到了难以克服的障碍,而对于web2.0网站来说,关系数据库的很多主要特性却往往无用武之地,例如:

1、数据库事务一致性需求
很多web实时系统并不要求严格的数据库事务,对读一致性的要求很低,有些场合对写一致性要求也不高。因此数据库事务管理成了数据库高负载下一个沉重的负担。

2、数据库的写实时性和读实时性需求
对关系数据库来说,插入一条数据之后立刻查询,是肯定可以读出来这条数据的,但是对于很多web应用来说,并不要求这么高的实时性,比方说我(JavaEye的robbin)发一条消息之后,过几秒乃至十几秒之后,我的订阅者才看到这条动态是完全可以接受的。

3、对复杂的SQL查询,特别是多表关联查询的需求
任何大数据量的web系统,都非常忌讳多个大表的关联查询,以及复杂的数据分析类型的复杂SQL报表查询,特别是SNS类型的网站,从需求以及产品设计角度,就避免了这种情况的产生。往往更多的只是单表的主键查询,以及单表的简单条件分页查询,SQL的功能被极大的弱化了。

因此,关系数据库在这些越来越多的应用场景下显得不那么合适了,为了解决这类问题的非关系数据库应运而生,现在这两年,各种各样非关系数据库,特别是键值数据库(Key-Value Store DB)风起云涌,多得让人眼花缭乱。前不久国外刚刚举办了NoSQL Conference,各路NoSQL数据库纷纷亮相,加上未亮相但是名声在外的,起码有超过10个开源的NoSQLDB,例如:

Redis,Tokyo Cabinet,Cassandra,Voldemort,MongoDB,Dynomite,HBase,CouchDB,Hypertable, Riak,Tin, Flare, Lightcloud, KiokuDB,Scalaris, Kai, ThruDB,  ......

这些NoSQL数据库,有的是用C/C++编写的,有的是用Java编写的,还有的是用Erlang编写的,每个都有自己的独到之处,看都看不过来了,我(robbin)也只能从中挑选一些比较有特色,看起来更有前景的产品学习和了解一下。这些NoSQL数据库大致可以分为以下的三类:

 

下接: http://xumingyong.iteye.com/admin/blogs/629717

 

 

分享到:
评论

相关推荐

    NoSQL数据库探讨之一-为什么要用非关系数据库?.pdf

    NoSQL数据库,全称为"Not Only SQL",是近年来在应对互联网大规模、高并发、高可扩展性和高可用性需求背景下发展起来的一种非关系型数据库。相比于传统的SQL关系数据库,NoSQL数据库提供了不同的数据模型和存储机制...

    nosql数据库的应用探讨

    ### NoSQL数据库的应用探讨 #### NoSQL产生的背景 随着互联网技术的飞速发展,特别是社交网络、移动互联网等新兴领域的兴起,传统的关系型数据库面临着前所未有的挑战。这些挑战主要体现在三个方面:一是对数据库...

    NoSQL精粹_中文完整版

    《NoSQL精粹》这本书是NoSQL数据库领域的经典之作,旨在深入探讨非关系型数据库的原理、设计与应用。NoSQL(Not Only SQL)的概念在21世纪初随着大数据时代的到来而兴起,它打破了传统的关系型数据库模型,为处理...

    nosql生态系统.txt

    键值对存储是最简单的 NoSQL 模型之一,适用于快速读写操作,例如缓存系统。 - **Key-Value 存储**:键值对存储使用唯一的键来标识数据项,值可以是任何类型的数据。 - **Key-Document 存储**:这种存储方式将值视...

    NoSQL精粹 中文版+英文

    5. **分布式与水平扩展**:NoSQL数据库设计的目标之一是易于水平扩展,通过添加更多的硬件节点来提升处理能力,而不是像RDBMS那样通过垂直扩展单个服务器。 6. **ACID与BASE**:NoSQL通常放弃了传统的ACID(原子性...

    nosql之java

    这篇博文中,我们将深入讨论Java与NoSQL数据库的集成,特别是MongoDB作为示例,因为MongoDB是Java开发者常用的NoSQL数据库之一。 描述中提到的“NULL”可能意味着博主没有提供具体的细节,但我们可以通过通用的Java...

    NoSQL Distilled

    本书的作者之一,Pramod J. Sadalage,是一位在敏捷数据库开发和持续集成数据库实践方面的专家。另一位作者Martin Fowler,则是软件开发领域中广受尊敬的思想领袖,他对于领域驱动设计(Domain-Driven Design)和...

    NoSQL数据库之MongoDB源码和PPT

    MongoDB是一种流行的开源、分布式、文档型的NoSQL数据库,其设计目标是处理大量数据的同时,提供高可用性、高性能和可伸缩性。在这个"MongoDB源码和PPT"的压缩包中,我们可以期待深入理解MongoDB的核心概念、工作...

    NoSQL论文集

    《Larrea 2000 Optimal Implementation of the Weakest Failure Detector for Solving Consensus》可能是关于最弱故障检测器在解决分布式共识问题中的优化实现,这是NoSQL数据库中保持数据一致性的关键算法之一。...

    SQL和NOSQL融合

    随着未来互联网服务的不断演进,类似的混合型数据库解决方案将成为满足多样化需求的关键技术之一。 ### 总结 通过对Megastore这一创新性存储系统的深入探讨,我们不难发现,SQL与NoSQL并非不可调和的对立面,而是...

    Wrox.Professional.NoSQL

    通过实际操作,读者可以直观地理解NoSQL的工作方式,以及它与关系型数据库的不同之处。 ### 接口和交互NoSQL 第三章深入探讨了如何与NoSQL数据库进行接口和交互。这包括使用不同的客户端库、API和工具,以及如何...

    Professional NoSQL

    这包括对NoSQL产品与传统关系型数据库的不同之处进行对比,以及对NoSQL产品的类型和应用场景进行初步介绍。 2. NoSQL产品的实践体验:通过获取初步的实践经验,读者能够了解如何与NoSQL进行交互。这可能包括安装...

    Scalable SQL and NoSQL data stores

    本文将探讨和比较这类系统,这些新系统通常被统称为“NoSQL”数据存储系统。 NoSQL这个术语代表“不仅仅是SQL”或“非关系型”的意思,其定义并不是完全一致的。在本文中,NoSQL系统通常具备六个关键特性: 1. ...

    NoSQL数据库之Redis.zip

    标题 "NoSQL数据库之Redis.zip" 提到的核心知识点是NoSQL数据库中的Redis,这是一个非常重要的分布式数据存储系统,尤其在处理大数据场景时被广泛应用。现在,让我们深入探讨一下Redis及其在大数据环境中的作用。 ...

    NoSQL数据库之Redis数据库管理二(string类型和hash类型)

    在本篇文章中,我们将深入探讨其中的字符串类型和哈希类型。 ### 字符串类型(String) **1. 基本操作:** Redis中的字符串是最基本的数据类型,可以存储任何可打印的字符序列,包括空字符串。可以通过`SET`命令设置...

    NoSQL数据库之Redis数据库管理三(string类型和hash类型)

    作为NoSQL数据库家族的一员,Redis以其高效、易用和丰富的数据结构闻名,尤其在处理高并发读写场景时表现出色。本篇文章将主要聚焦于Redis中的两种基础数据类型——String和Hash,以及它们在数据库管理中的应用。 ...

    NOSQL for the Enterprise

    Java是当前企业中最广泛使用的开发平台之一。NoSQL数据库需要提供强大的Java API支持,以便开发者能够轻松地将NoSQL集成到现有的Java应用中。这种集成不仅可以简化开发流程,还能够充分利用Java生态系统的丰富资源和...

    大数据技术原理与应用之NoSQL数据库.pptx

    本章主要探讨了NoSQL数据库的原理、兴起原因、与传统关系型数据库(RDBMS)的对比,以及NoSQL的主要类型。 5.1 NoSQL简介 NoSQL数据库的主要特点是灵活性和可扩展性。它们能够轻松处理海量数据,并适应高并发场景,...

Global site tag (gtag.js) - Google Analytics