谈谈mongodb,mysql的区别和具体应用场景?
官方文档看一看。
编程实例练一练。
源码看一看。
一般互联网公司多用mysql,redis,mongodb做存储层,hadoop,spark做大数据分析。
mysql适合结构化数据,类似excel表格一样定义严格的数据,用于数据量中,速度一般支持事务处理场合。
redis适合缓存内存对象,如缓存队列,用于数据量小,速度快不支持事务处理高并发场合。
mongodb,适合半结构化数据,如文本信息,用于数据量大,速度较快不支持事务处理场合。
hadoop是个生态系统,上面有大数据分析很多组件,适合事后大数据分析任务。
spark类似hadoop,偏向于内存计算,流计算,适合实时半实时大数据分析任务。
移动互联网及物联网让数据呈指数增长,NoSql大数据新起后,数据存储领域发展很快,似乎方向都是向大数据,内存计算,分布式框架,平台化发展,出现不少新的方法,如Apache Ignite适合于内存计算就集成了好多功能模快,Apache Storm、Spark、Flink也各有特点。
一般普通应用TB,GB级别达不到PB级别的数据存储,用mongodb,mysql就够了,hadoop,spark这类是航母一般多是大规模应用场景,多用于事后分析统计用,如电商的推荐系统分析系统。
聪明的战士总是选择适合的武器。具体什么场合用什么数据存储策略或混合使用,需要分析业务特点及未来业务发展需求来决定。
mysql redis 怎么配合使用?
MySQL 和 Redis 可以配合使用,以实现更高效的数据处理和存储。下面是一些常见的配合使用的方式:
数据缓存:Redis 是一种内存数据库,可以作为 MySQL 的缓存层。可以将经常查询的数据存储在 Redis 中,以提高查询速度。当有查询请求时,首先检查 Redis 中是否有数据,如果有则直接返回,否则查询 MySQL 数据库并把结果存储到 Redis 中,以便后续查询时能够快速获取。
数据持久化:Redis 虽然是一种内存数据库,但是它支持将数据持久化到磁盘中。可以将 Redis 作为 MySQL 的一个备份层,将数据同时存储在 Redis 和 MySQL 中。这样即使 MySQL 数据库发生故障,也可以通过 Redis 快速恢复数据。
分布式数据库:Redis 可以作为分布式数据库使用。可以将数据分散存储在多个 Redis 实例中,以提高数据处理的并发性能。同时,Redis 还支持主从复制功能,可以实现数据的高可用性。
事务处理:Redis 和 MySQL 都支持事务处理。可以将一些需要事务保证的操作放在 Redis 中执行,以避免对 MySQL 数据库造成压力。例如,可以在 Redis 中实现乐观锁,对数据进行读取、修改和提交操作,以保证数据的完整性和一致性。
数据分片:如果数据库中的数据量非常大,可以考虑使用 Redis 进行数据分片。将数据分散存储在不同的 Redis 实例中,以减轻单个 Redis 实例的负载压力。同时,也可以通过 Redis 的分布式功能实现数据的负载均衡和高可用性。
总之,MySQL 和 Redis 可以相互配合,以实现更高效、更可靠的数据处理和存储。在实际应用中,需要根据具体场景选择合适的配合方式。

