当前位置: 首页 > article >正文

DolphinDB分布式表:创建与管理

目录摘要一、分布式表概述1.1 什么是分布式表1.2 分布式表特点1.3 分布式表 vs 内存表二、创建分布式表2.1 创建分布式数据库2.2 创建分布式表2.3 创建维度表三、数据写入3.1 批量写入3.2 并行写入3.3 流式写入四、数据查询4.1 基本查询4.2 分区裁剪4.3 聚合查询4.4 分布式计算五、表管理5.1 查看表信息5.2 更新数据5.3 删除数据5.4 删除表六、分区管理6.1 查看分区6.2 添加分区6.3 删除分区七、副本管理7.1 副本配置7.2 副本状态八、实战案例8.1 工业物联网数据平台九、总结参考资料摘要本文深入讲解DolphinDB分布式表的创建与管理。从分布式表原理到创建方法从数据写入到查询优化从分区管理到运维监控全面介绍分布式表的核心操作。通过丰富的代码示例帮助读者掌握分布式表的设计和管理技能。一、分布式表概述1.1 什么是分布式表分布式表是存储在分布式数据库中的表数据按分区分布在多个节点上分布式表架构客户端ControllerDataNode1DataNode2DataNode3分区1,3,5分区2,4,6分区7,9,111.2 分布式表特点特点说明分布式存储数据分布在多个节点水平扩展支持PB级数据高可用多副本机制并行计算分布式计算加速1.3 分布式表 vs 内存表特性内存表分布式表存储位置内存磁盘容量受内存限制PB级持久化需手动自动持久化查询速度快较快适用场景临时数据海量数据二、创建分布式表2.1 创建分布式数据库//创建VALUE分区数据库 dbdatabase(dfs://iot_db,VALUE,1..100)//创建RANGE分区数据库 dbdatabase(dfs://iot_db,RANGE,2024.01.01..2024.12.31)//创建COMPO组合分区数据库 dbdatabase(dfs://iot_db,COMPO,[RANGE,2024.01.01..2024.12.31,HASH,[INT,10]])2.2 创建分布式表//创建分布式数据库 dbdatabase(dfs://iot_db,VALUE,1..100)//定义表结构 schematable(1:0,device_idtimestamptemperaturehumiditypressure,[INT,TIMESTAMP,DOUBLE,DOUBLE,DOUBLE])//创建分布式表 db.createPartitionedTable(schema,sensor_data,device_id)//查看表结构 schema(loadTable(dfs://iot_db,sensor_data))2.3 创建维度表//维度表小表广播到所有节点 dbdatabase(dfs://metadata)//创建设备信息维度表 schematable(1:0,device_iddevice_namelocationinstall_datestatus,[INT,STRING,STRING,DATE,SYMBOL])db.createTable(schema,device_info)//插入数据 loadTable(dfs://metadata,device_info).append!(table(1..100asdevice_id,device_string(1..100)asdevice_name,take(车间A车间B车间C,100)aslocation,take(2024.01.01,100)asinstall_date,take(在线,100)asstatus))三、数据写入3.1 批量写入//批量写入数据 ttable(take(1..100,10000)asdevice_id,take(now(),10000)astimestamp,rand(20.0..30.0,10000)astemperature,rand(40.0..60.0,10000)ashumidity,rand(1000.0..1020.0,10000)aspressure)loadTable(dfs://iot_db,sensor_data).append!(t)3.2 并行写入//并行写入函数defparallelWrite(dbPath,tableName,data){loadTable(dbPath,tableName).append!(data)}//使用mr并行写入 data_listsplit(t,10)//分成10份 mr(data_list,parallelWrite{dfs://iot_db,sensor_data})3.3 流式写入//创建流表 share streamTable(1:0,device_idtimestamptemperaturehumiditypressure,[INT,TIMESTAMP,DOUBLE,DOUBLE,DOUBLE])asinput_stream//订阅流表写入分布式表 subscribeTable(,input_stream,persist,-1,def(msg){loadTable(dfs://iot_db,sensor_data).append!(msg)},true,10000,true)//写入流表 input_stream.append!(t)四、数据查询4.1 基本查询//加载分布式表 tloadTable(dfs://iot_db,sensor_data)//查询数据 select count(*)fromt select top100*fromt select*fromt where device_id14.2 分区裁剪//分区裁剪优化查询 tloadTable(dfs://iot_db,sensor_data)//按分区列过滤高效 select count(*)fromt where device_idin[1,2,3]//查看执行计划 explain select*fromt where device_id14.3 聚合查询//分组聚合 select device_id,count(*)ascnt,avg(temperature)asavg_temp,max(temperature)asmax_temp,min(temperature)asmin_tempfromt group by device_id//时间窗口聚合 select bar(timestamp,1h)ashour,avg(temperature)asavg_tempfromt where device_id1group by bar(timestamp,1h)4.4 分布式计算//分布式计算使用mr函数defmapFunc(data){returnselect device_id,avg(temperature)asavg_tempfromdata group by device_id}defreduceFunc(results){returnunionAll(results)}//执行分布式计算 mr(sqlDS(select*fromt),mapFunc,reduceFunc)五、表管理5.1 查看表信息//查看表结构 schema(loadTable(dfs://iot_db,sensor_data))//查看表大小 getTabletsMeta(dfs://iot_db,sensor_data)//查看分区分布 select partition,count(*)ascntfromgetTabletsMeta(dfs://iot_db,sensor_data)group by partition5.2 更新数据//更新分布式表 tloadTable(dfs://iot_db,sensor_data)//条件更新 update tsettemperaturetemperature*1.1where device_id1//注意更新操作需要指定分区条件5.3 删除数据//删除数据 tloadTable(dfs://iot_db,sensor_data)//条件删除 deletefromt where device_id1//清空表 truncate(t)5.4 删除表//删除分布式表 dropTable(database(dfs://iot_db),sensor_data)//删除数据库 dropDatabase(dfs://iot_db)六、分区管理6.1 查看分区//查看分区方案 dbdatabase(dfs://iot_db)db.partitionSchema()//查看分区详情 getTabletsMeta(dfs://iot_db,sensor_data)6.2 添加分区//添加新分区RANGE分区 dbdatabase(dfs://iot_db)addPartitions(db,[2025.01.01,2025.02.01])6.3 删除分区//删除分区 dbdatabase(dfs://iot_db)dropPartition(db,[2023.01.01])七、副本管理7.1 副本配置//创建带副本的数据库 dbdatabase(dfs://iot_db_replica,VALUE,1..100,replica2)//查看副本配置 db.replicationFactor()7.2 副本状态//查看副本状态 getClusterReplicationStatus()//查看副本同步状态 getReplicationDelay()八、实战案例8.1 工业物联网数据平台//1.创建分布式数据库dbdatabase(dfs://iot_platform,COMPO,[RANGE,2024.01.01..2024.12.31,HASH,[INT,100]],replica2)//2.创建设备数据表schematable(1:0,device_idtimestamptemperaturehumiditypressurevibrationpowerstatus,[INT,TIMESTAMP,DOUBLE,DOUBLE,DOUBLE,DOUBLE,DOUBLE,SYMBOL])db.createPartitionedTable(schema,device_data,timestampdevice_id)//3.创建告警表schematable(1:0,alert_iddevice_idtimestampalert_typealert_levelmessage,[LONG,INT,TIMESTAMP,SYMBOL,INT,STRING])db.createPartitionedTable(schema,alert_data,timestampdevice_id)//4.创建统计表schematable(1:0,device_iddateavg_tempmax_tempmin_temprecord_count,[INT,DATE,DOUBLE,DOUBLE,DOUBLE,LONG])db.createPartitionedTable(schema,daily_stats,datedevice_id)//5.数据写入函数defwriteDeviceData(data){loadTable(dfs://iot_platform,device_data).append!(data)}//6.统计计算函数defcalcDailyStats(){tloadTable(dfs://iot_platform,device_data)statsselect device_id,date(timestamp)asdate,avg(temperature)asavg_temp,max(temperature)asmax_temp,min(temperature)asmin_temp,count(*)asrecord_countfromt where date(timestamp)today()-1group by device_id,date(timestamp)loadTable(dfs://iot_platform,daily_stats).append!(stats)}//每日统计 scheduleJob(daily_stats,每日统计,calcDailyStats,00:30,2024.01.01,2030.12.31,D)print(工业物联网数据平台创建完成)九、总结本文详细介绍了DolphinDB分布式表的创建与管理分布式表原理分布式存储、水平扩展、高可用创建方法创建数据库、创建表、维度表数据写入批量写入、并行写入、流式写入数据查询基本查询、分区裁剪、分布式计算表管理查看信息、更新删除、分区管理副本管理副本配置、副本状态思考题分布式表和内存表有什么区别如何设计高效的分区策略如何优化分布式表查询性能参考资料DolphinDB分布式表DolphinDB数据库管理

