Mongodb FAQ fundamentals(基础篇)
Mongodb FAQ(基础篇),是官方文档的翻译。如有翻译不到之处,还请谅解。
1、Mongdb是什么数据库?
mongodb是一个面向文档(document)的数据库,既不支持表连接,也不支持事务。主从复制,故障自动转移,内建的水平扩展是mongodb的几个主要特性。同时还支持二级索引,表达式查询语言,基于文档的原子写操作,一致性读取。
2、Mongdb有表吗?
mongodb的collections和RMDB的table的两个重要区别。一是你可以只向一些document添加某一列的属性,而不用将collection里面的所有document都增加列属性。二是Documents in a single collection may have unique combination and set of fields. Documents need not have identical fields,
3、mongodb一般用作什么?
mongodb设计的主要目的是为了处理大规模数据(大数据处理),例如内容管理系统,移动应用,游戏,电商等。请不要用mongodb来管理那些需要sql,表连接和多对象事务处理的操作。
4、mongodb支持事务吗?
不支持ACID事务,但是mongodb支持一些基本的事务,比如文档的原子操作。那就是说,我们可以将一个document的两个属性同时进行更新,这个操作要不都完成,要不都不完成,前提是这两个属性都是一个文档。另外,mongodb还能保证修改能够持久化(即ACID中的D),为了使用mongodb的这个特性,必须开启journaling,这个特性仅在64的版本默认是开启的,You must also issue writes with a write concern of {j: true} to ensure that the writes block until the journal has synced to disk.
5、运行mongodb需要很大的内存吗?
不是必须的,mongodb可以运行在内存很小的机器上。Mongodb将使用系统的所有的可用内存作为他的缓存,系统资源管理器显示mongodb占满了系统的所有内存,但mongodb会动态的改变这种情况,如果另外一个程序向操作系统申请内存,则mongodb会给另外的进程腾出内存供别的进程使用。
6、如何配置mongodb的缓存?
不需要配置,mongodb将使用尽可能多的内存作为缓存,这个跟OS缓存文件的方法是一样的。
7、Mongodb的写操作是立即写入磁盘还是延迟写入?
写操作将在100毫秒之内写入物理磁盘的日志文件,At that point, the write is “durable” in the sensethat after a pull-plug-from-wall event, the data will still be recoverable after a hard restart。因为日志文件几乎是立即被持久化,因此真正写入数据文件方式是延迟写入。mongodb真正的写入数据文件甚至会延迟1分钟。但这并不会影响到数据的持久性,因为日志文件已经记录了足够的信息使mongodb即便崩溃,也能把数据恢复。
8、Mongodb是否有独立的缓存来应付应用级别的缓存?
木有。
9、Mongodb是否有使用缓存?
是的,mongodb会把最近使用的数据都放在内存里面,如果你为某些数据创建了索引,并且这些索引数据在内存里面,则mongodb将直接从内存进行对索引进行查询。Mongodb不使用查询缓存,mongodb总是直接从索引或者数据文件中查询数据。
10、Mongodb是用什么语言写的?
c++。客户端驱动则可能是java,php等。
11、32位版mongodb有什么限制?
mongodb使用内存映射文件,当使用32位mongodb时,这种文件的大小被限制在2G,包括数据文件和索引文件。因为mongodb被用来处理大数据量,所以千万不要在生产环境部署32版mongodb。而64位版本却不存在这样的问题。
Mongodb FAQ fundamentals(基础篇)的更多相关文章
- 【MongoDB】NoSQL Manager for MongoDB 教程(基础篇)
前段时间,学习了一下mongodb,在客户端工具方面,个人认为 NoSQL Manager for MongoDB 是体验比较好的一个,功能也较齐全.可惜在找教程的时候,发现很难找到比较详细的教程,也 ...
- Mongodb FAQ 存储(storage)篇
1.什么是内存映射文件(memory mapped files)? 内存映射文件是操作系统通过调用函数mmap()创建的一个放在内存中的一个数据文件.这种文件可以当做一个从零开始的内存或者数组,你可以 ...
- 基于C#的MongoDB数据库开发应用(1)--MongoDB数据库的基础知识和使用
在花了不少时间研究学习了MongoDB数据库的相关知识,以及利用C#对MongoDB数据库的封装.测试应用后,决定花一些时间来总结一下最近的研究心得,把这个数据库的应用单独作为一个系列来介绍,希望从各 ...
- 前端总结·基础篇·JS(二)数组深拷贝、去重以及字符串反序和数组(Array)
目录 这是<前端总结·基础篇·JS>系列的第二篇,主要总结一下JS数组的使用.技巧以及常用方法. 一.数组使用 1.1 定义数组 1.2 使用数组 1.3 类型检测 二.常用技巧 2.1 ...
- g4e基础篇#3 Git安装与配置
g4e 是 Git for Enterprise Developer的简写,这个系列文章会统一使用g4e作为标识,便于大家查看和搜索. 章节目录 前言 1. 基础篇: 为什么要使用版本控制系统 Git ...
- g4e基础篇#4 了解Git存储库(Repo)
章节目录 前言 1. 基础篇: 为什么要使用版本控制系统 Git 分布式版本控制系统的优势 Git 安装和设置 了解Git存储库(Repo) 起步 1 – 创建分支和保存代码 起步 2 – 了解Git ...
- 使用 FreeRTOS 时注意事项总结(基础篇教程完结)
以下转载自安富莱电子: http://forum.armfly.com/forum.php FreeRTOS 的初始化流程推荐的初始化流程如下,本教程配套的所有例子都是采用的这种形式,当然,不限制必须 ...
- 【MongoDB】NoSQL Manager for MongoDB 教程(进阶篇)
项目做完,有点时间,接着写下第二篇吧.回顾戳这里 基础篇:安装.连接mongodb.使用shell.增删改查.表复制 本文属于进阶篇,为什么叫进阶篇,仅仅是因为这些功能属于DB范畴,一般使用的不多, ...
- nodejs 基础篇整合
nodeJs 基础篇整合 最近有朋友也想学习nodeJs相关方面的知识,如果你是后端想接近前端,node作为一门跑在服务端的JS语言从这里入门再好不过了.如果你正好喜欢前端,想走的更高,走的更远.no ...
随机推荐
- 《Mysql 公司职员学习篇》 第一章 小A的烦恼
第一章 小A的烦恼 ----- 为什么学习数据库 和 如何选择数据库 小A是某公司的职员,公司数据部的员工,平常的大小工作,完全离不开EXCELL,而最近小A却越来越苦恼,不由的向好朋友小Y吐槽.小 ...
- <item name="android:windowNoTitle">true</item> 不起作用。标题栏未被隐藏
改变style.xml 加入 <item name="android:windowNoTitle">true</item> 按理说可以把标题栏隐藏,但是当s ...
- PHP之网络编程
GET: $htmlsource=file_get_contents("http://192.168.0.13/s/interface/shangpin/shangpinDL"); ...
- MATLAB中如何使用遗传算法
matlab有遗传算法工具箱. 核心函数: (1)function [pop]=initializega(num,bounds,eevalFN,eevalOps,options)--初始种群的生成 ...
- RPC之Thrift学习实战
关于Thrift的学习实战请参考:http://blog.csdn.net/column/details/slimina-thrift.html
- Java多线程中的join()方法
一.join()方法介绍 join() 定义在Thread.java中.join()方法把指定的线程加入到当前线程,可以将两个交替执行的线程合并为顺序执行的线程.比如在线程B中调用了线程A的join( ...
- 【转】Android自动化测试之MonkeyRunner录制和回放脚本(四)
测试脚本录制: 方案一: 我们先看看以下monkeyrecoder.py脚本: #Usage: monkeyrunner recorder.py #recorder.py http://mirror ...
- ASP伪静态页面(不需要通过iis+ISAPI_Rewrite)
很简单的教程,献给喜欢SEO的朋友们. 不需要通过iis+ISAPI_Rewrite做基于IIS的url rewrite 一.数据库很简单使用ACCESS,Data.mdb建立一个表Article,三 ...
- SQL Server2008数据库如何改名
未使用的数据库改名比较方便,找到你要更改的数据库,右键选择[重命名]. 2 然后将你想要更改的名字写好,然后点击一下旁边的空白栏. 3 然后你就发现数据库的名称已经改好了. END 使用中的数据库 ...
- iOS 返回到指定的ViewController
for (UIViewController *vc in self.navigationController.viewControllers) { if ([vc isKindOfClass:[MyV ...