-
什么时候分片:
- 数据量过大,单机备份恢复过久
- 副本集满足不了高并发写入 (一般情况下副本集够用)
分片特点:
- 对应用透明 ;数据自动平衡 ;支持动态扩容
---------------------
后面详细介绍了副本集合创建的命令,再 linux 下敲命令展示
查看全部 -
副本集架构:
Primary(主) -> Secondary(副) -> Arbiter(心跳,选举) -> Primary
原理:主节点变化记录在 uplog 中,更新到副节点,由一个线程持续监听
--------------
演示: use 副节点数据库xx,看到里面没有数据
use 主节点,写入数据 ,再到副节点查询
在副节点查询时要执行 rs.secondaryok() 表示允许查询副节点
再查副节点看到数据已经写入了
查看全部 -
mongodb 数据目录:
- 用linux 命令 ll 能看到 collection-*.wt 能看到文档文件
- index-*.wt 能看到索引文件
- sizeStorer.wt 为容量信息
JSON k-v
BSON 类似 JSON 的紧凑型 JSON 二进制
(将元素长度存储在头部,能加快检索速度)
查看全部 -
演示了使用 go 语言进行 crud 操作:
操作的的返回为两个对象:结果对象,err对象
查看全部 -
使用 go 语言环境进行 crud 操作
1. 连接到要操作的库和集合
collection := client.Database("martin").Collection("insertonetest")
2. 写入数据
insertOneResult ,err:=collection.InsertOne(ctx, bson.M{"name":"xx","gender":"1"})
//返回的 err 表示是否成功
//返回的 insertOneResult 表示执行结果
查看全部 -
用 go 语言操作 mongoDB
1. 安装 go 语言安装包
2. 安装 编译器 GoLand
GOPROXY=https://guo (国内代理地址)
赋值:基本语法用 % 来代替变量值,输出:Print Printf Println
(后面写了个利用 time.Sleep 实现倒计时的例子)
查看全部 -
db.setProfilingLevel(1,100)
1表示开启慢查询, 100表示超过100为慢查询
db.setProfilingLevel(0) 关闭慢查询
db.getProfilingLevel() 查看是否开启慢查询 (1表示已开启,会将慢查询语句写入系统)
造一条慢查询语句:
1.先插入数据 for(var i=1 ; i<=30000 ; i++)
2.再用 find 命令查询靠后面几位的数据
执行: db.system.profile.find() 可以看到已经记录到慢查询里的语句
查看全部 -
查看执行计划 .explain(true)
在显示的 json 中看字段:
"executionStats"
"executionTimeMillis" : x(扫描毫秒数)
"totalDocsExamined" : x(扫描文档数)
查看全部 -
创建索引 createIndex() 分升序索引和降序索引
默认创建 b+树索引, 创建全文索引(text)
创建哈希索引({"name":"text"}) 不支持范围和多键
创建地理位置索引 2d createIndex({"xx":"2d"})
查询操作,用到地理位置索引
{$geoWithin: {$box :[[10,10],[20,20]] }}
查看全部 -
查询升序 find().sort({"age":1})
查询降序 find().sort({"age":-1})
求平均值
aggregate ([{'$group' : {_id:'$class', 'avg_score': {'$avg' : '$score'} }} ])
查看全部 -
创建集合 createCollection
查看集合 show tables
插入数据 save 或 insert
插入多行 insertMany
直接查询 find (默认20条,输入 it 翻页)
条件查询 find({name:'xx'})
删除查询 remove({name:'xx'})
条件查询 find({age: {$gt: 10}})
条件查询 find({$or:[{"age":10} ,{"name","wang"} ] })
查看全部 -
无密码连接 直接输入 mongo ,有密码连接(先设置用户密码,重启mongo);
选择数据库, insert数据,删除数据库;
创建普通用户(只能修改查询)
----------------------
客户端工具:compass (我之前用的NoSQL Manager for MongoDB)
查看全部 -
database 数据库(每个数据库自己的集合权限,每个数据库存储在不同的文件)
collection 相当于表 (同一个集合里可以插入不同结构不同类型的数据)
document 相当于行(键值对,bson ,区分大小写,不能重复)
field
index 索引
primary key ( _id 自动生成 )
查看全部 -
在linux 上安装 mongodb
查看全部 -
适用场景:游戏,物流,社交 (半结构化的多变的数据)
(中间部分报了一堆公司名称)
技术场景:单表数据上亿,数据模型多变,地理位置
查看全部 -
文档数据库 ( BSON 格式存储文档,二进制json )
高性能:热数据都在内存
高可用:副本集,分片集群
常用架构:单实例,副本集(一主一从),分片
查看全部 -
已读:列出大纲
查看全部 -
已读,解释什么叫数据库
查看全部 -
省流笔记:
1.身份认证:配置不同的用户、设置复杂密码
2.权限控制:不同用户配置不同的权限、权限最小化
3.网络隔离:MongoDB不开放外网、防火墙设置访问白名单查看全部 -
mongodb创建用户名密码
查看全部
举报