为什么我们放弃使用MongoDB

数据库 其他数据库 MongoDB
公司开始新项目时部分数据服务选择使用MongoDB,而且在同事内部作了MongoDB应用的扫盲介绍,当时貌似Mysql派和MongoDB派相互之间都没有能说服对方,所以MongoDB的使用就一直延续下来。直到几天前,在考虑系统上线发布和运营时,一些问题出现了。

【小编碎语】有人会选择,就有人会放弃,它是否是新型数据库的“弄潮儿”呢?我们依旧要继续观望。

公司开始新项目时部分数据服务选择使用MongoDB,而且在同事内部作了MongoDB应用的扫盲介绍,当时貌似Mysql派和MongoDB派相互之间都没有能说服对方,所以MongoDB的使用就一直延续下来。直到几天前,在考虑系统上线发布和运营时,一些问题出现了。

1.MongoDB存储文件会急剧增大,如果使用32位操作系统很容易达到单个文件体积上限。所以对于MongoDB必须使用64位操作系统,而在亚马逊的EC2中只有是large以上类型的instance的CPU才是64位。

2.MongoDB一般都推荐是多点部署,互为镜像,这样保证服务的延续性和数据的安全性。所以如果需要提供稳定的服务,至少需要2台EC2的instance来作MongoDB服务。而实际对于我们大数据量计算操作可能在一天内累计只有大概1小时,其余时间更多只是少量数据查询操作。

综合以上两点,如果继续使用MongoDB,至少需要两台large以上instance,并且是7X24小时运行,感觉是对运算能力的浪费。

再三讨论后我们决定暂时放弃MongoDB, 将这部分的运算改为使用MapReduce 来处理。亚马逊的MapReduce可以充分体现按需使用运算能力的特性,在使用MapReduce完成所有计算需要后,再将需要查询使用的结果数据导入到Mysql数据库中。这样即满足了那1小时内需要的运行能力,又满足了其余时间对计算结果的查询需求。

通过以上的事例,说明在使用云计算平台时,对程序开发技术的选型必须充分考虑到平台能够提供虚拟硬件设备的技术指标。并且需要转变以往的设计思路,更多考虑到云平台方便启动和关闭instance的特性。尽量减少7X24长时间使用相同一台instance作服务的应用,如果这样的服务无法避免时,应该考虑多台冗余,并在程序设计中去除对instance的内网ip地址耦合,当某台instance出现故障而需要更新新的instance时,内网ip 地址变化不会导致程序无法正常运行。

【编辑推荐】

  1. Mongodb源码分析--内存文件映射(MMAP)
  2. 走进MongoDB的世界 展开MongoDB的学习之旅
  3. 浅析Mongodb源码之游标Cursor
  4. 野心勃勃的NoSQL新贵 MongoDB应用实战
  5. MongoDB与CouchDB全方位对比
责任编辑:艾婧 来源: 软件园丁的博客
相关推荐

2019-12-30 08:34:40

ZabbixPrometheus监控

2020-06-10 09:06:48

MongoDB架构高可用

2018-12-21 11:26:49

MySQLMongoDB数据库

2020-01-18 09:35:03

微服务团队架构

2018-09-28 10:06:21

移动开发App

2013-09-27 11:33:57

交换机技术Vlan技术

2019-12-31 09:33:03

MongoDBB 树NoSQL

2013-03-25 10:14:18

NginxApache

2012-09-20 15:45:09

2009-04-23 10:41:59

微软IE浏览器

2024-06-24 07:58:00

2023-07-23 17:19:34

人工智能系统

2020-06-19 08:01:48

Kotlin 协程编程

2020-03-03 15:31:47

ReactVue前端

2009-03-18 09:07:08

IE微软浏览器

2022-05-10 15:24:34

KafkaZooKeeperKafka Raft

2020-06-19 14:55:11

Kubernetes容器技术

2021-04-26 09:33:46

Go Iota语言

2018-12-12 15:20:27

2018-11-28 16:00:41

点赞
收藏

51CTO技术栈公众号