相关文章:

DolphinDB分布式表:创建与管理

目录摘要一、分布式表概述1.1 什么是分布式表1.2 分布式表特点1.3 分布式表 vs 内存表二、创建分布式表2.1 创建分布式数据库2.2 创建分布式表2.3 创建维度表三、数据写入3.1 批量写入3.2 并行写入3.3 流式写入四、数据查询4.1 基本查询4.2 分区裁剪4.3 聚合查询4.4 分布式计算…...

VOFA+不止看波形:手把手教你搭建PID算法自动化测试与数据记录平台

VOFA实战:构建PID算法自动化测试与数据分析工作流 调试PID控制器就像在黑暗房间里寻找电灯开关——你永远不知道下一次调整会带来更亮的光明还是彻底的黑暗。传统的手动调参方式不仅效率低下,更难以系统性地评估参数组合对系统性能的影响。本文将带你用V…...

YOLOV8语义分割注意力机制改进:全网首发--使用ACA跨分支注意力增强特征表达(方案3)

1. 工程简介 🚀 本工程基于 Ultralytics 框架扩展,面向语义分割与 YOLO 系列模型改进实验。核心特点是通过切换 yaml 配置文件,即可快速完成不同网络结构的训练、对比与验证,无需为每个模型单独编写训练脚本。 当前已支持的主要模型家族 🧩 语义分割模型:UNet、UNet+…...

