如何选择数据库?

1、读写速度

这存储数据方式往往决定读写的速度。

Mysql 无论数据还是索引都存放在硬盘中。到要使用的时候才交换到内存中。能够处理远超过内存总量的数据。

MongoDB 的所有数据实际上是存放在硬盘的,所有要操作的数据通过 mmap 的方式映射到内存某个区域内。然后,MongoDB 就在这块区域里面进行数据修改,避免了零碎的硬盘操作。

Redis 所有数据都是放在内存中的。但是它也支持数据持久化到硬盘中。

我们都知道磁盘读取数据的效率远远低于内存。所以在一般情况下,这三者的读写数据的速度排序是:Redis > MongoDB > Mysql

2、是否支持事务以及复杂查询

MySql 是关系型数据库,支持事务操作以及 join 方式的复结构化查询。而 MongoDB 是非关系型数据库, 既不支持事务操作,也不支持 join 操作。Redis 同样不支持。

因此,针对以下场景应考虑使用 MySql:
1)业务数据中有大量结构化数据,如用户账号、地址等。因为这些数据通常需要做结构化查询。
2)业务存在许多事务性操作,需要保证事务的强一致性。

3、业务数据量增长速度

在一到两年内,业务数据的增长量不在预测范围内,优先考虑使用 MongoDB。

因为 MongoDB 内建了sharding、很多数据分片的特性,容易水平扩展,比较好的适应大数据量增长的需求。而 MySql 在这方面表现要逊色些,MySql 单表数据量达到 5-10 G 时会出现明细的性能降级,需要做数据的水平和垂直拆分、库的拆分完成扩展。

Redis 由于内存容量限制,不会用来存储大量数据。一般拿它做缓存。

4、表结构是否明确

如果在业务场景中,数据库表接口不明确,数据还在不断增加。例如以下场景,内容管理平台(如 BBS 论坛中帖子场景),用户社交平台(如贴吧中的帖子以及用户评论),优先考虑使用 MangDB 。

因为 MongoDB 是非结构化文档数据库,扩展字段很容易且不会影响原有数据。

回到稻壳网首页
稻壳客服

扫一扫,微信咨询

请留下需求和联系方式,我们即刻为您准备方案
需求提交成功

提交成功

免费服务热线021-61676039(工作日9:00 ~ 18:00)
×
稻壳客服

扫一扫,微信咨询