一、概念理解类
1. 什么是MongoDB?
答案:MongoDB是由C++语言编写的基于分布式文件存储的开源数据库系统,旨在为Web应用提供可扩展、高性能的数据存储解决方案。它将数据存储为文档,数据结构由键值对组成,类似JSON对象,字段值可包含其他文档、数组及文档数组。
2. NoSQL数据库是什么意思?NoSQL与RDBMS有什么区别?为什么要使用和不使用NoSQL数据库?
答案:NoSQL是非关系型数据库,NoSQL=Not Only SQL。关系型数据库采用结构化的数据存储方式,NoSQL则采用键值对存储数据。在处理非结构化/半结构化大数据、水平扩展、应对动态增加的数据项时优先考虑NoSQL数据库;考虑数据库成熟度、支持、分析商业智能、管理专业性等问题时优先考虑关系型数据库。
3. MySQL与MongoDB之间最基本的差别是什么?
答案:两者都是免费开源数据库,但数据的表示、查询、关系、事务、模式设计和定义、标准化、速度和性能等方面存在基本差别,本质上是关系型和非关系型数据库数据存储结构不同。
4. 你怎么比较MongoDB、CouchDB及CouchBase?
答案:它们都是面向文档的数据库,除都以文档形式存储外无其他共同点,在数据模型实现、接口、对象存储以及复制方法等方面有很多不同。
5. MongoDB成为最好的NoSQL数据库的原因是什么?
答案:具有面向文件、高性能、高可用性、易扩展性、丰富查询语言等特点。
6. journal回放在条目(entry)不完整时会遇到问题吗?
答案:每个journal (group)的写操作都是一致的,除非它是完整的否则在恢复过程中不会回放。
7. 分析器在MongoDB中的作用是什么?
答案:可以显示数据库中每个操作的性能特点,通过它能找到比预期慢的查询或写操作,从而确定是否需要添加索引。
8. 名字空间(namespace)是什么?
答案:MongoDB存储BSON对象在集合中,数据库名字和集合名字以句点连结起来就是名字空间。
9. 如果用户移除对象的属性,该属性是否从存储层中删除?
答案:是的,用户移除属性后对象会重新保存。
二、操作类
11. 允许空值null吗?
答案:对于对象成员而言,是的。但不能添加空值到数据库集合,不过可以添加空对象{}。