视觉中国MongoDB应用实战:从MySQL到NoSQL的转型
需积分: 15 64 浏览量
更新于2024-07-26
收藏 2.91MB PDF 举报
"视觉中国的MongoDB应用实践"
在2011年的QCon Beijing大会上,视觉中国的代表潘凡分享了他们采用MongoDB作为数据库系统的实践经验。MongoDB是一个流行的NoSQL数据库,以其灵活性、可扩展性和高性能而受到关注。在这个演讲中,潘凡探讨了为何视觉中国选择了MongoDB,以及他们在原有MySQL架构遇到的问题和解决方案。
首先,视觉中国选择MongoDB并不是出于追赶NoSQL潮流或被其自动分片等特性所吸引。在2008年,这些特性还不是主流,他们的主要目标是寻找一个可靠的分布式键值存储系统,以解决MySQL在处理特定问题时的挑战。原有的架构基于MySQL的主主复制配置,通过MMM(Multi-Master Replication Manager)实现高可用性。然而,这个架构在面对多数据源、灵活schema需求以及频繁属性更新时显得不够灵活。
新的业务需求要求系统能适应多数据源,拥有灵活且不确定的schema,以应对不同模型下字段和属性数量的变化,同时还需要频繁更新属性。在MySQL环境下,这可能导致查询复杂度增加,影响性能,并可能使查询缓存频繁失效。
为了应对这些问题,视觉中国考虑了两种可能的解决方案:一是使用文本字段存储JSON数据,这种方法提供了更高的schema自由度,但检索效率较低;二是使用关联表,虽然限制了schema的自由度,但更新操作会更频繁,导致查询缓存失效。
在评估了现有的MySQL解决方案后,他们意识到需要一个持久化的分布式键值存储系统,以替代Memcached,因为Memcached存在缓存失效和内存限制的问题。他们设定了选择新数据库系统的标准,包括对PHP和Perl的良好支持、接近Memcached的性能、支持分布式集群、资源效率高以及有清晰的文档和成功案例。
在一系列候选数据库中,如Flare、Repcached、Redis和TC/TT,他们最初选择了MongoDB。MongoDB因其强大的文档对象模型、支持动态schema和分布式架构,能够满足视觉中国的需求,特别是对于处理结构不确定、更新频繁的数据场景,MongoDB展现出了优势。
通过引入MongoDB,视觉中国能够构建出一个新的架构,其中包含多个KV实例,以提供更高效的数据存储和检索能力。这个决策不仅解决了他们原有的问题,还为未来的扩展性和适应性奠定了基础。视觉中国的MongoDB应用实践是一个典型的NoSQL数据库在解决传统关系型数据库痛点上的成功案例,展示了MongoDB在处理非结构化和半结构化数据时的强大功能。
2011-05-07 上传
228 浏览量
2014-09-23 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
gaoxw1985
- 粉丝: 1
- 资源: 11
最新资源
- 深入浅出:自定义 Grunt 任务的实践指南
- 网络物理突变工具的多点路径规划实现与分析
- multifeed: 实现多作者间的超核心共享与同步技术
- C++商品交易系统实习项目详细要求
- macOS系统Python模块whl包安装教程
- 掌握fullstackJS:构建React框架与快速开发应用
- React-Purify: 实现React组件纯净方法的工具介绍
- deck.js:构建现代HTML演示的JavaScript库
- nunn:现代C++17实现的机器学习库开源项目
- Python安装包 Acquisition-4.12-cp35-cp35m-win_amd64.whl.zip 使用说明
- Amaranthus-tuberculatus基因组分析脚本集
- Ubuntu 12.04下Realtek RTL8821AE驱动的向后移植指南
- 掌握Jest环境下的最新jsdom功能
- CAGI Toolkit:开源Asterisk PBX的AGI应用开发
- MyDropDemo: 体验QGraphicsView的拖放功能
- 远程FPGA平台上的Quartus II17.1 LCD色块闪烁现象解析