常见的数据库:

关系型数据库:MySQL、SQL Server、Oracle;

    (具有丰富的查询语言、二级索引、强事务、企业级工具集成和完备的生态系统)

非关系型数据库:MongoDB、Redis、Memcache

   (弹性结构、水平扩展、集群化部署)

 

1 存储方式不同

关系型数据库:表格存储,容易关联协作存储,提取数据方便;

非关系型数据库:数据存储集中,像文档、键值或图结构。

 

 2 存储结构不同

关系型数据库:结构化数据,结构固定,虽然稳定,但修改较困难;

非关系型数据库:非结构化数据,动态结构。

 

3 存储规范不同

关系型数据库:为了更高的规范性,把数据分割成最小关系表存储,节省了空间,但单个操作涉及多个表时,数据管理较为麻烦;

非关系型数据库:数据可能有较多重复,单个数据库很少被分隔开。

 

4 存储扩展不同

关系型数据库:纵向扩展,要提高处理只能使用更快的处理器,扩展空间较大,但最终有纵向扩展的上限;

非关系型数据库:横向扩展,为分布式存储方式,可以通过给资源池添加更多的普通数据库服务来分担负载。

 

5 查询方式不同

关系型数据库:使用结构化查询语句SQL;

非关系型数据库:使用UnQL,无标准。

(关系型数据库中的主键对应非关系型数据库中的文档ID)

 

6 事务不同

关系型数据库:ACID(原子性A、一致性C、隔离性I、持久性D)

非关系型数据库:BASE(基本可用BA,软/柔性事务S、最终一致性E)。

 

7 性能不同

关系型数据库:为维护数据数据一致性付出了较大代价,面向高并发读写能力较差;

非关系型数据库:为key-value形式,并存储在内存中,一存储,noSQL无需sql解析,提高了读写性能。

 

一般MySQL存储业务数据,因为数据关系复杂,而redis时键值形式,及时读取效率高也没办法用,但对关联少且高频读写的,使用redis能提高并发。

如查询某个用户的订单(至少要用用户表和订单表数据)

对于关联数据一般采用MySQL,而商品库存信息,只有单张表,但读取非常频繁,可以存储到redis中,下单直接在redis中剪掉库存,这样订单的并发能力能够提高。

 

redis和memcache

在复杂数据结构(value值为哈希、列表、集合、有序集合等复杂数据结构)、数据需要持久化的情况下选择redis数据库。

 

如有侵权,联系立删

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