最近在学 MongoDB 和 Redis ,我是做 Java 后台的,很好奇这两个 NoSQL 的应用场景有哪些?我能想到的一个场景就是当一个 Web 站点数据量很大时,关系数据库会遇到瓶颈,这些 NoSQL 会派上用场,比如 MongoDB,当然 Redis 可能主要是做缓存方面的,但是在一个项目中直接不使用关系数据库吗?还是会搭配着使用,希望有相关了解的人指导下。
1
dapang1221 2016-04-06 14:30:09 +08:00 via Android
我觉得当关系型数据库用起来明显感觉到痛苦时就要上 nosql 了,还有就是业务逻辑解耦。。一个简单的栗子就是你要存大量的键值对,用 MySQL 的话效率感人,就要把这块东西分离出来,用 redis 来实现。不用关系型数据库当然可以,得看具体是什么项目而已。。个人理解。
|
2
shirokuma 2016-04-06 15:51:18 +08:00
1.mongodb 的 schema-free 使用起来比 mysql 自由些.但因为没有事务需要应用自己实现
mongodb 支持副本集(replica)和分片(shard),Replica 可以将读压力分散到各个集群中,出了问题自动 failover,而 shard 可以将 IO,内存,CPU 等压力分散开来,适合用来存储单台机器无法存储的数据量. 2.redis 比较灵活些,但个人更偏爱使用 redis 作为缓存以及处理各种排行榜,排序来使用 |
3
shirokuma 2016-04-06 16:12:45 +08:00
补充一下:可以考虑两者采用混合使用.按经验来说,sql 和 nosql 是互补关系.
关联查询,统计,事务需要用到 sql 会轻松不少. 如果有比较多的 key-value 数据或者"灵活多变的"数据而且还蛮多的,就用 nosql 吧 |
4
xuwenmang 2016-04-06 17:23:14 +08:00
不喜欢关系数据库。
存的时候:把数据拆开,存; 取得时候:取;再把数据合并。 图啥啊。破 B 网站,直接用 txt 存。 |