TorQ: Kdb+ 生产框架
摘要
TorQ是一个面向kdb+的开源生产框架,提供核心功能、工具和最佳实践,帮助开发者高效构建和管理kdb+系统。
查看缓存全文
缓存时间: 2026/05/22 21:26
DataIntellectTech/TorQ
来源:https://github.com/DataIntellectTech/TorQ
TorQ 标志
阅读我们的文档 (https://DataIntellectTech.github.io/TorQ/)
该框架通过在 kdb+ 之上实现一些核心功能和实用工具,构成了生产级 kdb+ 系统的基础,使开发者能够专注于应用业务逻辑。它尽可能多地融入了最佳实践,特别关注性能、进程管理、诊断信息、可维护性和可扩展性。在可能的情况下,我们尽量避免重新发明轮子,而是使用来自 code.kx.com 的贡献代码(直接使用或修改)。该框架适用于那些希望从零开始创建新的 kdb+ 系统,或者希望为其现有 kdb+ 系统添加额外功能的人。
快速浏览我们的宣传册 以获取更多信息。开始生产环境捕获的最简单方法是下载并安装其中一个 Starter Packs (https://github.com/DataIntellectTech),或阅读我们的 Github-Pages 网站 (https://DataIntellectTech.github.io/TorQ/)。我们还有一个 Google Group 用于提问/讨论 (https://groups.google.com/forum/#!forum/kdbtorq)。
快速开始
要启动一个包装在框架中的进程,你需要设置环境变量,并为该进程指定类型和名称。类型和名称可以通过命令行显式传递。setenv.sh 是 Unix 类型系统上如何设置环境变量的示例。对于 Windows 系统,请参见 http://www.computerhope.com/issues/ch000549.htm。kdb+ 期望所有路径使用 /(正斜杠)分隔,因此所有操作系统上的所有路径都应使用正斜杠分隔。
为了避免标准输出/错误被重定向,请使用 -debug 标志
./setenv.sh /- 假设为 Unix 类型操作系统 q torq.q -proctype test -procname mytest -debug
要加载文件,请使用 -load
q torq.q -load mytest.q -proctype test -procname mytest -debug
这将启动一个在框架内运行的进程,并使用所有默认值。其余内容请阅读文档!
使用 Mkdocs 更新文档
要对文档网站进行更改,你只需在你做出更改的分支中使用以下命令:
mkdocs gh-deploy
系统会提示你输入用户名和密码,之后网站应该已经更新。如果你想在本地测试网站,可以使用 mkdocs。首先使用命令:
mkdocs build
然后:
mkdocs serve -a YourIp:Port
前往它给出的地址,检查你的更改是否生效。有关使用 mkdocs 的更多信息,请参见 (http://www.mkdocs.org/)
许可证
使用了第三方许可证,参见 Licenses、Apache 2.0 和 OpenLDAP、kdbldap.so
发布说明
- 5.2.12, 2025年11月
- 更新 Partbyfirstchar 以按首字符分组保存
- 5.2.11, 2025年11月
- Partbyfirstchar 用于按第一个符号字符对 WDB 磁盘分区
- 5.2.10, 2025年9月
- 基于 int 列的 Partbyenum
- 当 STP 处于内存批处理模式时更新 .z.exit
- 修复:tickerlogreplay.q 中默认 tempdir 为 hsym
- 为多线程进程添加并行压缩
- 5.2.9, 2025年3月
- 每个表分区排序并应用一次属性
- 移除 kill 命令覆盖
- 添加 replaymaxrows 用于恢复时的可选行数限制
- 5.2.8, 2025年1月
- 修复 partbyenum 以针对占位符号进行枚举
- 5.2.7, 2025年1月
- 向 CTP 添加订阅者信息
- 修复 IDB 日内写入
- 5.2.6, 2024年12月
- 如果环境变量未设置则添加警告并改进日志记录
- 修复 idbreload 问题
- 5.2.5, 2024年11月
- 使排序进程转而调用 initmissingtables 和 notifyidbs
- 5.2.4, 2024年11月
- 支持 WDB 中的即时写入
- 5.2.3, 2024年11月
- 修正 .merge.mergebypart 在 upsert 时的错误捕获
- 修正 .merge.getpartchunks 以使用过滤后的视图
- IDB WDB 连接重试
- 确保在 WDB 保存后重新加载 idb 进程
- 5.2.2, 2024年10月
- IDB 默认写入模式修复,修复表行计数
- WDB 0 秒 eodwaittime - 修复后端重新加载
- IDB 文档增强
- 5.2.1, 2024年9月
- 修复 Windows 上的 IDB:WDB EOD 现在在删除 WDB 文件夹时不会失败
- IDB 通知错误修复:WDB 不断发送 IDB 重新加载,即使没有发生写入操作
- 5.2.0, 2024年9月
- 新的 IDB(日内数据库)进程
- 新的 WDB 写入模式 partbyenum
- 修复 pubsub 初始化后进程存储整个表而非模式的问题
- Datecheck 函数周期修复
- 5.1.0, 2024年5月
- 添加了对使用 int 分区的 DataAccess API 的支持
- 添加了对 FinSpace STP、WDB 和 AWS Dataviews 的支持
- 新增 .os.hdeldir 函数。使用 hdel 代替 rm 删除目录,或仅删除其内容
- 与 kdb 版本 4.1 相关的错误修复
- 5.0.3, 2024年3月
- 修复 rdb 中 .save 配置的默认值
- 修复 HTTP/qcon 上的 syncexec 查询错误
- 修复 dataaccess API 初始化的错误
- 延迟响应现在在失败或发出错误信号时返回
- 更新 finspace.q API 参数以跟上 AWS 文档
- 在 FinSpace 中设置默认启动参数
- finspaceservers.q 将直接使用 aws.list_kx_clusters 而不是与 csv 匹配
- 代码重构/小幅更改以对齐 Finspace 变化(发布时未使用)
- 5.0.2, 2023年12月
- 从必需的启动变量列表中移除 KDBFINSPACE 环境变量
- 5.0.1, 2023年12月
- 将 TorQ Amazon Finspace 项目引用重命名为 TorQ-Amazon-FinSpace-Starter-Pack
- 5.0.0, 2023年12月
- 更新 TorQ 以支持使用新的 TorQ-Amazon-Finspace-Starter-Pack 时的 AWS Finspace (https://dataintellecttech.github.io/TorQ-Amazon-FinSpace-Starter-Pack/)
- 更新了支持电子邮件引用
- 更新了安装指南
- 日志输出现在可以是 json 文件格式:启动时添加 ‘-jsonlogs true’ 标志
- 处理器现在可以从 appcode 加载
- 现在可以指定多个 LDAP 服务器
- 改进了测试
- 修复了 LDAP 错误
- 修复了心跳禁用逻辑
- 修复了权限错误
- 修复了数据质量进程
- 修复了因许多小分区导致按部分合并中断的问题
- 修复了 DQE 使用替代 hdb 类型时的保存问题
- 修复了 help.q 错误
- loadaddcnfg 中的错误修复
- 4.4.0, 2023年5月
- 品牌重塑:将 AquaQ 引用更新为 Data Intellect
- 4.3.0, 2023年1月
- 错误修复
- 更新文档
- 增加了在 q 进程内以编程方式启动额外 TorQ 进程的功能
- 改进了使用条带函数时的符号分布
- 改进了 WDB 重新加载功能
- 改进了 Data Access API 的功能并应用了错误修复
- 添加了可配置的 WDB 合并功能
- 修复了在批处理模式下使用 .u.sub 时的订阅者功能
- 修复了通过 .u.end 的日终消息传递
- 修复了日终保存进程以防止数据保存到第二天的问题
- 修复了 analyticslib.q 中的 rack 函数
- 4.2.0, 2021年12月
- 为 Data Access API 添加了功能
- 添加了数据条带化
- 错误修复
- 改进了测试
- 4.1.1, 2021年6月
- Data Access API 错误修复
- 改进了重叠进程周围的属性路由
- 4.1.0, 2021年4月
- Data Access API 更新博客文章 (https://dataintellect.com/data-access-api/) 和 文档
- 4.0.1, 2021年3月
- 错误修复
- 文档改进
- 测试改进
- 4.0.0, 2020年12月
- 更新文档
- 分段 Tickerplant
- 测试框架
- 3.8.0, 2020年10月
- 更新文档
- 添加安装脚本
- 包容性术语
- DQS、DQC 和 DQE 升级
- PCAP 功能添加
- 3.7.0, 2020年5月
- 添加了数据质量系统(博客文章 (https://dataintellect.com/torq-data-quality-system/) 和文档 (http://dataintellecttech.github.io/TorQ/Processes/#torq-data-quality-system-architecture))
- 修复 k4unit 测试使其能与 kdb+ 4.0 一起工作。
- 3.6.0, 2020年4月:
- 添加了用于监控的 DataDog 集成:([博客文章] (https://dataintellect.com/monitoring-a-torq-system-with-datadog/)
- 改进了 k4unit 集成
- 已通过 kdb+ 4.0 测试
- 修复通过网关的 reval 调用
- 修复在指定 -T 时 RDB 日终超时问题
- 各种小改进和错误修复
- 3.5.0, 2019年8月:
- 更新了 .torq stop 和 .torq summary 函数
- 添加了 .torq restart 函数
- 更新了 Grafana
- 添加了监控检查脚本
- 如果尝试在 Win64 上运行,则禁用电子邮件
- 修改 Opencon 以将 user:password 附加到 tcps 连接
- 错误修复
- 3.4.1, 2019年1月:
- 发现并修复了网关查询 .gw.syncexec 的错误
- 3.4.0, 2018年12月:
- 更新了 torq.sh 脚本,包含调试和打印启动行。
- 集成 Monit 用于监控 TorQ。
- 集成 Grafana 适配器,允许可视化 TorQ 进程数据。
- 添加了服务层,用于跨所有应用程序的客户端特定自定义。
- 错误修复包括:
- 支持在通过 torq.q 启动时为进程指定 parentproctype
- 检查非 TorQ 进程的 .proc.getattributes 的函数。
- 当未加载 setenv 时退出
- 现在允许在调试模式下使用 qcon
- 异步网关请求返回空结果时挂起的问题
- 3.3.0, 2018年5月:
- 升级至 kdb+ v3.6 运行。请注意,它仍然向后兼容以前的版本。
- 实现了并发同步请求,作为 3.6 升级的一部分
- 为网关添加了响应格式化器
- 添加了低功耗模式 - 旨在与 Kx On Demand 许可证一起使用
- 添加了初始化函数,在加载脚本并建立连接后调用。
- 更改了启动脚本,可以单独、批量或一次性启动或停止进程。所有进程配置现在位于 $KDBCONFIG/process.csv 中的一个位置。
- 修复了错误括号导致权限配置以错误顺序加载的错误
- 3.2.0, 2018年2月:
- 添加了分析库的初始版本 (http://dataintellecttech.github.io/TorQ/analyticslib/),这是一组辅助数据操作的函数
- 添加了可选的依赖检查器 (http://dataintellecttech.github.io/TorQ/gettingstarted/#application-dependency),供应用程序检查它们是否具有最低的 TorQ 和 kdb+ 依赖
- 向 filealerter 添加了 kdb 压缩 (https://github.com/DataIntellectTech/TorQ/commit/1b048d5e52fa26d537d6c88064b533f376ef08c6)。用例是压缩 tickerplant 日志文件,因此可以直接回放日志文件,而无需单独的解压缩步骤
- 添加了 -onelog 命令行 (http://dataintellecttech.github.io/TorQ/gettingstarted/#logging) 选项,将 stdout/stderr 写入同一个日志文件
- 向数据加载工具添加了文件模式选项 (http://dataintellecttech.github.io/TorQ/utilities/#dataloaderq)
- 错误修复
- 3.1.0, 2017年5月:
- 添加了 kafka,这是一个具有消息日志持久存储的实时消息传递系统
- 添加了 datareplay.q,其功能是从历史数据生成 tickerplant 函数调用,可由订阅者函数执行
- 添加了 subscribercutoff.q,其功能可用于从进程中切断缓慢的订阅者
- 为 tickerlogreplay 添加了新的写入方法,以匹配 WDB 中的写入方法
- 3.0.0, 2017年1月:
- 添加了权限系统,允许对用户和组进行细粒度访问控制
- 添加了 LDAP 支持,允许用户针对 LDAP 服务器进行身份验证
- 改进的文档现已可在 http://dataintellecttech.github.io/TorQ/ 获取
- 2.7.0, 2016年11月:
- 整合了 Tickerplant。Tickerplant 为实时订阅者提供更快的恢复,并改进了时区处理
- Filealerter 使用一张展开表来存储已处理数据的表。如果它找到当前格式(平面)的表,会将其改为展开格式
- 网关错误修复
- 小改进
- 2.6.2, 2016年9月:
- 向 wdb.q 添加了 .z.pd 和 peach 逻辑
- 错误修复
- 2.6.0, 2016年8月:
- 添加了广播发布
- 添加了域套接字和 tcps 作为 IPC 连接机制
- 添加了从域套接字回退到 tcp 的功能
- 新网关(允许发送属性,而不是指定要访问的进程)
- 心跳订阅更简单
- 支持 snappy 压缩
- 已通过 kdb+ 3.4 测试
- 错误修复
- 2.5.0, 2016年4月:
- 添加了 u.q - 来自 KDB+ Tick 的发布/订阅代码
- 改进了 memusage.q 以进行采样
- 更新了 dataloader.q
- 确保所有配置都可以从 KDBAPPCONFIG 读取
- 2.4.0, 2016年2月:
- 添加了 k4unit,允许通过 -test 参数自动运行测试
- 扩展了应用配置处理,使得所有默认配置都可以在 $KDBAPPCONFIG 中找到
- 错误修复
- 2.3.0, 2015年12月:
- 向 wdb 进程添加了可选的写入方法,允许在白天将数据写入自定义分区方案。 在日终数据被移动到 hdb 之前,数据被合并而不是排序,这将使数据能够更早被访问。 对于基数较低的(不同元素数量较少)数据集,例如外汇市场数据,可选方法可能节省大量时间
- 向消息处理器添加了写入访问控制(使用 reval),限制查询客户端在原位修改数据的能力
- 添加了返回 kdb+ 对象近似内存大小的功能
- 错误修复
- 2.2.1, 2015年11月:
- 错误修复 - 修复了当 par.txt 可用时 endofdaysort 不抛出类型错误的问题
- 错误修复 - 修复了网关,使得当客户端断开连接而另一个客户端查询多个服务器时,结果不会被丢弃
- 2.2.0, 2015年10月:
- 使用 $KDBAPPCONFIG 环境变量添加了应用配置管理
- 在心跳表中添加了 pid、主机和端口
- 更改了网关以使其非侵入性
- 错误修复
- 2.1.0, 2015年7月:
- 添加了链式 tickerplant 进程
- 更新了 housekeeping.csv 以包含额外列 agemin,表示在 find 函数中使用分钟还是天
- 更新了电子邮件库
- 2.0.1, 2015年5月:
- 添加了 RDB 进程,扩展了 kdb+ tick 中的 r.q。
- 添加了 WDB 以在白天定期写入数据。扩展了 w.q。
- RDB 和 WDB 允许无缝的日终事件(无数据中断,无 tickerplant 背压)
- 添加了报告进程,定期运行报告并处理结果
- 向 process.csv 添加了环境变量解析,以提高可移植性。如果进程启动时未指定端口,它将根据 proctype 和 procname 从 process.csv 中查找。
- 添加了 -localtime 标志,允许进程在本地时间而非 GMT 运行(日志消息、定时器调用等)。此更改向后兼容 - 没有 -localtime 标志时,进程将在 GMT 中打印日志等,但也可以拥有不同的 .z.P
- 添加了订阅代码,用于管理对多个数据源的多个订阅
- 添加了使用 libcurl 的电子邮件库。用于从 TorQ 进程发送电子邮件
- 向数据库代码添加了标准监控检查
- 添加了数据加载器脚本。实用函数,用于将数据目录分块加载到数据库中,最后进行排序和分区
- 添加了 tickerplant 日志恢复实用程序,以从日志文件中恢复尽可能多的消息,而不是在第一个错误消息处停止
- 添加了压缩进程,用于运行并压缩给定数据库
- 修改了压缩代码以处理 par.txt 数据库
- 修改了压缩代码和 housekeeping 进程以与 kdb+ 2.* 一起运行
- 修改了标准输出/错误日志记录和使用日志记录,以包含进程名称和进程类型(logmsg 表已更改,以及一些函数)
相似文章
dbt-labs/dbt-core
dbt Core v2.0 是一个基于 Rust 的彻底重写版本,目前处于 Alpha 阶段。它承诺实现更快的解析速度、更严格的语言规范以及可扩展的 Parquet 工件,使分析师和工程师的数据转换更加高效。
l: 用于 k 和 q 的新运行时
l 是一个用于 k4、q 和 qSQL 的新运行时,提供透明的 SIMD、压缩向量和自动并行性,同时保持与现有代码的完全兼容。它针对华尔街的高性能计算。
@no_stp_on_snek: 如果你想试试,可以在这里找到:
这是一个 llama.cpp 的分支,集成了 TurboQuant+,用于先进的 KV 缓存和权重量化,支持跨后端内核(Apple Silicon、NVIDIA CUDA、AMD ROCm、Vulkan),并被 LocalAI、Chronara 和 AtomicChat 用于生产环境。
DKV: 用于本地LLM推理的开源KV-cache压缩框架(CLI + 技术报告)
DKV是一个开源框架,用于在本地LLM推理过程中压缩KV-cache,提供CLI和技术报告。
@songhan_mit: 探索 KDA (Kernel Design Agents): https://github.com/mit-han-lab/kernel-design-agents…
KDA (Kernel Design Agents) 是来自 MIT HAN Lab 的一个开源、以代理为中心的工作流,用于使用编码代理对性能敏感的 CUDA 内核任务进行研究、实现、验证和迭代。它帮助 Databricks 在 NVIDIA 的 SOL-ExecBench 排行榜上获得了第一名。