文档数据库 MongoDB

概述

什么是NoSQL?

NoSQL,泛指非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。

简单说,通常我们使用的SQLite3、MySQL都是关系型数据库,使用一种通用的SQL脚本语言来操作,NoSQL数据则没有这种SQL语言,其内部保存的是一种JSON字符串。

MongoDB

它是一款开源、跨平台、分布式,具有大数据处理能力的文档数据库。由C++语言编写,主要解决的是海量数据的访问效率问题,为WEB应用提供可扩展的高性能数据存储解决方案。当数据量达到50GB以上的时候,MongoDB的数据库访问速度是MySQL的10倍以上。

MongoDB在启动后会将数据库中的数据以文件映射的方式加载到内存中。如果内存资源相当丰富的话,这将极大地提高数据库的查询速度,毕竟内存的I/O效率比磁盘高得多

通常来说,Python爬虫更适合使用MongoDB数据库,爬取的Json数据可以直接存入MongoDB,操作简单,学习成本低,上手快,是Python开发者必备技能。

概念类比

MySQL MongoDB
Table (表) Collection (集合)
Row (行) Document (文档)
Column(字段) Field (键值对)

环境准备

MongoDB是跨平台的,我们可以先在Windows系统上学习和使用,它在Linux环境上的配置会比Windows上更简单。

Windows 平台

官方下载地址

中文文档

打开官网,根据自己电脑系统情况,选择合适的版本下载
在这里插入图片描述

下载完成后,通过下一步进行安装,需注意,安装过程中不要选中 install mongoDB compass,这是它自带的图形界面程序,可能话导致卡住,耗费更多时间,不建议安装,后面会介绍更好的一款图形界面程序替代。
在这里插入图片描述
为了在命令行中使用它,安装完成后还需要配置一下环境变量,将mongodb\bin目录加入到系统的PATH环境变量中。

使用MongoDB

  • 创建数据库文件夹
    存放位置如d:/mongodb/data/db

  • 启动MongoDB

    mongod --dbpath D:\mongodb\data\db
    
  • 检测启动
    浏览器访问 http://localhost:27017

  • 连接MongoDB
    输入命令

    mongo
    

配置 MongoDB 服务

将MongoDB设置成Windows服务,每次开机MongoDB就能自动启动

  • 创建一个配置文件位于 C:\mongodb\mongod.cfg,可指定一个目录
systemLog:
    destination: file
    path: E:\MongDb\log\mongod.log
storage:
    dbPath: E:\MongDb\data\db
  • 管理员身份打开cmd命令行
mongod --config C:\mongodb\mongod.cfg --install --serviceName "MongoDB"
  • 启动MongoDB服务
net start MongoDB
  • 关闭MongoDB服务
net stop MongoDB
  • 移除 MongoDB 服务
mongod --remove

报错处理

首先需要确认dblog文件夹是否都已创建,其次在Linux系统上,还需要确认是否拥有文件夹的读写权限

图形化工具

下载安装Robo 3T
该工具是跨平台的MongoDB可视化工具

在这里插入图片描述

Ubuntu平台

在Ubuntu下安装,只需敲一行命令即可

sudo apt-get install mongodb

简单示例

安装驱动模块pymongo

python -m pip install pymongo

示例

import pymongo

# 连接数据库
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["mytest"]

# 读取 MongoDB 中的所有数据库
# dblist = myclient.list_database_names()
# 读取 MongoDB 数据库中的所有集合
# collist = mydb.list_collection_names()

# 创建名为"myset"的集合
mycol = mydb["myset"]

# 创建字典
mydict = {
	"name": "RUNOOB", 
	"alexa": "10000", 
	"url": "https://www.runoob.com"
}

# 插入数据
mycol.insert_one(mydict)

# 关闭连接
myclient .close()

欢迎关注我的公众号:编程之路从0到1

编程之路从0到1

猜你喜欢

转载自blog.csdn.net/yingshukun/article/details/100322757