java开发中遇到的问题-阅历有限找不到现有的解决方案

shuhuajian 发布于 2019/01/03 17:01
阅读 620
收藏 0

【Gopher China万字分享】华为云的Go语言云原生实战经验!>>>

公司需要完成一个功能  将100亿数据(大概)存入数据库 , 一条数据有 手机号码  地址 姓名 等等大概30个字段。

数据是保存在本地csv文件中的每个文件有50000条数据,  现在是统计这些数据  因为手机号有重复的 

相同的地址 相同的姓名这些会统计成一条数据  比如同一个号码  姓名张三  出现次数3次,

数据库选择的是mongodb 但是由于这个业务存在大量的更新操作mongodb更新速度太慢,  插入速度 5000条/秒

(因为单条数据比较大),更新速度 200条/秒(索引什么的都建了) 由于达不到项目需求现在卡在这里了,有什么数据库能

支持大批量的数据更新的最少 3000条/秒的更新速度,测试了mongodb的速度在字段在10个以内时

插入30000条/秒  更新8000条/秒  单条文档越大速度越慢 ,大哥们我应该怎么做。。。。。。

 

加载中
0
shuhuajian
shuhuajian

补充一下:我的单条数据会比较大超过100k ,mongodb单条文档1k时才能保持高速的性能,

我应该用什么数据库

0
渠富林
渠富林

分布式数据库

0
千夜num
千夜num

postgre试试

0
zhaojunli
zhaojunli
我们做的大概100万条数据处理,需要对这些数据进行多次批量更新,使用的oracle数据库,只使用insert会好很多,没有事物控制。
shuhuajian
shuhuajian
一秒的速度是多少,能有 3000条/秒的速度么
0
月影又无痕
月影又无痕

估计你还是单线程的思维方式,这种情况一定要使用多线程或是多进程方式处理。

1. 至少建立几十张表。

2. 以多线程或多进程方式,向不同表中写入数据,就可以避免表锁对性能的问题。

3. 原始记录按照10000条以上合并后,理论上性能提升在1000倍以上。批量一次写入,逐条写入性能很差。

4. 如果使用数据库,一定要开启事务,写入性能可能有数倍影响。

5. 最后形成瓶颈的可能就是磁盘了,但这个已经与技术无关了。

经过上述处理,无论你是用nosql还是sql, 写入将不再成为瓶颈,整体写入性能甚至提升到100倍以上,你的问题就可以完美解决了。

如果不行,再来找我。

月影又无痕
月影又无痕
回复 @shuhuajian : 数据导入完毕之后,合并表就行,脑子开放一些吧。
shuhuajian
shuhuajian
哎,经理规定,所有数据在一张表中,做的集群,表结构不允许拆分,只能用mongodb 主要是卡在更新上,就是将数据查询出来,然后修改,之后又存进去 , 每秒速度必须3000条/秒以上 谢谢你的回答,如果用其他数据库我会参考你的意见的,谢谢
返回顶部
顶部