目录
(一)mongodb是一个nosql数据库,它有高性能、无模式、文档型的特点。是nosql数据库中功能最丰富,最像关系数据库的。数据库格式为BSON
(二)MongoDB 是一种面向文档的数据库系统,也可以说是一种基于对象的数据库。
6、传统的关系型数据库(如MySQL),在数据操作的“三高”需求以及应对Web2.0的网站需求面前,显得力不从心。其中“三高”是指:
2、格式自由,数据格式不固定,数据结构发生变更的同时不会影响程序运行;
3、面向对象的sql查询语句,基本涵盖关系型数据库的所有查询语句;
(十)MongoDB服务端可运行在Linux、Windows平台,支持32位和64位应用,默认端口为27017。
(一)vim /etc/yum.repos.d/mongodb.repo
(一)使用“rpm -ql mongodb-org-server”命令返回的文件列表及其含义:
(二)使用“rpm -ql mongodb-org-shell”命令返回的文件列表及其含义:
(三)使用“rpm -ql mongodb-org-tools”命令返回的文件列表及其含义:
2、创建集合 db.createCollection("test")
一、MongoDB概述
(一)mongodb是一个nosql数据库,它有高性能、无模式、文档型的特点。是nosql数据库中功能最丰富,最像关系数据库的。数据库格式为BSON
(二)MongoDB 是一种面向文档的数据库系统,也可以说是一种基于对象的数据库。
(三)MongoDB 中的最基本单位是文档 (Document),每个文档都是一个对象,可以包含任意数量和任意深度的属性和数组。文档的属性可以是基本类型 (比如数字、字符串等) 或者其他文档类型,数组也可以包含任意类型的数据。
(四)MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。在高负载的情况下,添加更多的节点,可以保证服务器性能。MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。
(五)MongoDB 的文档模型具有的特点
1、弱类型
MongoDB 不要求文档中的属性具有相同的数据类型或者结构。
2、动态模式
MongoDB 允许您在一个集合中存储不同结构的文档。
3、嵌套属性
文档可以包含嵌套属性。
4、对象引用
文档可以通过在一个文档中引用另一个文档来建立关系。
通过使用文档模型,MongoDB 实现了比关系型数据库更加灵活的数据存储方式。
(六)相关概念
1、实例
系统上运行的mongodb的进程,类似于mysql实例;
2、库
每个数据库都是独立的,有自己的用户,权限,独立存储集合,类似于mysql的库;
3、集合
由一组文档构成,类似于mysql的表;
4、文档
mongodb数据库的最小数据集,是由多个键值对有序组合的数据单元,类似于mysql的数据记录;
5、主键
唯一标识一行数据
6、传统的关系型数据库(如MySQL),在数据操作的“三高”需求以及应对Web2.0的网站需求面前,显得力不从心。其中“三高”是指:
① High performance - 对数据库高并发读写的需求。
②Huge Storage - 对海量数据的高效率存储和访问的需求。
③ High Scalability && High Availability- 对数据库的高可扩展性和高可用性的需求。
(七)MongoDB 特性
1、面向集合文档存储,适合存储json形式的数据;
2、格式自由,数据格式不固定,数据结构发生变更的同时不会影响程序运行;
3、面向对象的sql查询语句,基本涵盖关系型数据库的所有查询语句;
4、有索引的支持,查询效率更快;
5、支持复制和自动故障转移;
6、可以使用分片集群提升查询性能
(八)MongoDB 应用场景
1、游戏场景
使用MongoDB存储游戏用户信息、装备、积分等,直接以内嵌文档的形式存储,方便查询、更新。
2、物流场景
使用MongoDB存储订单信息、订单状态、物流信息,订单状态在运送过程中飞速迭代、以MongoDB内嵌数组的形式来存储,一次查询就能将订单所有的变更查出来,牛逼plus。
3、社交场景
使用MongoDB存储用户信息,朋友圈信息,通过地理位置索引实现附近的人、定位功能。
4、物联网场景
使用MongoDB存储设备信息、设备汇报的日志信息、并对这些信息进行多维度分析。
5、视频直播
使用MongoDB存储用户信息、点赞互动信息。
(九)MongoDB架构选型
1、应用不需要事务及复杂 join 支持
2、新应用,需求会变,数据模型无法确定,想快速迭代开发
3、应用需要2000-3000以上的读写QPS(更高也可以)
4、应用需要TB甚至 PB 级别数据存储
5、应用要求存储的数据不丢失
6、应用需要99.999%高可用
7、应用需要大量的地理位置查询、文本查询
#上述有1个符合,可以考虑 MongoDB,2个及以上的符合,选择 MongoDB 绝不会后悔。
(十)MongoDB服务端可运行在Linux、Windows平台,支持32位和64位应用,默认端口为27017。
推荐运行在64位平台,因为MongoDB在32位模式运行时支持的最大文件尺寸为2GB。
二、MongoDB主要特点
MongoDB中的记录是一个文档,它是由字段和值对组成的数据结构。
多个键及其关联的值有序地放在一起就构成了文档。
MongoDB文档类似于JSON对象。字段的值可以包括其他文档,数组和文档数组。
{“greeting”:“hello,world”}这个文档只有一个键“greeting”,对应的值为“hello,world”。多数情况下,文档比这个更复杂,它包含多个键/值对。
例如:{“greeting”:“hello,world”,“foo”: 3} 文档中的键/值对是有序的,下面的文档与上面的文档是完全不同的两个文档。{“foo”: 3 ,“greeting”:“hello,world”}
#文档中的值不仅可以是双引号中的字符串,也可以是其他的数据类型,例如,整型、布尔型等,也可以是另外一个文档,即文档可以嵌套。文档中的键类型只能是字符串。
三、RPM安装MongoDB
(一)vim /etc/yum.repos.d/mongodb.repo
#将以下内容写入mongodb.repo中
[mongodb-org-4.2]
name=MongoDB