mongodb使用场景整理
目录
什么是NoSql
NoSQL,指的是非关系型的数据库,可以很容易的访问和抓取数据。
用户的个人信息,社交网络,地理位置,用户生成的数据和用户操作日志已经成倍的增加。我们如果要对这些用户数据进行挖掘,那SQL数据库已经不适合这些应用了, NoSQL 数据库的发展却能很好的处理这些大的数据。
NoSql优势与不足
-
优点
- 1、高可扩展性
- 2、分布式计算
- 3、低成本
- 4、架构的灵活性,半结构化数据
- 5、没有复杂的关系
-
不足
- 1、没有标准化
- 2、有限的查询功能
- 3、最终一致是不直观的程序
MongoDB优点
- 事务支持。MongoDB只支持单文档事务,复杂的事务场景支持不佳
- 灵活。BSON存储结构
- 运维简单,故障自动切换
- 可扩展分片集群
- 高性能引擎。WiredTiger
- 强大索引支持。地位位置索引支持地理位置范围计算与查询、文本索引解决搜索需求、TTL索引解决历史数据自动过期
- 支持文件存储
- 支持aggregation与MapReduce。解决数据分析场景需求,可以自己写查询语句或脚本将请求分发到MongoDB上完成。
MongoDB使用的业务场景
-
应用服务器的日志记录
日常我们会把一些应用日志存储到文本格式的文件中,这样不便于查看同时也不便于统计等。通过MongoDB存储,既可以很好的存储、统计同时也方便不同的业务场景下日志数据格式不一致等情况。
-
第三方信息的抓取与存储
我们在一些业务场景中难免会去使用到第三方的数据,当接入多个第三方平台时,这时候我们需要考虑到每个平台数据格式不一致,自身的存储系统结构设计等情况。这时候我们使用MongoDB来存储就很好的避免了这个问题。
-
运维监控系统
在一些大型的项目中,监控是必不可少的。监控系统要监控的内容,可能是随时多变的,这时候使用MongoDB就体现了很大的便利。不需要去修改数据库的结构,直接根据业务需要灵活调整即可。大大降低了开发成本。
-
O2O业务场景
将送快递骑手、快递商家的信息(包含位置信息)存储在 MongoDB,然后通过 MongoDB 的地理位置查询,这样很方便的实现了查找附近的商家、骑手等功能。
-
游戏业务场景
使用 MongoDB 存储游戏用户信息,用户的装备、积分等直接以内嵌文档的形式存储,方便查询、更新。
-
社交业务场景
使用 MongoDB 存储存储用户信息,以及用户发表的朋友圈信息,通过地理位置索引实现附近的人、地点等功能。
-
物联网业务场景
使用 MongoDB 存储所有接入的智能设备信息,以及设备汇报的日志信息,并对这些信息进行多维度的分析。
-
视频直播业务场景
视频直播,使用 MongoDB 存储用户信息、礼物信息等。
-
大数据应用
使用云数据库MongoDB作为大数据的云存储系统,随时进行数据提取分析,掌握行业动态。
MongoDB提供二级索引功能满足动态查询的需求,利用MongoDB的map-reduce聚合框架进行多维度的数据分析。
MongoDB使用场景类型总结
-
读写分离应用
-
灵活多变的业务场景
MongoDB采用No-Schema的方式,免去表结构变更的痛苦,非常适用于初创型的业务需求。可以将模式固定的结构化数据存储在mysql中,模式灵活的业务存储在MongoDB中,高热数据存储在Redis或Memcache中,实现对业务数据高效存取,降低存储数据的投入成本。
-
移动应用
MongoDB支持二维空间索引,可以很好地支撑基于位置查询的移动类App的业务需求。同时MongoDB动态模式存储方式也非常适合存储多重系统的异构数据,满足移动App应用的需求。
-
物联网应用
MongoDB具有高性能和异步数据写入功能,特定场景下可达到内存数据库的处理能力。同时,库MongoDB中的分片集群实例,可按需配置Mongos和Shard组件的配置和个数,性能及存储空间可实现无限扩展,非常适合物联网高并发写入的场景。
MongoDB提供二级索引功能满足动态查询的需求,利用MongoDB的map-reduce聚合框架进行多维度的数据分析。
mysql与mongodb
在处理大量数据方面,MongoDB 比 MySQL 更胜一筹;在云计算服务和需求频繁变化的项目上,MongoDB 也更具优势。
MySQL数据结构和模式是固定的,因此保证了数据一致性和可靠性。MySQL还有一个好处,就是由于它支持基于 ACID 准则的事务操作,数据安全性更高。所以对于看重这些因素的项目来说,MySQL 是最合适的。