NocoBase 主数据源接入 PostgreSQL:安装配置、版本要求与字段类型映射完全指南

NocoBase 主数据源接入 PostgreSQL:安装配置、版本要求与字段类型映射完全指南 NocoBase 主数据源接入 PostgreSQL安装配置、版本要求与字段类型映射完全指南【免费下载链接】nocobaseNocoBase is an open-source AI no-code platform for building business systems fast. Instead of generating everything from scratch, AI works on top of production-proven infrastructure and a WYSIWYG no-code interface, so you get both speed and reliability.项目地址: https://gitcode.com/GitHub_Trending/no/nocobase导读本文讲解如何将 PostgreSQL 配置为 NocoBase 的主数据库用于存储 NocoBase 系统表数据以及主数据源中的业务数据。文章将覆盖 PostgreSQL 版本支持范围、部署时的连接配置、主数据源中数据表与字段的管理方式以及「从数据库同步」场景下 PostgreSQL 字段类型与 NocoBase 字段类型Field type / Field interface的完整映射关系并结合 NocoBase 源码中的方言实现与类型映射表帮助你理解映射背后的底层机制。介绍PostgreSQL 作为 NocoBase 主数据库NocoBase 在部署时通过数据库连接配置选定一个主数据库Main Data Source该数据库承担两类职责存储 NocoBase 自身的系统表数据如用户、权限、插件元数据等以及存储主数据源中的业务数据。主数据库在部署 NocoBase 时配置应用运行后不可删除因此选型时需要谨慎。PostgreSQL 作为主数据库的支持情况如下配置项说明支持版本 10商业版本社区版、标准版、专业版、企业版均支持数据库类型PostgreSQL这一版本要求可以在源码中找到直接依据postgres-dialect.ts 中定义了getVersionGuard()方法通过执行select version() as version获取数据库版本并校验version: 10。这意味着低于 10 的 PostgreSQL 版本会在启动阶段被拦截无法作为 NocoBase 主数据库使用。与其他主数据库候选相比详见主数据源介绍PostgreSQL、MySQL、MariaDB 在全部商业版本中均可用而 KingbaseES仅 PostgreSQL 兼容模式需要商业授权且仅专业版及以上支持OceanBase仅 MySQL 兼容模式需要商业授权且仅企业版支持。PostgreSQL 还支持**继承表Table Inheritance**能力适合需要数据模型继承的场景——你可以创建一个父表再派生出继承父表结构的子表子表在继承父表列的基础上还可以定义自己的列这与 NocoBase 主数据源中「继承表」这类数据表类型天然契合。插件安装内置能力无需单独安装PostgreSQL 是 NocoBase 的内置能力无需单独安装任何插件。这与 MySQL、MariaDB 一样属于开箱即用的数据库类型。与之相对的是KingbaseES 需要安装nocobase/plugin-data-source-kingbase、OceanBase 需要安装nocobase/plugin-data-source-oceanbase且二者都需要商业授权详见主数据源介绍。也就是说只要你的 NocoBase 版本支持 PostgreSQL社区版及以上部署后即可直接选用。使用说明从部署配置到主数据源管理1. 部署时配置数据库连接参数在部署 NocoBase 时进入数据库连接配置环节选择 PostgreSQL 类型并填写对应的连接参数如主机地址、端口、数据库名、用户名、密码等。官方提供了 PostgreSQL 的 Docker 部署编排示例可以参考 docker/app-postgres/docker-compose.yml 了解典型的 PostgreSQL 容器与服务编排方式。2. 访问「Main」主数据源启动 NocoBase 后进入系统功能中的「数据源管理」菜单在数据源列表中选择Main数据源并点击「配置」即可进入主数据库管理页面访问与整体管理流程详见主数据源介绍。主数据库管理页面提供以下能力筛选检索 NocoBase 主数据库管理的数据表创建数据表新增业务数据表编辑 / 删除变更、删除业务数据表从数据库同步同步数据库中已有数据表的结构配置字段进行数据表字段的创建、变更、删除分类管理通过 tab 页的对数据表分类管理。3. 接入数据库中已有的表如果你的 PostgreSQL 数据库中已经存在大量业务表例如由 DBA、SQL 脚本或其他管理工具创建无需在 NocoBase 中重新创建可以直接在主数据库管理页使用「从数据库同步」或「从数据库加载」功能浏览数据库中所有的表选择需要同步的表NocoBase 自动识别表结构和字段类型一键导入到 NocoBase 中进行管理。这一机制带来三个实际价值保护现有投资已有业务表无需重建、灵活集成外部工具创建的表可直接纳入管理、渐进式迁移支持逐步将存量系统迁移到 NocoBase而不是一次性重构。NocoBase 还支持字段级别的精细化同步当数据库表结构发生变化如新增字段时可以随时只同步新增字段可以选择性同步需要的字段同步过程自动识别字段类型并映射到 NocoBase 字段类型且不会影响已有数据。4. 配置数据表字段在主数据库中配置数据表字段时字段类型Field type与字段组件Field interface的选择可参考 数据表 与 字段 目录。NocoBase 支持在 PostgreSQL 之上创建多种数据表类型包括普通表、继承表、树表、日历表、文件表、SQL 表将 SQL 查询结构化展示、视图表等其中「继承表」正是依托于 PostgreSQL 的继承表能力。字段类型映射PostgreSQL 与 NocoBase 的双向转换在 NocoBase 主数据库中字段类型映射存在两个方向正向页面创建字段通过 NocoBase 页面创建字段时NocoBase 会根据字段配置在 PostgreSQL 中创建对应的数据库字段反向从数据库同步通过「从数据库同步」接入已有表时NocoBase 会根据 PostgreSQL 字段类型自动映射到合适的 Field type 与 Field interface你可以在字段配置中调整界面展示方式且无需修改底层数据库结构。常见映射如下PostgreSQL 字段类型NocoBase Field type可选 Field interfaceBOOLEANbooleanCheckbox、SwitchSMALLINT、INTEGER、SERIAL、SMALLSERIALinteger、boolean、sortInteger、Sort、Checkbox、Switch、Select、Radio groupBIGINT、BIGSERIALbigInt、sortInteger、Sort、Checkbox、Switch、Select、Radio group、Unix timestamp、Created at、Updated atREALfloatNumber、PercentDOUBLE PRECISIONdoubleNumber、PercentDECIMAL、NUMERICdecimalNumber、Percent、CurrencyVARCHAR、CHARstring、password、uuid、nanoidInput、Email、Phone、Password、Color、Icon、Select、Radio group、UUID、Nano IDTEXTtext、jsonTextarea、Markdown、Vditor、Rich text、URL、JSONUUIDuuidUUIDJSON、JSONBjsonJSONTIMESTAMPdateDate、Time、Created at、Updated atDATEdateOnlyDateTIMEtimeTimePOINT、LINESTRING、POLYGON、CIRCLEpoint、lineString、polygon、circlePoint、Line string、Polygon、Circle、JSONARRAYarrayMultiple select、Checkbox group源码级验证映射表实际比文档更细致上述映射并非仅在文档中存在在源码中有对应的实现。NocoBase 的数据库层维护了一张按方言划分的字段类型映射表 field-type-map.ts其中postgres一节定义了 PostgreSQL 原生类型到 NocoBase 字段类型的映射字符串类character varying、varchar、char均可映射为string、uuid、nanoid、encryption、datetimeNoTzcharacter、oid、name映射为string数值类smallint映射为integer、sortinteger额外支持unixTimestampbigint可映射为bigInt、snowflakeId、unixTimestamp、sortdecimal、numeric映射为decimalreal、double precision映射为float日期时间类timestamp without time zone映射为datetimeNoTztimestamp with time zone映射为datetimeTz、datetime without time zone映射为timedate映射为dateOnly结构化类json可映射为json、arrayjsonb额外支持jsonbarray映射为arraypoint、path、polygon、circle映射为jsonuuid映射为uuidset映射为set。对比可见源码中的映射粒度比文档表格更细例如区分了timestamp with/without time zone、额外提供encryption、snowflakeId、datetimeNoTz、datetimeTz等目标类型而文档表格则从产品使用视角做了归纳两者互为补充。你可以将源码映射表视为权威全集文档表格视为高频速查。灵活的字段类型转换字段同步进入 NocoBase 后并不等于类型被锁死。在同一个数据库类型基础上NocoBase 支持灵活的字段类型转换——底层存储类型保持不变只是字段在 NocoBase 中的表现形式发生改变转换过程不会影响已有数据的完整性。例如数据库中一个 String 类型字段在 NocoBase 中可以转换为基础类型单行文本、多行文本、手机号码、电子邮箱、URL、密码、颜色、图标选择类型下拉菜单单选、单选框富媒体类型Markdown、Markdown (Vditor)、富文本、附件URL日期时间类型日期时间含时区、日期时间不含时区高级类型自动编码、数据表选择器、加密。这意味着无需修改数据库结构即可适配业务变化同时保证数据安全。NocoBase 的主数据源管理还支持在 PostgreSQL 之上创建多种数据表类型普通表、继承表、树表、日历表、文件表、SQL 表、视图表其中「继承表」正是依托于 PostgreSQL 的继承表能力。注意事项不支持的字段类型:::warning 注意 不支持的 PostgreSQL 字段类型会在字段配置中单独展示。这类字段需要开发适配后才能在 NocoBase 中作为普通字段使用。 :::也就是说当你通过「从数据库同步」接入一张包含特殊类型字段例如 PostgreSQL 的hstore、inet、tsvector、bytea等未被映射表覆盖的类型的表时该字段不会消失而是会被识别出来并单独列出但无法直接当作 NocoBase 普通字段操作需要二次开发适配。建议在同步前评估已有表中的字段类型是否都在映射范围内或将特殊字段交由数据库层直接管理。总结将 PostgreSQL 配置为 NocoBase 主数据库的过程非常轻量它属于内置能力无需安装插件仅需在部署时填写连接参数即可。日常管理上主数据源提供数据表与字段的增删改查、「从数据库同步」接入存量表、字段级精细同步以及灵活的字段类型转换能力。理解 field-type-map.ts 中 PostgreSQL 方言的映射规则可以帮助你在同步存量表和设计新表时提前预判字段在 NocoBase 中的呈现形态从而更顺畅地将 NocoBase 融入既有技术架构。更多主数据源的通用配置与整体管理能力请参阅主数据源介绍。【免费下载链接】nocobaseNocoBase is an open-source AI no-code platform for building business systems fast. Instead of generating everything from scratch, AI works on top of production-proven infrastructure and a WYSIWYG no-code interface, so you get both speed and reliability.项目地址: https://gitcode.com/GitHub_Trending/no/nocobase创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考