写点什么

关于 MongoDB 你需要知道的几件事

  • 2013-11-04
  • 本文字数:1313 字

    阅读完需:约 4 分钟

Henrique Lobo Weissmann 是一位来自于巴西的软件开发者,他是 itexto 公司的联合创始人,这是一家咨询公司。近日,Henrique 在博客上撰文谈到了关于 MongoDB 的一些内容,其中有些观点值得我们,特别是正在和打算使用 MongoDB 的开发者关注。

到目前为止,MongoDB 在巴西是最为流行的 NoSQL 数据库(至少根据关于 MongoDB 的博客数量以及文章所判断)。MongoDB 是个非常棒的解决方案,不过困扰我们的是很少有人了解过关于它的一些限制。这样的事情正在不断上演:人们看到 MongoDB 的限制,心里却认为这些是它的 Bug。

本文列举了颇让作者困惑的一些 MongoDB 限制,如果你也打算使用 MongoDB,那么至少要提前了解这些限制,以免遇到的时候措手不及。

消耗磁盘空间

这是我的第一个困惑:MongoDB 会消耗太多的磁盘空间了。当然了,这与它的编码方式有关,因为 MongoDB 会通过预分配大文件空间来避免磁盘碎片问题。它的工作方式是这样的:在创建数据库时,系统会创建一个名为 [db name].0 的文件,当该文件有一半以上被使用时,系统会再次创建一个名为 [db name].1 的文件,该文件的大小是方才的两倍。这个情况会持续不断的发生,因此 256、512、1024、2048 大小的文件会被写到磁盘上。最后,再次创建文件时大小都将为 2048Mb。如果存储空间是项目的一个限制,那么你必须要考虑这个情况。该问题有个商业解决方案,名字叫做 TokuMX ,使用后存储消耗将会减少 90%。此外,从长远来看,repairDatabase 与 compact 命令也会在一定程度上帮到你。

通过复制集实现的数据复制效果非常棒,不过也有限制

MongoDB 中数据复制的复制集策略非常棒,很容易配置并且使用起来确实不错。但如果集群的节点有 12 个以上,那么你就会遇到问题。MongoDB 中的复制集有 12 个节点的限制,这里是问题的描述,你可以追踪这个问题看看是否已经被解决了。

主从复制不会确保高可用性

尽管已经不建议被使用了,不过 MongoDB 还是提供了另外一种复制策略,即主从复制。它解决了 12 个节点限制问题,不过却产生了新的问题:如果需要改变集群的主节点,那么你必须得手工完成,感到惊讶?看看这个链接吧。

不要使用 32 位版本

MongoDB 的 32 位版本也是不建议被使用的,因为你只能处理 2GB 大小的数据。还记得第一个限制么?这是 MongoDB 关于该限制的说明

咨询费非常非常昂贵(至少对于巴西的开发者与公司来说如此)

我不清楚其他国家的情况,不过至少在巴西 MongoDB 的咨询费是个天价。对于“ Lightning Consult ”计划来说,每小时的价格是 450 美金,而你至少需要购买两个小时的,换句话说,对于任何一家公司来说,每次咨询的价格至少是 900 美金。相比于 RedHat 和 Oracle 来说,这个价格太高了。

差劲的管理工具

这对于初学者来说依然是个让人头疼的问题,MongoDB 的管理控制台太差劲了。我所知道的最好的工具是 RoboMongo ,它对于那些初次使用的开发者来说非常趁手。

了解官方的限制

让我感到惊讶的是,很少有人会查询关于他们将要使用的工具的限制。幸好,MongoDB 的开发人员发布了一篇 MongoDB 所有限制的博客,你可以提前了解相关信息,避免在使用过程中难堪。

各位读者,现在使用 MongoDB 的公司也越来越多了,不妨与大家分享你在使用这个 NoSQL 数据库时的一些经验与教训。

公众号推荐:

