|
BlueQuery高速比对数据功能前言: 近日多间SI公司致电Sunnet关心系统性能优化问题,大家都有同样的错误观念,以为只有TB数据才会速度慢,正如以下小量数据例子,半个小时内查不了1万行数据。究竟为什么呢?我们又是怎样解决? 实例: 某集成商,因业务需要,要比对与寻找数据,用户定期得到主动数据(主动数据的格式为XML文件,一个XML文件即是一个批次的主动数据,一个批次主动数据中记录了大量的人员详细信息,每一批主动数据的数据量在100至2,000条不等),根据数据比对的规则(用户能灵活定制规则),将主动数据中的人员信息与被动数据(被动数据的格式为ACCESS数据源,被动数据同样记录了大量的人员信息,同时被动数据按照业务处进行划分,每个业务处有自己的被动数据库,每一个业务处的被动数据的数据量在1万至20万不等)中的人员信息进行比对,并且将比中的结果进行记录,反馈给用户,用户可以对比中结果、比对的规则、比对对应的被动数据进行查询。 问題在于搜索性能太慢: 以100条主动数据在1万条被动数据中比对的情况为例,精确比对响应时间超于25分钟,模糊比对响应时间超于2个小时。最终用户怎能等待超过半个小时的查询。 过程与挑战: 为提高搜索速度,我们采用了快速的字符串搜索算法Boyer-Moore(BM算法),其与线性搜索的区别是当发现模式不匹配时,不是象线性搜索那样只移动一个字节,而是尽可能多地移动多个字节长度,以提高搜索速度。但采用了BM算法速度也不能接受,为进一步提速,我们采用了创新研发的混合核心算法,进一步提升3~5倍BM算法速度。 成功的结果: 我们只花了两周时间采用了混合核心算法,在网络环境(千兆)下,以100条主动数据在1万条被动数据中比对的情况为例,精确比对响应时间小于1分40秒快原系统15倍以上,模糊比对响应时间小于5分钟快原系统25倍以上。 为配合用户,我们在本公司BlueQuery商业智能产品中,新增如下超速搜索功能: 1. 快速数据精确查询功能SunDataset.QuickFindRow(nCol, varFindValue) - 在千万行数据中找某个值,都不会超过0.001秒。 2. 模糊查找指定值SunDataset.FindLike(nCol, szFindWhat, nStartRow, nDirection, bCaseSensitive) 3. 多列联合快速查找准备按多列快速查找:SunDataset.PrepareRapidFind(VARIANT varColumns, short cSplitter) 此计划,进一步提升BlueQuery商业智能产品的搜索功能。 案例参看 http://www.bluequery.com.cn/news/superspeedetl.htm 责编:张赛静 微信扫一扫实时了解行业动态 微信扫一扫分享本文给好友 著作权声明:kaiyun体育官方人口
文章著作权分属kaiyun体育官方人口
、网友和合作伙伴,部分非原创文章作者信息可能有所缺失,如需补充或修改请与我们联系,工作人员会在1个工作日内配合处理。 |
热门博文 |
|