Python文件自动分类整理工具:基于规则引擎与插件化架构实现

1. 项目概述:告别混乱,让文件管理自动化如果你和我一样,每天都要和电脑里堆积如山的文件打交道,那么“文件管理”这四个字,大概率会引发一阵头疼。下载文件夹里塞满了从网页上随手保存的图片、文档、压缩包&#xff0c…...

NVIDIA Profile Inspector 终极指南:3个步骤解锁显卡隐藏性能

NVIDIA Profile Inspector 终极指南:3个步骤解锁显卡隐藏性能 【免费下载链接】nvidiaProfileInspector 项目地址: https://gitcode.com/gh_mirrors/nv/nvidiaProfileInspector 如果你正在寻找一种方法来深度优化NVIDIA显卡的游戏性能,那么NVIDI…...

Nintendo Switch大气层1.7.1:解锁游戏主机无限潜能的完整指南

Nintendo Switch大气层1.7.1:解锁游戏主机无限潜能的完整指南 【免费下载链接】Atmosphere-stable 大气层整合包系统稳定版 项目地址: https://gitcode.com/gh_mirrors/at/Atmosphere-stable 想让你手中的Switch游戏机拥有更多神奇功能吗?&#x…...

文本生成结构化数据:rookie_text2data项目解析与应用实践

1. 项目概述与核心价值最近在数据科学和机器学习社区里,一个名为jaguarliuu/rookie_text2data的项目引起了我的注意。乍一看这个标题,你可能会觉得它又是一个“文本转数据”的工具,但当我深入探究其代码和设计理念后,发现它远不止…...

PDF转Markdown工具:原理、实现与应用实践

1. 项目概述:从PDF到Markdown的优雅转换如果你经常需要处理技术文档、论文或者从网上下载的电子书,那你一定对PDF这种格式又爱又恨。爱的是它格式稳定,在任何设备上打开都一个样;恨的是它内容封闭,想从中提取文字、代码…...

QTTabBar深度解析:Windows资源管理器标签化扩展的架构设计与实战指南

