数据库OLAP大数据后端【免费下载链接】druidApache Druid: a high performance real-time analytics database.项目地址https://gitcode.com/gh_mirrors/druid6/druid点击查看免费下载Apache Druid 的 Coordinator、Overlord 等服务依赖元数据存储Metadata Store来保存数据源、段、任务、规则等系统状态。本指南以仓库中的 PostgreSQL Metadata Store 官方文档为主体系统讲解如何将 PostgreSQL 配置为 Druid 的元数据存储、如何通过postgresql-metadata-storage扩展加载 SSL 连接参数与表 schema 设置并演示如何利用该扩展自带的 SQL InputSource 直接从 PostgreSQL 批量导入数据同时结合 postgresql-metadata-storage 模块源码与测试说明其底层实现原理。读完本文你将能独立完成「PostgreSQL 安装 → Druid 配置 → SSL 连接 → 批量摄入」的完整闭环。扩展加载把 postgresql-metadata-storage 加入 loadListDruid 以扩展Extension机制隔离第三方依赖PostgreSQL 元数据存储驱动位于独立的扩展模块中必须先加载才能使用。官方文档的加载扩展说明要求将该扩展名加入扩展加载列表druid.extensions.loadList[postgresql-metadata-storage]该配置通常写在common.runtime.properties集群中各节点共享的公共配置中。仓库自带的 common.runtime.properties 默认使用 Derby但已预留了 PostgreSQL 的注释示例可直接取消注释切换#druid.metadata.storage.connector.connectURIjdbc:postgresql://db.example.com:5432/druid #druid.metadata.storage.connector.user... #druid.metadata.storage.connector.password...扩展模块 postgresql-metadata-storage/pom.xml 的核心依赖是org.postgresql:postgresqlJDBC 驱动、org.jdbi:jdbi与commons-dbcp2。从源码结构看驱动类被扩展类加载器隔离加载因此 PostgreSQLConnector 在构造时会显式调用datasource.setDriverClassLoader(getClass().getClassLoader())和setDriverClassName(org.postgresql.Driver)帮助 JDBC 定位驱动。搭建 PostgreSQL 元数据存储环境1. 安装 PostgreSQL文档建议使用系统包管理器安装。若后续升级涉及大元数据表的 schema 变更建议选择支持“即时 ADD COLUMN”instant ADD COLUMN即添加列不重写整表语义的 PostgreSQL 版本以降低升级成本Ubuntu/Debianaptapt-get install postgresqlOS XHomebrewbrew install postgresql2. 创建 druid 数据库与用户在装有 PostgreSQL 的机器上用具备足够权限的账号执行以下命令。创建用户时系统会提示输入密码示例中填写diurdcreateuser druid -P创建由该用户拥有的数据库createdb druid -O druid注意在 Ubuntu/Debian 上若当前账号权限不足可能需要为上述命令加上sudo -u postgres前缀以获得正确的 PostgreSQL 权限。3. 配置 Druid 元数据存储连接将以下参数加入 Druid 配置common.runtime.properties把host替换为数据库实际地址主机名与端口druid.extensions.loadList[postgresql-metadata-storage] druid.metadata.storage.typepostgresql druid.metadata.storage.connector.connectURIjdbc:postgresql://host/druid druid.metadata.storage.connector.userdruid druid.metadata.storage.connector.passworddiurd各参数含义参数说明druid.extensions.loadList声明加载 PostgreSQL 扩展druid.metadata.storage.type元数据存储类型postgresql与扩展内部注册的TYPE常量对应druid.metadata.storage.connector.connectURIJDBC 连接串指向 druid 库druid.metadata.storage.connector.user/.password连接数据库的账号与密码连接串connectURI、用户名与密码由通用的MetadataStorageConnectorConfig解析。密码属于敏感信息仓库默认配置中已将druid.metadata.storage.connector.password列入隐藏属性见 common.runtime.properties 中的druid.server.hiddenProperties防止其在服务状态页等位置泄露生产环境建议改用 Password Provider 管理。类型注册与模块装配在源码层面PostgreSQLMetadataStorageModule 以postgresql为类型名通过 Guice 的PolyBind将MetadataStorageConnector、SQLMetadataConnector、MetadataStorageActionHandlerFactory等接口绑定到PostgreSQLConnector与PostgreSQLMetadataStorageActionHandlerFactory。因此配置中druid.metadata.storage.typepostgresql之后Druid 各服务即可按需注入对应的 PostgreSQL 连接器。配置项详解SSL 与表 Schema在大多数情况下postgresql-metadata-storage的配置项直接映射到 PostgreSQL JDBC 连接属性。官方文档给出了如下配置表属性描述默认值是否必填druid.metadata.postgres.ssl.useSSL是否启用 SSLfalse否druid.metadata.postgres.ssl.sslPassword客户端 key 的 Password Provider 或字符串密码无否druid.metadata.postgres.ssl.sslFactory作为SSLSocketFactory使用的类名无否druid.metadata.postgres.ssl.sslFactoryArg传给 sslFactory 构造函数的可选参数无否druid.metadata.postgres.ssl.sslModesslMode可选值disable、require、verify-ca、verify-full、allow、prefer无否druid.metadata.postgres.ssl.sslCert证书文件的完整路径无否druid.metadata.postgres.ssl.sslKeykey 文件的完整路径无否druid.metadata.postgres.ssl.sslRootCert根证书的完整路径无否druid.metadata.postgres.ssl.sslHostNameVerifier主机名校验器hostname verifier的类名无否druid.metadata.postgres.ssl.sslPasswordCallbackSSL 密码提供器password provider的类名无否druid.metadata.postgres.dbTableSchemaDruid 元数据表所在的 PostgreSQL schemapublic否SSL 参数的源码级映射PostgreSQLConnectorConfig 通过 JacksonJsonProperty解析上述全部 SSL 配置其中sslPassword使用PasswordProvider类型支持密钥托管。当useSSLtrue时PostgreSQLConnector 会把这些配置逐一写入连接池BasicDataSource的PGProperty连接属性例如ssl、sslmode、sslcert、sslkey、sslrootcert等最终透传给 PostgreSQL JDBC 驱动完成 TLS 握手。这意味着你既可以在connectURI里带?ssltruesslmodeverify-full之类的参数也可以统一走上述druid.metadata.postgres.ssl.*配置二者最终作用于同一套驱动属性。dbTableSchema 的作用PostgreSQLTablesConfig 提供了druid.metadata.postgres.dbTableSchema配置默认public。它被 PostgreSQLConnector 用于tableExists检查——通过查询pg_catalog.pg_tables并匹配schemaname dbTableSchema来判定元数据表是否已存在。因此若你希望把 Druid 的元数据表放到非默认 schema 中只需设置该项并确保对应 schema 已创建、连接用户具备相应权限。连接器行为特性从 PostgreSQLConnector 的实现可以观察到该扩展针对 PostgreSQL 的几项专门适配数据类型payload 列使用BYTEA自增主键使用BIGSERIALgetPayloadType()与getSerialType()见 源码 L49-L50。分页语法limitClause生成LIMIT n源码 L150-L154测试类 PostgreSQLConnectorTest 的testLimitClause对此做了校验。Upsert 策略insertOrUpdate在 PostgreSQL 9.5或大版本号大于 9时使用INSERT ... ON CONFLICT ... DO UPDATE对更老的版本则退化为LOCK TABLE ... SHARE ROW EXCLUSIVE MODE配合 CTE upsert源码 L156-L231。并发与重试compareAndSwap捕获 REPEATABLE_READ 隔离级别下的串行化失败SQLSTATE40001并返回false交由上层重试connectorIsTransientException对 SQLSTATE 以08连接类和53资源不足类开头的错误判为瞬时异常源码 L259-L289测试类中的testIsTransientException覆盖了该逻辑。用 PostgreSQL InputSource 批量摄入数据除元数据存储外该扩展还实现了 SQL InputSource 的一个 PostgreSQL 变体支持把 PostgreSQL 中的表直接作为 Druid 批量摄入的数据源。官方文档给出的原生批量任务index_parallel示例完整如下{ type: index_parallel, spec: { dataSchema: { dataSource: some_datasource, dimensionsSpec: { dimensionExclusions: [], dimensions: [ dim1, dim2, dim3 ] }, timestampSpec: { format: auto, column: ts }, metricsSpec: [], granularitySpec: { type: uniform, segmentGranularity: DAY, queryGranularity: { type: none }, rollup: false, intervals: null }, transformSpec: { filter: null, transforms: [] } }, ioConfig: { type: index_parallel, inputSource: { type: sql, database: { type: postgresql, connectorConfig: { connectURI: jdbc:postgresql://some-rds-host.us-west-1.rds.amazonaws.com:5432/druid, user: admin, password: secret } }, sqls: [ SELECT * FROM some_table ] }, inputFormat: { type: json } }, tuningConfig: { type: index_parallel } } }要点说明inputSource.type固定为sqldatabase.type固定为postgresqlconnectorConfig提供 JDBC 连接信息connectURI、user、password。sqls是一个数组可包含多条查询每条查询的结果将被当作一批输入数据。inputFormat使用json即查询结果按 JSON 行解析timestampSpec中时间列示例为ts格式auto表示自动探测。dataSource指定摄入后 Druid 中的数据源名segmentGranularity: DAY表示按天分段rollup: false表示不进行预聚合保留原始明细。底层实现Jackson 模块注册 将PostgresqlInputSourceDatabaseConnector注册为postgresql子类型因此摄入任务中的type: postgresql才能被正确反序列化。该类继承自SQLInputSourceDatabaseConnector复用druid-server中的 SQL 摄入基础能力并同样为驱动设置类加载器PostgresqlInputSourceDatabaseConnector。此外PostgresqlInputSourceDatabaseConnectorTest 对该连接器的序列化与连接配置解析提供了测试覆盖。需要说明的是SQL InputSource 属于摄入侧能力即使 Druid 元数据存储本身选用 Derby/MySQL只要加载了本扩展同样可以使用 PostgreSQL 作为摄入数据源。验证与排错建议检查扩展是否加载启动任一 Druid 服务时观察日志出现Configured PostgreSQL as metadata storage见 PostgreSQLConnector 构造日志即表示连接器装配成功。确认驱动可达若报No suitable driver类错误优先确认druid.extensions.loadList已包含postgresql-metadata-storage且 Druid 已通过bin/start-druid或发行版的 extension 目录实际加载该扩展。验证连接串先用psql或任意 JDBC 客户端以相同connectURI、用户名与密码手工连通数据库排除网络、认证层面的问题。启用 SSL 时按需组合useSSL与sslMode如verify-full时需同时配置sslRootCert确认客户端证书与根证书路径可读。表 schema 异常若tableExists一直判定表不存在或建表失败检查druid.metadata.postgres.dbTableSchema指向的 schema 是否已存在以及连接用户是否具备该 schema 下的建表权限。总结postgresql-metadata-storage扩展同时承担两类职责一是作为 Druid 的元数据存储后端druid.metadata.storage.typepostgresql二是作为 SQL InputSource 的 PostgreSQL 数据库连接器type: postgresql。配置上基础连接参数复用druid.metadata.storage.connector.*SSL 与 schema 则由druid.metadata.postgres.*控制实现上扩展针对 PostgreSQL 的数据类型、UPSERT、事务串行化失败重试与分页语法均做了专门适配测试用例也覆盖了limitClause与瞬时异常判定等关键路径。参照本文的安装、配置与摄入示例即可在生产或开发环境完成 PostgreSQL 元数据存储的落地并顺带获得一条从 PostgreSQL 直通 Druid 的批量数据管道。赞分享数据库OLAP大数据后端【免费下载链接】druidApache Druid: a high performance real-time analytics database.项目地址https://gitcode.com/gh_mirrors/druid6/druid点击查看免费下载相关推荐终极B站会员购抢票神器新手也能轻松掌握的自动化购票完整指南终极B站会员购抢票神器新手也能轻松掌握的自动化购票完整指南 还在为抢不到B站会员购的热门漫展门票而烦恼吗biliTickerBuy是一款开源免费的B站会员购电商RPACANNBot TileLang代码骨架代码骨架模板 生成 example_{op}.py 时的文件结构 python import tilelang from tilelang import DaAI 技能人工智能AI 评测CANNAscend5分钟快速上手全网资源下载神器res-downloader使用全攻略5分钟快速上手全网资源下载神器res downloader使用全攻略 你是否经常遇到这样的情况在微信视频号看到精彩的短视频却无法保存在抖音发现有趣的视频想数据库OLAP大数据后端上一篇Vue Chartkick常见问题解答从安装错误到图表不显示的解决方案合集下一篇FreeMoCap 报错怎么办10分钟速查修复 6 类常见动作捕捉故障创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
行星探测车自主导航中的不确定性轨迹规划与Matlab实现 1. 项目背景与核心挑战行星探测车在未知地形环境中的自主导航一直是航天领域的核心技术难题。传统轨迹规划算法往往基于确定性假设,将传感器获取的地形数据视为绝对准确值进行处理。然而在实际任务中,从立体视觉、激光雷达获取的原始数据到最终生成的可通… · 2026/9/23 23:34:43
Terminal.Gui 测试模式规范:覆盖度量、测试工程划分与 AI 生成测试编写指南 Terminal.Gui 测试模式规范:覆盖度量、测试工程划分与 AI 生成测试编写指南 【免费下载链接】Terminal.Gui Cross Platform Terminal UI toolkit for .NET 项目地址: https://gitcode.com/gh_mirrors/te/Terminal.Gui
本篇技术指南基于 Terminal.Gui 仓库内的… · 2026/9/23 23:34:43
华为路由器交换机VLAN配置实战:从端口类型到跨交换机互通 简介:面向网络运维与数通初学者的华为VLAN配置实战文档,以华为路由器R2621与交换机S3026e为核心设备,通过4台PC搭建小型组网环境,演示VLAN划分、虚拟网与物理网互通、防火墙默认策略及ACL访问控制的完整过程。文档从IP地址与网关规… · 2026/9/23 23:34:43
XDF文件怎么读?用pyxdf轻松解析LSL多模态数据 说实话,我第一次拿到.xdf后缀的文件时,整个人是懵的:双击打不开,拖进Excel直接报错,用文本编辑器打开满屏乱码。搞脑电、做多模态生理信号采集的朋友应该都有共鸣——设备采集完数据,导出的正是XDF格式&… · 2026/9/24 0:13:47
iView表格分页实战:Table与Page组合的完整实现方案 做了这么多年后台管理系统,表格分页这活儿真的是躲不开也绕不过去。不管你是用iView、Element还是Ant Design,数据一多,表格分页就是刚需。我早期带团队的时候,见过太多新手在iView里把Table和Page各自用得挺溜,但一到… · 2026/9/24 0:13:47
配电网动态重构与分布式光伏消纳:多目标优化模型与IEEE 33节点算例解析 简介:面向电力系统与分布式光伏领域的研究人员、工程师及高年级学生,这份资源是一篇题为《基于配电网动态重构的分布式光伏消纳策略》的学术论文PDF。内容针对光伏出力的间歇性与波动性,综合考虑负荷变化、出力不确定性和开关切换次数&#x… · 2026/9/24 0:13:41
Cesium地形开挖实战:裁剪平面原理、代码实现与避坑指南 简介:面向Cesium初学者与前端开发者的地形开挖示例包,通过单个HTML文件完整演示了基于Cesium的三维地形开挖核心实现。压缩包内仅含1个HTML文件,大小仅1KB,代码集中,可直接在浏览器中运行,适合作为入门模板… · 2026/9/24 0:13:34
Unity 切割模型不靠插件:平面裁剪网格切分与物理分离全解析 简介:一份面向Unity初学者的模型切割学习案例,聚焦碰撞检测、鼠标交互与Mesh实时更新等核心知识点。案例预设多款基础几何体模型,通过左键蓄力、右键触发切割的交互设计,演示从切割路径计算、顶点三角形遍历到网格拆分重建的完整流… · 2026/9/24 0:13:28
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程 简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13
1D-CNN时间序列建模实战:从Conv1d原理到工业落地 简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26
柔软的L:汉语语流中被忽视的舌肌张力控制 1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44