关系型数据库和nosql数据库有着不同的用途。
我们常常把这些不同类型的数据库用在错误的地方。
最常见的是在关系数据库内保存大量非计算的数据。
像日志啊,账号啊,这些仅仅只是需要读取和写入的数据都放在关系数据库内。
把关系数据库当作大硬盘使用。
关系型数据库特长是对数据的横相比较。
例如小明,小黄谁的分数比较高?
所获取的是不同对象的数据之间的逻辑关系。
mysql就是这类数据库的典型代表,
他的语句就支持对数据的筛选和排序,把多个对象的数据放在同一个表内。
这些功能都是为了方便,发现和整理数据之间的关系,
通过对数据关系的分析得到一个统计意义的结论。
那么关系型数据库的特点决定了他不可能在读写性能上要求很高。
硬盘数据库和内存数据库
按存储介质区分数据库有硬盘数据库和内存数据库的区别,
硬盘数据库的特点是存储数据大,支持持久保存,缺点是读写速度慢。
内存数据库的特点是读写速度快,不支持持久保存。
在过去因为内存价格昂贵,操作系统不稳定,网络链接慢,
数据库主要以硬盘数据库为主。
随着目前网络速度的提升,内存价格的下降,操作系统的成熟,
分布式存储方案和分布式计算方案的成熟内存数据库有取代硬盘数据库的趋势。
mysql是关系型数据库+ 硬盘型数据库
关系型数据库要建立索引,对数据横向的切割特点。
决定了关系数据库在读写数据上和硬盘数据库有很好的适配性。
数据横向切割的意思
例如张三和李四放入医学的关系型数据库,就会变成
张三头和李四的头数据放入脑科的表里。
驱赶和身体放入外科的表里。
剩下的放入内科的表里。
这样你想要张三的完整数据就必须所有的表都访问一遍。
关系型数据库的特点决定了数据库是在一个较高的全局看所有完整数据的关系。
nosql数据库的出现正是相对于关系数据库+硬盘数据库的模式
他是非关系数据库+内存数据库的模式。
所谓非关系数据库的意思是并不关心某个对象在全局下和别的对象之间的关系。
只要能快速读写计算某个对象的数据。
nosql的计算是在存入数据库之前。
而关系数据库的计算大多是在把数据存入数据库之后作的。
nosql也可以兼容实时计算系统,扩展成强大的数据计算中心。
nosql的特点是实时快速小范围。
例如张三碰到李四给了他一块钱。
在内存里nosql就把这件事情处理了,所以比硬盘型数据库要快很多。
内存型数据库与硬盘型数据库有很好的互补关系,
硬盘型数据库的缓存做的再好也不可能有内存数据库的速度快。
最理解逻辑的还是开发人员自己。
就说简单的账号系统的缓存命中率,
有缓存的系统和直接读mysql在效率上还是差别很大的。
全文完!