首页 >后端开发 >php教程 >非关系型数据库 对我们web项目有什么帮助 在哪里可以用到它

非关系型数据库 对我们web项目有什么帮助 在哪里可以用到它

WBOY
WBOY原创
2016-07-06 13:53:281372浏览

我现在有个疑问就是 redis 或者memercach 这些非关系型数据库在我们的web 程序中有什么用 哪些地方可以用到它

回复内容:

我现在有个疑问就是 redis 或者memercach 这些非关系型数据库在我们的web 程序中有什么用 哪些地方可以用到它

https://www.zhihu.com/question/20059632

https://www.zhihu.com/question/20304711

缓存的时候能用到啊。用户浏览我们的网站的时候如果用到了缓存就不用再去查询数据库了,直接从缓存里面那数据减少服务器数据库的压力也能使软件硬件健康运行。用到的地方还有很多我只是举个例子^_^

首先memercach没听过,只听过memcache
1.非关系型数据库由于是key-value的,所以查询会非常快,关系型数据库支持事务且可以支持多表关联。
2.Redis与Memcache都是key-value存储系统。他们都是基于内存的数据库,当然有些数据库可以刷到硬盘上,一般来说用来做缓存的比较多。当然还有其他很多的应用场景,比如redis可以用来做队列。

个人是这样理解的。我们可以把数据库从两个角度区分:一是存储介质(硬盘、内存);二是存储模型,即用什么样的方式来表达、操作你所存下的数据,类似文件系统之于硬盘。

回到题主这个问题,首先从存储模型上讲,关系型数据库是基于集合和关系代数的,每张表是一个集合,对于表的增、删、改、查对应选择、并、交、连接等关系代数运算,应该说它是比较全面、严谨的,不论是数学层面的推导,还是多年来企业信息化实践的检验。但与此同时它也会有局限性,比如当你要存储一个员工信息,这个员工信息可能具备很多属性,如岗位、职级、各级部门、调岗记录等;你用关系型数据库做,就会建立多张属性表以及关系表,同时你也可以用mongodb存储,干脆把它放在一个JSON数据中(PS:如果只是查询而已)。因此,NOSQL从这个角度讲,它代表一种特殊的存储模型,通常能够更加简化的存储某类数据。举个生活中的例子,你可以把关系型数据库想象成一个标准的收纳盒,而NOSQL想象成特殊的容器,比如钓鱼竿桶。

其次,从存储介质上,像memcached/redis这些是基于内存的数据库,通常也会被用来当做缓存,存储常用数据或者session等;

最后,由于NOSQL的这种优化,往往是出现在大数据情况下。这个也很好理解,如果数据量小的话,原来关系型数据库都够用了。因此,很多NOSQL在设计之初就考虑了集群,比如mongodb,你可以很简单的配置副本集(支持读写分离),配置分片。

上面讲的都是些概念性的东西,如果题主需要进一步了解,我觉得有两种方式:

1、在网上搜索XX数据库的优秀实践之类的分享,看业内具体在什么场景下用NoSQL,比如:
http://sanwen8.cn/p/1a7xFmh.html
2、看NOSQL云服务介绍,一般会附带这款数据库的典型应用场景,比如:
https://www.aliyun.com/product/kvstore?spm=5176.7960203.237031.34.78OO9N

需要频繁更新,而且数据模式不同的时候用菲关系型数据库,
比如有个发送微博的功能,有些微博可能有图片,有些可能是纯文字,这里如果用mysql存要么用text存格式化后的json,要么两个字段。
第一种方式会不利于搜索,第二种方式会造成存储空间浪费

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn