一 、 NoSQL 介绍

NoSQL,指的是非关系型的数据库。

NoSQL有时也称作Not Only SQL的缩写

是对不同于传统的关系型数据库的数据库管理系统的统称。

对NoSQL最普遍的解释是”非关联型的”,强调Key-Value Stores和文档数据库的优点,而不是单纯的RDBMS。

NoSQL用于超大规模数据的存储。

这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。

为什么使用NoSQL?

今天我们可以通过第三方平台可以很容易的访问和抓取数据。

用户的个人信息,社交网络,地理位置,用户生成的数据和用户操作日志已经成倍的增加。

我们如果要对这些用户数据进行挖掘,那SQL数据库已经不适合这些应用了

NoSQL数据库的发展也却能很好的处理这些大的数据。

二、MongoDB简介

Mongodb由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。

是专为可扩展性,高性能和高可用性而设计的数据库, 是非关系型数据库中功能最丰富,最像关系型数据库的,它支持的数据结构非常散,是类似 json 的 bjson 格式,因此可以存储比较复杂的数据类型。

MongoDB的(来自于英文单词“Humongous”,中文含义为“庞大”)是可以应用于各种规模的企业,各个行业以及各类应用程序的开源数据库。作为一个适用于敏捷开发的数据库,MongoDB的的数据模式可以随着应用程序的发展而灵活地更新。

MongoDB 以一种叫做 BSON(二进制 JSON)的存储形式将数据作为文档存储。

具有相似结构的文档通常被整理成集合。可以把这些集合看成类似于关系数据库中的表: 文档和行相似, 字段和列相似。

mongo和mysql数据对比

mysql mongo
集合
字段 key:value
文档

三、MongoDB特点

**1.高性能: **

Mongodb提供高性能的数据持久性

尤其是支持嵌入式数据模型减少数据库系统上的I/O操作

索引支持能快的查询,并且可以包括来嵌入式文档和数组中的键

2.丰富的语言查询:

Mongodb支持丰富的查询语言来支持读写操作(CRUD)以及数据汇总,文本搜索和地理空间索引

3.高可用性:

Mongodb的复制工具,成为副本集,提供自动故障转移和数据冗余,

4.水平可扩展性:

Mongodb提供了可扩展性,作为其核心功能的一部分,分片是将数据分,在一组计算机上。

5.支持多种存储引擎:

WiredTiger存储引擎和、MMAPv1存储引擎和InMemory存储引擎

四、 mongo应用场景

游戏场景,使用 MongoDB 存储游戏用户信息,用户的装备、积分等直接以内嵌文档的形式存储,方便查询、更新

物流场景,使用 MongoDB 存储订单信息,订单状态在运送过程中会不断更新,以 MongoDB 内嵌数组的形式来存储,一次查询就能将订单所有的变更读取出来。

社交场景,使用 MongoDB 存储存储用户信息,以及用户发表的朋友圈信息,通过地理位置索引实现附近的人、地点等功能

物联网场景,使用 MongoDB 存储所有接入的智能设备信息,以及设备汇报的日志信息,并对这些信息进行多维度的分析

视频直播,使用 MongoDB 存储用户信息、礼物信息等

电商场景,使用 MongoDB

商城上衣和裤子两种商品,除了有共同属性,如产地、价格、材质、颜色等外,还有各自有不同的属性集,如上衣的独有属性是肩宽、胸围、袖长等,裤子的独有属性是臀围、脚口和裤长等

五、 安装配置mongodb

规划目录(根据公司情况)

  1. 例如:
  2. #软件所在目录
  3. /opt/mongodb
  4. #单节点目录
  5. /opt/mongo_27017/{conf,log,pid}
  6. #数据目录
  7. /data/mongo_27017

1.下载并解压

  1. yum install libcurl openssl -y
  2. cd /opt/
  3. wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.6.13.tgz
  4. tar zxvf mongodb-linux-x86_64-3.6.13.tgz
  5. ln -s mongodb-linux-x86_64-3.6.13 mongodb

2.创建文件目录以及数据目录

  1. mkdir /opt/mongo_27017/{conf,logs,pid} -p
  2. mkdir /data/mongo_27017 -p

