程序设计估价:按一定要求对最多200亿行数据进行累加(单机版,4个小时内算完)

mrzj 2010-03-09 08:45:10
有这样一个需求,请大家估计一下开发费用。

1、最多50个纯文本文件,内部的数据格式固定也全部相同,每行固定长80个字节(每行全是由数字组成),50个文件的总行数最多有200亿行;

2、根据前40位来进行判断,把前40位相同的按第40到60位、60到80位进行累加;

3、累加结果生成一个纯文本文件。

4、要求此程序能在微软操作系统下方便安装,单机版运行,此程序要发给外面一些非电脑技术人员操作,让这些人能方便安装并能正常运行对公司提供的数据进行累加运算。

5、在最大行数200亿的情况下,从选定要累加的源文件后执行累加开始计算,到最后生成完运算结果的纯文本文件,要在4个小时内运算完毕。


开发这样的程序,开发费用要收多少?
...全文
280 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
haitao 2010-03-11
  • 打赏
  • 举报
回复
什么样的行业、业务数据,会是这样的?

游戏的积分记录??
xiaowei_001 2010-03-10
  • 打赏
  • 举报
回复
这个跟硬件关系很大吧,而且累加有没有浮点数呢,算法应该不是问题,主要是关于类型溢出的处理,算法的优化!
hucaiyu2009 2010-03-10
  • 打赏
  • 举报
回复
汇编吧 数据全部集中在一起 这样时间少些
ZyxIp 2010-03-10
  • 打赏
  • 举报
回复
楼主发一现数据出来,将计算规则在说的明白些,前40位相同的数据占百分之多少??

最好能搞个一两千条数据放在一个文件中让大家能下载。

从没有处理过这么大数据量的东西,想研究研究怎么搞。
大家试着玩玩呗。
gyk120 2010-03-10
  • 打赏
  • 举报
回复
在文件中开辟一个索引,用索引修改文件
Hank 2010-03-10
  • 打赏
  • 举报
回复
程序实现上可以用简单实现
譬如,通过把TEXT文件作为数据库,以 text 引擎连接数据,每个 txt 文件作为一个表。

开50个线程,每个线程连接一个表,执行 SELECT A,SUM(B) AS B,SUM(C) AS C INTO 表X FROM 表 GROUP BY A 动作

然后把50个文件并在一起,执行同样的操作,估计还可能,但在4个小时内完成,在PC机上不太现实。
平均一个TXT文件有80*4亿字节=30G,扫一个30G的TXT文件,那相当怀疑数据库引擎的效率。
而且,30G*50=1500G,PC机,SATA硬盘能有这效率?
林石公 2010-03-09
  • 打赏
  • 举报
回复
应当不能用普通的方式相加吧,好像难度不小
对算法没研究,帮顶一下
池龙 2010-03-09
  • 打赏
  • 举报
回复
程序开8个线程每个线程处理25亿行数据,要求用户买双四核CPU电脑加上SAS硬盘的RAID0。唔。。。不过你这么多数据相加不会溢出么。=。=
xjlqlqlq 2010-03-09
  • 打赏
  • 举报
回复
平均速度至少要达到:140W行 /秒
mrzj 2010-03-09
  • 打赏
  • 举报
回复
此程序是在99年开始做的,当时要求是2千万行,05年需求增加到2亿行,现在2010年提出了200亿行,而且还要单机实现。

每次提升都是开发费1万多,但这次单机版200亿行确是有难度,而且开发费用也少,就不接了。

我现在做的是如果在客户机安装sql数据库,双核2.8G,可以做到每秒处理65万行;单机不用sql数据库每秒10万行。

感谢大家的讨论!
sparklerl 2010-03-09
  • 打赏
  • 举报
回复
他能出多少钱就多少钱,多多益善

要是你让别人做,你觉得值多少钱就给多少钱,看有人能做不?能做好不?
  • 打赏
  • 举报
回复
还是用汇编语句吧。累加容易,判断太浪费时间了。
ok1411 2010-03-09
  • 打赏
  • 举报
回复
这个不好说吧
其实找到规律的话,算法应该还是简单的,10行数据和200亿行数据的算法应该是一样的
w95927w 2010-03-09
  • 打赏
  • 举报
回复
引用 7 楼 ppower 的回复:
200亿行 * 80字節/行 = 20G * 80 = 1.6 T 字節 = 1 個 2TB 硬盤。
硬盤平均讀取數據速度:正常80MB/秒(要較好的硬盤),接口最大速度 300M/S(一定是RAID0)

1600G/80M = 20K秒 = 5.55小時。
一定要是能夠實現 160MB/S 的平均讀取速度。還是數據文件不能有碎片的。
光是讀一遍,都不止 4 小時了。硬盤速度是瓶頸。想辦法配置硬件在3.5小時內能讀一遍,0.5小時的處理時間該夠了。其實在讀取硬盤的空余時間去處理數據都是足夠的。

實現: 用3個以上萬轉 1TB SAS硬盘 組 RIAD0 ,存放源文件,用於讀,另外一個硬盤用於寫結果。那麼這個就好辦了。


在理
delphi1999 2010-03-09
  • 打赏
  • 举报
回复
自己的时薪 x 做需要多少时间 x (3~10)
Q315054403 2010-03-09
  • 打赏
  • 举报
回复
有预算配置大型服务器处理比较现实
普通PC服务器或PC就省省了
若有偿技术支持或开发,可联系ME
勉励前行 2010-03-09
  • 打赏
  • 举报
回复
200亿行 * 80字節/行 = 20G * 80 = 1.6 T 字節 = 1 個 2TB 硬盤。
硬盤平均讀取數據速度:正常80MB/秒(要較好的硬盤),接口最大速度 300M/S(一定是RAID0)

1600G/80M = 20K秒 = 5.55小時。
一定要是能夠實現 160MB/S 的平均讀取速度。還是數據文件不能有碎片的。
光是讀一遍,都不止 4 小時了。硬盤速度是瓶頸。想辦法配置硬件在3.5小時內能讀一遍,0.5小時的處理時間該夠了。其實在讀取硬盤的空余時間去處理數據都是足夠的。

實現: 用3個以上萬轉 1TB SAS硬盘 組 RIAD0 ,存放源文件,用於讀,另外一個硬盤用於寫結果。那麼這個就好辦了。

828

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