QTTabBar深度解析:Windows资源管理器标签化扩展的架构设计与实战指南 【免费下载链接】qttabbar QTTabBar is a small tool that allows you to use tab multi label function in Windows Explorer. https://www.yuque.com/indiff/qttabbar 项目地址: https://git…...

CubeMX配置FreeRTOS的隐藏坑点:为什么你的HAL库时钟源必须改?

CubeMX配置FreeRTOS的隐藏坑点:为什么你的HAL库时钟源必须改? 在STM32开发中,CubeMX和FreeRTOS的组合堪称黄金搭档,但当你第一次在CubeMX中启用FreeRTOS时,可能会被一个黄色警告吓到:"建议为HAL库选择…...

UniQL框架:LLM模型边缘端高效压缩与部署实战

1. 项目背景与核心价值在大型语言模型(LLM)应用爆发式增长的今天,模型部署的硬件门槛成为制约技术落地的关键瓶颈。UniQL框架的诞生直击这一痛点——它通过创新的压缩技术,让参数量庞大的LLM模型能够在手机、嵌入式设备等边缘端高…...

老设备改造实战:用一台闲置的西门子200PLC+步进驱动器,给老旧设备加装简易定位功能

老设备改造实战:用闲置西门子200PLC步进驱动器实现简易定位功能 在工业车间里,那些服役多年的老设备往往因为缺乏自动化功能而逐渐被边缘化。但事实上,通过巧妙的改造,这些"老伙计"完全可以焕发新生。本文将分享一个真实…...

CVAT 3D标注实战:手把手教你用长方体标注点云数据(附Velodyne格式处理)

CVAT 3D标注实战:从Velodyne点云到精准长方体标注的全流程解析 在自动驾驶和机器人感知领域,3D点云数据的精确标注是模型训练的基础环节。CVAT作为开源的计算机视觉标注工具,其3D标注功能为处理激光雷达数据提供了专业解决方案。本文将深入探…...

2026反爬终极防线:JA4+指纹检测全解析,90%爬虫的致命克星

在爬虫与反爬的永恒对抗中,技术的迭代速度永远超出想象。从最基础的IP封禁、User-Agent校验,到Cookie追踪、行为分析,再到曾经不可一世的JA3 TLS指纹检测,每一代反爬技术的出现都曾让大批爬虫失效。 进入2026年,一种名…...

AI技能包安全审查:静态分析与启发式规则实践

1. 项目概述:一个轻量级的AI技能包安全审查工具最近在折腾一些AI Agent相关的项目,比如OpenClaw这类开源框架,发现一个挺有意思的痛点:当你需要给AI系统“安装”或“上传”新的技能(Skill)时,这…...

工业级实战:基于YOLOv11的设备指示灯与按键状态识别全流程

在工业自动化领域,设备状态点检是保障生产安全、预防设备故障的核心环节。传统的人工点检方式存在效率低、主观性强、漏检率高、无法24小时连续作业等诸多痛点,尤其在高危、高噪音、高辐射的恶劣环境下,人工点检更是面临巨大的安全风险。 随着…...

Claude Skills深度解析:如何通过技能包将AI助手升级为专业生产力工具

1. 项目概述:Claude Skills 是什么,以及它能解决什么问题如果你和我一样,日常重度依赖 Claude 这类 AI 助手来处理工作流,那你肯定也遇到过类似的瓶颈:Claude 很聪明,但有时候它处理特定、复杂任务的方式&a…...

Claude Code插件生态中心Build with Claude:一站式AI编程助手增强平台

1. 项目概述:Claude Code的插件生态中心如果你和我一样,日常开发重度依赖Claude Code,那你肯定遇到过这样的场景:想找个能自动生成符合规范的Git提交信息的命令,或者需要一个精通Python性能优化的专家级Agent来审查代码…...

TTRV方法:视觉语言模型的测试时强化学习技术

1. 项目概述TTRV(Test-Time Reinforcement for Vision-language models)方法是近期在视觉语言模型领域兴起的一种创新性技术思路。简单来说,它让模型在测试阶段也能持续学习和优化,就像人类在实际应用中不断调整自己的判断一样。我…...

LLM智能体决策中的不确定性量化与优化实践

