什么是NoSQL?
NoSQL,泛指非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。
简单说,通常我们使用的SQLite3、MySQL都是关系型数据库,使用一种通用的SQL脚本语言来操作,NoSQL数据则没有这种SQL语言,其内部保存的是一种JSON字符串。
它是一款开源、跨平台、分布式,具有大数据处理能力的文档数据库。由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上更简单。
官方下载地址[1]
中文文档[2]
打开官网,根据自己电脑系统情况,选择合适的版本下载
下载完成后,通过下一步进行安装,需注意,安装过程中不要选中 install mongoDB compass
,这是它自带的图形界面程序,可能话导致卡住,耗费更多时间,不建议安装,后面会介绍更好的一款图形界面程序替代。
为了在命令行中使用它,安装完成后还需要配置一下环境变量,将mongodb\bin
目录加入到系统的PATH环境变量中。
将MongoDB设置成Windows服务,每次开机MongoDB就能自动启动
systemLog:
destination: file
path: E:\MongDb\log\mongod.log
storage:
dbPath: E:\MongDb\data\db
mongod --config C:\mongodb\mongod.cfg --install --serviceName "MongoDB"
net start MongoDB
net stop MongoDB
mongod --remove
首先需要确认db
和log
文件夹是否都已创建,其次在Linux系统上,还需要确认是否拥有文件夹的读写权限
下载安装Robo 3T [3]该工具是跨平台的MongoDB可视化工具
在这里插入图片描述
在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()
[1]
官方下载地址: https://www.mongodb.com/download-center#community
[2]
中文文档: http://www.runoob.com/mongodb/mongodb-tutorial.html
[3]
Robo 3T : https://robomongo.org/