mongoDB的知识点

,解决的问题如下
1)关系型数据库进行实体操作时,都需要把一个本属于该实体的数据分别存储在多个表中,进行连接查询。

二,处理的业务对象: 大数据量,高并发,弱事务
三,特点
1)Mongo内置的水平扩展机制提供了从百万到十亿级别的数据量处理能力,其开箱即用的特性也大大降低了中小网站的运维成本。
2)集合支持松散的模式,易于灵活调整,它支持复杂的属性,并可为之建立索引,作为查询条件,它可以直接对记录中的 某个字段进行原子性的改变
3)MongoDB所采用的面向文档的数据模型使其可以自动地在多台服务器之间分割数据,还可以平衡集群的数据和负载,自动重排文档。
4)MongoDB并不支持join操作和复杂的事务事务,这个架构为了提高扩展性,而join和复杂的多行事务很难再一个分布式系统上实现。
5)MongoDB使用mongoDB传输协议作为与服务器交互的主要方式(与之对应的协议需要更多的开销,如:http),它对文档进行动态填充,预分配数据文件,用空间换区性能的稳定。
6)它尽可能地将服务器端处理的逻辑交给客户端。
7)MongoDB尽量让服务器自治来简化数据库的管理。在分布式环境下,集群只需要知道新增节点,就会自动集成和配置新节点。
8)将一个应用的所有数据都存储在同一个数据库中的做法很好,要想在同一个MongoDB服务器上存放多个应用或者用户数据,就要使用不同的数据库。
9)mongoDB作为网络服务器来运行
10)当javaScript只有在db中找不到指定属性的时候,才会将其作为集合返回,当有属性与目标集合同名是,可以使用getCollection函数
11)shell中的JS仅支持64位浮点数,所以32位整数会被自动转换。
12)在默认情况下,shell中的数字都被mongoDB当做双精度数,这意味着你从数据库中获得的是一个32位整数,修改一个文档后,将文档存回数据库的时候,这个整数也被转成浮点数,即便保持这个整数原封不动也会这样。
13)MongoDB中存储的文档必须有一个“_id”键,这个键的值可以是任何类型的,默认是一个ObjectId对象。ObjectId的组成部分如下:
14)虽然ObjectId设计是轻量级的,但是这种的生成是在客户端生成的,一般将事务交给客户端 来处理。

创建、更新及删除
15)当前版本的MongoDB的消息长度最大是16MB。
16)插入的时候,只是简单地将文档原样存入数据库中,不做数据验证,最
明显的副作用是允许插入无效的数据。好处是使数据库更加安全,远离注入的攻击。
17)一次插入的文档不能超过4MB
18)删除集合本身,原有的索引也会保留。
19)更新操作是原子性的,若两个更新同时发生,先到达服务器的先执行,接着执行另外一个,所以互相有冲突的更新可以火速传递,并不会相互干扰,最后的更新才会取得胜利。
20)MongoDb是一个javaScript数据库
21)客户端发送MongoDB的操作指令后,就不需要管理这个操作的结果,服务器也不需要返回操作结果。
22)mongoDB等待数据库响应本身的时间比只发送消息的时间多一个数量级,所以应该尽量较少需要返回值的操作。
23)数据库会为每一个mongDB数据库连接创建一个队列,存放这个连接的请求。不同的shell是不同的数据库连接
固定集合
24)MongDB中设计固定集合的目的就是为了存储内部的复制日志oplog,固定集合还有个好用伐,就是缓存少量的文档。
25)固定集合有一种特殊的排序方式,叫做自然排序,自然顺序就是文档在磁盘上的顺序。
GridFS  一种将大型文件存储在MongDB的文件规范
26)数据库支持以BSON格式存储二进制对象,但是MongDB中的BSON对象最大不超过16MB,GridFS规范提供一种透明机制,可以将一个大文件分割成多个小文档,这样将容许我们有效保存大的文件对象。
27)BSON是一种类json的一种二进制形式的存储形式,简称Binary JSON,它和JSON一样,支持内嵌的文档对象和数组对象,但是BSON有JSON没有的一些数据类型,如Data和BinData类型
28)GridFS会直接利用业已建立的复制或分片机制,所以对于文件存储来说故障恢复和扩展都很容易。
29)GridFS可以避免用于存储用户上传内容的文件系统出现某些问题:例如:GridFS在同一目录下放置大量的文件是没有任何问题的。
30)GridFS不产生磁盘碎片,因为MongoDB分配数据文件空间是以2GB为一块的

DBRef 数据库引用
31)DBRef中的键的顺序是不能改变的。


MongoDB的管理
32)千万不要向运行中的MongoDB发送SIGKILL,这样会导致数据库直接关闭,这会使数据文件损坏
33)不要用驱动程序连接HTTP接口,也不要通过HTTP连接本地驱动端口,驱动端口只能处理本机MongoDB的传输协议,不能处理HTTP请求。
安全性控制
34)用户认证时,服务器将认证和连接绑定来跟踪认证,也就是说如果驱动程序或者工具使用了连接池或是因故障切换到另一个节点,所有认证用户必须对每个新连接重新认证。
35)即便用了认证,MongoDB传输协议也是不加密的。如果需要加密,可以用SSH隧道或者类似的技术做客户端和服务器之间的加密。
36)建议将MongDB服务器布置在防火墙后或者布置在只有应用服务器能访问的网络中,但要是MongoDB必须能被外部访问到的话,见识使用--bindip选项,可以指定mongod绑定到本地IP地址
37)默认情况下MongoDB会开启一个简单的HTTP服务器,便于查看运行、锁、复制等方面的信息,要是不想公开这些信息,就应该通过--nohttpinter-face将管理接口关闭
38)可以用--noscripting完全禁止服务端JavaScript的执行

数据备份
39)除非服务器做了完整的fsync,还不允许写入,否则在运行MongoDB时创建数据目录的副本并不安全,这样的备份可能已经破损了,需要修复。
40)mongodump使用的普通查询机制,所以产生的备份不一定是服务器数据的实时快照,服务器再备份过程中处理写入时尤为明显。备份时的查询会对客户端的性能产生不利的影响。
41)虽然mongodump和mongorestorse能不停机备份,但是我们却失去了获取实时数据视图的能力,mongoDB的fsync命令能在mongoDB运行时复制数据目录还不会损坏数据。
42)fsync命令会强制服务器将所有缓冲区写入磁盘,还可以选择上锁阻止对数据库的进一步写入,直到释放锁为止。
43)如果复制的从节点已经被主节点落下很远,从节点就要及时地重新做完整同步,尽量避免重新同步,就需要配置足够大的oplog内存空间。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值