智享教程网
白蓝主题五 · 清爽阅读
首页  > 日常经验

常见的NoSQL数据库有哪些?用在什么场景?

做开发这些年,身边不少朋友从一开始只熟悉MySQL,到后来项目里开始接入各种NoSQL数据。特别是在高并发、大数据量的场景下,传统关系型数据库有点扛不住,这时候NoSQL就成了“救火队员”。

Redis:内存里的快枪手

提到NoSQL,绕不开Redis。它把数据存在内存里,读写速度飞快,常用来做缓存。比如你刷短视频,点赞数实时更新,如果每次都查数据库,压力太大。于是先把点赞数存Redis,隔一段时间再同步到MySQL,用户体验顺滑多了。

除了缓存,Redis还能当简单消息队列用,比如用户注册后发个验证码,先扔进Redis的list里,后台慢慢消费。

SET user:1001 "张三"
EXPIRE user:1001 3600  # 一小时后过期

MongoDB:文档型数据库的代表

MongoDB适合存结构不固定的JSON类数据。比如你做一个博客系统,有的文章带封面图,有的带视频链接,字段不统一。用MySQL就得预留一堆空字段,而MongoDB直接存一个JSON文档就行,灵活得多。

很多初创公司选它做主力数据库,开发快,不用提前设计死板的表结构。不过它对事务支持早期比较弱,现在新版本已经好多了。

{
  "title": "我的第一篇游记",
  "author": "李四",
  "tags": ["旅行", "摄影"],
  "published": true
}

Cassandra:扛得住海量写入

如果你的业务写多读少,比如记录用户行为日志、传感器数据采集,Cassandra是个不错的选择。它分布式设计,横向扩展能力强,哪怕节点挂了几台,系统照样运行。

某次帮朋友看一个物联网项目,每秒几万条设备上报数据,MySQL写入直接卡死,换成Cassandra后稳如老狗。

Elasticsearch:搜索场景的王者

虽然严格来说它不算传统数据库,但ES在全文检索、日志分析领域太常用了。比如你在一个电商网站搜“红色连衣裙”,不仅要匹配标题,还要按销量、评分排序,ES处理这种需求得心应手。

很多公司用ELK(Elasticsearch + Logstash + Kibana)组合来查日志,比翻文本文件快太多了。

HBase:来自Hadoop家族的大块头

HBase基于HDFS,适合存超大规模数据,比如电信运营商的通话记录、银行的历史交易流水。它的读写延迟比Redis高,但胜在能撑起PB级的数据量,而且和大数据生态集成紧密。

一般小项目用不到它,但一旦数据量上去了,它就是那个“能扛”的角色。

怎么选?看场景再说

没有哪个NoSQL是万能的。Redis快但数据不能太大;MongoDB灵活但占用内存多;Cassandra写入强但运维复杂;ES搜得好但不适合做交易系统。

就像工具箱里的扳手、螺丝刀,各有各的用处。项目初期可以先用MongoDB或Redis打底,等规模上来了再根据瓶颈换更专业的方案。

技术这东西,用对了才是好技术。