为什么选择MongoDB?
为什么选择MongoDB?
阅读目录
为啥用MongoDB?
赶NoSQL时髦?
Auto-shard等激动人心的特性?
•No! 08年,还都是浮云。
最初的想法是寻找一个可靠的分布式K/V解决MySQL的问题。
NoSQL(NoSQL = Not Only SQL ),意即反SQL运动,是一项全新的数据库革命性运动,早期就有人提出,发展至2009年趋势越发高涨。NoSQL的拥护者们提倡运用非关系型的数据存储,相对于目前铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入。
所以说,NoSQL不仅仅是产品,更是一项运动!
原来的架构

•MySQL(Percona),
Master-Master-Slaves
•HA:MMM
新需求
- 能够适应多数据源
- 需要灵活,不确定的schema:不同模型的字段不定,属性不定
- 属性更新频繁
- 服务器等硬件资源有限
如何解决?
原有MySQL的方案:
- 使用文本字段,JSON存储
- schema自由度高
- 更新容易,直接检索困难
- 使用关联表
- schema自由度有限,类型控制
- 更新频繁,query缓存失效
新思路

继续使用Memcached?
- 缓存失效,内存不足
决定:寻找Memcached替代品
- 能够持久化的分布式KV
选型条件
- 同时有PHP/Perl/DotNet/JAVA的良好客户端支持
- 性能和Memcached相差不要太
- 支持分布式集群
- 低碳环保,节约资源
- 文档清晰,有成功案例
一些候选者
- Flare
- Repcached
- Redis
- TC/TT
最初的选择
选中Flare:
- 内置cluster看起来很美好,可靠性有保
证 - 使用Memcached协议,现有改动小
代价
项目开发1个月后:
- 官方更新显示似乎并非如此可靠
- 水土不服:
(1)个人能力有限,无法解决一些灵异事件
(2)没有开发者社区
(3)不懂日文
新的候选者
- Cassandra:技术实力无法支撑,用不起
- CouchDB:灵活,但性能口碑似乎不佳
重新选择
MongoDB:
- 读写性能中庸,比Redis逊色
- Document模型令人满意
- 内置操作没有Redis惊喜,基本够用
- MySQL类似的集群机制,上手方便
- 某些MySQL的优化部署经验可以复用
胆子大一点
MySQL +MongoDB?
- 多余:很多MySQL的操作MongoDB均
可实现 - 同时维护MySQL <=> MongoDB 的数
据,代码逻辑有些复杂 - 人员流失,培训新人表示鸭梨大
胆子再大一点
能否彻底抛弃MySQL?
- Transaction?可以没有
- Joins? 原本少用,可以没有
- 数据一致性:不太高
胆子再更大一点
好吧,试试:
- 拿一个旧项目开刀
- 1人1个星期完成90%代码移植
- 原有35个table => 10 collection
- 开发过程很happy!
MongoDB,就是它了
一举两得的加分项:GridFS
- 简单,符合我们的要求
- 无需再考虑分布文件系统
- 放弃了原来的MogileFS,减轻运维压
力
综上原因,选对了!
- SourceForge等一些大站应用增强信心
- 分享的信息逐渐丰富
- 10gen核心团队在mailing-list快速响应,
有问必答 - NoSQL开始受到追捧,MongoDB的口
碑良好
本文参收集网络资料整理,作为我选择MongoDB的一个参考。
为什么选择MongoDB?的更多相关文章
- 开篇有益:为什么选择MongoDB?
为啥用MongoDB? 赶NoSQL时髦? Auto-shard等激动人心的特性? •No! 08年,还都是浮云. 最初的想法是寻找一个可靠的分布式K/V解决MySQL的问题. NoSQL(NoSQL ...
- 大数据时代的数据存储,非关系型数据库MongoDB
在过去的很长一段时间中,关系型数据库(Relational Database Management System)一直是最主流的数据库解决方案,他运用真实世界中事物与关系来解释数据库中抽象的数据架构. ...
- 了解mongodb
本文大纲 基础了解mongodb(mongodb介绍,跟其他nosql区别,跟内存服务器区别等,使用场景) 在使用前,强力建议看哈http://wenku.baidu.com /link?url=lu ...
- MongoDB自学笔记2---1.2 初识MongoDB
1.2.1MongoDB简介 MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. MongoDB是一个介于关系数据库和非关系数据库之 ...
- 大数据时代的数据存储,非关系型数据库MongoDB(一)
原文地址:http://www.cnblogs.com/mokafamily/p/4076954.html 爆炸式发展的NoSQL技术 在过去的很长一段时间中,关系型数据库(Relational Da ...
- Asp.Net Core Web Api图片上传(一)集成MongoDB存储实例教程
Asp.Net Core Web Api图片上传及MongoDB存储实例教程(一) 图片或者文件上传相信大家在开发中应该都会用到吧,有的时候还要对图片生成缩略图.那么如何在Asp.Net Core W ...
- 非关系型数据库MongoDB
爆炸式发展的NoSQL技术 在过去的很长一段时间中,关系型数据库(Relational Database Management System)一直是最主流的数据库解决方案,他运用真实世界中事物与关系来 ...
- MongoDB拥有SSD秒杀高富帅使用过程分享
[IT168现场报道]2013年4月18-20日,第四届中国数据库技术大会(DTCC 2013)在北京福朋喜来登酒店拉开序幕.在为期三天的会议中,大会将围绕大数据应用.数据架构.数据管理(数据治理). ...
- HowToDoInJava 其它教程 1 · 翻译完成
原文:HowToDoInJava 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远. ApacheCN 学习资源 目录 Maven 教程 如何在 ...
随机推荐
- uva 11987 Almost Union-Find (并检查集合)
标题效果: 三操作. 1. 合并两个集合 2.代替所述第二组的第一个元素 3.输出设置数量,并.. IDEAS: 使用p该元素的记录数,其中集合,建立并查集. #include <cstdio& ...
- 【Hibernate步步为营】--映射合集汇总
前几篇文章具体讨论了对象模型到关系模型的转化方法,对映射关系做了具体的了解,Hibernate将对象模型转化为对应的关系模型是通过使用对应的映射来完毕的(相同也能够使用注解),对于对象之间的关系的转化 ...
- Java业务原子性的一种实现(key 独占访问)
开发过程中,有时候为了解决多线程竞争问题需要加锁,通常锁定的对象是class,object,method,但在特定时候我们需要更细粒度的加锁,也就是根据不同输入参数来锁定不同的资源,这样只有调用此方法 ...
- poj3070--Fibonacci(矩阵的高速幂)
Fibonacci Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9650 Accepted: 6856 Descrip ...
- SQL Server日志文件庞大收缩方法(实测好用)
原文:SQL Server日志文件庞大收缩方法(实测好用) 这两个命令连续执行,间隔时间越少越明显(可多次运行),直到达到效果 --截断 BACKUP LOG CloudMonitor TO DISK ...
- 平安某金所奇葩的面经-关于幂等和ROA设计的反思
在公司一直在做跟支付有关的项目,某日接到平安某金所一男子电话,应该是之前某猎头投的,我正好在吃早饭(也不能怪他们上班早,我们公司弹性工作制,我一般上班比较晚). 因为饭馆信号不好,只能赶紧放下剩下的半 ...
- 国籍控件(js源码)
国籍控件(js源码) 一直苦于没有好的国籍控件可以用,于是抽空写了一个国籍控件,现分享给大家. 主要功能和界面介绍 国籍控件主要支持中文.英文过滤以及键盘上下事件. 源码介绍 国籍控件核心是两个文件, ...
- win7 wifi 无Internet訪问权限或者有限的訪问权限
自己家的无线路由器,手机和笔记本都使用正常,可是一台新笔记本连上之后总是提示"有限的訪问权限",无法连公网. 网上的非常多办法都无论用,什么设置静态IP或者重新启动路由,基本都是瞎 ...
- webBrowser 参数设置
//禁用脚本错误等类似的窗口信息 this.webBrowser1.ScriptErrorsSuppressed = true; //禁用右键菜单 this.webBrowser1.IsWebBrow ...
- [译]Java垃圾回收器的类型
说明:这篇文章来翻译来自于Javapapers 的Types of Java Garbage Collectors 在这部分的教程中我们将讲到可使用的四种不同类型的Java垃圾回收器.垃圾回收是Jav ...