1. 不确定性量化:智能体决策的基石问题当大型语言模型(LLM)作为智能体的"大脑"参与决策时,其输出的不确定性就像天气预报中的降水概率——知道"明天下雨概率70%"比单纯判断"会下雨"包含更多决策价值…...

Perfex CRM技能管理模块:实现基于员工能力的智能任务分配

1. 项目概述与核心价值如果你正在使用Perfex CRM,并且感觉它的默认界面或某些功能模块用起来不够顺手,或者想为你的团队定制一些独特的业务逻辑,那么你很可能已经接触过“技能”这个概念。今天要聊的这个项目——yasserstudio/perfex-crm-ski…...

微生物组多组学分析Pipeline崩溃于R 4.5?——紧急排查清单(内存泄漏定位/Seurat v5冲突/AnVIL云环境适配失败)

更多请点击: https://intelliparadigm.com 第一章:微生物组多组学分析Pipeline在R 4.5环境下的系统性崩溃现象 R 4.5发布后,大量依赖Bioconductor 3.19及旧版metagenomeSeq、phyloseq、MultiAssayExperiment的微生物组多组学Pipeline出现不…...

Harness大爆发!揭秘连接LLM与外界的“超级引擎”

文章深入探讨了新兴概念Harness在智能体(Agent)构建中的核心作用。Harness被视为连接大语言模型(LLM)与外部世界的“运行支撑系统”,是一套将不可控的通用模型转化为可靠、可审计、可扩展的生产级智能体的外部基础设施…...

OpenClaw出圈背后:AI的“养虾”时代,结构化信息与动态工作流将如何重塑未来?

OpenClaw的火爆反映了AI领域对结构化信息价值的重视。文章指出,将资料结构化处理能提升AI效果,Skill间结构关联可搭建知识体系。同时,工作流正从固定脚本模式向AI调度、脚本执行的动态模式演变,AI负责调度与异常处理,脚…...

手把手教你用示波器实测LVDS/CML信号:从波形解读到故障排查(附实测图)

手把手教你用示波器实测LVDS/CML信号:从波形解读到故障排查(附实测图) 在高速数字电路设计中,LVDS(低电压差分信号)和CML(电流模式逻辑)是两种广泛应用的电平标准。它们凭借低功耗、…...

别再死记硬背公式了!用Python手动画出5G NR Type I码本的波束方向图

用Python动态绘制5G NR Type I码本波束方向图:从公式到可视化实战 在5G NR物理层设计中,码本(codebook)是实现高效波束赋形的核心工具。Type I码本作为基础方案,其参数配置直接影响着波束的指向性和覆盖范围。传统学习…...

开源机器人抓取系统OpenClaw Atlas:从硬件设计到算法实现全解析

1. 项目概述:当机械臂遇上开源AI大脑最近在机器人圈子里,一个名为“OpenClaw Atlas”的项目引起了我的注意。这个项目由开发者 Joshua Warren 在 GitHub 上开源,核心是将一个名为“OpenClaw”的机械爪,与一个名为“Atlas”的机器人…...

LLM应用的提示词版本管理2026:像管代码一样管Prompt

Prompt也是需要版本管理的"代码" 绝大多数团队的Prompt管理现状是这样的:- 散落在各种Python文件的字符串常量里- 粘贴在Notion或飞书文档的某个页面上- 保存在某个工程师的本地文件夹里- 没有人知道当前生产环境用的是哪个版本当Prompt出了问题&#xf…...

多Agent协作系统设计2026:从任务分解到结果聚合的工程实践

为什么需要多Agent协作 单个Agent在处理复杂任务时面临天然的局限:1. 上下文窗口有限:一个需要分析10万行代码库的任务,单Agent无法在一次对话中完成2. 并行能力缺失:需要同时进行多个独立子任务时,单Agent只能串行处理…...

RAG系统性能调优2026:从检索质量到响应速度的全栈优化

RAG系统为什么越来越慢、越来越不准 很多团队在RAG系统上线初期效果还不错,但随着知识库规模增大、用户查询越来越复杂,系统会逐渐暴露两个核心问题:检索质量下降(找不到相关文档,或找到了但排名靠后)和响应…...