IT世界|认识 MongoDB 一篇文章就够了


IT世界|认识 MongoDB 一篇文章就够了一、MongoDB 认识MongoDB是一个基于分布式文件存储的数据库 。 由C++语言编写 。 旨在为WEB应用提供可扩展的高性能数据存储解决方案 。
MongoDB是一个介于关系数据库和非关系数据库之间的产品 , 是非关系数据库当中功能最丰富 , 最像关系数据库的 。
它支持的数据结构非常松散 , 是类似json的bson格式 , 因此可以存储比较复杂的数据类型 。 Mongo最大的特点是它支持的查询语言非常强大 , 其语法有点类似于面向对象的查询语言 , 几乎可以实现类似关系数据库单表查询的绝大部分功能 , 而且还支持对数据建立索引 。
MongoDB服务端可运行在Linux、Windows或mac os x平台 , 支持32位和64位应用 , 默认端口为27017 。 推荐运行在64位平台 , 因为MongoDB在32位模式运行时支持的最大文件尺寸为2GB 。
二、MongoDB 主要特点1. 文档MongoDB中的记录是一个文档 , 它是由字段和值对组成的数据结构 。 多个键及其关联的值有序地放在一起就构成了文档 。 MongoDB文档类似于JSON对象 。 字段的值可以包括其他文档 , 数组和文档数组 。
IT世界|认识 MongoDB 一篇文章就够了{“greeting”:“hello,world”}这个文档只有一个键“greeting” , 对应的值为“hello,world” 。 多数情况下 , 文档比这个更复杂 , 它包含多个键/值对 。
例如:{“greeting”:“hello,world”,“foo”: 3} 文档中的键/值对是有序的 , 下面的文档与上面的文档是完全不同的两个文档 。 {“foo”: 3 ,“greeting”:“hello,world”}
文档中的值不仅可以是双引号中的字符串 , 也可以是其他的数据类型 , 例如 , 整型、布尔型等 , 也可以是另外一个文档 , 即文档可以嵌套 。 文档中的键类型只能是字符串 。
使用文档的优点是:

  • 文档(即对象)对应于许多编程语言中的本机数据类型 。
  • 嵌入式文档和数组减少了对昂贵连接的需求 。
  • 动态模式支持流畅的多态性 。
2. 集合集合就是一组文档 , 类似于关系数据库中的表 。
集合是无模式的 , 集合中的文档可以是各式各样的 。 例如 , {“hello,word”:“Mike”}和{“foo”: 3} , 它们的键不同 , 值的类型也不同 , 但是它们可以存放在同一个集合中 , 也就是不同模式的文档都可以放在同一个集合中 。
既然集合中可以存放任何类型的文档 , 那么为什么还需要使用多个集合?这是因为所有文档都放在同一个集合中 , 无论对于开发者还是管理员 , 都很难对集合进行管理 , 而且这种情形下 , 对集合的查询等操作效率都不高 。 所以在实际使用中 , 往往将文档分类存放在不同的集合中 。 例如 , 对于网站的日志记录 , 可以根据日志的级别进行存储 , Info级别日志存放在Info 集合中 , Debug 级别日志存放在Debug 集合中 , 这样既方便了管理 , 也提供了查询性能 。 但是需要注意的是 , 这种对文档进行划分来分别存储并不是MongoDB 的强制要求 , 用户可以灵活选择 。
可以使用“.”按照命名空间将集合划分为子集合 。 例如 , 对于一个博客系统 , 可能包括blog.user 和blog.article 两个子集合 , 这样划分只是让组织结构更好一些 , blog集合和blog.user、blog.article 没有任何关系 。 虽然子集合没有任何特殊的地方 , 但是使用子集合组织数据结构清晰 , 这也是MongoDB 推荐的方法 。
3. 数据库MongoDB 中多个文档组成集合 , 多个集合组成数据库 。
一个MongoDB 实例可以承载多个数据库 。 它们之间可以看作相互独立 , 每个数据库都有独立的权限控制 。 在磁盘上 , 不同的数据库存放在不同的文件中 。