爬虫爬下来的数据(100G级别,2000W以上数据量)用mysql还是mongodb存储好?(mongodb怎么查看库是否分片)

爬虫爬下来的数据(100G级别,2000W以上数据量)用mysql还是mongodb存储好?

每个技术都有自己的应用场景,技术的选择都需要与自己的应用场景结合!

爬虫爬下来的数据(100G级别,2000W以上数据量)用mysql还是mongodb存储好?(mongodb怎么查看库是否分片)
(图片来源网络,侵删)

通常来说,千万条以上的数据,mysql数据库的性能会有明显下降,当然可以通过配置主从,或者使用中间件来提高性能。对于mongoDB来说,100G,2000W的数据量应该算是正常,管理上会比mysql简单。但是如果需要较强的事务性、一致性等,mongo可能就不能满足要求。

爬虫爬取下来的数据很多可以直接非结构化的存储,对存储的字段尚未有清晰确定,且因为你的量级很大,不会立马分析,所以建议存储在mongodb 中,以便于进行下一步数据挖掘处理

谢邀,这个问题我们可以从两个角度去解答。一个是100G的数据量用MySQL和MongoDB在存读取上有什么区别,另一个是数据本身的结构和你要进行的应用来考虑使用哪种数据库比较方便。

爬虫爬下来的数据(100G级别,2000W以上数据量)用mysql还是mongodb存储好?(mongodb怎么查看库是否分片)
(图片来源网络,侵删)

目前来看100G的数据量其实对MySQL和MongoDB在存放都没有什么压力,如果你要经常读取,那么我建议你的MongoDB来做存储。原因在于MongoDB是内存映射模式,可以充分利用系统的内存资源,内存越大MongoDB的查询速度越快,毕竟磁盘与内存的I/O效率不是一个量级的

如果你对查询的速度要求不高,而且爬下来的数据是结构化数据,你又熟悉MySQL的语法及相关操作,完全可以用MySQL去存这个级别的数据量,就相当于你存储了一个大型Excel表格。

如果数据结构是不一致的,即不会有些行缺失某些字段,有些行又多出一些字段,那么我建议使用MongoDB做存储处理。因为Mongo没有schema的严格定义,是json格式存取。如果爬虫的字段会经常变化,字段定义可能会变更,Mongo对这方面很宽松,很容易兼容。但如果你对事务有要求,最好还是选择MySQL。因为MongoDB这种NoSQL数据库并不是为了事务关系而设计的,具体应用还是看需求。

爬虫爬下来的数据(100G级别,2000W以上数据量)用mysql还是mongodb存储好?(mongodb怎么查看库是否分片)
(图片来源网络,侵删)

总而言之,我个人是比较建议使用MongoDB做海量爬虫数据库存储。无论从数据结构的不规整以及数据存读取的速度要求,Mongo都可以胜任,同时MongoDB可以很轻松的横向扩展,分片,复制集群分分钟的事。

不过最终落地还是看需求,还是要从数据存读取频度、量级还有应用场景综合考虑。

PostgreSQL与MySQL相比,优势何在?

PostgreSQL类似于Oracle的多进程框架,可以支持高并发的应用场景。

如果把Oracle DBA转到PostgreSQL数据库上是比较容易的,毕竟PostgreSQL数据库与Oracle数据库很相似。

PostgreSQL几乎支持所有的SQL标准,支持类型相当丰富。PostgreSQL数据库的源代码要比MySQL数据库的源代码更容易读懂,如果团队的C语言能力比较强的话,就可以在PostgreSQL数据库上做开发,比方说实现类似greenplum的系统,这样也能与现在的分布式趋势接轨。

为了说明PostgreSQL的功能,下面从“从Oracle迁移到Mysql之前必须知道的50件事”简要对比一下PostgreSQL数据库与MySQL数据库之间的差异。

1、对子查询的优化表现不佳。(PostgreSQL可解决)

