当前位置: 代码网 > it编程>数据库>Mysql > 大数据小内存排序问题如何巧妙解决

大数据小内存排序问题如何巧妙解决

2025年02月13日 Mysql 我要评论
大数据小内存排序问题,很经典,很常见,类似的还有比如 “如何对上百万考试的成绩进行排序” 等等。三种方法:数据库排序(对数据库设备要求较高)分治法(常见思路)位图法(bitma

大数据小内存排序问题,很经典,很常见,类似的还有比如 “如何对上百万考试的成绩进行排序” 等等。

三种方法:

  • 数据库排序(对数据库设备要求较高)
  • 分治法(常见思路)
  • 位图法(bitmap)

方法概要

  • 数据库排序(对数据库设备要求较高)

    操作:将数据全部导入数据库,建立索引,数据库对数据进行排序,提取出数据。
    特点:操作简单, 运算速度较慢,对数据库设备要求较高。

  • 分治法(常见思路)

    操作:操作与归并排序的思想类似,都是分治。

    将数据进行分块,然后对每个数据块进行内部的排序(假如是对int形数据升序)。

    和归并排序类似,每个数据块取第一个数据(当前块的最小数据),然后比较取出的数据,取其最小加入结果集。

    重复2操作,直到取完所有数据,此时排序完毕。

    特点:

  • 位图法(bitmap)

    操作:基本思想就是利用一位(bit)代表一个数字,例如第 3 位上为 1,则说明 3 这个数字出现过,若为0,则说明 3 这个数字没有出现过。很简单~

    ​ java.util 封装了 bitset 这样一个类,是位图法的典型实现。

    特点:

    • 可读性差(不是一般的差 🤔)

    • 位图存储的元素个数虽然比一般做法多,但是存储的元素大小受限于存储空间的大小。要想定义存储空间大小就需要实现知道存储的元素到底有多少

    • 对于有符号类型的数据,需要用 2 位来表示,比如 第 0 位和第 1 位表示 0 这个数据,第 2 位和第 3 位表示 1 这个数据......,这会让位图能存储的元素个数,元素值大小上限减半

    • 只知道元素是否出现,无法知道出现的具体次数

到此这篇关于大数据小内存排序问题如何巧妙解决的文章就介绍到这了,更多相关大数据小内存排序问题内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

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

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com