视觉中国MongoDB分布式存储实践

5星 · 超过95%的资源 需积分: 10 57 下载量 152 浏览量 更新于2024-07-25 收藏 2.38MB PDF 举报
"视觉中国的MongoDB应用实践分享了在IT行业中,特别是视觉中国,如何采用MongoDB作为数据库解决方案来应对特定挑战的过程。这个实践主要关注于MongoDB在NoSQL环境中的应用,以及它如何解决传统MySQL架构无法满足的需求。" 文章首先提到了视觉中国在2011年时面临的困境,他们原有的架构基于MySQL,采用了Master-Master-Slave的复制模式,并依赖MMM(Multi-Master Replication Manager)进行高可用性保证。然而,随着业务发展,新的需求出现了,包括需要处理多数据源、灵活且不确定的schema、以及频繁更新的动态属性。这些需求超出了MySQL的固有能力,尤其是当面对不确定的字段和属性时。 为了应对这些挑战,视觉中国考虑了两个解决方案:一是将数据存储在MySQL的文本字段中,以JSON格式保存,这样可以获得更高的schema自由度,但查询变得复杂;二是使用关联表,虽然限制了schema的灵活性,但更新操作会导致query缓存失效,影响性能。这两个方案都有其局限性。 在寻求替代方案的过程中,视觉中国发现Memcached虽好,但作为缓存系统,它存在缓存失效和内存限制的问题。因此,他们决定寻找一个能持久化、分布式且性能接近Memcached的键值存储系统(KV)。在评估了包括Flare、Repcached、Redis和TC/TT等多个候选者后,文章暗示了他们最初选择了某个系统,但具体选择的系统在提供的内容中并未明确指出,可能是为了保留悬念或鼓励读者进一步研究。 MongoDB被引入是因为它符合选型条件,拥有良好的PHP和Perl客户端支持,性能接近Memcached,支持分布式集群,文档清晰,并有成功的应用案例。MongoDB的文档数据库特性使其能更好地适应灵活的schema和频繁更新的场景,同时其自动分片功能(auto-sharding)也是吸引人的特点之一,尽管在当时可能还不是视觉中国的主要需求。 这篇分享揭示了视觉中国在面对业务变化时如何从传统的关系型数据库转向NoSQL解决方案,尤其是MongoDB,以实现更高效、灵活的数据管理。这是一次典型的数据库技术迁移案例,对于理解NoSQL数据库在实际业务中的应用和选择具有参考价值。