84669 personnes étudient
152542 personnes étudient
20005 personnes étudient
5487 personnes étudient
7821 personnes étudient
359900 personnes étudient
3350 personnes étudient
180660 personnes étudient
48569 personnes étudient
18603 personnes étudient
40936 personnes étudient
1549 personnes étudient
1183 personnes étudient
32909 personnes étudient
我们现在准备写一个爬虫抓取大量数据(预测后期可能会达到两百万到两千万记录的数量级),然后对这些数据进行一些数据分析(主要是各种聚合函数计算,生成统计图,以及排序计算排行榜,还有横向比较生成走势折线图),请问使用mysql作为存储抓取到的数据还是用mogondb存储呢?
我看这两个数据库都有提供一些聚合函数,但是综合从效率,可用性,安全性等方面上来说哪个比较快?
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
00w到2000w的数据量相对来说不是很大,可以考虑这2中自己比较熟悉那个就使用那个。但是基本上数据库达到千万级别都会有查询性能的问题,所以如果数据持续增长的话,可以考虑用mongodb。毕竟mongodb分片集群搭建起来比mysql集群简单多了。而且处理起来更灵活。
纠正一下拼写,应该是MongoDB。每种数据库都有其自己的优势和不足,适用的场合也不一样。既然我是站在MongoDB这边的,上面也有人提到了MySQL和HDFS,我就分析一下MongoDB比MySQL和HDFS在数据分析上的优势。题主不妨看看这些优势是不是你想要的,再根据自己项目的实际情况做决定。MySQL是老牌的RDBMS,具备RDBMS的常见特性,对ACID有完善的支持。其技术经过长时间的沉淀和应用考验,已经在一个比较稳定应用的阶段。RDBMS在实际应用中的对NoSQL的主要优势就是强事务。但一个OLAP的应用上,强事务没有太多用武之地,却阻碍了分布式支持。在充分发展的前提下,最终水平扩展会成为你选择MySQL的主要瓶颈。另外对于爬虫这样的应用,爬取的通常都是非结构化数据,这在关系模型的存储和查询上面都有很大的局限性。但也有一个可能性是你感兴趣的网站都是同样类型的网站,你只对网页上的特定内容有兴趣,这样可以把它们组织成结构化数据,从而在这方面MySQL仍然是可以胜任的。但就算这样,随着应用的发展将来在数据存储的灵活性上仍然会有所牺牲。所以对爬虫这样的应用,MySQL的主要问题是数据模型不够灵活和无法(或者说比较难)水平扩展。就上面主要的两个问题而言,HDFS其实都可以胜任。所以HDFS在爬虫这样的应用上面较MySQL是有优势的。同样MongoDB也很好地解决了这两个问题。那么MongoDB对比HDFS的优势在什么地方?很重要的一点来自于MongoDB可以像关系型数据库一样对文档中的任何一个字段建立二级索引,从而在分析过程中可能尽可能大地利用索引带来的性能优势。另外,HDFS提供的更像一个文件系统,而MongoDB提供的则是一个灵活的数据库技术,在MongoDB上可以轻易地实现地理位置分布,过期文档归档等操作。从生态系统上,HDFS的周边工具肯定要丰富一些,毕竟发展历史放在那里。而MongoDB目前主要支持的则有:
BI Connector:MongoDB对外提供PostgreSQL或MySQL接口以利用已有的BI工具
Spark Connector:MongoDB与Spark对接进行计算
回到你的问题,效率上面平心而论百万到千万级别不算大,无论使用哪个数据库,在正确使用的前提下性能差异不会有质上的区别。可用性问题上MongoDB的高可用可以达到秒级的错误恢复。MySQL也有相应的方案,只是运维上可能要复杂一些。安全性上面各家没有太大的差别。
你应该会选择Hadoop作为处理平台,这样子的话底层数据存储一般都是用MySQL的.mangodb+hadoop的组合做实时监控比较好,比如春晚直播时候的弹幕,因为mongodb支持毫秒级的数据查询,实时分析。hadoop一次写入多次取用,加上MySQL的话比较适合你这个项目。安全性其实都差不多。关键防火墙做好安全就ok了,毕竟你们的数据库是隔离的。所以我建议可以选择MySQL。
MySQL 在处理大量数据时会变得很捉急,相反 MongoDB 通过集群的话应该会好一些。
其实你完全可以不用数据库,对于爬虫而言这将有可能成为 IO 的瓶颈。
你可以尝试使用 Hadoop 的 HDFS。
00w到2000w的数据量相对来说不是很大,可以考虑这2中自己比较熟悉那个就使用那个。但是基本上数据库达到千万级别都会有查询性能的问题,所以如果数据持续增长的话,可以考虑用mongodb。毕竟mongodb分片集群搭建起来比mysql集群简单多了。而且处理起来更灵活。
纠正一下拼写,应该是MongoDB。
每种数据库都有其自己的优势和不足,适用的场合也不一样。既然我是站在MongoDB这边的,上面也有人提到了MySQL和HDFS,我就分析一下MongoDB比MySQL和HDFS在数据分析上的优势。题主不妨看看这些优势是不是你想要的,再根据自己项目的实际情况做决定。
MySQL是老牌的RDBMS,具备RDBMS的常见特性,对ACID有完善的支持。其技术经过长时间的沉淀和应用考验,已经在一个比较稳定应用的阶段。RDBMS在实际应用中的对NoSQL的主要优势就是强事务。但一个OLAP的应用上,强事务没有太多用武之地,却阻碍了分布式支持。在充分发展的前提下,最终水平扩展会成为你选择MySQL的主要瓶颈。另外对于爬虫这样的应用,爬取的通常都是非结构化数据,这在关系模型的存储和查询上面都有很大的局限性。但也有一个可能性是你感兴趣的网站都是同样类型的网站,你只对网页上的特定内容有兴趣,这样可以把它们组织成结构化数据,从而在这方面MySQL仍然是可以胜任的。但就算这样,随着应用的发展将来在数据存储的灵活性上仍然会有所牺牲。所以对爬虫这样的应用,MySQL的主要问题是数据模型不够灵活和无法(或者说比较难)水平扩展。
就上面主要的两个问题而言,HDFS其实都可以胜任。所以HDFS在爬虫这样的应用上面较MySQL是有优势的。同样MongoDB也很好地解决了这两个问题。那么MongoDB对比HDFS的优势在什么地方?很重要的一点来自于MongoDB可以像关系型数据库一样对文档中的任何一个字段建立二级索引,从而在分析过程中可能尽可能大地利用索引带来的性能优势。另外,HDFS提供的更像一个文件系统,而MongoDB提供的则是一个灵活的数据库技术,在MongoDB上可以轻易地实现地理位置分布,过期文档归档等操作。
从生态系统上,HDFS的周边工具肯定要丰富一些,毕竟发展历史放在那里。而MongoDB目前主要支持的则有:
BI Connector:MongoDB对外提供PostgreSQL或MySQL接口以利用已有的BI工具
Spark Connector:MongoDB与Spark对接进行计算
回到你的问题,效率上面平心而论百万到千万级别不算大,无论使用哪个数据库,在正确使用的前提下性能差异不会有质上的区别。可用性问题上MongoDB的高可用可以达到秒级的错误恢复。MySQL也有相应的方案,只是运维上可能要复杂一些。安全性上面各家没有太大的差别。
你应该会选择Hadoop作为处理平台,这样子的话底层数据存储一般都是用MySQL的.mangodb+hadoop的组合做实时监控比较好,比如春晚直播时候的弹幕,因为mongodb支持毫秒级的数据查询,实时分析。hadoop一次写入多次取用,加上MySQL的话比较适合你这个项目。安全性其实都差不多。关键防火墙做好安全就ok了,毕竟你们的数据库是隔离的。所以我建议可以选择MySQL。
MySQL 在处理大量数据时会变得很捉急,相反 MongoDB 通过集群的话应该会好一些。
其实你完全可以不用数据库,对于爬虫而言这将有可能成为 IO 的瓶颈。
你可以尝试使用 Hadoop 的 HDFS。