3.配置启动mongo

  1. 1.创建配置文件
  2. cat > /opt/mongo_27017/conf/mongodb.conf << EOF
  3. systemLog:
  4. destination: file
  5. logAppend: true
  6. path: /opt/mongo_27017/logs/mongodb.log
  7. storage:
  8. journal:
  9. enabled: true
  10. dbPath: /data/mongo_27017
  11. directoryPerDB: true
  12. wiredTiger:
  13. engineConfig:
  14. cacheSizeGB: 1
  15. directoryForIndexes: true
  16. collectionConfig:
  17. blockCompressor: zlib
  18. indexConfig:
  19. prefixCompression: true
  20. processManagement:
  21. fork: true
  22. pidFilePath: /opt/mongo_27017/pid/mongod.pid
  23. net:
  24. port: 27017
  25. bindIp: 127.0.0.1,10.0.0.51
  26. EOF

4.启动mongo

  1. /opt/mongodb/bin/mongod -f /opt/mongo_27017/conf/mongodb.conf

5.检查是否启动

  1. ps -ef|grep mongo
  2. netstat -lntup|grep 27017

6.配置登录mongo

  1. #写入环境变量
  2. echo 'PATH=$PATH:/opt/mongodb/bin' >> /etc/profile
  3. source /etc/profile

7.登录和关闭

  1. #1.登录
  2. mongo db01:27017
  3. #2.关闭
  4. 方法1
  5. 使用localhost登录
  6. mongo localhost:27017
  7. use admin
  8. db.shutdownServer()
  9. 方法2
  10. mongod -f /opt/mongo_27017/conf/mongodb.conf --shutdown

六、优化报警

启动后,会有几个报警内容如下:

报警内容1:内存不足

  1. 2019-11-05T00:24:56.345+0800 I STORAGE [initandlisten] ** WARNING: The configured WiredTiger cache size is more than 80% of available RAM.

解决方法:

1.添加内存

2.调整配置文件里的cache大小

报警内容2:配置访问控制参数

  1. 2019-11-05T00:24:56.345+0800 I STORAGE [initandlisten] ** See http://dochub.mongodb.org/core/faq-memory-diagnostics-wt
  2. 2019-11-05T00:24:57.129+0800 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database.
  3. 2019-11-05T00:24:57.129+0800 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted.

解决方法:

==============

报警内容3:不是以普通用户启动

  1. 2019-11-05T00:24:57.129+0800 I CONTROL [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.

解决方法:

  1. mongod -f /opt/mongo_27017/conf/mongodb.conf --shutdown
  2. useradd mongo
  3. echo "123456"|passwd --stdin mongo
  4. chown -R mongo:mongo /opt/
  5. chown -R mongo:mongo /data/
  6. su - mongo
  7. mongod -f /opt/mongo_27017/conf/mongodb.conf
  8. mongo db01:27017

报警内容4:

  1. 2019-11-05T00:24:57.129+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
  2. 2019-11-05T00:24:57.129+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never'
  3. 2019-11-05T00:24:57.129+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
  4. 2019-11-05T00:24:57.129+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never'

解决方法:

  1. 1.临时解决
  2. echo never > /sys/kernel/mm/transparent_hugepage/enabled
  3. echo never > /sys/kernel/mm/transparent_hugepage/defrag
  4. 2.官方脚本
  5. [root@db01 ~]# cat /etc/init.d/disable-transparent-hugepages
  6. #!/bin/bash
  7. ### BEGIN INIT INFO
  8. # Provides: disable-transparent-hugepages
  9. # Required-Start: $local_fs
  10. # Required-Stop:
  11. # X-Start-Before: mongod mongodb-mms-automation-agent
  12. # Default-Start: 2 3 4 5
  13. # Default-Stop: 0 1 6
  14. # Short-Description: Disable Linux transparent huge pages
  15. # Description: Disable Linux transparent huge pages, to improve
  16. # database performance.
  17. ### END INIT INFO
  18. case $1 in
  19. start)
  20. if [ -d /sys/kernel/mm/transparent_hugepage ]; then
  21. thp_path=/sys/kernel/mm/transparent_hugepage
  22. elif [ -d /sys/kernel/mm/redhat_transparent_hugepage ]; then
  23. thp_path=/sys/kernel/mm/redhat_transparent_hugepage
  24. else
  25. return 0
  26. fi
  27. echo 'never' > ${thp_path}/enabled
  28. echo 'never' > ${thp_path}/defrag
  29. re='^[0-1]+$'
  30. if [[ $(cat ${thp_path}/khugepaged/defrag) =~ $re ]]
  31. then
  32. # RHEL 7
  33. echo 0 > ${thp_path}/khugepaged/defrag
  34. else
  35. # RHEL 6
  36. echo 'no' > ${thp_path}/khugepaged/defrag
  37. fi
  38. unset re
  39. unset thp_path
  40. ;;
  41. esac
  42. =================================================================
  43. [root@db01 ~]# chkconfig --add disable-transparent-hugepages
  44. [root@db01 ~]# chkconfig --list|grep disable

