转帖:关于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 ...
随机推荐
- Android ViewGroup等容器控件的使用
在Android中,可以自定义类,继承ViewGroup等容器类,以实现自己需要的布局显示.如果你在ViewGroup中增加了控件,却无法显示出 来,那么下面这个例子,就可以用来参考了.(主要是要实现 ...
- 设计点滴&css效果点滴
走向设计师的第一步, 做一个自由的设计师. 优秀的移动端设计的:http://www.cnblogs.com/coding4/p/6842849.html 一些好的设计图片的收藏,一些好的设计理念,一 ...
- 何时使用MQ ?
何时使用MQmq作为一种基础中间件在互联网项目中有着大量的使用. 一种技术的产生自然是为了解决某种需求,通常来说是以下场景: 需要跨进程通信:B系统需要A系统的输出作为输入参数.当A系统的输出能力远远 ...
- Vue学习笔记一:使用vue-cli 创建开发环境
第一步:安装Node.js 点击此处下载 选择对应的安装包,进行安装. 第二步:安装淘宝镜像 有一个问题,使用 npm 会导致网速很慢,对于大陆用户,建议将 npm 的注册表源设置为国内的镜像, ...
- 使用80percent开发rails程序:gem的了解。(kaminari)
学习目的: 对一些主要的gem进行学习了解基本功能: 作者的一些答复:(链接) 关于安全配置: 对于配置文件, 安全仅有一点: 不要提交任何敏感信息到服务端. 所以 rails-template 是添 ...
- jxl将list导入到Excel中供下载
jxl操作excel /** * 分隔符 */ private final static String SEPARATOR = "|"; /** * 由List导出至指定的Shee ...
- 【Demo】CSS3 动画 加载进度条
实例结果图: 完整代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> ...
- hdu4549矩阵快速幂+费马小定理
转移矩阵很容易求就是|0 1|,第一项是|0| |1 1| |1| 然后直接矩阵快速幂,要用到费马小定理 :假如p是质数,且gcd(a,p)=1,那么 a(p-1)≡1(m ...
- java之double类型数值的比较
先看demo: public class L26 { /** * @param args */ public static void main(String[] args) { // TODO Aut ...
- Missing artifact com.sun:tools:jar:1.7解决方案
在配置Java + Robotframework时遇到的问题“Missing artifact com.sun:tools:jar” 1. 先检查一下eclipse或STS中的JDK路径配置是否正确( ...