`

什么场景应该用 MongoDB ?

 
阅读更多

案例1:

> 1. 用在应用服务器的日志记录,查找起来比文本灵活,导出也很方便。
> 2. 用在一些第三方信息的获取或者抓取,因为MongoDB的schema-less,所有格式灵活,不用为了各种格式不一样的信息专门设计统一的格式,极大得减少开发的工作。

案例2
> 主要用来存储一些监控数据,No schema 对开发人员来说,真的很方便,增加字段不用改表结构,而且学习成本极低。

案例3
> 使用MongoDB做了O2O快递应用,将送快递骑手、快递商家的信息(包含位置信息)存储在 MongoDB,然后通过 MongoDB 的地理位置查询,这样很方便的实现了查找附近的商家、骑手等功能,使得快递骑手能就近接单。

 

并没有某个业务场景必须要使用 MongoDB才能解决,但使用 MongoDB 通常能让你以更低的成本解决问题(包括学习、开发、运维等成本)。

下面是 MongoDB 的主要特性,大家可以对照自己的业务需求看看,匹配的越多,用 MongoDB 就越合适。

 

MONGODB 特性优势
事务支持 MongoDB 目前只支持单文档事务,需要复杂事务支持的场景暂时不适合
灵活的文档模型 JSON 格式存储最接近真实对象模型,对开发者友好,方便快速开发迭代
高可用复制集 满足数据高可靠、服务高可用的需求,运维简单,故障自动切换
可扩展分片集群 海量数据存储,服务能力水平扩展
高性能 mmapv1、wiredtiger、mongorocks(rocksdb)、in-memory 等多引擎支持满足各种场景需求
强大的索引支持 地理位置索引可用于构建 各种 O2O 应用、文本索引解决搜索的需求、TTL索引解决历史数据自动过期的需求
Gridfs 解决文件存储的需求
aggregation & mapreduce 解决数据分析场景需求,用户可以自己写查询语句或脚本,将请求都分发到 MongoDB 上完成

 

游戏场景,使用 MongoDB 存储游戏用户信息,用户的装备、积分等直接以内嵌文档的形式存储,方便查询、更新

物流场景,使用 MongoDB 存储订单信息,订单状态在运送过程中会不断更新,以 MongoDB 内嵌数组的形式来存储,一次查询就能将订单所有的变更读取出来。

社交场景,使用 MongoDB 存储存储用户信息,以及用户发表的朋友圈信息,通过地理位置索引实现附近的人、地点等功能

物联网场景,使用 MongoDB 存储所有接入的智能设备信息,以及设备汇报的日志信息,并对这些信息进行多维度的分析

视频直播,使用 MongoDB 存储用户信息、礼物信息等

 

适用MongoDB的应用特征:

应用不需要事务及复杂 join 支持

新应用,需求会变,数据模型无法确定,想快速迭代开发

应用需要2000-3000以上的读写QPS(更高也可以)

应用需要TB甚至 PB 级别数据存储

应用发展迅速,需要能快速水平扩展

应用要求存储的数据不丢失

应用需要99.999%高可用

应用需要大量的地理位置查询、文本查询

 

http://www.mongoing.com/archives/3609

分享到:
评论

相关推荐

    11.2.4 在哪些场景使用MongoDB?.md

    11.2.4 在哪些场景使用MongoDB?

    基于threejs的在线3D场景编辑器使用mongodb保存3D模型和场景数据

    标题中的“基于threejs的在线3D场景编辑器使用mongodb保存3D模型和场景数据”指的是一款使用Three.js库构建的Web应用程序,允许用户在浏览器中创建、编辑和保存3D场景。Three.js是JavaScript的一个强大库,专门用于...

    Thinkphp使用mongodb数据库实现多条件查询方法

    这一修改让Thinkphp框架能够更好地适应使用MongoDB的应用场景,并为开发人员提供了更大的灵活性来处理复杂的查询需求。 总之,Thinkphp虽然支持MongoDB,但在进行复杂查询时需要根据具体需求对驱动文件进行定制和...

    mongodb-测试数据

    在使用这些测试数据时,你应该逐一实践每个操作,对比预期结果,理解MongoDB的工作原理。同时,你也可以利用这些数据进行性能调优,找出最佳实践。记住,实践是掌握任何技术的关键,尤其是像MongoDB这样的数据库管理...

    MongoDB入门指南.pdf

    1. 高性能:MongoDB使用了高性能的存储引擎,可以快速地存储和检索数据。 2. 高可用:MongoDB支持高可用性,可以自动地将数据复制到多个节点上,从而确保数据的安全。 3. 可扩展:MongoDB支持水平扩展,可以根据需要...

    springboot2.1.3 + mysql(mybatis) + mongodb maven项目

    MongoDB具有高可用性、可扩展性和灵活性,能有效应对大数据量和高并发场景。SpringBoot提供了对MongoDB的良好支持,通过Spring Data MongoDB模块,开发者可以轻松地进行CRUD操作,并利用其丰富的查询功能。 **Maven...

    Mongodb连接池for java

    在Java开发中,与MongoDB的交互通常涉及使用连接池来优化性能和资源管理。MongoDB连接池是解决数据库连接管理和复用的一种机制,旨在提高应用的并发能力,减少创建和销毁连接的开销,同时确保在高并发场景下的稳定性...

    mongodb.dll 下载.zip

    6. **分片**:对于大数据场景,MongoDB支持分片,将数据分布在多个机器上,以提高存储和查询性能。 7. **安全特性**:MongoDB支持身份验证、授权和加密,确保数据安全。 8. **命令行工具**:MongoDB提供了一些实用...

    MongoDB 应用场景与最佳实践.docx

    MongoDB 应用场景与最佳实践 MongoDB 是一款流行的 NoSQL 数据库,它的应用场景非常广泛,包括日志存储、监控报表、信息展示、游戏开发等等。那么,如何学习 MongoDB 呢?在学习 MongoDB 之前,需要注意使用 3.2 或...

    java中mongodb使用环境详细配置

    Java 中 MongoDB 使用环境详细配置 Java 中 MongoDB 使用环境详细配置是指在 Windows 平台(WinXP)上安装、运行、安装 Windows 服务的笔记,以作备忘。下面是一些重要的知识点: 1. MongoDB 的下载和安装 ...

    mongodb7.0.0安装包

    MongoDB是一款开源、高性能、无模式的分布式文档型数据库,被广泛应用于Web应用程序、内容管理系统、数据存储等场景。此“mongodb7.0.0安装包”是针对Windows 64位操作系统的一个版本,适用于需要在Windows环境中...

    MongoDB安装包

    此外,MongoDB还支持复制集(Replica Sets)以实现数据冗余和高可用性,分片(Sharding)以实现水平扩展,以及丰富的聚合框架和地理空间索引,使其在大数据和实时分析场景下表现出色。 在实际应用中,还需要考虑...

    mongodb4.4.10.tgz(mongo4目前最新稳定版本)

    在使用MongoDB时,用户需要了解基本的数据库操作,如使用mongo shell连接数据库,创建、读取、更新和删除文档(CRUD操作)。此外,学习备份和恢复策略,如使用mongodump和mongorestore工具,对数据安全至关重要。...

    MongoDB数据库设计规范.docx

    通过使用 JSON 文档实现灵活模式, MongoDB 能够轻松地处理大量的数据同时也能提供高可用性。MongoDB 通过复制集来保证高可用性,通过 Sharded cluster 来保证可扩展性。 二、 BSON BSON 是 MongoDB 的一种数据...

    MongoDB Days 2015 深圳 PPT 共享

    10. **监控与诊断**: 如何使用MongoDB的内置工具,如`mongostat`、`mongodump`和`mongotop`等,进行性能监控和问题诊断,对于维护稳定的服务至关重要。 11. **MongoDB工具**: MongoDB提供了一系列配套工具,如`...

    五、MongoDB 学习PPT

    总之,MongoDB作为一款强大的NoSQL数据库,提供了灵活的数据模型、高效的性能和强大的扩展能力,使得它成为处理现代大数据场景的理想选择。无论是初学者还是经验丰富的开发者,都需要掌握MongoDB的基础知识和操作...

    mongodb-4.0.4_windows

    MongoDB 是一个高性能、分布式、开源的文档型数据库系统,被广泛应用于Web应用程序、移动应用后端、大数据分析以及物联网(IoT)等场景。它以其灵活的数据模型、高可用性和可扩展性著称,是NoSQL数据库领域的代表之一...

Global site tag (gtag.js) - Google Analytics