Mongo --01 介绍、安装、优化报警的更多相关文章

  1. Android Testing学习01 介绍 测试测什么 测试的类型

    Android Testing学习01 介绍 测试测什么 测试的类型 Android 测试 测什么 1.Activity的生命周期事件 应该测试Activity的生命周期事件处理. 如果你的Activ ...

  2. webpack 介绍 & 安装 & 常用命令

    webpack 介绍 & 安装 & 常用命令 webpack系列目录 webpack 系列 一:模块系统的演进 webpack 系列 二:webpack 介绍&安装 webpa ...

  3. CentOS6 x86_64最小化安装优化脚本

    #!/bin/bash #centos6. x86_64系统最小化安装优化脚本 #系统基础优化,建议以root运行 if [ $USER != "root" ];then echo ...

  4. MongoDB的介绍安装与基本使用

    MongoDB的介绍安装 关于MongoDB的介绍于安装可参考:https://www.cnblogs.com/DragonFire/p/9135630.html 除了官网下载,可以下载他人下载好分享 ...

  5. Redis学习01——介绍与搭建环境

    Redis学习01介绍与搭建环境一简介二yum配置已经配置了的可以跳过三安装gcc四安装redis1 上传Redis到linux中2 解压到usrlocal下3 编译redis4 安装redis5 拷 ...

  6. 指导手册01:安装Hadoop

    指导手册01:安装Hadoop  Part 1:安装及配置虚拟机 1.安装Linux. (1)打开VMvirtualBox (2) 控制->新建虚拟机,输入虚拟机名称“marst+学号” 类型: ...

  7. [Redis_1] Redis 介绍 && 安装

    0. 说明 Redis 介绍 && 安装 1. Redis 介绍 2. Redis 安装(Windows 10) [2.1 解压 redis-2.2.2-win32-win64.rar ...

  8. IDEA(2018.01)安装和破解

    IDEA(2018.01)安装和破解 1.下载IDE https://www.jetbrains.com/idea/download/#section=windows 选择Ultimate版本 2.下 ...

  9. Rancher介绍安装以及对docker的管理

    原文:Rancher介绍安装以及对docker的管理 一.简介 Rancher是一个开源的企业级全栈化容器部署及管理平台.Rancher为容器提供一揽子基础架构服务:CNI兼容的网络服务.存储服务.主 ...

随机推荐

  1. Found duplicate classes/resources

    很可能是多个三方依赖重复了,依赖个插件,这个插件能查找出依赖关系, duplicate-finder-maven-plugin 使用命令显示 mvn dependency:tree [INFO] \- ...

  2. SRCNN 卷积神经网络

    2019-05-19 从GitHub下载了代码(这里) 代码量虽然不多,但是第一次学,花了时间还是挺多的.根据代码有跑出结果(基本没有改),但是对于数据集的处理还是看的很懵逼,主要是作者的实现都是用类 ...

  3. CSS-W3School:CSS table-layout 属性

    ylbtech-CSS-W3School:CSS table-layout 属性 1.返回顶部 1. CSS table-layout 属性 CSS 参考手册 实例 设置表格布局算法: table { ...

  4. sql进阶练习题

    student SNO    SNAME    SAGE    SSEX01    赵雷    1990-01-01 00:00:00    男02    钱电    1990-12-21 00:00 ...

  5. oracle ogg 单实例单向简单搭建测试(oracle-oracle)

    昨天突然接到消息说有一个线上的ogg出现了问题,看是否能修复,由于ogg以前玩的少,所以就加急搞了个测试环境,练习了一把 环境 db1,db2(单实例)ip: 1*,1*sid: orcl,ogg1o ...

  6. Scala的to和until

    object test03 { def main(args: Array[String]): Unit = { //to 每次迭代为1 val to1= to print("to1" ...

  7. 【ABAP系列】SAP ABAP 控制ALV单元格编辑后获取新的数值

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP 控制ALV单元 ...

  8. Pager

    jQuery var Pager = function (ops) { this._ops = { count: ops.count || 0, selectedIndex: ops.selected ...

  9. ubuntu 环境配置

    安装包准备 下载 410以上显卡驱动 文件名: NVIDIA-Linux-x86_64-410.66.run 下载 cuda 10.0 选择 CUDA Toolkit 10.0 (Sept 2018) ...

  10. 用WebService实现对数据库进行操作(添加+删除+修改)(转)

    转自:http://blog.csdn.net/beyondqd/article/details/6703169 表为User,字段有 编号: int id,用户名:string UserName,密 ...