MongoDB的认识,优缺点和使用场景,原理

MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。

MongoDB,使用内存映射文件,支持副本集。
面向文档存储的数据库,类JSON的数据格式,自由灵活。
支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。

在高负载的情况下,添加更多的节点,可以保证服务器性能。

内存映射文件(Memory-mapped file):
是一段虚内存逐字节对应于一个文件,使得应用程序处理文件如同访问内存。
主要用处是增加I/O性能,特别是用于大文件,访问内存映射文件比直接文件读写要快几个数量级,内存映射文件可以只加载一部分内容到用户的逻辑内存空间。这对非常大的文件特别有用。
缺点:
内存映射文件需要在进程的占用一块很大的连续逻辑地址空间

-------------------------------------------下面转载网友的总结----------------------------------------------

更高的写负载

默认情况下,对比事务安全,MongoDB更关注高的插入速度。如果你需要加载大量低价值的业务数据,比如日志收集,那么MongoDB将很适合你的用例,但是必须避免在要求高事务安全的情景下使用MongoDB,比如一个1000万美元的交易。

 

处理很大的规模的单表:

数据库扩展是非常有挑战性的,当单表格大小达到5-10GB时,MySQL表格性能会毫无疑问的降低。如果你需要分片并且分割你的数据库,MongoDB将很容易实现这一点。

 

不可靠环境保证高可用性

设置副本集(主-从服务器设置)不仅方便而且很快,此外,使用MongoDB还可以快速、安全及自动化的实现节点(或数据中心)故障转移。

使用基于位置的数据查询,查的更快

MongoDB支持二维空间索引,比如管道,因此可以快速及精确的从指定位置获取数据。

MongoDB在启动后会将数据库中的数据以文件映射的方式加载到内存中。如果内存资源相当丰富的话,这将极大地提高数据库的查询速度,毕竟内存的I/O效率比磁盘高多了

 

非结构化数据的爆发增长

增加列在有些情况下可能锁定整个数据库,或者增加负载从而导致性能下降,这个问题通常发生在表格大于1GB的情况下。鉴于MongoDB的弱数据结构模式,添加1个新字段不会对旧表格有任何影响,整个过程会非常快速;因此,在应用程序发生改变时,你不需要专门的1个DBA去修改数据库模式。

 

缺少专业的数据库管理员

如果你没有专业的DBA,同时你也不需要结构化你的数据及做join查询,MongoDB将会是你的首选。MongoDB非常适合类的持久化,类可以被序列化成JSON并储存在MongoDB。需要注意的是,如果期望获得一个更大的规模,你必须要了解一些最佳实践来避免走入误区。

你可能感兴趣的:(数据库)