You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在DolphinDB中创建无明确时间分区的DFS数据库及数据表?

创建无分区DFS表的DolphinDB解决方案

在DolphinDB中,DFS表本质上是基于分区存储设计的,所以createPartitionedTable()确实要求指定分区模式。不过我们可以用单分区模拟无分区的效果,这是官方推荐的便捷方案,操作起来和无分区表几乎一致。

具体实现步骤

这里提供两种最常用的方式:

方式1:单VALUE分区(最直观)

这种方式通过创建只有一个分区值的VALUE分区数据库,把所有数据都放到同一个分区里,逻辑上就等同于无分区表。

  1. 先准备内存表(假设你的基础信息表结构如下):
// 示例内存表,包含id和基础信息字段
memTable = table(1..1000 as id, rand(`A`B`C, 1000) as category, rand(100.0, 1000) as score)
  1. 创建单分区DFS数据库:
// 创建一个只有1个分区值的VALUE分区数据库
db = database("dfs://basic_info_db", VALUE, [1])
  1. 添加固定值分区列并创建DFS表:
    因为createPartitionedTable()需要指定分区列,我们可以给内存表加一个固定值的列(比如dummy),所有行的这个列值都相同,这样就会被分配到同一个分区:
// 给内存表添加固定值的分区列
memTable = memTable.join!(table(take(1, memTable.size()) as dummy))
// 创建DFS表,指定dummy为分区列
db.createPartitionedTable(memTable, "basic_info_table", "dummy")
  1. 写入数据:
// 将内存表数据写入DFS表
append!(loadTable("dfs://basic_info_db", "basic_info_table"), memTable)

方式2:单RANGE分区(适合已有数值型字段的场景)

如果你的表本身有数值型字段(比如id),可以直接用RANGE分区,设置一个覆盖所有数据的区间,这样也只会生成一个分区:

// 创建一个包含所有可能id的RANGE分区数据库
db = database("dfs://basic_info_db_range", RANGE, [0, 1000000])
// 直接用id作为分区列创建DFS表(所有id都在0-1000000范围内,只会有一个分区)
db.createPartitionedTable(memTable, "basic_info_table", "id")
// 写入数据
append!(loadTable("dfs://basic_info_db_range", "basic_info_table"), memTable)

为什么这个方案可行?

虽然物理上是单分区存储,但在使用时完全不需要考虑分区逻辑:查询、更新、删除操作都和操作普通内存表一样,不会有分区带来的额外复杂度,完美满足你存储无时间分区基础信息的需求。

内容的提问来源于stack exchange,提问作者psui

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 15:08:16