首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏应用计算

    SPL轻量级文件存储提速查询实践

    把不再变化的历史数据存储成轻量级的 esProc SPL 列存文件,可以利用 SPL 语言的强大计算能力,跑出远超传统数据库的查询性能。 esProc SPL 很轻,直接嵌入应用就可以运行,在实现数据外置提速的同时,也不会让整个系统架构变得很复杂:这里准备了一套使用 SPL 外置数据提速查询的实践方法:第一篇 - 常规过滤及分组汇总第二篇 乾学院有例子数据 csv 文件和建表 SQL,模拟某公司线下订单和电子商务的部分数据。需要在 MYSQL 数据库中建表,并导入 csv 数据。 customer,存储线下客户数据,数据量较小:城市表 city,存储线下客户所在城市数据,数据量较小:州表 state,存储线下客户所在州数据,数据量较小:运货商表 shipper,存储线下运货商数据 SPL 代码 1:按 ctrl-F9 或单击执行按钮后,点击 A2 格,在右边可以看到 100 条数据。SPL 代码写在单元格中,可以直接用格名作为临时变量。

    23510编辑于 2025-08-26
  • 来自专栏应用计算

    第二篇 -COUNT DISTINCT:SPL轻量级文件存储提速查询实践

    但数据库无法保证存储的次序,很难实施这样的有序去重算法。esProc SPL 可以把数据导出后有序存储,实现这种高性能的有序去重计数。 数据外置时,要按照用户号有序存储,可以使用有序去重提高性能。 我们用 ETL 工具定义一个新的 Q2.etl 文件,重复前面的步骤,连接数据库 - 拖拽 events 表 - 编辑:这里按照客户号有序存储,可以使用有序去重提高性能。排序字段必须放在第一个。 A2 中游标的 group 函数,不带任何选项,默认是建立分组子集的,A3 中的 ~ 就表示当前分组子集。 2、思考:是否遇到过去重或者去重计数比较慢的情况?是否可以用有序去重来提速

    24510编辑于 2025-09-12
  • 来自专栏应用计算

    第六篇 枚举字段条件过滤--SPL轻量级文件存储提速查询实践

    SPL 代码 27:A1=now()2=file("employeeQ6.btx").import@b()3=A2. A1=now()2=file("employeeQ6.btx").import@b()3=A2. SQL 要使用子查询:select sum(shipping_fee)from orderswhere customer_id in ( select customer_id A1=now()2=file("customerQ6.btx").import@b()3=A2. 2、思考:在自己熟悉的数据库中有没有大表枚举字段过滤计算?是否可以用对位序列提速

    14510编辑于 2025-11-03
  • 来自专栏应用计算

    第四篇 - 大主子表关联--SPL轻量级文件存储提速查询实践

    这一篇介绍主键关联的提速。主表订单表和子表明细表的关联就是主键关联。SQL 中,这种关联仍用 JOIN 实现,在两个表都很大的情况下,常常出现计算速度非常慢的现象。 如果预先将主子表都按照主键有序存储,就可以使用归并算法实现关联。这种算法只需要对两个表依次遍历,不必借助外存缓存,可以大幅降低计算量和 IO 量。 先做数据准备,把历史数据从数据库导出为 CTX 文件。在 ETL 中定义 Q4.etl:修改两个表的名字,加上 Q4。 注意:两表要按照 order_id 连接,就按照这个字段有序存储。但不选中“用数据库排序”。生成 SPL 代码 18:A5和 A8 中用 #order_id 来声明 CTX 是对这个字段有序的。 2、思考:在自己熟悉的数据库中有没有大主子表关联?是否可以用有序归并方法提速

    20110编辑于 2025-10-20
  • 来自专栏应用计算

    第一篇 - 常规过滤及分组汇总:SPL轻量级文件存储提速查询实践

    我们以订单表为例实现 esProc SPL 数据外置,提速常规过滤及分组汇总计算。我们使用 SPL 的 ETL 工具来生成脚本,实现数据的转储。 打开工具 - 数据连接:点击连接后,数据库的表可以拖拽到工作区:工具 - 数据目录,设置数据文件存储的目录。工具 - 生成 SPLX 代码:导出后,记得这次新建的 etl 保存成 Q1.etl 文件。 SPL 代码 2:导出的 SPL 代码,是从 MYSQL 数据库中导出数据,转储成集文件 BTX。 需要注意的是,SPL 文件存储有其特定的适用场景。因为要导出数据,所以更适合计算不变的历史数据,其实这种场景就很多了。 2、从自己熟悉的测试数据库中导出较大的表,生成 BTX、CTX,尝试前面讲到的计算。

    18810编辑于 2025-09-05
  • 来自专栏应用计算

    第三篇 外键维表的关联:SPL轻量级文件存储提速查询实践

    这样就可以利用不同关联的特征,采用不同的手段甚至不同的存储方式有效提速。关联的一种情况是外键关联。一个表的普通字段(外键)和另一个表的主键关联。比如订单表与客户表、运货商表都是外键关联。 下面,我们以订单表、客户表、城市表、州表和运货商表为例,介绍 esProc SPL 外置数据提速外键关联的方法。 2、双击 employee_name。3、定义维表名 employee。4、定义维表序号列名称 id。5、定义维表值列名称 name。 SPL 代码 16:A2 中 customer_id:customer:# 的写法,是利用序号 #,在游标上完成订单记录与客户表的关联。 2、思考:在自己熟悉的数据库中有没有通过外键关联的多个表?是否可以用序号关联的方法来提速

    22310编辑于 2025-09-23
  • 来自专栏流浪猫的golang

    golang mongoDB GridFS查询 存储 删除文件

    GridFS 也是文件存储的一种方式,但是它是存储在MonoDB的集合中。 GridFS 用两个集合来存储一个文件:fs.files与fs.chunks。 GridFS是可以存储任何你想要存储文件,不仅仅是那些超过16M文件,意思是什么文件都能存。 此外,如果您的文件全部小于16 MB bson文档大小限制,请考虑将文件手动存储在单个文档中,而不是使用gridfs。您可以使用bindata数据类型来存储二进制数据。 打开fs.files可以看到数据库中有2文件一个叫做something.mp3 一个Test.mkv,Test.mkv是我刚刚上传的。

    3.5K10发布于 2018-08-02
  • 来自专栏韩曙亮的移动开发专栏

    【Android 文件管理】分区存储 ( 创建与查询图片文件 )

    文章目录 一、分区存储模式下使用 MediaStore 插入图片 二、分区存储模式下使用 MediaStore 查询图片 三、相关文档资料 Android 分区存储系列博客 : 【Android 文件管理 】应用可访问的存储空间 ( 存储空间分类 | 存储空间访问权限 | 分区存储 ) 【Android 文件管理】分区存储 ( 分区存储机制 和 文件索引数据 ) 【Android 文件管理】分区存储 ( MediaStore 文件操作 ) 一、分区存储模式下使用 MediaStore 插入图片 ---- 在上一篇博客 【Android 文件管理】分区存储 ( MediaStore 文件操作 ) 中 , Uri = $uri , 路径 = $path , 文件名称 = $name , 绝对路径 = $absolutePath") // 关闭游标 cursor.close() } 查询文件代码示例 进行操作 ; 三、相关文档资料 ---- Android 文件处理参考文档 : 数据和文件存储概览 : https://developer.android.google.cn/training/data-storage

    2K20编辑于 2023-03-29
  • 来自专栏应用计算

    第五篇 - 大主子表关联时的 EXISTS--SPL轻量级文件存储提速查询实践

    这样的计算本质上是在做主键关联,如果能预先将主子表都按照主键有序存储,也可以使用有序归并算法有效提速。esProc SPL 可以把主子表的 EXISTS 转化为有序归并,从而提升计算性能。 下面通过订单表和订单明细表的例子,介绍这种情况的外置提速方法。先完成数据准备,可以直接使用第四篇生成的 CTX 文件。例 5.1 对包含 7 号产品的订单,按照客户号分组统计订单个数。 A3 中游标的最后一个参数是 A2,表示多线程并行时,details 表会跟随 orders 表分段,保证后面两个表有序归并的正确性。 open().cursor(order_id,product_id;;A2)4=A3.group(order_id)5=A4.select(~.count(order_id)>1 && ! 2、思考:在自己熟悉的数据库中有没有大主子表关联计算 EXISTS?是否可以用有序归并方法提速

    11010编辑于 2025-10-30
  • 来自专栏方丈的寺院

    存储优化(2)-排序引起的慢查询优化

    摘要 排序引起的慢查询,通常不是那么容易发现,经常和数据分布有关系。 往往在业务刚开始时并没有什么问题,但是随着业务的发展,数据分布呈现一种特定的规律,导致了慢查询,或者并不是什么慢查询,但是随着并发请求数增加,数据库的IOPS使用率变高,进一步导致cpu/内存使用率飙高 ORDER BY id DESC LIMIT 0, 10 play是抽奖记录表,sql是查抽中奖品的前10个大奖中奖者,来吸引其他用户参与抽奖,biz_id建了索引 例2 查询优化 业务侧避免此类查询 从业务侧分析,是不是需要此类查询。 引入其他存储方案 比如例1,业务需要查询按照时间顺序的中大奖的前N个人。这个业务侧可以将数据保存到在redis中,listz中存topN的数据。然后发现有中大奖的人,扔到redis队列即可。

    1.1K20发布于 2020-03-20
  • 来自专栏互联网运维杂谈

    文件系统fsck提速方案

    在分布式文件系统(例如HDFS)中,当出现异常掉电、加电恢复后,通常存储系统会检测内部数据的一致性,检测分为两个层次 首先是单机文件系统的数据一致性检查 其次是使用了erasure coding编码的存储系统进行数据一致性校验 100-150MB/s 之间),因此提升文件系统的fsck速度就显得愈发重要,本文中以 ext4 文件系统为例,列举除了文件系统 fsck 提速的若干方案。 ,以优化fsck中磁盘对于元数据的随机寻址(e2fsck中 phase1/扫描文件间接索引占据了总时间的90%以上),进而提高性能,由于需要修改磁盘上数据存储的格式,所以此方法不可行。 思路: 建议如果需要优化fscheck本身,下一步可以考虑和应用类型结合起来进行(例如找到应用关心的文件进行检查,不关心的直接跳过,对于hadoop hdfs之类的数据存储,目录和文件均有用,因此此方法不适合 ),并且在mkfs的时候,使用bigalloc和inline data的功能,大文件保证其连续性,减少元数据存储量,小文件可以直接合并入 inode,减少 seek 的程度,不过这种方案并未从根本上解决问题

    2.2K10发布于 2019-11-19
  • 来自专栏EDI技术知识

    如何通过AS2 message id查询文件

    此前的文章如何在 EDI 系统中查询文件? 中,我们介绍了在 EDI 系统中查询文件的几种方法。今天的文章主要针对以往客户遇到的实际用例为大家展开介绍。 业务人员如果手动逐一查询 message id ,工作量很大,并且会耗费大量时间。您可能会疑惑,为什么需要使用 message id 来查询文件而不是文件名呢? 8z3L@AS2_IN_AS2_OUT要求A 公司通过此 message id 查询文件是否已成功接收。 如上图所示,经 AS2 端口接收后,文件 test_data_1.edi 的 message id 需要下载对应 EDI 文件的 MDN 文件方可查询查询结果如图所示:成功查询到一条AS2端口接收的,message id 与原始文件相匹配的文件,表明该文件已成功被 A 公司接收。

    1.4K20编辑于 2022-09-28
  • Cloudfare R2存储 文件上传工具

    简介这是一个基于 PyQt6 开发的图形界面工具,用于管理和上传文件到 Cloudflare R2 存储。 Github仓库: Cloudfare-R2-FIle-Uploader主要功能✨ 文件/文件夹上传 文件管理(删除、重命名等) 文件分享(支持自定义域名和 R2.dev 域名) 文件列表导出 支持中英文界面切换 配置登录 Cloudflare 控制台进入 R2 > 创建存储桶获取以下信息:Account IDAccess Key IDAccess Key SecretBucket NameEndpoint URL =你的Access_Key_SecretR2_BUCKET_NAME=你的存储桶名称R2_ENDPOINT_URL=你的Endpoint_URLR2_CUSTOM_DOMAIN=你的自定义域名(可选)R2 使用自定义域名需要先在Cloudflare配置好DNS R2.dev域名为Cloudflare提供的默认域名性能优化 大量文件上传时会自动控制并发 会定期自动刷新文件列表和存储容量示例:选择文件夹上传示例

    2K10编辑于 2024-11-09
  • 来自专栏周拱壹卒

    iTerm2 冷启动提速

    在 ~/.zshrc 文件的最前面加上: zmodload zsh/zprof 最后面加上: zprof 之后每次打开 iTerm2 时,就会看到一个类似下面的统计信息: Last login: Sun 2 258.53 129.26 20.55% 258.47 129.24 20.55% __conda_activate 3) 2 258.61 129.30 20.56% 0.08 0.04 0.01% conda 2/2 258.53 129.26 20.55% 2/2 0.06 0.03 0.00% 0.06 0.03 __conda_hashr [29] --------------- 2 0.06 0.03 0.00% 0.06 0.03 __conda_activate [2] 29) 2

    1.1K10编辑于 2024-04-09
  • 来自专栏数据计算

    数据外置提速革命:轻量级开源SPL如何用文件存储实现MPP级性能?

    这些历史数据大多数情况下是不再变化的,如果能存成文件会更简单。但是文件本身没有计算能力,无法直接实施条件过滤、分组汇总等运算,更谈不上复杂的分析任务了。 SPL可以让文件拥有计算能力,用它的轻量级列存文件存储不变的历史数据,较小的投入就能实现高速查询。SPL引擎非常轻,部署后占用存储空间仅几百M,单机就可以运行,无须集群。 实现数据外置提速的同时,也不会让系统架构变得很复杂:轻量的SPL,计算能力却非常强大,在列式存储、数据压缩、多线程并行等方面都做了深度优化,能让条件过滤、分组汇总这些常规运算的性能大幅提升,完全不输于专业的 SPL常规计算与MYSQL对比(单位:秒)注:测试环境和方法参见  《如何用esProc将数据库表转储提速查询》SPL代码也很简单,比如大订单表的过滤和分组汇总:专业OLAP数据仓库利用列存压缩等技术能让常规运算中跑出较高性能 有查询、报表性能痛点的小伙伴赶快来报名参加吧!(前往乾学院首页右上角报名吧~)

    23910编辑于 2025-05-23
  • 来自专栏shysh95

    文件存储

    ,最后把数据块再写回磁盘 文件存储 文件的数据在磁盘上的存储方式有哪几种? 连续空间存储方式 非连续空间存储方式 连续空间存储方式 连续空间存储使用前必须要知道文件的大小,这样文件系统才可以在磁盘上找到一块连续的空间分配给文件文件头里需要指定起始块的位置和长度。 连续空间存储优点? 文件数据紧密相连,一次磁盘寻道便可读出整个文件,读写效率高。 连续空间存储缺点? 显式链表整个查询过程都是在内存中进行,因此检索速度快,而且大大减少了磁盘的访问次数。但是由于整张表都存放在内存中,所以不适合大磁盘。 索引方式的特点? Unix中文件数据的存储方式?

    4.6K30发布于 2021-10-26
  • 来自专栏Spring相关

    文件存储

    文件存储 1.新建一个项目FilePersistenceTest 2.修改activity_main.xml: <?xml version="1.0" encoding="utf-8"? }catch(Exception e){ e.printStackTrace(); } Log.d(TAG, "读取到的文件的内容为

    3.8K20发布于 2018-12-18
  • 来自专栏路人甲Java

    Mybatis系列第12篇:掌握缓存为查询提速!

    缓存就是存储数据的一个地方(称作:Cache),当程序要读取数据时,会首先从缓存中获取,有则直接返回,否则从其他存储设备中获取,缓存最重要的一点就是从其内部获取数据的速度是非常快的,通过缓存可以加快数据的访问速度 一级缓存的存储介质是内存,是用一个HashMap来存储数据的,所以访问速度是非常快的。 二级缓存默认是没有开启的,需要我们在mybatis全局配置文件中进行开启: <settings> <! 查询一级缓存中是否有对应的数据,如果有则直接返回,否则继续向下 访问db获取需要的数据,然后放在当前SqlSession对应的二级缓存中,并且在本地内存中的另外一个地方存储一份(这个地方我们就叫TransactionalCache 二级缓存案例 mybatis全局配置文件开启二级缓存配置 <settings> <!

    66920发布于 2020-02-18
  • 来自专栏小工匠聊架构

    数据存储文件存储

    , * 默认为 /data/data//files */ private void save2File() { try { //向文件写入内容 e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } 文件存储位置 totalBlocks = stat.getBlockCount(); return totalBlocks * blockSize; } /** * 获取手机内置存储剩余存储空间 stat.getAvailableBlocks(); return availableBlocks * blockSize; } /** * 获取手机内置存储总的存储空间 xml2Product = new XML2Product(); // 开始分析priducts.xml文件 android.util.Xml.parse

    26.6K20发布于 2021-08-16
  • 来自专栏喵叔's 专栏

    【原创】存储优化--查询分离

    这个更新的数据库被称为主存储,用来查询的数据库被称为查询存储。 3.1 如何触发 常见的查询分离触发方式有三种: 在向主存储更新数据后马上向查询存储更新同样的数据,并在查询存储数据更新完成后向用户返回结果。 而且这种方式还会减缓写操作的响应时间,因为我们要等待查询存储的数据跟新完成后才能返回响应结果。 在向主存储更新数据后异步更新查询存储,不等待查询存储数据更新完成,就向用户返回结果。 这种方式不影响主流程,但是如果在查询存储更新前,用户进行了相关查询,就会返回过时的数据,而且这种方式对代码同样有侵入性。 监控主存储日志,如果发生变更,就去更新查询存储查询存储更新服务在获取到这个消息后,首先在主存储查询 需要更新到查询存储字段为true的数据,然后将这些数据批量更新到查询存储中,更新完毕后再将这些数据的需要更新到查询存储字段改为false即可。

    58551编辑于 2022-09-28
领券