📅  最后修改于: 2020-11-23 09:08:14             🧑  作者: Mango
当前,互联网上充满了大数据,大用户,大复杂性等,并且也日益复杂。 NoSQL解决了所有这些问题,它不是传统的数据库管理系统,甚至不是关系数据库管理系统(RDBMS)。 NoSQL代表“不仅SQL”。 NoSQL是一种数据库,可以处理和分类所有类型的非结构化,混乱和复杂的数据。这只是思考数据库的一种新方法。
是。 MongoDB是一个NoSQL数据库。
MonggoDB为C,C++,C#,Java,Node.js,Perl,PHP, Python,Ruby,Scala,Go和Erlang提供官方驱动程序支持。
您可以将MongoDB与以上任何一种语言一起使用。还有其他一些社区支持的驱动程序,但上述驱动程序由MongoDB正式提供。
NoSQL数据库可分为4种基本类型:
有许多NoSQL数据库。 NoSQL数据库的示例有MongoDB,Cassandra,CouchBD,Hypertable,Redis,Riak,Neo4j,HBASE,Couchbase,MemcacheDB,Voldemort,RevenDB等。
MongoDB比其他SQL数据库更好,因为它允许高度灵活和可扩展的文档结构。
例如:
MongoDB是面向文档的DBMS
尽管MongoDB和MySQL都是免费和开放源数据库,但是它们在数据表示,关系,事务,查询数据,模式设计和定义,性能速度,规范化等等方面仍有很多差异。将MySQL与MongoDB进行比较就像在关系数据库和非关系数据库之间进行比较。
MongoDb是最好的NoSQL数据库,因为它是:
面向文档
丰富的查询语言
高性能
高度可用
轻松扩展
否。默认情况下,MongoDB不支持主键-外键关系。
我们可以通过将一个文档嵌入另一个文档来实现主键与外键的关系。例如:地址文档可以嵌入客户文档中。
不需要。运行MongoDB不需要大量RAM。它甚至可以在少量RAM上运行,因为它可以根据进程要求动态分配和取消分配RAM。
ObjectID是12字节的BSON类型。这些是:
是。
在MondoDB中,索引用于有效地执行查询。没有索引,MongoDB必须执行集合扫描,即扫描集合中的每个文档,以选择与查询语句匹配的那些文档。如果查询存在适当的索引,则MongoDB可以使用该索引来限制它必须检查的文档数。
默认情况下,MongoDB为每个集合创建the_id集合。
命名空间是数据库名称和集合名称的串联。集合,MongoDB在其中存储BSON对象。
是。
MongoDB使用数据库探查器对数据库执行每个操作的特征。您可以使用探查器来查找查询和进行写操作
是的,是的。删除该属性,然后重新保存()该对象。
MongoDB是用C++编写和实现的。
不能。MongoDB可以在较小的RAM可用空间上运行。
MongoDB客户端驱动程序支持所有流行的编程语言,因此没有语言问题,您可以使用所需的任何语言。
否。MongoDB代替表,使用“集合”来存储数据。
是。 MongoDB数据库具有动态架构。无需定义用于创建集合的结构。
MongoDB的缓存不可配置。实际上,MongoDb通过内存映射文件自动使用系统上的所有可用空间。
MongoDB不会在回滚中使用传统的锁定或复杂的事务。 MongoDB设计为轻量级,快速且可预测其性能。它使事务支持变得简单,从而提高了性能。
由于MongoDB使用内存映射文件,因此当您运行32位版本的MongoDB构建时,服务器的总存储大小为2 GB。但是,当您运行64位版本的MongoDB构建时,这实际上提供了无限的存储大小。因此64位比32位更可取。
是的,操作完成后可以删除这些文件,因为在常规分片平衡操作期间将这些文件作为备份。这是一个手动清理过程,必须释放空间。
如果碎片断开,您甚至进行查询,那么除非您设置了部分查询选项,否则查询将返回错误。但是,如果分片很慢,则Mongos将等待它们直到响应。
如果满足以下两个条件,则该查询称为涵盖查询:
涵盖查询使索引的存储在RAM中或顺序位于磁盘上,从而使查询的执行速度更快。它使查询的执行速度更快。
覆盖查询使字段本身被索引覆盖,MongoDB可以匹配查询条件,并使用相同索引返回结果字段,而无需查看文档内部。
在MongoDB中,分片是跨多台计算机存储数据记录的过程。这是一种MongoDB方法,可以满足数据增长的需求。它在数据库或搜索引擎中创建数据的水平分区。每个分区称为分片或数据库分片。
可以将副本指定为承载相同数据集的一组mongo实例。在副本集中,一个节点是主节点,另一个是辅助节点。所有数据都从主节点复制到辅助节点。
在MongoDB中,主节点是可以接受写入的节点。这些也称为主节点。 MongoDB中的复制是单个主复制,因此一次只能有一个节点可以接受写操作。
辅助节点称为从节点。这些是从主节点复制的只读节点。
默认情况下,MongoDB仅将数据写入主副本集。
MongoDB支持以下CRUD操作:
MongoDB使用BSON表示文档结构。
是。如果您从数据库中删除文档,MongoDB也会从磁盘中删除它。
MongoDB不会跟随文件系统碎片,而是在设置服务器时预先分配数据文件以保留空间。这就是MongoDB数据文件很大的原因。
存储引擎是数据库的一部分,用于管理如何在磁盘上存储数据。
例如:一个存储引擎可能为读取大量工作负载提供更好的性能,而另一个存储引擎可能支持更高的写入操作吞吐量。
MMAPv1和WiredTiger是MongoDB使用的两个存储引擎。
数据库分析器用于收集有关正在运行的mongod实例上的MongoDB写操作,游标,数据库命令的数据。您可以基于每个数据库或每个实例启用分析。
数据库探查器会将其收集的所有数据写入系统。个人档案集合,这是一个上限集合。
不能。由于MMAPv1不允许配置缓存大小,因此无法为MMAPv1配置缓存大小。
对于WiredTiger存储引擎,您可以指定WiredTiger将用于所有数据的缓存的最大大小。可以使用storage.wiredTiger.engineConfig.cacheSizeGB选项来完成。
MongoDB使用读写器锁进行并发。读取器-写入器锁允许并发的读取器共享访问资源(例如数据库或集合)的权限,但可以独占访问单个写入操作。
MongoDB和Redis之间的区别:
欲了解更多信息,请点击这里
MongoDB和CouchDB之间的区别:
欲了解更多信息,请点击这里
MongoDB和Cassandra之间的区别:
欲了解更多信息,请点击这里
您无需在MongoDB中手动创建数据库,因为当您第一次将值保存到定义的集合中时,数据库会自动创建。
欲了解更多信息,请点击这里