随着web2.0的快速发展,非关系型、分布式数据存储得到了快速的发展,它们不保证关系数据的ACID特性。NoSQL概念在2009年被提了出来。NoSQL最常见的解释是“non-relational”,“NotOnlySQL”也被很多人接受。(“NoSQL”一词最早于1998年被用于一个轻量级的关系数据库的名字。)
NoSQL被我们用得最多的当数key-value存储,当然还有其他的文档型的、列存储、图型数据库、XML数据库等。在NoSQL概念提出之前,这些数据库就被用于各种系统当中,但是却很少用于web互联网应用。比如cdb、qdbm、bdb数据库。
为什么使用NoSQL数据库?
①阻抗失衡
关系模型和内存中的数据结构不匹配
采用更为方便的数据交互方式提升开发效率
②待处理的数据量很大
数据量超过关系型数据库的承载能力
大集群的出现
在成本方面,集群中应用关系数据库,许可费用是一笔很大的支出;
横向扩展和纵向扩展:关系数据库一般只能是纵向扩展,通过对单机服务器的性能换代增强而实现;而对于扩展到多个服务器,
DBMS先天不足;(DBMS不是设计给集群使用的)
③对数据的访问效率要求高
工作中遇到的挑战:
1.高并发读写
Web2.0网站,数据库并发负载非常高,往往达到每秒上万次的读写请求
2.高容量存储和高效存储
Web2.0网站通常需要在后台数据库中存储海量数据,如何存储海量数据并进行高效的查询往往是一个挑战
3.高扩展性和高可用性
随着系统的用户量和访问量与日俱增,需要数据库能够很方便的进行扩展、维护
传统关系型数据库的瓶颈:
1,无法应对每秒上万次的读写请求,硬盘IO此时也将变为性能瓶颈
2,表中存储记录数量有限,横向可扩展能力有限,纵向数据可承受能力也是有限的,面对海量数据,势必涉及到分库分表,难以维护
大数据查询SQL效率极低,数据量到达一定程度时,查询时间会呈指数级别增长
3,难以横向扩展,无法简单地通过增加硬件、服务节点来提高系统性能
对于需要24小时不间断提供服务的网站来说,数据库升级、扩展将是一件十分麻烦的事,往往需要停机维护,数据迁移,为了避免服务间断,如果网站使用服务器集群,则根据集群策略,需要相应的考虑主从一致性、集群扩展性等一系列问题
NoSQL数据库的优点:
①海量数据下,读写性能优异
②数据模型灵活
③数据间无关系,易于扩展
NoSQL数据库的分类
1、键值数据库
产品:Redis,BerkerleyDB,Memcached,ProjectVoldemort,Riak,LevelDB
适用场景:存放会话信息,用户配置信息,购物车数据
不适合的场景:数据间有大量关系,含有多项操作的事务,根据键值的部分来查询数据,操作关键字集合
2、文档数据库
产品:MongoDB,CouchDB,RavenDB,Terrastore,OrientDB
适用场景:事件记录内容管理系统及博客平台网站分析及实时分析电子商务应用程序(需要较灵活的模式,低成本建立数据模型)
不适合场景:包含多项操作的复杂查询查询持续变化的聚合结构
3、列存数据库
产品:HBaseAmazonSimpleDBCassdndraHypertableBigTable(google)
适用场景:事件记录(保存应用程序状态,运行中遇到的错误)CMS及博客平台计数器
不适用场景:需要ACID事务查询模式变化频繁的场合
4、图数据库
产品:FlockDBHyperGraphDBInfiniteGraphNeo4JOrientDB
适用场景:互联数据推荐引擎基于位置的服务
不适用场景:更新全部或某个子集的实体
小编结语:
更多内容尽在课课家教育~~
¥199.00
¥48.00¥180.00
¥199.00
¥48.00¥180.00
¥798.00
¥29.90