MongoDB数据格式
JSON格式
JSON是一种轻量级的数据交换格式,json采用完全独立语言的文本格式,但也使用了类似C语言的习惯,这些特性是json成为理想的数据交换语言,易于人阅读和编写,同时也易于机器解析和生成
BSON格式
- BSON是一种类JSON的二进制形式的存储格式,简称Binary Json,和json一样,支持内嵌的文档数据对象和数组对象,但是BSON有JSON没有的一些数据类型,比如Date和BinDate类型
- BSON的优点是灵活性高,但它的缺点是空间利用率不是很理想
- BSON特点:轻量性、可遍历性、高效性
MongoDB数据库特点
高性能
- MongoDB提供高性能的数据持久化,尤其是支持嵌入式数据模型减少数据库系统上的I/O操作
- mysql需要查询10张表,MongoDB一张表就可以
- 丰富的语言查询,MogoDB支持丰富的查询语言来进行读写操作以及数据汇总
- 文本索引解决搜索的需求
- TTL索引解决历史数据自动过期的需求
- 地理位置索引可用于构建各种 O2O 应用
高可用性
- MongoDB的复制工具是副本集,提供自动故障转移和数据冗余
- MongoDB之前有主从复制,后来的主从复制称之为副本集
- 从3.4起,MongoDB支持基于片键创建数据区域,在一个平衡的集群中,MongoDB将一个区域所覆盖的读写只定向到该区域内的那些片
水平可扩展性
- MongoDB提供可扩展性,作为其核心功能的一部分,分片是将数据分散在一组机器上。
- MongoDB副本集扩容也无需像redis需要迁移槽位,MongoDB可以直接扩容。
支持多种存储引擎
WiredTiger存储引擎、MMAPv1存储引擎、InMemory存储引擎
应用场景
游戏场景
存储游戏用户信息,用户的装备,积分等直接以内嵌文档的形式存储,方便查询、更新。
物流场景
存储订单信息,订单状态再运送过程中会不断更新,以MongoDB内嵌数组的形式来存储,一次查询就能将订单所有变更读取出来。
社交场景
存储用户信息,以及用户发表的朋友圈信息,通过地理位置索引实现附近的人,地点等。
物联网场景
存储设备信息、设备汇报的日志信息、并对这些信息进行多维度分析。
视频直播
使用MongoDB存储用户信息、点赞互动信息、礼物信息、互动评论等
适用场景特点
- 数据量大
- 读写操作频繁
- 数据价值较低,对事务要求不高
MongoDB安装与登录授权模式
ubuntu20.04安装mongoDB
MongoDB数据备份和恢复
mongodump备份
语法
mongodump -h ip -d dbname -o dbdirectory
参数 | 说明 |
---|
-h | 主机地址 | -u | 用户名 | -p | 密码 | -d | 数据库名 | -o | 导出到的目录 |
示例
mongorestore:恢复
语法
mongorestore -h ip -d dbname --dir dbdirectory
参数 | 说明 |
---|
-h | 主机地址:127.0.0.1 | -u | 用户名 | -p | 密码 | -d | 数据库名(需要恢复的) | –dir | 备份数据所在位置 | –drop | 先删除当前数据,然后恢复备份的数据 |
mongoexport备份
语法
mongoexport --port 端口号 -d 库名 -c 表名 -o 备份文件路径.json
csv格式
mongoexport --port 端口号 -d 库名 -c 表名 --type=csv -f 备份的字段 -o 备份文件路径.json
mongoimport还原
mongoimport --port 端口号 -d 库名 -c 表名 -o 备份文件路径.json
csv格式
mongoimport --port 端口号 -d 库名 -c 表名 --type=csv --headerline -o 备份文件路径.json
MongoDB集群分片
|