首页 文章 精选 留言 我的

精选列表

搜索[mongo],共578篇文章
优秀的个人博客,低调大师

《Spring Mongo实战》第22招 Mongo也进向量时代

最近一个做电商的朋友半夜发消息:用户输入‘适合程序员出差的轻便背包’,结果搜索结果里全是电脑包,甚至还有带轮子的登机箱。关键词搜索根本不懂什么叫‘程序员出差’。我是老李,这种情况我见得太多了。传统搜索建立在词匹配上,用户脑子里想的是语义,系统却只认字符串。即使你做同义词表、分词优化,也很难覆盖千变万化的自然语言。更头疼的是,业务还要叠加租户隔离和类目过滤,比如只搜某个租户下的‘箱包’类目,过滤和语义检索一旦结合不好,要么召回太少,要么性能雪崩。

优秀的个人博客,低调大师

《Spring Mongo实战》第23招 Mongo线上怎么排障

最近组里一个核心服务偶发超时,监控看接口 P99 飙到 3 秒,数据库 CPU 却只有 15%。我是老李,带着两个同事查了两天,最后发现问题不在业务代码,也不在连接池大小本身,而是查询计划对某个高频字段走了全表扫描,加上驱动连接池排队,两个延迟叠加起来,接口自然慢得离谱。今天我把这条排查链路完整拆开:从 HTTP 入口一直追到 MongoDB 的锁和 IO。现在用 MongoDB 的团队越来越多,但很多人还停留在只看 Spring 接口耗时的阶段。NoSQL 并没有消灭数据库调优,只是把重点从 Join/SQL 转向了 Document、Query Pattern、Index 和 Distribution。现在讲。

优秀的个人博客,低调大师

《Spring Mongo实战》第4招 Embed还是Reference

一个商品文档最多能塞多少条评论?先算一笔账。假设每条评论 500 字节,MongoDB 单文档上限 16 MiB,大约能存 3.3 万条。看起来不少,可一个爆款商品一天新增 2000 条评论,不到三周就会顶到天花板。更难受的是,每次修改库存、更新价格,都要把几万条评论一起读出来吗?我是老李,今天不聊增删改查,聊 MongoDB 建模里最容易被低估、也最容易后悔的决定:嵌入还是引用。

优秀的个人博客,低调大师

《Spring Mongo实战》第5招 Document怎么映射

凌晨两点,商品中心那条“价格类型不一致”的工单又被顶了上来。我是老李,跟着团队排查发现,有的商品文档里 price 是 double,有的是字符串,还有的干脆没有 price 字段。最离奇的是同一个 Java 对象保存进去,状态字段在 A 环境是字符串,在 B 环境却变成了数组。查询语句开始走样,索引慢慢失效,接口返回给前端的类型也在漂移。

优秀的个人博客,低调大师

《Spring Mongo实战》第6招 Repository先够用

我是老李,上个月接了一个多租户商品中心的查询需求。起初我觉得 Spring Data MongoDB 的 Repository 太省事了,findByTenantIdAndCategory 一写,分页排序全都有。结果需求从两个条件变成五个,还出现可选区间,方法名差点写成一行作文。后来团队停下来重新划了条线:简单查询留在 Repository,动态查询切到 MongoTemplate。今天把这条线完整梳理出来。

优秀的个人博客,低调大师

《Spring Mongo实战》第7招 MongoTemplate才是主角

凌晨两点,手机突然弹出一堆告警:商品列表查询又超时了。我是老李,一个负责电商后端的老兵,系统用 Spring Boot 加 MongoDB 跑了三年多。业务不算特别新,但需求一直在变:商品列表要支持价格区间、类目、标签、关键词、上下架状态、库存状态、促销标签,甚至还要根据用户身份裁剪字段。前端每加一个筛选条件,代码里的查询方法就膨胀一圈。

优秀的个人博客,低调大师

Mongo DB开源版入侵趋势扩大,解法在此

