MongoDB简介

   在数据存储中,最常见的三种存储方案是:在文件系统的文件中直接存储,关系数据库和NoSQL数据库。本篇文章讲的就是第三类:一种叫MongoDB的NoSQL数据库。

1,什么是NoSQL

    NoSQL(not only SQL):由提供缺乏传统SQL关系数据库的严格限制模型的存储和检索技术组成。NoSQL背后的主要动机是简化设计,水平扩展,以及对数据的可用性进行更精细的控制。

    NoSQL的思路是打破关系数据库的传统结构,并允许开发人员用更紧密契合了其系统数据流需求的方法实现模型。NoSQL数据库的实现方式可能永远无法用传统的关系数据库来构造。

    有多种不同的NoSQL技术,包括HBase的列结构,Redis的键/值结构,以及Virtuoso的图状结构。

    本篇文章介绍的是MongoDB和文档模型,MongoDB在为Web应用程序和服务实现后端存储方面具有极大的灵活性和可扩展性,此外,MongoDB是目前能够得到的最流行并拥有最好的支持的NoSQL数据库(额..  好像Redis也用得越来越多了..加个之一)。

2,什么是MongoDB

    MongoDB是这样一种NoSQL数据库,它基于的文档模型吧数据对象作为一个集合中单独的文档来存储。你可以使用MongoDB数据库来实现提供高性能,高可用性和自动扩展的数据存储。

2.1 理解集合

    MongoDB通过使用集合将数据分组在一起。集合(collection)仅仅是一组具有相同或类似用途的文档。集合的行为很像传统的SQL数据库中的表。然而两者之间有一个很大的不同。在MongoDB中,集合不执行严格的模式;相反,如果需要的话,在同一个集合中的文档可以具有彼此略微不同的结构。这减少了把在文档中的条目分成若干不同的表的需要,而这在SQL实现中往往需要这样做。

2.2 了解文档

    文档(document)是MongoDB数据库中单个数据实体的表示。集合由一个或多个相关的对象组成。MongoDB和SQL之间的主要区别是MongoDB文档与SQL的行存在很大的不同。行数据是非常平坦的,意味着行中的每一个值都有一个列。然而,在MongoDB中,文档可以包含嵌入的子文档,从而为应用程序提供更密切的内在数据模型。

    事实上,在MongoDB数据库中,代表文档的记录被存储为BSON,这是JSON的一个轻量级的二进制形式。此外,MongoDB的字段/对应与JavaScript的属性/值对。这些字段/值对定义了存储在该文档中的值。这意味着,要把MongoDB的记录转换回你会在自己的Node.js应用程序中使用的JavaScript对象,几乎没有必要进行翻译。

    例如,MongoDB的文档可以构造成如下这个样子,带有name,version,languages,admin和paths字段:

{
	name:"xiaobaicai's document",
	version:1,
	language:["JavaScript","Html","css"],
	admin:{name:"xiaobai",password:"****"},
	paths:{temp:"/tmp",project:"/opt/project",html:"/opt/project/html"}
}

    请注意,文档结构包含字段/属性,它们是字符串,整数,数组和对象,就像一个JavaScript对象的属性一样。下面的表1列出了在BSON文档中可以为字段值设置的不同数据类型。

    字段名不能包含kong(null)字符,句点(.)或美元符号($)。此外,_id字段名是为对象的ID保留的。该_id字段是系统中的唯一的ID,它由以下几部分组成:

  • 一个4字节的值,代表从纪元以来的秒数
  • 一个3字节的机器标识符。
  • 一个2字节的进程ID
  • 一个3字节的计数器,从一个随机值开始

    在MongoDB中,文档的最大大小为16MB。这可以防止导致RAM使用过量或对文件系统产生强烈冲击。虽然你可能永远不会接近这个数字,但在你需要设计包含文件数据的一些复杂的数据类型时,请牢记这个最大文件的大小。

3,MongoDB的数据类型

    BSON数据格式在以二进制形式存储JavaScript对象时,提供了几种不同的类型供使用。这些类型尽可能与JavaScript的类型相匹配。了解这些类型是重要的,因为你可以真正地查询MongoDB,来发现具有某一类型的值的特定属性的对象。例如,你可以在数据库中查找时间戳是一个String对象的文档,或查询时间戳值是Data对象的文档。

    MongoDB为每一种数据类型分配了从1到255的整数ID号,可使用它来按类型查询。表1显示了MongoDB支持的数据类型的列表,以及MongoDB用来辨别它们的编号。

表1:MongoDB的数据类型和相应的ID号
类型 说明 编号
Double 双精度类型 1
String 字符串 2
Object 对象 3
Array 数组 4
Binary data 二进制数据 5
Object id 对象ID 7
Boolean 布尔值 8
Date 日期 9
Null 控制 10
Regular Expression 正则表达式 11
JavaScript JavaScript 13
Symbol 符号 14
JavaScript(with scope) JavaScript(带作用域) 15
32-bit integer 32位整数 16
Timestamp 时间戳 17
64-bit integer 64位整数 18
Min Key 最小键 255
Max Key 最大键 127

    在MongoDB中使用不同数据类型时,你需要知道的另一件事是它们比较的顺序。当比较不同BSON类型的值时,MongoDB使用下面的比较顺序,从最低到最高排列如下:

  1. 最小键(内部类型)
  2. 空值
  3. 数值
  4. 符号,字符串
  5. 对象
  6. 数组
  7. 二进制数据
  8. 对象ID
  9. 布尔值
  10. 日期,时间戳
  11. 正则表达式
  12. 最大键(内部类型)

   关于MongoDB 更多内容的文章可以看: https://blog.csdn.net/qq_39263663/article/details/80377441

猜你喜欢

转载自blog.csdn.net/qq_39263663/article/details/80376858