最后更新时间2018/10/16 13:47
'文章为原创转载请注明来源,谢谢'
---------------------------------------------
"目前对Mongodb了解的比较少还在持续更新中"
由于自己最近在学习Scrapy框架的东西,考虑到要用什么数据库进行储存,然后在网上翻了大量的文章去选择合适的数据库,翻来翻去都说Mongodb比较好,然后这次就尝试一下Mongodb。
这篇文章将分为两个部分,1.Mongodb的优点,2.我在学习过程中遇到的坑
1.我们先来说一说Mongodb为什么好?好在哪里
假如说我们对同一个网站进行大规模的爬取,或者是说对这个网站进行经常(24h*365day)性的爬取
通过Navicat来设计MySQL表设计好了就像一个大型的Excel
因为我们爬取网页的数据之前要通过MySQL来设计自己的数据库结构值的类型
网页上的数据字段会经常更新,或者是缺失,这对结构化的MySQL库数据库来说是有点不利的,因为你要经常去调整它(增加或删除它的字段)
下面是我摘抄一句别人说的话
我的数据分析项目要处理的数据集,但它的记录有一个很大的问题:许多字段缺失,很多字段要么格式不一致或者过时了。换句话说,我的数据集非常脏。
接下来我们就要使用到Mongodb的数据库
它写进数据库的语法就像json一样,不存在着你预先去设计数据库的字段或者是它的和数据的类型
- 不用去预先设置数据库的字段和类型
- 比如说在爬取数据的时候碰到一个不知道的数据类型或者是说一个新的字段的时候,它会自动拓展到数据库类型里
附上图
举个例子,我们现在有三列的数据,当我们想拓展到第四列的数据的时候,就不需要去数据库表里面重新去写预先设计字段
手上有3列的数据,By.Mongodb Compass手上有4列的数据,By.Mongodb Compass
可视化工具来自官方的Mongodb Compass
我们可以看到图2的几种变化就是
第一个就是我在price字段里面设置了一个data形式的数据
(
也就是说添加的数据是可以随意变化的,没有MySQL限制的那么死,
如果说我们写入MySQL的数据与当初设定的数据类型不符,
到时候自己得爬虫就会出现莫名其妙的报错,都不知道从哪儿去找
)
第二个就是我增加了一个新的一列"你给我哩GiaoGiao"
如果某一列里面没有任何数据,那么这一列也就会自动消失,假设说我删了图2里面的最后一行,那么他最后一列也就会消失,恢复到图1的状态
下图我们可以看到不按顺序和不按类型的数据插入数据成功了
另外说一点,箭头标注的它生成的id是全局唯一的
全局唯一ID2.接下来说我在Mongodb上遇到的坑
由于我用的是最新的4.0版本,我最开始以为我遇到的各种问题都是旧版本里面的文章找不到的
比如
我最开始使用Navicat这个软件,去连上Mongodb,一直都是显示连接成功,但就是死活不显示数据表
然后去谷歌和百度上去搜这些文章,有的人说数据库的引擎不对改一下,试过了,什么安装环境不对,我也试过了,什么配置环境不对,我也试过,反正七七八八的问题我都试过了之后!!!
我就怀疑是不是Navicat的这个软件有问题,随后我转战到了Studio3T
-
对比三款Mongodb的可视化工具
当我通过Studio3T的时候,去连接数据库,它就弹出了,我数据库里面所有的表。
然后Navicat呢,也就正常显示了(但是还是显示不全)
中间的一款是Mongodb官方可视化工具
最后总结一下,
我最开始学习的时候,以为它要像MySQL一样预先去设计数据库表的结构,然而我并没有找到在哪里去设计数据库表的结构,这是一个很颠覆常识性的东西
并不要对它的数据表进行先任何定义,也就是说可以随意添加,可以随意拓展,是一个高度可拓展的一款数据库,写入数据就像json的语法一样
所以说开始把数据表创建好,直接写入数据就可以了
{
"title": "苹果",
"price": "8",
"data": "甜"
}
这就是我目前的研究结果。
下一步我将去学习如何设置Mongodb数据库的密码和端口号,然后并用Python写入数据
Mongodb4.0启动文档Ubuntu
'Ubuntu每次开机都要,启动Mongodb服务'
sudo service mongod restart
网友评论