本周,境外勒索集团黑客大规模利用企业使用MongoDB 开源版时的配置疏漏进行入侵,给自建MongoDB 数据库服务的企业造成不小的安全隐患。 阿里云官方网站第一时间发布公告《MongoDB数据库未授权访问漏洞及加固》给出相应修复建议。同时,立即通过邮件、站内信和短信进一步提醒。 复制链接查看完整公告:https://help.aliyun.com/knowledge_detail/37451.html 问题出在哪里? 阿里云安全团队发现,受害用户都有一个共同的特征:所有被入侵的MongoDB数据库均可以在任何网络环境,不使用账号直接登录。 再说得更通俗一点,这就是把家门全部敞开,没有任何安全防护措施,业务直接裸奔在互联网上,黑客可以来去自如,用低成本的方式做任何想做的事情,包括数据库删除这样的高危操作等。 如何解决? 阿里云为所有用户提供了两

优秀的个人博客,低调大师

《Spring Mongo实战》第10招 聚合不是SQL替身

我是老李。最近团队在做一个电商后台的报表模块,运营提了三个需求:按商品分类统计销售额、按品牌看价格区间、给商品算评分排行。听起来很标准,几位后端同事第一反应全是 SQL 里的 GROUP BY,想着把订单表 join 商品表再 group 一下。可我们的明细数据存在 MongoDB 里,订单子项是数组,分类和品牌又在商品文档里,有些评分数据还落在另一个集合。硬套 GROUP BY 的思路,要么在应用层循环拆数组,要么反复查库拼装,写出来的逻辑又长又重,数据量一上来就开始变慢。

优秀的个人博客,低调大师

《Spring Mongo实战》第11招 索引跟着查询走

昨晚凌晨两点,运维群又炸了:订单查询超时,MongoDB CPU 飙到 95%。我打开慢查询一看,一个简单的租户商品筛选居然扫了 40 万行。更离谱的是,这个集合上建了 18 个索引。我是老李,这几年在云上帮不少团队收拾过 MongoDB 的烂摊子。今天不聊玄学,就聊一个被很多人忽略的原则:索引不是看到字段就加,而是从真实查询模式反推。

优秀的个人博客,低调大师

《Spring Mongo实战》第13招 Bulk别循环save

有一次,运维群里突然弹出一条告警:商品同步服务已经跑了 40 分钟,数据库 CPU 只有 15%,网络也没打满,但 MongoDB 连接数高得离谱。我们一开始还以为是索引问题,后来把链路一拉出来,发现同步代码里是这么写的:for (Product p : list) { productRepository.save(p); }。10 万商品,一条条发给数据库。我是老李,今天不聊什么包治百病的优化套路,就把这次批量导入的前后对比拆开,讲清楚 Spring Data MongoDB 里的批量写入到底怎么选。为什么现在讲?因为 MongoDB 8.0 已经把 bulkWrite 做到了跨多个 Collection,Spring Data 也早就提供了 insert batch 和 BulkOperations,但很多项目还是停留在循环 save。

优秀的个人博客,低调大师

《Spring Mongo实战》第17招 Geo做附近门店

周末晚上快十点,运营群里突然炸锅。用户反馈附近门店一直转圈,点进去十几秒不出列表。我是老李,后端开发。第一反应去监控平台看,果然门店接口 TP99 已经 4.8 秒,慢查询堆成山。这个接口的逻辑不复杂:根据用户手机传来的经纬度,查 5 公里内的门店,再按距离从近到远排序,同时支持品类过滤和只看营业中。当初图省事,门店数据放在 MySQL,坐标用了两个 decimal 字段。距离怎么算?应用层把符合品类的门店全拉到内存,Haversine 公式一圈,再过滤营业状态,最后排序。刚开始门店量小,一两万条还能扛;现在门店量上来了,一页附近查询要扫几十万行,索引完全使不上劲,流量一高就雪崩。

优秀的个人博客,低调大师

《Spring Mongo实战》第18招 GridFS别当OSS用

排查一个商城下载慢的故障时,我们发现商品说明书 PDF 全被编码塞进了 MongoDB。文件单个不大,但数量一多、并发一高,主库 CPU 和网络被拖得很惨。我是老李。这类问题不是第一次遇到。很多团队看到 MongoDB 支持 GridFS,就认为文件存储有了官方答案。今天把 GridFS 的原理、Spring Data 操作方式、以及“为什么生产图片视频还是应该放 OSS/S3”一次讲清。

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册