`
hgq0011
  • 浏览: 555204 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

百万级数据能这么干

阅读更多
    今天一上午就和供应商展开了激烈的火拼.
    我作为项目技术把关人,当然会鸡蛋里挑骨头。发现了系统的几个主要的缺陷,我觉得非常之不妥:
    1) 月结一百万甚至两百万的记录,能直接从服务上一次性拿到普通的PC机上面?
这不扯蛋吗?客户端要不程序死掉,要不内存溢出。服务器,广域网还不累个半死。
    2) 假设1)没有问题,下一步还得同时把数据写到类似银行的U盾(类似U盘)中去,如果写成功了,还得更新百万级数据的状态。U盘的速度能有多快呢?该过程会要持续很长。估计数据表都被锁定了。该表其它的用户就不能使用了。这真要命。应该分批分批的写入数据。
    3) U盘如果在系统运行过程中,如果松动或拔出,在重新插入,要把系统重启。这还不让人郁闷死?难道你把U盘拔出,还要重启操作系统?应该提供程序的健壮性。
    4) 6百个客户端直连数据库,保持长链接。这个一值保持怀疑的态度。我也写过测试,似乎没有问题,网上也说没有问题。但通常,较好的做法是在客户端和数据库中间有一个前置,由它统一处理。
    5) 客户端和服务端都通过数据库作为状态的同步。服务端根本不知道客户端处于什么状态,导致他们的数据不一致。通常都会用socket通讯,采用心跳机制。

    靠忽悠是不行的,还是要把系统设计好。价钱也不斐。
分享到:
评论
31 楼 joykai 2010-11-30  
对楼主的问题,其实我的理解是:
问题1、2、3,客户方提的需求总结起来就两个:
    1)数据导出来了,并且在服务器上做了标志,表示这个数据已经导出了。
    2)数据在U盘上放一个
客户不需要关心你是一次性导出,还是批量导出,所以这个问题就好解决了!你把数据用批量处理的模式,导出到本地,可以做成按月或其它分类形式做成Access、excel或csv等,然后打包压缩为一个包,然后拷一个文件到U盘就ok了?对否?

问题4,600个并发对大型关系数据库应该不是什么问题。实在不行,让他们找数据库软件供应商来解决嘛!
问题5,这个太easy了,参考网站单点的登录。

希望对你有帮助!
30 楼 hgq0011 2010-11-30  
whxhz 写道
过一段时间再来看看,最后咋整了

拖着,问题不解决我们就耗着
我们也打太极。
29 楼 whxhz 2010-11-30  
过一段时间再来看看,最后咋整了
28 楼 抛出异常的爱 2010-11-26  
hgq0011 写道
lvzhaojun 写道
1) 月结一百万甚至两百万的记录,能直接从服务上一次性拿到普通的PC机上面?
这不扯蛋吗?客户端要不程序死掉,要不内存溢出。服务器,广域网还不累个半死

100W数据一般的机器就可以了,以文本CSV传输,装到DB2中也就几秒吧


数据库是SQL SERVER 2K的,网络是VPN组成的局域网,速度还可以。
此表有一百万甚至两百万的记录,此表是多用户使用的。比如我一个用户要把一百万的数据导出,如果导出成功,要对每一行数据进行更新。此时其它的用户会往此笔中些数据。那么会不会存在表锁的情况,导致其它的用户写入不成功或者写入的时间非常长?


事务如果长的话.....
很有可能会等待或超时
所以表最好就不改只查

分区的事交给log或其它表.
27 楼 hgq0011 2010-11-26  
lvzhaojun 写道
1) 月结一百万甚至两百万的记录,能直接从服务上一次性拿到普通的PC机上面?
这不扯蛋吗?客户端要不程序死掉,要不内存溢出。服务器,广域网还不累个半死

100W数据一般的机器就可以了,以文本CSV传输,装到DB2中也就几秒吧


数据库是SQL SERVER 2K的,网络是VPN组成的局域网,速度还可以。
此表有一百万甚至两百万的记录,此表是多用户使用的。比如我一个用户要把一百万的数据导出,如果导出成功,要对每一行数据进行更新。此时其它的用户会往此笔中些数据。那么会不会存在表锁的情况,导致其它的用户写入不成功或者写入的时间非常长?

26 楼 hgq0011 2010-11-26  
leemny 写道
看半天,你只是说了对方的解决方案和方案缺陷,自己的具体业务需求是个啥也没说啊,到底要干嘛不知道,而且也没bt点的解决方案,基本上都是老一套+旧技术

改天可以把我们的业务整理出来。和大家分享一下。
目前这么一些缺陷,很是头痛
25 楼 lvzhaojun 2010-11-25  
1) 月结一百万甚至两百万的记录,能直接从服务上一次性拿到普通的PC机上面?
这不扯蛋吗?客户端要不程序死掉,要不内存溢出。服务器,广域网还不累个半死

100W数据一般的机器就可以了,以文本CSV传输,装到DB2中也就几秒吧
24 楼 leemny 2010-11-25  
看半天,你只是说了对方的解决方案和方案缺陷,自己的具体业务需求是个啥也没说啊,到底要干嘛不知道,而且也没bt点的解决方案,基本上都是老一套+旧技术
23 楼 hgq0011 2010-11-22  
niumd 写道
几百万的数据量不大,文件格式,采用ftp,很方便,这个没啥值得怀疑的lz

传输没有问题。
但是整个过程要保证是不出错的,也就是事务回滚。

客户端的界面要展示1到2百万的数据,这个不行吧?
22 楼 niumd 2010-11-21  
几百万的数据量不大,文件格式,采用ftp,很方便,这个没啥值得怀疑的lz
21 楼 hgq0011 2010-11-20  
tedeyang 写道
我做过的项目里有个与人民银行的数据交换,他们用的是分批次的纯文本(直接用c从数据库里导出来)。
譬如201003-1.txt,201003-2.txt...
每个文本控制在10M左右,ftp传输。
简单可靠。

这个也要控制整个过程不能出错
20 楼 vdgame 2010-11-19  
1) 月结的数据可以在每天导出到一个文件中(就是前一天的数据,这个数据总是不变了吧?),并且压缩,这样一个个文件下载到PC,每个文件不会很大
   客户端处理也可以按日分别处理
2) 写U盘也按日处理,更新服务器也是按日处理
3) 这是需求问题
4) 6百个客户端直接连数据库服务器也没啥问题,就是要做好异常处理,比如连接断开了
5) “客户端和服务端都通过数据库作为状态的同步”这个确实不好,不过也行
19 楼 hgq0011 2010-11-19  
zlowly 写道
我觉得这些方案只要考虑周全,技术上没什么问题。什么百万级、6百客户端长连接什么的别以为有什么特别。
在十年前B/S还不成熟时,随便个破小型机+Oracle 7+PB的C/S方式就轻松达到一千以上客户端同时在线连接呢,只要设计好cache机制,用u盘作数据存储也不难。


我也觉得他们的方案可以。
但是,如果能解决我这问题,那么就是一个非常成功的案例。那么他们的银子就大把大把的来了。
18 楼 hgq0011 2010-11-19  
kingkan 写道
在下的一些愚见,呵呵。

第一,在服务器将月结数据按用户写成自定规则格式数据到文件
第二,要求客户端用户自己下载自己的月结数据文件到本地
第三,用户在客户端通过这个文件写入U盾,增加对数据完整性的判断,来得出数据是否写入完成。
第四,要求用户自己申报写入U盾成功请求,本地判断非完整不准申报U盾写入成功请求。
第五,本地数据以及U盾数据验证通过,服务器接收请求认为该用户U盾写入成功。更新百万级数据的状态,服务器在缓存中加入标识,说明哪个用户的数据的状态数据已被更新。


也是一种方案。
有成功的案例吗?
17 楼 hgq0011 2010-11-19  
skzr.org 写道
百万级数据应该不是很多,也就250MB以内,按照一个U盘5M/s的写入速度不到一分钟;
(一般读取速度都有30M/s 10s以内足够读取了)
如果采用压缩,相信性能还有30%左右的提升!

1)2)做月结的话数据是不是不可能发生变化了,锁定表也无所谓了!因为只有自己修改这些状态,别人只是读取和查询,问题应该不大

后面的3)4)5),第3点要重启就太变态了,真的有点怀疑他们的驱动
4)5)应该问题不大了

以上只是猜想,过于理想化,请大家自动越过

我刚才大约计算了一下,假设一条记录大约400字节,月结记录1500000,那么应该有400*1500000/1024/1024=572M
而整个数据事务读写过程应该非常的慢了。

虽然是月结,但是系统还是要正常运转的。他们没有采用分表冻结,所以同一张表,在月结是,还会有记录写入的。所以,我认为会有锁表的情况,甚至业务系统会瘫痪。
16 楼 hgq0011 2010-11-19  
抛出异常的爱 写道

ukey根本是个笑话....
事务查出更新数据库更是扯
不如写日志.
一个批次.写二条日志.
日志一条开始写
另一条写结束
只要有开始有结束
就认为数据完整
有开始没结束或结束是error
就认为数据是不完整的.
银行还省这点小钱
拉根专线没几个钱.


那个项目负责人,告诉我每次写数据一定能保障要么成功,要么失败。对于这一点我非常的怀疑,有什么办法能保证事务呢?。所以要求他们提供数据验证的工具,能够从Ukey中对比数据库中的数据是否一致。但业务部门的人,有点向着他们,说不用了。出了问题,IT不用负任何责任。我晕。

在我看来也应该分批分批的写。
有专线的。
15 楼 CManLH 2010-11-19  
边从数据库取,一边压缩进IO流,输出为压缩文件,百万级的文本记录也没多少M的
14 楼 graykeel 2010-11-19  
显然这个公司需求场景没有搞清楚。
13 楼 zlowly 2010-11-19  
我觉得这些方案只要考虑周全,技术上没什么问题。什么百万级、6百客户端长连接什么的别以为有什么特别。
在十年前B/S还不成熟时,随便个破小型机+Oracle 7+PB的C/S方式就轻松达到一千以上客户端同时在线连接呢,只要设计好cache机制,用u盘作数据存储也不难。
12 楼 kingkan 2010-11-19  
在下的一些愚见,呵呵。

第一,在服务器将月结数据按用户写成自定规则格式数据到文件
第二,要求客户端用户自己下载自己的月结数据文件到本地
第三,用户在客户端通过这个文件写入U盾,增加对数据完整性的判断,来得出数据是否写入完成。
第四,要求用户自己申报写入U盾成功请求,本地判断非完整不准申报U盾写入成功请求。
第五,本地数据以及U盾数据验证通过,服务器接收请求认为该用户U盾写入成功。更新百万级数据的状态,服务器在缓存中加入标识,说明哪个用户的数据的状态数据已被更新。

相关推荐

    碳卫星资料

    其中,1A级数据包括了衍生的地球物理变量,而2级数据产品仅包括在有利的云和气溶胶条件下获得的光谱的检索、温度、CO2和水蒸气的垂直大气剖面以及气溶胶含量、反照率的标量测量、表面压力和柱平均干燥空气CO2摩尔...

    (干货)大数据:70多个网站让你免费获取大数据存储库.pdf

    :地理和空间数据 :来⾃数Google扫描的百万书籍⽂本 :财务数据,包括股票、期货等 收集许多⽂本和图⽚数据集 :HitCompanies随机取样的1万个英国公司全⾯的数据,采⽤⼈⼯智能/机器学习进⾏⾃动更新。 :包含2008...

    NE80升级IP省干网案例

    NE80支持大容量组播的线速转发,这意味着即使在网络负载极高的情况下,它也能保持高速的数据传输,而不会显著影响性能。 此外,NE80还支持区分服务(Differentiated Services, COS),这是一种QoS策略,可以根据...

    Django框架在海洋平台甲板片建造管理中的应用研究-庞达.pdf

    MySQL是一个强大的关系型数据库管理系统,能够处理百万级别的数据记录,适合在海洋平台甲板片建造这样的大型项目中使用。在Django框架的支持下,可以构建一个数据处理智能化的平台,实现对各个施工阶段数据的实时...

    经历BAT面试后总结的【高级Java后台开发面试指南】,纯净干货无废话,针对高频面试点

    Java基础 JVM原理 集合 多线程 IO ...系统设计-在AWS上扩展到数百万用户的系统 系统设计-从面试者角度设计一个系统设计题 智力题 概率p输出1,概率1-p输出0,等概率输出0和1 判断点是否在多边形内部

    68性能设计篇之-边缘计算1

    如果这些请求能在CDN(内容分发网络)的边缘节点上处理,比如验证用户资格、管理库存等,就可以显著减少数据中心的负担,提高服务响应速度,从而提升用户体验。 随着信息技术的快速发展,我们正处于一个信息化革命...

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

     RIYAJ SHAMSUDEEN 专注于性能/数据恢复/电子商务的咨询公司OraInternals的首席数据库管理员和董事长。有近20年使用Oracle技术产品以及Oracle数据库管理员/Oracle数据库应用管理员的经验,是真正应用集群、性能...

    计算机一级考试试题五选择题.pdf

    3. 对于Windows 98的系统知识考察,例如:“MIPS”,这是计算机性能的一个单位,指的是每秒处理的百万级指令数。 另外,从内容中可以推断出一些与Microsoft Office应用程序相关的问题: 1. 有关Word 97的快捷键和...

    高中计算机基础知识考试题(2).pdf

    6. 计算机指令集:如ALU(算术逻辑单元)和MIPS(每秒百万指令数),ALU是CPU中的一个组件,用于处理算术和逻辑操作,而MIPS是衡量计算机性能的一个单位。 7. 计算机总线:如DMA(直接内存访问),是一种允许计算机...

    2017阿里技术年度精选01

    阿里数据库技术解读 阿里下一代数据库技术:把数据库装入容器不再是神话 接下时序数据存储的挑战书,阿里 HiTSDB 诞生了 运维 49 61 77 96 超全总结 | 阿里如何应对电商故障?神秘演练细节曝光 如何高效排查系统故障?...

    2017阿里技术年度精选(上)

    - **需求分析**:分析了一个支持百万级用户的分布式代码托管平台所面临的挑战,包括数据一致性、版本控制、权限管理等。 - **架构设计**:介绍了该平台的整体架构设计思路,包括使用分布式版本控制系统、高性能...

    海思3518介绍

    - **加密算法**:硬件级实现AES/DES/3DES等加密算法,保护数据安全。 - **数字水印**:为视频添加不可见的数字标识,防止非法篡改。 **9. 接口资源** - **视频接口**:支持多种格式的视频输入,如8/10/12位RGB ...

    计算机系统结构教程

    此题未给出详细解答内容,但从题干可以看出这是一道涉及计算机系统结构基础知识的问题。 ##### 1.2 解析 本题考察了计算机系统中的缓存层次结构。题目给出了不同级别的缓存访问时间,并明确指出“第一级是最低的...

    电力设备和新能源行业周报:特斯拉“电池日”召开,行业格局冲击有限.pdf

    3. 成本下降预期:特斯拉的电池降本技术预计可以实现超过50%的成本下降空间,但未达到市场预期,因为市场期望的某些极具创新性的技术(如百万英里低成本电池)并未公布。 4. 自产电池:特斯拉计划在2022年达到100GWh...

    GPC-PyGC法研究共聚物的组成分布 (1997年)

    GPC的分离效果与凝胶柱填充材料、溶剂的选择有关,本文采用的凝胶柱能够分离分子量在1万至1百万之间的高分子。 分离出的不同级分经过干燥处理后,再通过裂解气相色谱法(PyGC)测定各个级分的组成。PyGC是测定共聚...

    自己动手写操作系统(含源代码).part2

    历史上的 Linux就是这么产生的,Linus Torvalds当时是一名赫尔辛基大学计算机科学系的二年级学生,经常要用自己的电脑去访问大学主机上的新闻组和邮件,为了方便读写和下载文件,他自己编写了磁盘驱动程序和文件...

    自己动手写操作系统(含源代码).part1

    历史上的 Linux就是这么产生的,Linus Torvalds当时是一名赫尔辛基大学计算机科学系的二年级学生,经常要用自己的电脑去访问大学主机上的新闻组和邮件,为了方便读写和下载文件,他自己编写了磁盘驱动程序和文件...

Global site tag (gtag.js) - Google Analytics