NoSQL非关系型的数据库
作者:网络转载 发布时间:[ 2015/4/28 11:29:40 ] 推荐标签:数据库 NoSQL 网站
关系型数据库的缺点:
随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,例如:
1、High performance - 对数据库高并发读写的需求
web2.0网站要根据用户个性化信息来实时生成动态页面和提供动态信息,所以基本上无法使用动态页面静态化技术,因此数据库并发负载非常高,往往要达到每秒上万次读写请求。关系数据库应付上万次SQL查询还勉强顶得住,但是应付上万次SQL写数据请求,硬盘IO已经无法承受了。其实对于普通的BBS网站,往往也存在对高并发写请求的需求。
2、Huge Storage - 对海量数据的高效率存储和访问的需求
对于大型的SNS网站,每天用户产生海量的用户动态,以国外的Friendfeed为例,一个月达到了2.5亿条用户动态,对于关系数据库来说,在一张2.5亿条记录的表里面进行SQL查询,效率是极其低下乃至不可忍受的。
3、High Scalability && High Availability- 对数据库的高可扩展性和高可用性的需求
目前新浪微博的Redis 和Google 的Bigtable 以及Amazon 的SimpleDB使用的是NoSQL 型数据库。
NoSQL 优点:
1、易扩展
NoSQL数据库种类繁多,但是一个共同的特点都是去掉关系数据库的关系型特性。数据之间无关系,这样非常容易扩展。也无形之间,在架构的层面上带来了可扩展的能力。
2、大数据量,高性能
NoSQL数据库都具有非常高的读写性能,尤其在大数据量下,同样表现。这得益于它的无关系性,数据库的结构简单。一般MySQL使用 Query Cache,每次表的更新Cache失效,是一种大粒度的Cache,在针对web2.0的交互频繁的应用,Cache性能不高。而NoSQL的 Cache是记录级的,是一种细粒度的Cache,所以NoSQL在这个层面上来说要性能高很多了。
3、灵活的数据模型
NoSQL无需事先为要存储的数据建立字段,随时可以存储自定义的数据格式。而在关系数据库里,增删字段是一件非常麻烦的事情。如果是非常大数据量的表,增加字段简直是一个噩梦。这点在大数据量的web2.0时代尤其明显。
NoSQL在不太影响性能的情况,可以方便的实现高可用的架构。比如Cassandra,HBase模型,通过复制模型也能实现高可用。
NoSQL数据库主流的有文档数据库,列存数据库,键值数据库,三者分别有代表作MongoDB,HBase和Redis。
如果将NoSQL比作兵器的话,可以这样(MySQL是典型的关系型数据库,一样参与比较):
1、MySQL产生年代较早,而且随着LAMP大潮得以成熟。
尽管其没有什么大的改进,但是新兴的互联网使用的多的数据库。像传统的菜刀,结构简单,几百年没有改进。但是不妨碍产生各式各样的刀法,只要有一把,能胜任厨房里的大部分事务。MySQL也是一样,核心已经稳定。但是切库,分表,备份,监控,等等手段一应俱全。
2、MongoDB是个新生事物,提供更灵活的Schema,Capped Collection,异步提交,地理位置索引等五花十色的功能。
像瑞士军刀,不但可以当刀用,还可以开瓶盖,剪指甲。但是他也不比MySQL强,因为还缺乏时间的磨砺。一是系统本身的稳定性,二是开发,运维需要更多经验才能流行。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11