• MongoDB 基础了解(一)


    目录

    一、NoSQL数据库介绍

    1.什么是NoSQL

    2.为什么使用NoSQL

    3.NoSQL vs RDBMS

    4.常见的数据库排行

    5.NoSQL 数据库四大家族

    6.NoSQL 的优缺点

     二、MongoDB 介绍

    1.MongoDB简介

    2.MongoDB 支持的语言

     3.MongoDB 与关系型数据库术语对比

     4.MongoDB 的特定

    5.应用场景

     三、安装 MongoDB

    1.下载 MongoDB

    2.上传到Linux系统并解压

     3.查看安装目录

    4.创建数据/日志目录

    5.启动 mongodb

    6.进入 mongodb


    一、NoSQL数据库介绍

    1.什么是NoSQL

            NoSOL(Not Only SOL),意思是”不仅仅是SQL”,指的是非关系型数据库,是对不同于传统的关系型数据库的数据库管理系统的统称。

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

    2.为什么使用NoSQL

            随着互联网的飞速发展与普及,网民上网冲浪时所产生数据也逐日增多,从GB到TB到PB。这些数据有很大一部分都是由关系型数据库管理系统(RDBMS)来进行处理的。

            由于关系型数据库的范式约束、事务特性、磁盘IO等特点,若服务器便用关系型数据库,当有大量数据产生时,传统的关系型数据库已经无法满足快速查询与插入数据的需求。NoSQL的出现解决了这一危机。它通过降低数据的安全性,减少对事务的支持,减少对复杂查询的支持,获取性能上的提升。但是,在某些特定场景下NoSQL任然不是最佳人选,比如一些绝对要有事务与安全指标的场景。

             NoSQL是一项全新的数据库革命性运动,早期就有人提出,发展至2009年趋势越发高涨。NoSQL的拥护者们提倡运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入。

    3.NoSQL vs RDBMS

    4.常见的数据库排行

    DB-engines 排行榜

    5.NoSQL 数据库四大家族

    1.键值(Key-Value)存储

    特点:键值数据库就像传统语言中使用的哈希表。通过Key添加、查询或者删除数据。

    优点:查询速度快。

    缺点:数据无结构化,通常只被当作字符串或者二进制数据存储。

    应用场景:内容缓存、用户信息比如会话、配置信息、购物车等,主要用于处理大量数据的高访问负载。

    NoSQL代表:Redis、Memcached...

    2.文档(Document-Oriented)存储

    特点:文档数据库将数据以文档的形式储存,类似JSON,是一系列数据项的集合。每个数据项都有一个名称与对应的值,值既可以是简单的数据类型,如字符串、数字和日期等;也可以是复杂的类型,如有序列表和关联对象。

    优点:数据结构要求不严格,表结构可变,不需要像关系型数据库一样需要预先定义表结构。

    缺点:查询性能不高,缺乏统一的查询语法。

    应用场景:日志、Web应用等。

    NoSQL代表:MongoDB、CouchDB...

    3.列(Wide Column Store/Column-Family)存储

    特点:列存储数据库将数据储存在列族(Column Family)中,将多个列聚合成一个列族,键仍然存在,但是它们的特点是指 向了多个列。举个例子,如果我们有一个Person类,我们通常会一起查询他们的姓名和年龄而不是薪资。这种情况下,姓名和年 龄就会被放入一个列族中,而薪资则在另一个列族中。

    优点:列存储查找速度快,可扩展性强,更容易进行分布式扩展,适用于分布式的文件系统,应对分布式存储的海量数据。

    缺点:查询性能不高,缺乏统一的查询语法。

    应用场景:日志、分布式的文件系统(对象存储)、推荐画像、时空数据、消息/订单等。

    NoSQL代表:Cassandra、HBase...

    4.图形(Graph-Oriented)存储

    特点:图形数据库允许我们将数据以图的方式储存。

    优点:图形相关算法。比如最短路径寻址,N度关系查找等。

    缺点:很多时候需要对整个图做计算才能得出需要的信息,分布式的集群方案不好做,处理超级节点乏力,没有分片存储机 制,国内社区不活跃。

    应用场景:社交网络,推荐系统等。专注于构建关系图谱。

    NosQL代表:Neo4j、Infinite Graph...

    6.NoSQL 的优缺点

    1.优点

    • 高可扩展性
    • 没有标准化
    • 分布式计算
    • 有限的查询功能(到目前为止)
    • 低成本

    2.缺点

    • 最终一致是不直观的程序
    • 架构的灵活性,半结构化数据
    • 没有复杂的关系

    3.总结

    NoSQL数据库在以下几种情况下比较适用:

    • 数据模型比较简单
    • 需要灵活性更强的IT系统
    • 对数据库性能要求较高
    • 不需要高度的数据一致性
    • 对于给定的Key,比较容易映射复杂值的环境

     二、MongoDB 介绍

    1.MongoDB简介

            Mongo并非芒果(Mango)的意思,而是源于Humongous(巨大的;庞大的)一词。

            MongoDB是一个基于分布式文件存储的NoSQL数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。

            MongoDB是一个介于关系型数据库和非关系型数据库之间的产品,是非关系型数据库当中功能最丰富,最像关系数据库的。

            MongoDB使用BSON(Binary JSON)对象来存储,与JSON格式的键值对(key/value)类似,字段值可以包含其他文档,数组 及文档数组。支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系型数据库单表查询的绝大 部分功能,而且还支持对数据建立索引。

    2.MongoDB 支持的语言

     3.MongoDB 与关系型数据库术语对比

            mongodb中的库就类似于传统关系型数据库中库的概念,用来通过不同库隔离不同应用数据。 mongodb中可以建立多个数据库。每一个库都有自己的集合和权限,不同的数据库也放置 在不同的文件中。默认的数据库为”test”,数据库存储在启动指定的data目录中。

    • 集合

            集合就是 MongoDB 文档组,类似于 RDBMS (关系数据库管理系统:Relational Database Management System)中的表的概念。 集合存在于数据库中,一个库中可以创建多个集合。每个集合没有固定的结构,这意味着你 在对集合可以插入不同格式和类型的数据,但通常情况下我们插入集合的数据都会有一定的 关联性。

    • 文档

           集合中一条条记录,是一组键值(key-value)对(即BSON)。MongoDB的文档不需要设置相同的字段,并且相同的字段不需要相同的数据类型,这与关系型数据库有很大的区别,也是MongoDB非常突出的特点。

     4.MongoDB 的特定

    • 面向集合存储,易存储对象类型的数据
    • 支持查询,以及动态查询
    • 支持RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言
    • 文件存储格式为BSON(一种JSON的扩展)
    • 支持复制和故障恢复和分片

    5.应用场景

    • 游戏应用:使用云数据库MongoDB作为游戏服务器的数据库存储用户信息。用户的游戏 装备、积分等直接以内嵌文档的形式存储,方便进行查询与更新。
    • 物流应用:使用云数据库MongoDB存储订单信息,订单状态在运送过程中会不断更新, 以云数据库MongoDB内嵌数组的形式来存储,一次查询就能将订单所有的变更读取出 来,方便快捷且一目了然。
    • 社交应用:使用云数据库MongoDB存储用户信息以及用户发表的朋友圈信息,通过地理位置索引实现附近的人、地点等功能。并且,云数据库MongoDB非常适合用来存储聊天 记录,因为它提供了非常丰富的查询,并在写入和读取方面都相对较快。
    • 视频直播:使用云数据库MongoDB存储用户信息、礼物信息等。
    • 大数据应用:使用云数据库MongoDB作为大数据的云存储系统,随时进行数据提取分析,掌握行业动态。

     三、安装 MongoDB

    本次在CentOS 7 中安装 MongoDB

    1.下载 MongoDB

    MongoDB 下载官网

    2.上传到Linux系统并解压

    1. [root@sql ~]# tar -zxvf mongodb-linux-x86_64-rhel70-5.0.10.tgz
    2. [root@sql ~]# mv mongodb-linux-x86_64-rhel70-5.0.10 /usr/local/mongodb

     3.查看安装目录

    1. [root@sql ~]# cd /usr/local/mongodb/
    2. [root@sql mongodb]# ls
    3. bin LICENSE-Community.txt MPL-2 README THIRD-PARTY-NOTICES
    4. [root@sql mongodb]# ls bin/
    5. install_compass mongo mongod mongos
    6. # bin 目录用来存放启动 MongoDB 的服务以及客户端链接的脚本文件等

    4.创建数据/日志目录

    创建用于存放数据和日志的文件夹:

    1. #创建存放数据的目录
    2. mkdir -p /usr/local/mongodb/data/db
    3. #创建存放日志的目录
    4. mkdir -p /usr/local/mongodb/logs
    5. #创建日志记录文件
    6. touch /usr/local/mongodb/logs/mongodb.log

    5.启动 mongodb

    • 前台启动

    MongoDB的默认启动方式为前台启动。所谓的前台启动就是MongoDB启动进程后会占用当前的终端窗口。

    1. [root@sql ~]# cd /usr/local/mongodb/
    2. [root@sql mongodb]# bin/mongod --dbpath /usr/local/mongodb/data/db/ --logpath /usr/local/mongodb/logs/mongodb.log --logappend --port 27017 --bind_ip 0.0.0.0

    ---dbpath:指定数据文件存放目录

    --logpath:指定日志文件,注意是指定文件不是目录

    --logappend:便用追加的方式记录日志

    --port:指定端口,默认为27017

    --bind_ip:绑定服务IP,若绑定127.0.0.1,则只能本机访问,默认为本机地址

    • 后台启动

    所谓的后台启动就是以守护进程的方式启动MongoDB。命令中添加--fork 即可。

    [root@sql mongodb]# bin/mongod --dbpath /usr/local/mongodb/data/db/ --logpath /usr/local/mongodb/logs/mongodb.log --logappend --port 27017 --bind_ip 0.0.0.0 --fork

    通过命令启动的方式并不适合管理,毕竟每次输入命令都需要考虑各参数的配置。我们可以通过配置文件来配置启动参数,然后通过指定配置文件的方式启动服务,这样在管理MongoDB上就比较方便了。

    • 配置文件
    1. [root@sql mongodb]# vim bin/mongodb.conf
    2. #数据文件存放目录
    3. dbpath = /usr/local/mongodb/data/db
    4. #日志文件存放目录
    5. logpath = /usr/local/mongodb/logs/mongodb.log
    6. #以追加的方式记录日志
    7. logappend = true
    8. #端口默认为27017
    9. port = 27017
    10. #对访问IP地址不做限制,默认为本机地址
    11. bind_ip =0.0.0.0
    12. #以守护进程的方式启用,即在后台运行
    13. fork = true
    14. # 启动 mongodb
    15. [root@sql mongodb]# bin/mongod -f bin/mongodb.conf
    16. about to fork child process, waiting until server is ready for connections.
    17. forked process: 7842
    18. child process started successfully, parent exiting
    19. [root@sql mongodb]# ps -ef | grep mongodb
    20. root 7842 1 5 15:52 ? 00:00:01 bin/mongod -f bin/mongodb.conf
    21. root 7904 7227 0 15:52 pts/0 00:00:00 grep --color=auto mongodb
    22. # 结束进程
    23. [root@sql mongodb]# bin/mongod -f bin/mongodb.conf --shutdown
    24. killing process with pid: 7842

    6.进入 mongodb

    可以通过 bin 目录中的 mongo 来访问 MongoDB 服务器。

    1. [root@sql mongodb]# vim /etc/profile
    2. # 在最后面添加
    3. export MONGODB_HOME=/usr/local/mongodb
    4. export PATH=$PATH:$MONGODB_HOME/bin
    5. [root@sql mongodb]# source /etc/profile
    6. # 启动mongodb
    7. [root@sql ~]# mongod -f /usr/local/mongodb/bin/mongodb.conf
    8. # 进入mongodb
    9. [root@sql ~]# mongo
    10. # 设置mongodb服务开机自启
    11. [root@sql ~]# vim /etc/rc.local
    12. /usr/local/mongodb/bin/mongod -f /usr/local/mongodb/bin/mongodb.conf
    13. [root@sql ~]# chmod +x /etc/rc.d/rc.local

  • 相关阅读:
    stm32f4xx-外部中断
    02_SHELL编程之流程控制和循环语句
    网络安全(黑客)自学
    Grafana Prometheus 监控JVM进程
    音视频进阶教程|如何实现游戏中的实时语音
    推荐系统:架构设计
    使用cmd运行第一个java程序(含有查看文件后缀名方法)
    笔记记录--基于ccpd数据集利用Paddle OCR训练车牌检测模型
    什么程度才算精通 Linux?
    VScode 配置用户片段
  • 原文地址:https://blog.csdn.net/weixin_46560589/article/details/126246159