Mogodb| 青训营笔记

244 阅读2分钟

这是我参与「第五届青训营」伴学笔记创作活动的第13天

一、MongoDB相关概念 1.1 MongoDB相关概念 面对数据运营的“三高”要求和Web2.0的网站要求,传统的关系型数据库(如MySQL)显得力不从心。

说明:“三高”要求:

高性能——数据库高并发读写的需求。 巨大的存储空间——需要高效存储和访问海量数据。 High Scalability && High Availability - 需要数据库的高可扩展性和高可用性。 而MongoDB可以应对“三高”的要求。

具体应用场景如:

在社交场景中,使用MongoDB存储用户信息,以及用户发布的朋友圈信息,通过地理位置索引实现附近的人和地点等功能。 在游戏场景中,使用MongoDB存储游戏用户信息,用户的装备和积分以嵌入式文档的形式直接存储,方便查询,高效存储和访问。 在物流场景中,MongoDB用于存储订单信息。 订单状态会在发货过程中不断更新,并以嵌入式数组的形式存储在MongoDB中。 订单的所有更改都可以在一个查询中读出。 在物联网场景下,MongoDB用于存储所有连接的智能设备信息,以及设备上报的日志信息,并对这些信息进行多维分析。 直播视频,使用MongoDB存储用户信息,如互动信息等。 在这些应用场景中,数据操作的共同特点是:

数据量大 频繁写操作(频繁读写) 低价值和低交易要求的数据 对于这样的数据,我们更适合使用MongoDB来存储数据。

何时选择 MongoDB

在架构选择上,除了以上三个特点,你是否还在犹豫选择它? 需要考虑的一些问题是:

应用不需要事务和复杂的join支持

新的应用,需求会变,数据模型无法确定,想快速迭代开发

应用需要2000-3000以上的读写QPS(更高也可以)

应用程序需要 TB 甚至 PB 级的数据存储

应用发展迅速,需要能够快速横向扩展

应用程序要求存储的数据不丢失

应用程序需要 99.999% 的高可用性

应用需要大量的地理位置查询、文本查询

如果满足以上其中一项,就可以考虑MongoDB,如果满足两个以上,选择MongoDB绝对不会后悔。

思考:如果用MySQL呢?

答:与MySQL相比,可以以更低的成本解决问题(包括学习、开发、运维成本等)