[面试] 关于海量数据存储的数据库选型问题

2018-03-20 12:35:27 +08:00
 Leigg

上周去面试(爬虫),直接对 boss. 问到的一个问题就是公司现在已经爬了近百万条数据了,用的 mysql,发现检索速度越来越慢,内部决定用 mongo,然后问我对分布式 mongo 集群熟么.我没有实践经验,懂一些理论,我知道它可以作读写分离,但我不知道分布式 mongo 集群能有效解决海量数据的检索效率问题吗,或者说各位大佬是有什么好的方案思想,指导一下小弟在面试时遇到这类问题如何做出好的回答.先谢过了~~~ 面试的是一家创业公司,没有 DBA,boss 也不太懂技术,就非常认真的看着我*_*

2078 次点击
所在节点    数据库
33 条回复
fudanglp
2018-03-20 13:10:44 +08:00
cassandra?
dangluren
2018-03-20 13:13:00 +08:00
才近百万条数据,就算是海量数据吗,这么点数据,mysql 检索慢和选型有关系吗? 你直接反问他
wintercoder
2018-03-20 13:13:53 +08:00
百万条也慢么..都不做索引吧,试试 ES 吧
3a3Mp112
2018-03-20 13:14:55 +08:00
这明显是个陷阱,才百万条不会慢的
vegito2002
2018-03-20 13:15:34 +08:00
不太懂这个 boss 的问题, 如果是单条数据的检索慢, 那么跟数据量也没什么关系; 如果是 server 整体感觉 hold 不住流量了, 才 1M 的数据级别, 分析一下并发 QPS 大概是多少? 同意#2 的看法,1M 的数据级别, 瓶颈应该还不是在存储方式上面。
feverzsj
2018-03-20 13:15:43 +08:00
百万条就叫海量了?这公司水平太 low
privil
2018-03-20 13:18:22 +08:00
mongodb 肯定不是一个好选择,性价比低。这个公司你没去是运气好了……哈哈哈 了解下 PostgreSQL ES 啥的吧,不过百万条慢,MySQL 还不至于,调优的空间还很大
male110
2018-03-20 13:37:10 +08:00
@privil PostgreSQL 比 mysql 更快?
privil
2018-03-20 13:43:22 +08:00
@male110 #8 https://www.zhihu.com/question/20010554 你可以找找,有些地方是真的比 MySQL 优秀的,只是 MySQL 用的人多啊
privil
2018-03-20 13:46:55 +08:00
@male110 #8 在 v 站安利 PostgreSQL 的人也不少吧,然后这个贴里面 mongodb 我感觉大家还是用 json 多点吧,PostgreSQL 也很早就支持 json 了
Leigg
2018-03-20 13:47:06 +08:00
@dangluren 那如果千万级以上呢,他确实是说感觉到慢了,而且数据库已经换成 mongo 了😂
Leigg
2018-03-20 13:47:58 +08:00
@wintercoder 大佬简单介绍一下 ES 是啥玩意儿?没听过。。
Leigg
2018-03-20 13:51:14 +08:00
@privil 为什么 mongo 不是一个好的选择?我见现在做爬虫都是用它来存储的,而且它自有的那些优势也的确适合爬虫啊。你说的 ES 也是数据库吗?
Leigg
2018-03-20 13:53:23 +08:00
@3a3Mp112 那到什么量级会明显的慢呢?😆
locktionc
2018-03-20 13:56:04 +08:00
我可以非常明确的告诉你,MongoDB 在写数据的时候所向无敌,但是一旦数据量上千万以后,查询会慢到让你怀疑人生。加了索引都慢。
privil
2018-03-20 13:56:14 +08:00
@Leigg #13 到了 TB 级别的时候,mongodb 和其他数据库的区别就会开始明显,性价比低,mongodb 火的原因有人恶意推测过,实在是它的公司的运营水平高,说投资它的公司的人让其他拿了投资的公司用 mongodb 并且一起来推广。反正我的眼里 mongodb 不是好选择。ES 数据库,你百度一下都知道是 Elasticsearch 了……你还是玩爬虫的……
privil
2018-03-20 13:56:49 +08:00
@locktionc #15 说明你机器配置不够了……加配置吧,哈哈哈哈哈哈
Leigg
2018-03-20 13:59:57 +08:00
@privil 见笑了,入行级别。哈哈。。
monsterxx03
2018-03-20 14:03:06 +08:00
@Leigg MySQL 千万也不会慢,我线上最大的一张表都 4 亿行了,游刃有余, 单纯 MySQL 的话, 好好优化 index, 优化慢查询,再看看能不能用 MySQL 的 partition table, 大部分中小公司真的很难到单机瓶颈.

所谓慢不慢看它硬件条件喽, 看 cpu, ram, disk 使用率啥情况, 数据库不够用优先考虑 scale up.

真要讨论数据量无限扩展的话, 还要考虑查询模式是 OLTP, 还是 OLAP, 你说的爬虫这种 case, 我觉得基本没可能需要实时查询裸数据的, 我来做的话,会选一个支持 columnar storage 的数据仓库(redshift/hbase), 存储裸数据, 通过 ETL 把清洗后的数据倒入 MySQL 或 ElasticSearch 里.

不过看上去他们也没懂数据库的人, 老老实实先 MySQL 吃透吧.
nullen
2018-03-20 14:04:35 +08:00
百万条就慢,说明 MySQL 没用好。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/439666

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX