mongodb 笔记 (一)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/StrideBin/article/details/80345732
1.join 表连接 导致表单打印不完
2.mongodb 对开发人员友好 
在普通数据库能实现的在 mongo都能实现
3.mongo 高扩展
4.文档型数据库
范式


高扩展性
oracle 比如磁盘满了换更大磁盘 内存不足换更大内存 连接数不够换核数更多cpu
mongo 横向扩展 用更多小的磁盘 内存 cpu 横向增加


高可用性
mysql 主-从节点
mongo 主从  写入只允许在主节点写 读都可以读


分片中有几种节点?
三种类型的节点
mongos-config server-shards


json? 
重复字段是合法的 




_id?
数组不可以


集群停mongo


插入100条数据
其中某一条数据出错 不会报哪条错
而且也无法回滚  无法保证事务的一致性


order:true  出错也继续执行


mongodb没有回滚 没有事务


deleteone 删除第一条
delete 和drop有什么区别?
delete只删除数据 drop 删索引和数据


主键无法update


不要全表搜索


数据库被慢查询卡住处理:
使用explain()解释器


索引
单字段
db.test.createIndex()
索引对写和读的影响?
读操作变快 写操作变慢 因为会更新索引


索引对硬件影响?
索引占磁盘和内存


单机建索引?
单机建索引加Background 
不加的话前台的内容在建索引的过程会卡住


集群环境怎么建索引?
集群建索引
把从节点单机拉出来单独建 然后再放回
再在主节点用background 建索引


组合索引?(考试很多)


索引顺序? 
先以第一个字段排序 然后再按第二个字段 ...


第一个字段一定要cover到 才走索引
一个字段一个字段判断
find({a:1,b:3,c:6})
createIndex() cover
c:1,b:1,a:1 y
b:1,a:1 n
a:1,b:1 y 
a:1,c:1 y 能走a 


针对查询建索引
复合索引建立顺序?(重要):
先 k/y 然后排序 然后范围


mongo可以在数组里面建索引
{a:[2,4,6]} m=3
{b:[1,2} n=2
{a:1,b:1}
在两个数组上建索引 m*n个索引
多值索引建在数组上
hashed索引
{a:hashed}


TTL索引(重要) 需要设置过期时间
索引和数据都会被删除
什么时候删除? 
不是刚过期就删 因为是批处理删除 删除需要时间




Aggregation 类似groupby
原则 :按照次序


storage 存储引擎
隔离在内存和磁盘之间的一层
如果断电之类的 会在日志文件恢复需要插入的数据
journal 日志文件放在data/db  也就是数据存储的目录下 


锁的力度和压缩




driver 配置驱动时


请求connection 做一个query-thread-销毁thread-关闭connection
设计的时候使用长连接


副本集
考虑成本 副本集数量
mongo 异地灾备
缩短宕机的时间


东航为何用mongo?
高可用
1.机器宕机 一个集群里某台机器挂掉 服务受到影响
2.整个数据中心 挂掉  服务会受到什么影响
3.机器恢复了 数据怎么找回


故障(灾难)恢复 
1.把相同的集群副本 放到不同的数据库上
2.多数据中心


分片做扩展
副本集做备份




从节点负载很高  某台宕机 压力转移到另一台从节点  导致另一台也宕机 也就是一台宕机全部宕机 扩展性还是要考虑分片的方法


多数据中心




oplog 集群之间的不丢失


write concern
w:1
w:2



阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页