转帖:关于MongoDB你需要知道的几件事
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,00 美金,而你至少需要购买两个小时的,换句话说,对于任何一家公司来说,每次咨询的价格至少是 900,00 美金。相比于 RedHat 和 Oracle 来说,这个价格太高了。
差劲的管理工具
这对于初学者来说依然是个让人头疼的问题,MongoDB 的管理控制台太差劲了。我所知道的最好的工具是 RoboMongo,它对于那些初次使用的开发者来说非常趁手。
了解官方的限制
让我感到惊讶的是,很少有人会查询关于他们将要使用的工具的限制。幸好,MongoDB 的开发人员发布了一篇 MongoDB 所有限制的博客,你可以提前了解相关信息,避免在使用过程中难堪。
各位读者,现在使用 MongoDB 的公司也越来越多了,不妨与大家分享你在使用这个 NoSQL 数据库时的一些经验与教训。
转帖:关于MongoDB你需要知道的几件事的更多相关文章
- 关于MongoDB你需要知道的几件事
Henrique Lobo Weissmann是一位来自于巴西的软件开发者,他是itexto公司的联合创始人,这是一家咨询公司.近日,Henrique在博客上撰文谈到了关于MongoDB的一些内容,其 ...
- (转)关于MongoDB你需要知道的几件事
本文列举了颇让作者困惑的一些MongoDB限制,如果你也打算使用MongoDB,那么至少要提前了解这些限制,以免遇到的时候措手不及. 消耗磁盘空间 这是我的第一个困惑:MongoDB会消耗太多的磁盘空 ...
- mongodb突然出现一些特别奇葩的事
mongo突然出现一些奇葩的事,如数据都还在,但某个命令敲下去了.啥东西都没有返回给我们. 往往这个时候特别的郁闷,找不出问题所在. 不用太担心,看看版本,多半是mongo的版本太老了,有些命令已经过 ...
- [转帖]GNU/Linux与开源文化的那些人和事
GNU/Linux与开源文化的那些人和事 时间:2015-09-24 作者:admin 分类:新手入门 阅读:167次 http://embeddedlinux.org.cn/emb-linux/ ...
- 「2014-2-6」TokuMX and MongoDB related materials collection
简介参考 TokuMX 和 MongoDB 各自的官方站点. ## Tokutek 最重要的特点和 marketing word 是所谓 fractal tree indexing te ...
- 在Python应用中使用MongoDB
Python是开发社区中用于许多不同类型应用的强大编程语言.很多人都知道它是可以处理几乎任何任务的灵活语言.因此,在Python应用中需要一个什么样的与语言本身一样灵活的数据库呢?那就是NoSQL,比 ...
- 软件公司为何要放弃MongoDB?
本文转至:http://database.51cto.com/art/201503/469510_all.htm(只作转载, 不代表本站和博主同意文中观点或证实文中信息) Olery成立于2010年, ...
- CentOS7安装mongoDB数据库
CentOS7安装mongoDB数据库 时间:2015-03-03 16:45来源:blog.csdn.net 作者:进击的木偶 举报 点击:8795次 mongoDB是目前发展比较好的NOSQL数据 ...
- MongoDB应用篇(转)
一.高级查询 1. 查询操作符 1.1 比较操作符$gt,$lt,$gte,$lte 实例: select * from things where field<value -- 等价于db.th ...
随机推荐
- linuxI/O重定向
假设有这么一段python3程序: import sys ")sys.stderr.write("stderr1 ") 现在想要把程序的输出以及错误信息都存在文件中. 一 ...
- linux三尖刀
序 我们都知道,一个可执行程序的基本的生命过程是如此的: (编辑)源文件--->(编译)目标文件--->(链接)可执行文件--->(调试排错)稳定执行 所以,在这个过程中,我们很容易 ...
- 2-14-1 MySQL基础语句,查询语句
一. SQL概述 结构化查询语言(Structured Query Language)简称SQL 1. 它是一种特殊目的的编程语言 2. 它还是一种数据库查询和程序设计语言 (用于存取数据以及查询.更 ...
- bzoj2631
题解: lct+链上修改 每一次修改的时候记录lazy标记 如果有了乘法,加法的lazy标记也要相应的随之变化 代码: #pragma GCC optimize(2) #include<bits ...
- 关于CMD/DOS中的短文件名规则
最近在制作一个批处理的过程中发现一个很郁闷的问题,就是有些时候搜索到的结果不是我们想要的
- 简单使用dom4j
package com.dom4j; import java.io.FileWriter; import java.io.IOException; import java.io.Unsupported ...
- Beta阶段第1周/共2周 Scrum立会报告+燃尽图 04
作业要求与 [https://edu.cnblogs.com/campus/nenu/2018fall/homework/2284] 相同 版本控制:https://git.coding.net/li ...
- 启动tornado项目,hello world
新建一个env虚拟环境 mkvirtualenv toenv 在虚拟环境中安装tornado workon toenv pip install tornado 在D盘中新建tornado项目文件夹,就 ...
- 转:HTTP Get请求URL最大长度
转自:http://blog.csdn.net/M_ChangGong/article/details/5764711 各浏览器HTTP Get请求URL最大长度并不相同,几类常用浏览器最大长度及超过 ...
- Ubuntu文本编辑(vi和nano)命令
vi是Unix世界里极为普遍的全萤幕文书编辑器,几乎可以说任何一台Unix机器都会提供这套软体就像windows的记事本一样. 键入 vi /etc/hosts 进入vi界面,把光标移动到文件未尾.按 ...