2、 对复杂查询的处理较弱。(PostgreSQL可解决)

3、 查询优化器不够成熟。(PostgreSQL可解决)

PostgreSQL完全支持SQL-92标准,对SQL的支持也很全面,可以支持复杂的SQL查询。

4、 性能优化工具与度量信息不足。(PostgreSQL可解决)

PostgreSQL提供了执行计划和详细的cost值,可以方便看到SQL的执行效率。

5、 审计功能相对较弱。

PostgreSQL不是Oracle公司的,这是相对于MySQL最大的优势,没有之一!

MySQL是目前最受欢迎的开源数据库,PostgreSQL则是我认为最先进的开源数据库。MySQL是C/C++混合开发,PostgreSQL则是完全的C语言开发,这是在技术方面的差异,接下来我详细列一下PostgreSQL相对于MySQL优势,当然其实这些也都能招到,我就列举几个比较关键的优势。

PostgreSQL稳定性非常强,InnoDB即使是在断电这种场景下,PostgreSQL也是相当稳定的,这个MySQL用户应该是深有体会的,很多估计都经历过服务器级别的数据丢失。

MySQL是单存储引擎,PostgreSQL是多存储引擎,包括InnoDB、MyISAM等。

删除临时表的时候,PostgreSQL语句没有TEMP、TEMPORARY关键字,DROP TABLE通过数据库连接的排列被删除。MySQL支持TEMP、TEMPORARY关键字,DROP TABLE语句只允许删除临时表,要手动删除。PostgreSQL支持CASCADE选择删除表的依赖对象,PostgreSQL的TRUNCATE TABLE支持功能更多。MySQL TRUNCATE TABLE不支持CASCADE食物安全,数据删除之后就没办法回滚了。

PostgreSQL支持多种高级数据类型,比如array,用户也可以定义类型,MySQL只支持标准类型。PostgreSQL支持布尔型,支持IP地址数据类型,支持常量和函数调用。PostgreSQL支持JSON和其他NoSQL功能,本机支持XML,允许索引JSON数据,MySQL支持JSON,不过不支持其他的NoSQL功能。PostgreSQL的对象统计功能也很强,这一点MySQL也有差距。

PostgreSQL是多进程、MySQL是多线程。PostgreSQL支持大多数命令类型上触发的触发器。MySQL是异步复制,PostgreSQL支持同步、异步、半同步复制。PostgreSQL要求所有数据必须完全满足需求,只要出一个错误整个数据入库过程都要失败,不过MySQL没这样的问题。

最后一个优势,也是我在文章开头说到的,也是我认为最大的优势,MySQL诞生于商业公司,现在是让人生厌的Oracle控制,尽管MySQL现在依然是开源免费的,可是在Oracle手里总是会让人担心。Java在oracle手机搞了些啥大家应该都知道吧,现在Oracle动不动出来恶心恶心大家,反正甲骨文是个不靠谱的公司,随时想要搞点事情。

PostgreSQL则是诞生于加州伯克利,伯克利还是对计算机技术有过突出贡献的高校的,PostgreSQL、FreeBSD都是非常有代表性的,这个不会存在像Oracle那么恶心,所以这个也是一个极大的优势。

当我们选择哪种数据库对我们的项目最合适时,必须在数据库之间进行比较。PostgreSQL和MySQL都是开源社区提供的两种最广泛的数据库。这两个数据库都有其优点和缺点,因此更好的选择取决于特定的要求和目标。

MySQL是一种开放源代码且流行的数据库管理系统,用于管理 关系数据库 。Oracle提供了访问和管理该数据库的支持。与其他数据库相比,它是快速,可伸缩且易于使用的数据库管理系统。它通常与PHP脚本一起使用,以创建功能强大且动态的服务器端或基于Web的企业应用程序。

PostgreSQL 是一个先进的,开放源代码的[对象]-关系型数据库管理系统,它的主要目标是实现标准和可扩展性. PostgreSQL, 或者说是 Postgres, 试图把对 ANSI/ISO SQL标准的采用与修正结合起来。

