常见的关系型数据库MySQL Oracl RDBMS,使用sql语句进行增删改
非关系型数据库NoSQL数据库为了解决关系型数据库以下问题而诞生,常见的非关系型数据库有 Redis MongoDB HBase
非关系型数据库都是k-value形式,value是json格式,查询只用查倒key获取对应的json解析json即可,这样的设计可以允许每个key对应的value是不用的,每个json可以有长有短,曾删改某个key对应的
关系型数据库问题:
1)高并发是容易出现费时情况,虽然可以使用memecached解决但是也会带来hash不一致问题
*memecached:Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。
*hash:HASH函数是这么一种函数,他接受一段数据作为输入,然后生成一串数据作为输出,从理论上说,设计良好的HASH函数,对于任何不同的输入数据,都应该以极高的概率生成不同的输出数据,因此可以作为“指纹”使用,来判断两个文件是否相同。
数据 ---->输入 HASH函数 ---->输出指纹数据
从这个角度说来,输入完全不必要是数字、只要是数据,都可以做HASH,当然具体实现可能会有所不同。
我可以举一个简单的糟糕的HASH函数的例子,例如我要判断两篇文章是否相同,我又不想一个字一个字比较,那么我可以这么做,从两篇文章中选择第1、10、100、1000……个字进行比较,如果他们不相同,那么肯定就不是一篇文章了,这个时候,输入就是文章,输出的HASH值就是这几个字组成的字符串。
2)扩展性不好,增加字段需要改大量的表结构
3)恢复数据较慢
非关系型数据库优点:
1)解除了数据之间的依赖关系后,可部署在分布式系统中,通过多台机器分担单一机器的高负荷
2)由于数据之间无关系,所以增删改高效
网友评论