`
天机老人
  • 浏览: 151430 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

3亿数据快速检索实现

    博客分类:
  • Java
阅读更多
  上周有个需求,就是要做一个检索库:
  1 3亿个手机号码,并且每个号码20个左右的属性例:地区,订阅等信息。
  2 在最短的时候内select出来(5分钟,10分钟)[最重要]
  3 允许更新。对这些号码进行发送信息后,状态改变。[可以让他慢慢更新]

  和几个同事讨论了一下,具体要注意以下几点:
  1 如果发送下去状态改变,但是只发送一半,但状态改变了如何办?
  2 如果多个产品线一起下发,状态会不会混乱。
  解决以上第二个问题,决定采用,队列等待的方式。第一个问题没想到好的解决办法,回滚也想过了,但感觉不是很现实!

  解决方案:
  经过实验500w条的数据在用plsql直接select,只需要0.2秒,所以总体采用分表的方式,每500w条分一个表,然后同时查询!

  但总感觉不是很好,抛砖引玉(真的很砖 )。不知道大家有没有更好的解决方案!



-----------------------------------------重新描述一下需求-------------------------------
很多人说需求不是很的清楚,这里重新整理了一下!
不过要注意的是数据库里已经有3亿个手机基数了!

一. 号码入库。
不定期会有新的号码需要入库,入库需要记录号码的常规属性,如:手机号,省份,城市,入库时间,手机卡类型,是否支持彩信,号码来源情况等。


二. 入库手机号源文件管理
入库手机号源文件要以文件形式保存在服务器上。

三. 按需要提取号码(最关键部分)
要按照需求提取所需的号码。

例如:
提号要求:
1.此号码非黑名单用户。
2.此号码为的订购和退订用户。
3.此号码2个月内没有活动。
4.省份要求:辽宁,云南,广东
5.号段要求:137和138和139号段
6.数量要求:每个省10w
7.是否支持彩信:是(是,否,忽略三种情况)
……

最后,符合条件的号码,按照固定格式(每个手机号占一行),形成文本文件,将此文件测试号码,是否需要状态报告等信息形成最终可发送文件并提供下载功能,同时记录本次提取信息(发送时间,发送标识等)
注:文件格式如下:
139***85185#09#0
139***71283
139***33190
第1列:手机号
第2列:产品类型(#09)
第3列:是否需要状态报告(#0)

四. 统计功能
一.号码情况统计
1.统计当前号码总量。
2.按照2个基本要求,统计现在库中可以使用的号码数量。
注:统计需要显示,全国总量,各省总量,各省省会总量,各省去除省会总量,各省7天未下发总量(省会与其他城市分开显示),各省可以发送总量(省会与其他城市分开显示,所以单独列出来)。

二.发送产品统计
1.按时间段、业务线等统计发送产品的情况,如:发送时间,最终发送文件等

五. 黑名单及特殊号码管理
1. 添加黑名单
2. 去除黑名单
3. 过滤黑名单
4. 查询黑名单

以上除黑名单外都是迫切需要的,黑名单功能可以以后完善。
分享到:
评论
23 楼 kunee 2009-05-25  
抛出异常的爱 写道
试试数据的hash 分块根据某几位的hash值决定数据所在的DB...3亿对发号地区.对发号时间多次规范之后....


抛总的意见很中肯
22 楼 shuai45 2009-05-25  
 "经过实验500w条的数据在用plsql直接select,只需要0.2秒",

这个听起来有点夸张。即使实现了0.2秒的查询,但也只是你单个测试,如果遇到批量测试,或者并发,你这个0.2 我估计会变成200秒 或者2000秒。

不过500W 0.2秒 要是真的话,已经很牛了。请教经验
21 楼 zgjzc 2009-05-25  
按时间,地区分成小表,再不行就分库
20 楼 抛出异常的爱 2009-05-25  
天机老人 写道
javaTo 写道
照异常的方法,hash后分段置于不同的库(服务器)中,然后去定位操作

hash分段我们也想过,但是量太大了!
查询好像目前而言好解决一点!查出来的数据还需要导出工作!

更新好像变的又点难度了!

多个库多个磁头..写的总是快些吧.
19 楼 longlongriver 2009-05-25  
做范围分区,分区表可以很好解决这种大数据量的查询问题!
18 楼 天机老人 2009-05-25  
javaTo 写道
照异常的方法,hash后分段置于不同的库(服务器)中,然后去定位操作

hash分段我们也想过,但是量太大了!
查询好像目前而言好解决一点!查出来的数据还需要导出工作!

更新好像变的又点难度了!
17 楼 天机老人 2009-05-25  
ansjsun 写道
经过实验500w条的数据在用plsql直接select,只需要0.2秒??????????????
楼主怎么实现的啊>?????不可能吧 ..我感觉得几分钟

一查就是十几万条以上!

更多的是百万条一查的!
16 楼 congjl2002 2009-05-25  
ansjsun 写道
经过实验500w条的数据在用plsql直接select,只需要0.2秒??????????????
楼主怎么实现的啊>?????不可能吧 ..我感觉得几分钟

索引,分区之后,差不多吧,还有你当然不能用1g内存,1个CPU的pc当服务器
15 楼 superdandy 2009-05-25  
用procedure, 不过缺点是破坏了设计,同时数据库参与了业务逻辑。 好处是节省了大量的I/O时间。
14 楼 javaTo 2009-05-25  
照异常的方法,hash后分段置于不同的库(服务器)中,然后去定位操作
13 楼 whaosoft 2009-05-25  
fc6029585 写道
我觉得索引表是个很好的办法!

能在说的更细些吗
12 楼 ansjsun 2009-05-24  
经过实验500w条的数据在用plsql直接select,只需要0.2秒??????????????
楼主怎么实现的啊>?????不可能吧 ..我感觉得几分钟
11 楼 ansjsun 2009-05-24  
我怕3yi个一个一个update完了一天也过了...分库吧..
多弄几个服务器.根据手机号码..河北一台服务器..河南一台..山东一台..山西一台..
10 楼 vlinux 2009-05-24  
真的不能分批提交
9 楼 jcs7575 2009-05-24  
分批查分批提交吧……
8 楼 vlinux 2009-05-24  
是不能分批
交互一次update,这个没有什么好偷懒的
7 楼 laiseeme 2009-05-24  
手册不就是让你分批么?
比如100条100条的update。。。
6 楼 vlinux 2009-05-24  
如果你真的用文档手册里面的批量提交方法去做,3亿条数据会让你的数据库down下来,因为你的数据库没足够的回滚段。

应该分批提交

特别是给这些号码发送信息的时候,我觉得更应该在收到短信网关回执的时候update一条的,否则批量update,如果其中发生什么问题导致回滚了,程序重启后继续处理,那时就会有客户收到重复的短信了
5 楼 天机老人 2009-05-24  
laiseeme 写道
天机老人 写道
按照我们的方案,大批量的查是没啥问题!但是大批量的更新非常成问题!
速度实在是难以想象!每更新一条就要开启关闭一次事物!

所以还是想听听大家的意见!


你去查查文档手册,里面有批量更新的方法。。。。

好的谢谢!
4 楼 laiseeme 2009-05-24  
天机老人 写道
按照我们的方案,大批量的查是没啥问题!但是大批量的更新非常成问题!
速度实在是难以想象!每更新一条就要开启关闭一次事物!

所以还是想听听大家的意见!


你去查查文档手册,里面有批量更新的方法。。。。

相关推荐

    基于VGG-16的海量图像检索系统1

    【基于VGG-16的海量图像...总的来说,基于VGG-16的图像检索系统是利用深度学习技术解决大规模图像数据检索问题的有效方法,它结合了深度学习模型的强大特征提取能力与高效的数据索引策略,实现了快速且准确的图像匹配。

    基于Sphinx+MySQL的千万级数据全文检索

    【基于Sphinx+MySQL的千万级数据全文检索】的架构设计着重解决大数据量下的高效全文检索问题。Sphinx是一款源自俄罗斯的开源全文搜索引擎,它在处理海量数据时表现出极高的性能和可扩展性。在DELL PowerEdge 6850...

    海量小文件元数据的分布式存储与检索.pdf

    本文提出了一种新的分布式存储与检索方法,通过分布式文件存储元数据,并采用元数据缓冲和Hash映射实现元数据的分布;同时,借助MapReduce并行程序实现元数据检索,并针对并行检索中存在的问题提出了局部位图索引的...

    Elasticsearch亿级数据检索性能优化案例实战!

    【Elasticsearch亿级数据检索性能优化案例实战】 在数据量巨大的业务环境中,Elasticsearch作为流行的全文搜索引擎,面临着如何高效处理亿级数据检索的挑战。本文将分享一个实际案例,探讨如何对Elasticsearch进行...

    虚拟列表快速显示海量数据

    - 虚拟列表模式要求数据检索是快速的,因此通常配合数据库查询优化或内存缓存来实现。 - 需要正确计算总行数,提供给`DataGridView`的`RowCount`属性,以便它能正确地处理滚动和显示状态。 - 在大量数据操作时,...

    人工智能-项目实践-检索-基于faiss构建大规模检索数据,文本数据通过simbert转化成emd.zip

    总的来说,这个项目展示了如何结合先进的深度学习模型和高效的检索技术,实现大规模文本数据的快速、准确检索。这对于搜索引擎优化、推荐系统、问答系统等领域都有重要的应用价值。通过对FAISS和SimBERT的深入理解和...

    solr千亿检索设计说明.zip

    本篇文章将详细探讨基于Solr实现的千亿级检索设计,以及其背后的Lucene结构和倒排索引技术。 首先,我们要理解Solr的核心功能:提供高效的全文搜索、 faceted search(分面搜索)、命中高亮、动态集群、实时添加...

    信息存储与检索\第三章\3 超星电子图书.ppt

    读秀学术搜索不仅拥有260万种图书、6亿页全文资料的数据库,还包含了大量期刊元数据、报纸元数据、人物简介和词条解释,形成了一个庞大的知识库。用户可以根据需求,进行全文、图书、期刊、报纸、学位论文和会议论文...

    延云YDB 大数据 万亿数据秒查

    ### 延云YDB:万亿数据秒级查询与分析引擎 #### 一、概述 随着信息技术的飞速发展,大数据已经成为推动企业决策、产品创新和业务增长的关键力量。面对日益增长的数据规模和复杂的数据结构,传统的数据分析工具已经...

    基于Spark的大数据即席检索与分析.pptx

    - **性能提升**:相比暴力扫描,万亿级数据秒查,而几百亿数据的暴力扫描需要半小时以上。 - **统计分析优化**:结合lucene倒排索引和parquet列存储,实现高效的统计分析,支持多维度钻取。 综上所述,基于Spark...

    eBay技术平台:掌控十亿级交易数据(Tony Ng).zip

    4. **搜索引擎优化**:为了快速响应用户的搜索请求,eBay可能会采用Elasticsearch或其他搜索引擎技术,对商品信息进行索引和检索。 5. **机器学习和人工智能**:eBay可能利用机器学习算法预测市场趋势,推荐商品,...

    Python-同步mysql数据到elasticsearch的工具

    MySQL作为一款广泛应用的关系型数据库管理系统,存储了大量结构化数据,而Elasticsearch则是一款实时分布式搜索和分析引擎,适用于非结构化数据的快速检索。将MySQL中的数据同步到Elasticsearch,可以实现更高效的...

    PHP 全文检索引擎 Sphinx 介绍

    3. **高可用性**:单台服务器上,Sphinx能支持高达100GB的文本和1亿条文档,确保了系统在大规模数据下的稳定运行。 4. **分布式搜索**:Sphinx支持分布式搜索,可以将搜索负载分散到多个节点,提高整体系统的处理...

    100亿数据量1万属性数据库架构设计

    在处理100亿数据量、10万并发和1万属性的数据库架构设计时,首先需要面对的是海量数据和高并发读写带来的挑战。此外,考虑到任意字段都可能进行组合查询,这就要求数据库架构不仅要能够存储大量数据,还要能够快速...

    应对数十亿的时序数据【开源项目的思路】

    2. 实时查询需求:为了进行即时分析,系统需要快速检索最近的热点数据。 3. 乱序入库:由于网络延迟和数据传输的异步性,数据到达和存储的顺序可能与实际发生顺序不一致。 4. 时间截面为主,多维度辅助:时间戳是...

    大规模分布式并行信息检索

    ##### 2.2 并行检索实现 在信息检索的过程中,用户提交查询请求后,代理程序会对其进行预处理,然后将处理后的查询发送给搜索程序,搜索程序执行查询并返回结果,最后由代理程序整合结果并返回给用户。这一过程本身...

    腾讯Hermes实时检索分析平台.pdf

    - **目标与优势**:Hermes旨在为公司内部的大数据分析业务提供一套实时的、多维的、交互式的查询、统计和分析系统,使万级维度、千亿级数据下的秒级统计分析成为可能。相较于传统的关系型数据库集群或内存计算平台,...

    信息检索与Web搜索.pptx

    3. **索引构建**:创建索引数据结构以支持快速搜索。 4. **索引压缩**:通过压缩技术节省磁盘空间并提高检索效率。 5. **检索模型与排序算法**:确定查询与文档之间关联性的方法,如布尔检索模型、向量空间模型、...

Global site tag (gtag.js) - Google Analytics