AGI 概念引发热议。那么 AGI 究竟是什么?技术架构来看又包括哪些?AI Agent 如何助力人工智能走向 AGI 时代?现阶段营销、金融、教育、零售、企服等行业场景下,AGI应用程度如何?有哪些典型应用案例了吗?以上问题的回答尽在《中国AGI市场发展研究报告 2024》,欢迎大家扫码关注「AI前线」公众号,回复「AGI」领取。

2013-11-04 12:4317883
用户头像

发布了 88 篇内容, 共 259.7 次阅读, 收获喜欢 8 次。

关注

评论

发布
暂无评论
发现更多内容

学会这15点,让你分分钟拿下Redis数据库

民工哥

后端 linux运维 redis cluster

mosquitto支持websocket搭建记录

风翱

4月日更 web socket mosquitto

云原生技术及可观测实践

滴滴云

怎么拥有个人磁力

帅安技术

IP 个人磁力 KOL 思想 吸引力法则

浅谈 MySQL 集群高可用架构

民工哥

MySQL MySQL 高可用 集群 linux运维

隐私安全的城池营垒,能成为手机品牌高端化的赛点吗?

脑极体

区块链技术重新定义 物联网的物与物之间的交易

CECBC

发展空间

函数计算助力高德地图平稳支撑亿级流量高峰

阿里巴巴中间件

曾国藩:人生惟有常是第一美德

帅安技术

曾国藩 坚持 有常 天赋 成事心法

使用JavaScript解析XML文件

空城机

JavaScript xml 大前端 递归 4月日更

json基础学习

ベ布小禅

4月日更

【科创人】贝锐创始人陈宇晔:花生壳诞生自一次挫折,15年坚守有温度不作恶

科创人

中国数字人民币试点有序扩大至“10+1” 拜登政府正加强研究数字人民币计划

CECBC

数字货币

一个极简的冲突管理工具

石云升

28天写作 职场经验 管理经验 4月日更 冲突管理

汽车之家基于 Flink 的数据传输平台的设计与实践

Apache Flink

flink

云存储中不可不知的五个安全问题及应对措施

浪潮云

云计算

聊聊十种常见的软件架构模式

架构精进之路

4月日更

不想搞Java了,4年经验去面试10分钟结束,现在Java面试为何这么难

Java 编程 程序员 面试 计算机

Vue3、Vuex4、Ant Design2的实战项目开发管理系统

devpoint

vite Vue3 and design of vue

重读《重构2》- 改变函数声明

顿晓

重构 4月日更

2年进入苏宁,第5年入职阿里,专科学历的他是如何做到?

Java架构师迁哥

阿里内部热捧“Spring全线笔记”,不止是全家桶,太完整了

Java架构追梦

Java spring 源码 架构 微服务

不愧是阿里内部“Spring Cloud Alibaba学习笔记”这细节讲解,神了!

Java架构追梦

Java 阿里巴巴 架构 微服务 SpringCloud

1分钟搞定 Nginx 版本的平滑升级与回滚

民工哥

nginx 后端 linux运维

从被踢出局到5个30K+的offer,一路坎坷走来,沉下心,何尝不是前程万里

北游学Java

Java 数据库 分布式 微服务

智慧城市现状调研

程序员架构进阶

华为 智慧城市 28天写作 4月日更

Java该怎么学?阿里大佬呕心沥血之作,Java全线成长宝典,从P5到P8一应俱全

Java架构师迁哥

Coinbase上市,对加密市场将带来哪些影响?

CECBC

货币

你管这破玩意叫哨兵?

Java 数据库 redis 程序员 架构

函数计算助力语雀构建稳定且安全的业务架构

阿里巴巴中间件

文档 企业架构和云服务 业务架构

金融科技数据链的DNA

博睿数据

金融科技 博睿数据 数据链DNA

关于MongoDB你需要知道的几件事_语言 & 开发_张龙_InfoQ精选文章