一、NoSQL介绍

1、什么是NoSQL

  NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL"。

  NoSQL,指的是非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。

  NoSQL用于超大规模数据的存储。(例如谷歌或Facebook每天为他们的用户收集万亿比特的数据)。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。

2、为什么使用NoSQL ?

  今天我们可以通过第三方平台(如:Google,Facebook等)可以很容易的访问和抓取数据。用户的个人信息,社交网络,地理位置,用户生成的数据和用户操作日志已经成倍的增加。我们如果要对这些用户数据进行挖掘,那SQL数据库已经不适合这些应用了, NoSQL 数据库的发展却能很好的处理这些大的数据。

3、NoSQL的优点/缺点

优点:

  • - 高可扩展性
  • - 分布式计算
  • - 低成本
  • - 架构的灵活性,半结构化数据
  • - 没有复杂的关系

缺点:

  • - 没有标准化
  • - 有限的查询功能(到目前为止)
  • - 最终一致是不直观的程序

4、NoSQL 数据库分类

二、MongoDB介绍

  • MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。
  • 在高负载的情况下,添加更多的节点,可以保证服务器性能。
  • MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。
  • MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。

主要特点

  • MongoDB 是一个面向文档存储的数据库,操作起来比较简单和容易。
  • 你可以在MongoDB记录中设置任何属性的索引 (如:FirstName="Sameer",Address="8 Gandhi Road")来实现更快的排序。
  • 你可以通过本地或者网络创建数据镜像,这使得MongoDB有更强的扩展性。
  • 如果负载的增加(需要更多的存储空间和更强的处理能力) ,它可以分布在计算机网络中的其他节点上这就是所谓的分片。
  • Mongo支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。
  • MongoDb 使用update()命令可以实现替换完成的文档(数据)或者一些指定的数据字段 。
  • Mongodb中的Map/reduce主要是用来对数据进行批量处理和聚合操作。
  • Map和Reduce。Map函数调用emit(key,value)遍历集合中所有的记录,将key与value传给Reduce函数进行处理。
  • Map函数和Reduce函数是使用Javascript编写的,并可以通过db.runCommand或mapreduce命令来执行MapReduce操作。
  • GridFS是MongoDB中的一个内置功能,可以用于存放大量小文件。
  • MongoDB允许在服务端执行脚本,可以用Javascript编写某个函数,直接在服务端执行,也可以把函数的定义存储在服务端,下次直接调用即可。
  • MongoDB支持各种编程语言:RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。
  • MongoDB安装简单。

三、MongoDB下载安装(ubuntu系统)

MongoDB 官网地址:https://www.mongodb.com/

MongoDB 官方英文文档:https://docs.mongodb.com/manual/

MongoDB 各平台下载地址:https://www.mongodb.com/download-center#community

MongoDB的下载安装,分为windows/mac/linux不同的平台,但是操作大同小异,这里我已linux平台下给大家演示

1、下载好了之后,进入到下载的目录里面解压

tar -zxvf mongodb-linux-x86_64-ubuntu1604-4.0.10.tgz

2、在系统文件夹/usr/local里面新建一个文件夹mongodb,将解压好的MongoDB文件夹移动到系统的/usr/local/mongodb里面,也可以不用命令,直接拖拽一样,只不过usr是系统文件夹,需要root用户才能操作,所以使用sudo

houlei@ubuntu:~/Downloads$ sudo mv mongodb-linux-x86_64-ubuntu1604-4.0. /usr/local/mongodb

3、MongoDB 的可执行文件位于 bin 目录下,所以可以将其添加到 PATH 路径中:

 export PATH=/usr/local/mongodb/bin:$PATH

4、安装MongoDB

houlei@ubuntu:/usr/local/mongodb/bin$ sudo apt install mongodb

四、MongoDB后台管理shell

如果你需要进入MongoDB后台管理,你需要先打开mongodb装目录的下的bin目录,然后执行mongo命令文件。

