NoSql数据库总结

时间:2022-07-23 08:56:30

最近有时间可以静下来慢慢总结一些技术,先说说NoSql。

数据层的作用:

数据的存储和读取、修改、删除

ACID模型的支持

 

需要考虑的技术点:

ACID

易用性

批量数据统计

水平扩展性

数据模型的复杂度

IO效率

 

NOSQL快读发展原因:

NOSQL是非关系型数据存储机制,简化了数据结构和之间的关系。主要是互联网技术对于性能和高并发量的要求下推出的。

传统的关系数据库具有不错的性能,高稳定型,久经历史考验,而且使用简单,功能强大,互联网技术主推Mysql。但是随着互联网技术的快读发展,系统地访问量急剧上升,几乎大部分使用传统数据库(主要是MySQL)架构的网站在数据库上都开始出现了性能问题,web程序不再仅仅专注在功能上,同时也在追求性能。程序员们开始大量的使用缓存技术来缓解数据库的压力,优化数据库的结构和索引。开始比较流行的是通过文件缓存来缓解数据库压力,但是当访问量继续增大的时候,多台web机器通过文件缓存不能共享,大量的小文件缓存也带了了比较高的IO压力。

解决思路:读写分离(MemCached+mysql)--〉分区分库--〉关系数据库特性无法提供更好的水平扩展性;数据存储结构修改的巨大代价;大数据IO压力大;高性能数据库对于技术人员的高要求---〉无路?

NoSql 技术应运而生。

 

Nosql 技术主要实现功能:

1、通过Key-value (单值、复合值)模式存储数据;

2、良好水平扩展性

3、使用内存而非文件存储实时使用数据来加快读写

附加功能:

一致性(复制和同步)、持久化(快照和日志)

 

选择考虑点:

是否需要多线程;

需要缓存的数据类型

缓存的数据类型大小及分类,变化频率

数据一致性问题 (复制和同步)

客户端API

产品成熟度

其他功能(简单的统计、查询)是否支持 (个人建议,如果这个要求比较多,当前不需要考虑Nosql,以后图论技术如果发展到一定程度,可能可以解决)

 

当前最流行类型:

键值存储数据库(Redis, Memcached)

列存储数据库(Hbase, Cassandra)

文档型数据库(MongoDB)

图形数据库(Neo4j)

 

趋势:

功能专业化,大致分为缓存数据库(键值存储)、专用数据库(文档、图形。。。。。)、分布式数据库(弱关系型和强关系型)、文件系统数据库(HFS\GFS)

数据库多样化,一个应用可能会采用1~2类数据库产品

.......

N 年后,硬件技术突破,强关系型数据库重新回归。

 

知识汇总:http://tech.it168.com/topic/2011/10-1/nosqlapp/index.html

NoSQL在云计算中的应用.pdf http://wenku.it168.com/d_000043571.shtml
Redis学习笔记 http://wenku.it168.com/d_000053836.shtml