原文标题是《Is MongoDB the next big thing?》,请允许我把big
thing等同于目前应用最广泛的开源数据库 MySQL。作为当下最热门的NoSQL之一,下面我们就来看看它具体的优点与不足。
MongoDB的特性
简单的查询语句,没有Join操作
文档型存储,其数据是用二进制的Json格式Bson存储的。其数据就像Ruby的hashes,或者Python的字典,或者PHP的数组
Sharding,MongoDB提供auto-sharding实现数据的扩展性
GridFS,MongoDB的提供的文件存储API
数组索引,你可以对文档中的某个数组属性建立索引
MapReduce,可以用于进行复杂的统计和并行计算
高性能,通过使用mmap和定时fsync的方法,避免了频繁IO,使其性能更高
MongoDB的优点
高性能,速度非常快(如果你的内存足够的话)
没有固定的表结构,不用为了修改表结构而进行数据迁移
查询语言简单,容易上手
使用Sharding实现水平扩展
部署方便
使用MongoDB,你得记住以下几点:
MongoDB 假设你有大磁盘空间
MongoDB 假设你的内存也足够大于放下你的热数据
MongoDB 假设你是部署在64位系统上的(32位有2G的限制,试用还可以)
MongoDB 假设你的系统是little-endian的
MongoDB 假设你有多台机器(并不专注于单机可靠性)
MongoDB 假设你希望用安全换性能,同时允许你用性能换安全
MongoDB在下面领域不太擅长
不太稳定,特别是auto-sharding目前还有很多问题
不支持SQL,这意味着你很多通过SQL接口的工具不再适用
持久化,MongoDB单机可靠性不太好,宕机可能丢失一段时间的数据
相关文档比较少,新功能都有这个问题
相关人才比较难找,这也是新功能的问题之一