MongoDB优势

来源:互联网 发布:xy苹果助手下载mac版 编辑:程序博客网 时间:2024/04/28 17:45
  • 面向文档存储(类JSON数据模式简单而强大)
    • 动态查询

    • 全索引支持,扩展到内部对象和内嵌数组

    • 查询记录分析

    • 快速,就地更新

    • 高效存储二进制大对象 (比如照片和视频)

    • 复制和故障切换支持

    • Auto- Sharding自动分片支持云级扩展性

    • MapReduce 支持复杂聚合

    • 商业支持,培训和咨询

    1. 文档存储

    数据存储以BSON/JSON文档,这对于Web应用程序有很大的意义。开发者API喜欢以JSON形式传输,这使得整个项目的数据表示可采用统一的模型。所有这一切都无需任何前期架构设计。

    2. 可扩展性

    MongoDB被用在一些规模庞大的环境中,FourSquare/Craiglist都在使用它。通过分片数据缩放处理理论上可实现更高的吞吐量。

    3. 简单的复制

    就像分片技术一样,MongoDB范围内复制过程同样简单好用,在副本机器上还有大量的复制选项。灵活的功能可满足用户应用的需求。

    4. 易于查询

    MongoDB以文档的形式存储数据,不支持事务和表连接。因此查询的编写、理解和优化都容易得多。简单查询设计思路不同于SQL模式,嵌入文档在特定的环境下可得到更好的查询,然而这需要先加入集合。如果需要执行多个请求到数据库则需要加入其到客户端。在MongoDB时ODM工具(如Doctrine2)将发挥自身的优势。

    5. 安全性

    由于MongoDB客户端生成的查询为BSON对象,而不是可以被解析的字符串,所以可降低受到SQL注入的攻击的危险。最常见的攻击类型为针对Web应用程序的攻击,在MongoDB上使用Doctrine2 ODMs 查询语言可减轻攻击风险。

    6. 支持

    用户在选择数据库时总是喜欢积极和充满活力的,这点非常重要。MongoDB在业界有非常大的影响力,用户也会定期的组织活动。MongoDB的标签在StackOverFlow是非常活跃的。你永远不会陷入困境,因为总有人与你讨论并解决问题。

    7. 价格

    MongoDB是免费的!

    更高的写负载

    默认情况下,对比事务安全,MongoDB更关注高的插入速度。如果你需要加载大量低价值的业务数据,比如日志收集,那么MongoDB将很适合你的用例,但是必须避免在要求高事务安全的情景下使用MongoDB,比如一个1000万美元的交易。

     

    处理很大的规模的单表:

    数据库扩展是非常有挑战性的,当单表格大小达到5-10GB时,MySQL表格性能会毫无疑问的降低。如果你需要分片并且分割你的数据库,MongoDB将很容易实现这一点。

     

    不可靠环境保证高可用性

    设置副本集(主-从服务器设置)不仅方便而且很快,此外,使用MongoDB还可以快速、安全及自动化的实现节点(或数据中心)故障转移。

    使用基于位置的数据查询,查的更快

    MongoDB支持二维空间索引,比如管道,因此可以快速及精确的从指定位置获取数据。

    MongoDB在启动后会将数据库中的数据以文件映射的方式加载到内存中。如果内存资源相当丰富的话,这将极大地提高数据库的查询速度,毕竟内存的I/O效率比磁盘高多了

     

    非结构化数据的爆发增长

    增加列在有些情况下可能锁定整个数据库,或者增加负载从而导致性能下降,这个问题通常发生在表格大于1GB的情况下。鉴于MongoDB的弱数据结构模式,添加1个新字段不会对旧表格有任何影响,整个过程会非常快速;因此,在应用程序发生改变时,你不需要专门的1个DBA去修改数据库模式。

     

    缺少专业的数据库管理员

    如果你没有专业的DBA,同时你也不需要结构化你的数据及做join查询,MongoDB将会是你的首选。MongoDB非常适合类的持久化,类可以被序列化成JSON并储存在MongoDB。需要注意的是,如果期望获得一个更大的规模,你必须要了解一些最佳实践来避免走入误区。


    缺点

    • 不支持事务(进行开发时需要注意,哪些功能需要使用数据库提供的事务支持)
    • MongoDB占用空间过大 (不过这个确定对于目前快速下跌的硬盘价格来说,也不算什么缺点了
    • MongoDB没有如MySQL那样成熟的维护工具,这对于开发和IT运营都是个值得注意的地方
    • 在32位系统上,不支持大于2.5G的数据(很多操作系统都已经抛弃了32位版本,所以这个也算不上什么缺点了,3.4版本已经放弃支持32 位 x86平台)

原创粉丝点击