我为什么会使用 mongodb

本贴最后更新于 2020 天前,其中的信息可能已经东海扬尘

mongodb 的特点?

1 nosql 基于内存设计的,性能上毋庸置疑 (主要原理:将热数据存在物理内存中,提高整体查询速度)

2 Json存储格式 支持大文本

3 高拓展性(高可用与集群架构,完善的 sharding 机制)(参考# MongoDB Sharding 分片技术

4 failover机制

项目中为什么会使用 mongodb?

主要基于两点

第一个是快,不管是什么项目,这一点都是优先被想到的。这个要得益于它是基于内存设计的,它的热数据存储在物理内存中。

第二个是 json 的存储格式

之前参与过的一个项目,有一张表是存储现场机器实时运行数据,不仅数据量巨大(超过 500w 条),而且数据中包含大文本 json 数据,项目运行一段时间发现需要不断去维护这张表,不定时清理,甚至做过分表。所以我在后面的技术评估中,总结了两个问题,数据量巨大,有 json 文本信息,所以很自然的想起使用 mongod,最终很好的解决了这个问题。

其他的,mongo 的数据也是持久化存储在硬盘里的,也是很安全的,很多公司现在喜欢直接把 mongo 当成数据库来使用,而使用 redis 来当缓存。

使用 mongo 也会面临数据量大的问题,如何解决?

mongo 具有灵活的拓展性,以及完善的 sharding 机制。

为什么不考虑使用 Redis?

我觉得两者并没有什么巨大的鸿沟,有时用哪个完全看你自己,但然我来抉择的话,我会考虑实际的业务场景

mongo 很特殊,我一直觉得它是介于关系型与非关系型数据之间的一种数据库,加上 json 的存储格式,可以存储大文本,可以用于放一些数据量大,但实际价值随时间越来越低的数据。(持久性)

redis 使用场景,最佳是存储是实时性数据、热数据,比如排名、统计,最佳最好一类的。我在之前的项目中使用到的,比如用户登陆 token、 注册时验证码、sesion 同步啊、消息队列啊。(实时性)

写这个的目的主要是想给不知道怎么介绍 mongo 的人一点点提示,如果说的有问题,希望大家指出来,我们一起进步!

  • MongoDB

    MongoDB(来自于英文单词“Humongous”,中文含义为“庞大”)是一个基于分布式文件存储的数据库,由 C++ 语言编写。旨在为应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似 JSON 的 BSON 格式,因此可以存储比较复杂的数据类型。

    90 引用 • 59 回帖 • 2 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • zonghua

    😂 好像只剩下不能关联查询这个缺点了,事务好像都用不上。