大数据批量键值查询怎样才会更快

大数据批量键值查询怎样才会更快一般选择数据库来存放数据,并借助数据表的索引来加快检索速度。利用索引查找数据,即使数据总量达到有10亿,对于单条记录的查找效率大约在数十毫秒(复杂度为LogN)。但是,如果需要查询的键值很多,比如多…

大数据批量键值查询怎样才会更快

一般选择数据库来存放数据,并借助数据表的索引来加快检索速度。利用索引查找数据,即使数据总量达到有10亿,对于单条记录的查找效率大约在数十毫秒(复杂度为LogN)。但是,如果需要查询的键值很多,比如多达几千甚至几万的时候,如果每次都独立查找,那读取和比较也会累积到几万甚至几十万次,时间延迟由此也会涨到几十分钟甚至小时级别,这时候再简单地使用数据库索引对于用户体验必然是难以容忍的了。

比如下面这样的查询:

结构如下:

字段 类型 备注
id long 1000000000001开始自增
data string 随机字符串(长度为 180 字节)

对这样结构的6亿条数据,从中取1万个随机id对应的记录,用Oracle大约就需要120 秒了。

使用的SQL大概这样:select * from testdata where id in (…)

另外由于in中的个数最大1000个,还需要多次查询后的结果再合并,处理起来也比较麻烦。

同样的数据,用集算器来处理,代码简单且查找高效,看下面这个例子:

  A B
1 =file(“testdata.ctx”).create() //打开组表文件testdata.ctx
2 =A1.index@3(id_idx) //加载三级索引
3 =keys //待查找的随机键值序列
4 =A1.icursor(;A3.contain(id),id_idx) //利用组表索引id_idx查找

这里使用了集算器组表功能,基于高性能索引和批量键值查找,可以有效地应对这种场景。该场景下,集算器查询仅用了20秒,相比Oracle120秒提升了6倍。感兴趣可以参考:性能优化教案—查找

集算器还很容易嵌入到Java应用程序中,Java如何调用SPL脚本有使用和获得它的方法。

关于集算器安装使用、获得免费授权和相关技术资料,可以参见如何使用集算器

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/7855.html

(0)
上一篇 2023-03-12
下一篇 2023-03-12

相关推荐

  • 使用Python写标题

    使用Python写标题在这个信息量爆炸的时代,我们每天都会接收到大量的信息,网页就是其中之一。当我们打开一个网页时,页面的呈现方式直接影响我们对这个网站的印象。标题的设计是页面最重要的元素之一,能够直接决定读者是否停留和浏览。

    2024-08-01
    31
  • Spyder汉化教程

    Spyder汉化教程Spyder是一款开源Python集成开发环境(IDE),简单易用,功能强大,适用于数据分析、机器学习、科学计算等领域。但是,官方版本的Spyder是英文界面,因此对于不懂英文的用户来说可能会带来一定的困扰。本篇文章将教大家如何将Spyder汉化,方便使用。

    2024-06-19
    52
  • posterior descending artery_poster session

    posterior descending artery_poster session本文作者:Craig Kerstiens ,目前在负责 @citusdata 的云团队。Citus 将 Postgres 扩展为可水平扩展的分布式数据库。本文是他之前一个好友采访他的记录(英文原文请…

    2022-12-20
    931
  • Python已安装库查看方法

    Python已安装库查看方法随着Python的广泛应用,越来越多的人开始学习和使用这个编程语言。在编写Python代码时,我们经常会使用到各种第三方库,这些库可以帮助我们更方便、更快速地完成各种任务。但是,当我们编写代码时,有时候会忘记自己已经安装了哪些库,需要查看已安装的库列表。本文将会介绍几种查看Python已安装库的方法。

    2024-08-03
    28
  • sql server 语句优化_优化sql语句10种方法

    sql server 语句优化_优化sql语句10种方法https://www.cnblogs.com/My-Dream/p/6270308.html https://www.cnblogs.com/xunziji/archive/2012/03/20/…

    2023-04-05
    169
  • 第一节——初识数据库系统[通俗易懂]

    第一节——初识数据库系统[通俗易懂]什么是数据库? 数据库是具有关联关系的数据的集合(Collection of related data) 而关系型数据库则以表作为其基本核心,换句话说,这种类型的数据库是各种由相互关联的表(或关系)的

    2023-04-13
    177
  • Python中的“带斜线的钟”符号是什么意思?

    Python中的“带斜线的钟”符号是什么意思?在Python中,我们经常会看到“带斜线的钟”符号“/”被用在数学运算和其他地方。这个符号代表除法运算符,表明将被除数除以除数的结果。 例如:5 / 2 = 2.5。

    2023-12-26
    109
  • 如何正确书写 Python 路径

    如何正确书写 Python 路径在编写 Python 代码时,路径操作是一个常见的操作。无论是读取文件,还是导入模块,路径操作都是必须的。因此,正确地书写 Python 路径是 Python 开发中不可或缺的一部分。

    2024-09-19
    14

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注