对比其他的RDBMS, PostgreSQL以它对于对象-关系和或关系型数据库功能,比如对于可靠事务,例如原子性,一致性,隔离性和持久性(ACID)的完全支持,这些东西的高度需求和集合的支持,以示其独特性。

PostgreSQL是高度可编程的, 因而可以使用被称作“存储过程”的自定义程序进行扩展. 这些功能可以被创建用来简化一个重复、复杂并且常常需要数据库操作的任务的执行。

postgreSQL 和 MySql 都是支持 SQL标准(比如sql92, sql99),最主要的一点是: mysql 自从被oracle收购之后,社区担心它的命运像java一样,于是大量开源项目纷纷转向 postgresql。

postgresql 的管理工具:pgadmin 非常便捷,可以细粒度的操作数据库。

memcache、redis、mongodb优缺点是什么啊,怎么选?

虽然都是nosql范畴,但是memcache、redis主要设计目的是做缓存使用

mongodb的核心是提供无模式文档结构的持久化存储,它的两个核心点:提供接近(其实差距挺大的)缓存服务器的速度和接近关系数据库API(这个已经差不多了,连接查询是弱点)的接口。

如果是几年前,memcache、redis之间还有选择综合症,目前的市场,你可以直接选择redis,把精力完全放在redis身上去深入。

这是是市场反应,这个相信对你的选择有绝对说服力。

memcache在性能方面没有优势了,同时redis提供了更丰富的数据结构,各种原子操作,以及持久化(RDB/AOF)。如果你是小规模项目,你甚至可以直接用它设计消息订阅,使用它的即时消息订阅发布(你有消息持久化需求的话可以额外用redis的列表功能等定制)。

相比redis和memcache,mongodb的性能差距就比较大了。mongodb最核心的是它提供的B树索引,这个为我们提供了范围查询的基础,4.0提供了事务后,才算真正可以勉强在某些场合替代关系数据库。动态性和内嵌设计后的便利操作,很适合做中间数据管理。

PS:我最先使用mongodb,其实主要是用它做LBS应用。

如果你是中小项目,缓存使用redis是很合理的选择,mongodb可以暂不使用,mysql已经够用。

redis、memcahce 比较相似,但与 mongodb 完全不同,几乎没有可比性。

总的来说 redis/memcache 是基于内存的,讲究的是性能,多用作缓存层,比如说存放session。而 mongodb 是面向文档的,存储的是类似JSON的非结构化数据,查询起来非常方便,开发效率高,比较类似传统SQL关系型数据库。

---------------

redis是内存型KV数据库(键值存储数据库,其数据按照键值对的形势进行组织、索引、存储),不支持二级索引,支持list,set等多种数据格式。适合存储全局变量,适合读多写少的业务场景。很适合做缓存。

------------------

Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。

-------------------

mongodb则是文档型的非关系型数据库,使用bson结构。其优势在于查询功能比较强大,能存储海量数据,缺点是比较消耗内存。

作用完全不一样,memcache是纯内存数据库,就是干缓存的活,而mongo是文件数据库,适合存放非关系型或没事务要求的松散数据,而redis是两者之间,既能当缓存,有可持久化数据,其实分布式memcache性能并不比redis强,又无redis持久化功能。所以现在基本快被redis取代了

memcache及redis属于内存数据库,区别是memcache无持久化策略,无ms模式,数据类型只支持string存储,多线程处理请求。redis支持持久化,支持主从,支持分片,自带sentinel支持ha,支持set、hash、list等5种数据类型,应用的业务场景会比较丰富。mongo属于文档存储型的分布式数据库,无schema,扩展性好。这三种都属于nosql的范畴。怎么选型具体还得看你的实际业务场景,选择合适的技术框架。

到此,以上就是小编对于mongodb查看分片状态的问题就介绍到这了,希望这3点解答对大家有用。