MongoDB Shell是MongoDB自带的交互式Javascript shell,用来对MongoDB进行操作和管理的交互式环境。

当你进入mongoDB后台后,它默认会链接到 test 文档(数据库):

houlei@ubuntu:/usr/local/mongodb/bin$ ./mongo

做一个简单的插入和查询的测试

> db.hero.insert({h_name:"李白"})   # 插入
WriteResult({ "nInserted" : })
> db.hero.find() # 查询
{ "_id" : ObjectId("5d28a0aad9b981703296bede"), "h_name" : "李白" }

五、mongoDB创建用户和删除用户

1、创建用户

db.createUser
(
{
user:<name_string>, #字符串 pwd:<password_string>, #字符串 roles:[{role:<role_name>,db:<db_name>}] #数组+对象 }
)

user文档字段介绍:

  • user字段,为新用户的名字;
  • pwd字段,用户的密码;
  • cusomData字段,为任意内容,例如可以为用户全名介绍;
  • roles字段,指定用户的角色,可以用一个空数组给新用户设定空角色;
  • 在roles字段,可以指定内置角色和用户定义的角色。
> db.createUser({user:"Se7eN_HOU",pwd:"",roles:[{role:"readWrite",db:"Hero"}]})
Successfully added user: {
"user" : "Se7eN_HOU",
"roles" : [
{
"role" : "readWrite",
"db" : "Hero"
}
]
}
>
houlei@ubuntu:~$ mongo Hero -u "Se7eN_HOU" -p ""

2、删除用户

  db.dropUser(<user_name>)    删除某个用户,接受字符串参数

db.dropUser("Se7eN_HOU")

  db.dropAllUser()             删除当前库的所有用户

六,基于角色的访问控制(Role-Based Access Control)

角色是授予User在指定资源上执行指定操作的权限,MongoDB官方手册对角色的定义是:

A role grants privileges to perform the specified actions on resource.

MongoDB为了方便管理员管理权限,在DB级别上预先定义了内置角色;如果用户需要对权限进行更为细致的管理,MongoDB允许用户创建自定义的角色,能够在集合级别上控制User能够执行的操作。
MongoDB使用角色(Role)授予User访问资源的权限,Role决定User能够访问的数据库资源和执行的操作。一个User能够被授予一个或多个Role,如果User没有被授予Role,那么就没有访问MongoDB系统的权限。

A user is granted one or more roles that determine the user’s access to database resources and operations. Outside of role assignments, the user has no access to the system.

1,内置角色(Built-In Roles)

内置角色是MongoDB预定义的角色,操作的资源是在DB级别上。MongoDB拥有一个SuperUser的角色:root,拥有最大权限,能够在系统的所有资源上执行任意操作。

数据库用户角色(Database User Roles):

  • read:授予User只读数据的权限
  • readWrite:授予User读写数据的权限

数据库管理角色(Database Administration Roles):

  • dbAdmin:在当前dB中执行管理操作
  • dbOwner:在当前DB中执行任意操作
  • userAdmin:在当前DB中管理User

备份和还原角色(Backup and Restoration Roles):

  • backup
  • restore

跨库角色(All-Database Roles):

  • readAnyDatabase:授予在所有数据库上读取数据的权限
  • readWriteAnyDatabase:授予在所有数据库上读写数据的权限
  • userAdminAnyDatabase:授予在所有数据库上管理User的权限
  • dbAdminAnyDatabase:授予管理所有数据库的权限

集群管理角色(Cluster Administration Roles):

    • clusterAdmin:授予管理集群的最高权限
    • clusterManager:授予管理和监控集群的权限,A user with this role can access the config and local databases, which are used in sharding and replication, respectively.
    • clusterMonitor:授予监控集群的权限,对监控工具具有readonly的权限
    • hostManager:管理Server

七、mongoDB的删除

1、ubuntu环境下下载mongoDB

1.1、卸载只是 mongodb,这将删除只是 mongodb 包本身。
sudo apt-get remove mongodb
1.2、卸载 mongodb 和它的依赖项。这将删除 mongodb 软件包和不再需要的任何其依赖包
sudo apt-get remove --auto-remove mongodb
1.3、清除您的配置数据

如果你还想要删除您的本地/config 文件为 mongodb,那么这将工作。

sudo apt-get purge mongodb

八、mongoDB安装及连接遇到的问题及解决方案

  说明:不同平台下mongoDB同样的问题解决方案不一样,应为windows、linux、mac不同平台下的命令是有差异的,所以大家在网上搜索mongoDB安装和链接的问题的时候最好说明是什么平台下的问题,不然你使用的mac系统,解决搜索出来的是linux下的解决方案也不一样能解决问题。

1、Failed to start mongod.service: Unit mongod.service not found.(ubuntu)

  1.1、也就是说mongod.service文件没有找到,需要我们手动创建一个

[Unit]
Description=High-performance, schema-free document-oriented database
After=network.target
Documentation=https://docs.mongodb.org/manual [Service]
User=mongodb
Group=mongodb
ExecStart=/usr/bin/mongod --quiet --config /etc/mongod.conf [Install]
WantedBy=multi-user.target

  1.2、然后执行 (激活mongod service)

sudo systemctl enable mongod

  1.3、启动、重启和关闭命令

sudo service mongod start
sudo service mongod restart
sudo service mongod stop

2、Error: couldn't connect to server 127.0.0.1:27017 src/mongo/shell/mongo.js

  2.1、先看服务启动没有,如果没有启动服务先启动服务:sudo service mongod start

  2.2如果服务已经启动了,那有可能是上次不正常关闭mongo,导致存放数据的文件被占用了,被锁住了

houlei@ubuntu:~$ /usr/local/mongodb/bin/mongod --repair  #/usr/local/mongodb是mongo的安装目录

  或者

houlei@ubuntu:~$ rm -f /usr/local/data/db/mongod.lock  #/usr/locak/data/db 是mongo的数据库文件路径

  2.3、如果上一步解决不了,那么就是路径设置有问题,通过重新对路径的设置解决此问题

houlei@ubuntu:~$ /usr/local/mongodb/bin/mongod --dbpath=/usr/local/data/db

3、找不到mongod或者mong命令(mac系统)

houleideMacPro:~ Se7eN_HOU$ mongod

-bash: mongod: command not found

解决方案:出现这个问题多数是应为,mongod或者mongo的路径不做PATH里面

export MONGO_PATH=/usr/local/mongodb
export PATH=$PATH:$MONGO_PATH/bin

python数据库-MongoDB的安装(53)的更多相关文章

  1. python操作三大主流数据库(7)python操作mongodb数据库①mongodb的安装和简单使用

    python操作mongodb数据库①mongodb的安装和简单使用 参考文档:中文版:http://www.mongoing.com/docs/crud.html英文版:https://docs.m ...

  2. MondoDB介绍 Python与MongoDB用法,安装PyMongo

    http://blog.csdn.net/t_ells/article/details/50265889 MongoDB最新版本下载在官网的DownLoad菜单下:http://www.mongodb ...

  3. 数据库——MongoDB的安装

    1.进入到 /usr/local/ 目录: 1 cd /usr/local 2.安装必要插件 yum -y install gcc make gcc-c++ openssl-devel wget yu ...

  4. python数据库-MongoDB的基本使用(54)

    一.MongoDB 创建数据库 语法:MongoDB 创建数据库的语法格式如下: use DATABASE_NAME 如果数据库不存在,则创建数据库,否则切换到指定数据库. > use Hero ...

  5. python数据库-mongoDB的高级查询操作(55)

    一.MongoDB索引 为什么使用索引? 假设有一本书,你想看第六章第六节讲的是什么,你会怎么做,一般人肯定去看目录,找到这一节对应的页数,然后翻到这一页.这就是目录索引,帮助读者快速找到想要的章节. ...

  6. Python 操作 mongodb 数据库

    原文地址:https://serholiu.com/python-mongodb 这几天在学习Python Web开发,于 是做准备做一个博客来练练手,当然,只是练手的,博客界有WordPress这样 ...

  7. python 连 mongodb

    这几天在学习Python Web开发,于是做准备做一个博客来练练手,当然,只是练手的,博客界有WordPress这样的好玩意儿,何必还自己造车呢?决定使用Tornado这个框架,然后数据库方面决定顺便 ...

  8. MongoDB学习笔记:Python 操作MongoDB

    MongoDB学习笔记:Python 操作MongoDB   Pymongo 安装 安装pymongopip install pymongoPyMongo是驱动程序,使python程序能够使用Mong ...

  9. python操作三大主流数据库(10)python操作mongodb数据库④mongodb新闻项目实战

    python操作mongodb数据库④mongodb新闻项目实战 参考文档:http://flask-mongoengine.readthedocs.io/en/latest/ 目录: [root@n ...

随机推荐

  1. Qt浮动按钮的实现(使用窗口背景透明、实现只显示浮动按钮的目的)

    Qt浮动按钮的实现 效果如下: 图3 估计很多做Qt有一定经验的朋友会觉得这个效果不难,但是这是一个需求奇葩的实际业务中做出的效果.笔者会想讲下客户的需求和整体框架的矛盾. 整个项目主要是由Qt搭建的 ...

  2. InnoSetup提升系统管理员权限(通过破解方式修改?)

    PrivilegesRequired=admin 1 2 3 4 5   找到```INNO```安装目录下的```SetupLdr.e32```文件(其实就是一个exe程序),将程序中的```Man ...

  3. 微信小程序把玩(三十三)Record API

    原文:微信小程序把玩(三十三)Record API 其实这个API也挺奇葩的,录音结束后success不走,complete不走,fail也不走, 不知道是不是因为电脑测试的原因,只能等公测或者等他们 ...

  4. Android零基础入门第25节:最简单最常用的LinearLayout线性布局

    原文:Android零基础入门第25节:最简单最常用的LinearLayout线性布局 良好的布局设计对于UI界面至关重要,在前面也简单介绍过,目前Android中的布局主要有6种,创建的布局文件默认 ...

  5. 【Windows10 IoT开发系列】配置篇

    原文:[Windows10 IoT开发系列]配置篇 Windows10 For IoT是Windows 10家族的一个新星,其针对不同平台拥有不同的版本.而其最重要的一个版本是运行在Raspberry ...

  6. 为新项目添彩的 10+ 超有用 JavaScript 库

    快速使用Romanysoft LAB的技术实现 HTML 开发Mac OS App,并销售到苹果应用商店中.   <HTML开发Mac OS App 视频教程> 土豆网同步更新:http: ...

  7. <iOS小技巧>UIview指定设置控件圆角

      一.用法:   众所周知,设置控件的圆角使用layer.cornerRadius属性即可,但是这样设置成的结果是4个边角都是圆角类型.   利用班赛尔曲线画角:   //利用班赛尔曲线画角 UIB ...

  8. c++用参数返回堆上的空间

    <高质量c++和c编程>7.4 指针参数是如何传递内存的一节中写道 void GetMemory(char *p, int num) { p = (char *)malloc(sizeof ...

  9. 八大排序算法 JAVA实现 亲自测试 可用!

    今天很高兴 终于系统的实现了八大排序算法!不说了 直接上代码 !代码都是自己敲的, 亲测可用没有问题! 另:说一下什么是八大排序算法: 插入排序 希尔排序 选择排序 堆排序 冒泡排序 快速排序 归并排 ...

  10. maven项目或者SpringBoot项目启动时报错在本地仓库中找不到jar包的解决办法

    经常遇到项目检出来后是导入开发工具eclipse中pom文件出错问题,项目启动时遇到了一些列的jar包找不到的问题,所以换个开发平台到IDEA以为会好些,结果同样的问题还是会出现的,为了找到具体的解决 ...