一个开源、免费在线数据建模、元数据管理平台,简单易用

news2024/11/28 8:49:59

一、开源项目简介

ERD Online 是一个开源、免费在线数据建模、元数据管理平台。提供简单易用的元数据设计、关系图设计、SQL查询等功能,辅以版本、导入、导出、数据源、SQL解析、审计、团队协作等功能、方便我们快速、安全的管理数据库中的元数据。

二、开源协议

使用AGPL-3.0开源协议

三、界面展示

功能图鉴

关系图设计

元数据设计

版本管理

导入

导出

在线SQL

执行计划

四、功能概述

特性

  • 开箱即用:将注意力集中在数据结构设计上
  • 团队协作:三级权限(拥有者、管理员、普通角色)管理,元素级权限控制
  • 元数据设计:快速复制已有表结构、JSON 生成表,表默认字段、默认大小写等控制
  • 元数据管理:在线管理表结构,支持正向向数据库执行
  • 元数据解析:将已有的数据库结构解析到软件中管理
  • 多数源支持:支持多种数据库连接在线管理(Mysql、Oracle、DB2、SqlServer、PostGreSql),各数据源之间元数据结构同步
  • 版本管理:每个需求与变动,都可以生成版本;每个版本之间可以比对差异
  • 可将所有表结构,自动生成 word、html、md 文档,便于线下流动
  • 在线SQL:在线SQL查询、SQL执行计划,历史查询留痕
  • 永不丢失:元数据历史操作版本留痕(最近9次),可以恢复到任意历史版本
  • 数据字典:全局数据字典设计,控制元数据设计规范

发展里程碑

什么是ERD Online

ERD 是Entity-Relationship Diagram的缩写,中文意思为实体关系图,也被称为 ERD、ER 图、实体联系模型、实体联系模式图或 ER 模型,是一种用于数据库设计的结构图。ERD Online为开发者提供一站式的数据库结构设计、版本管理、执行 sql、逆向解析、文档生成功能。

我们的目标:通过对元数据管理,向大数据、低代码、BI、大屏应用等赋能,让数据成为企业创新的核心引擎。

核心能力

  • 元数据解析
  • 从数据源将元数据解析出来,通过ERD Online在线管理。
  • 元数据管理
  • 这一设计解决了软件开发生命周期中,元数据管理效率低下的问题。
  • 多数源支持(Mysql、Oracle、Sqlserver、Postgresql)
  • 支持所有符合SQL规范的数据源,常见的有Mysql、Oracle、Sqlserver、Postgresql。
  • 多数源同步
  • 在线ERD Online,多数据源同步。这一设计解决了一个产品需要适配多种不通数据源,不同数据源 SQL 方言不一致问题。
  • 在线导出 SQL(全量或差量)
  • 通过记录元数据变动,形成版本节点,支持不同版本比对,生成各种数据源 SQL 脚本。这一设计解决了产品从开发阶段到生产阶段,差量 SQL 比对费时耗力的问题。
  • 在线执行 SQL
  • 无需安装第三方数据库管理工具,无需打开Shell窗口,在线往数据源执行 SQL。这一功能节省了企业大量采购正版数据库管理软件的费用。
  • 数据血缘管理
  • 在线管理元数据之间的关联关系,形成血缘视图,一目了然。这一设计解决了传统数据关系不清晰,让数据关系梳理更高效。
  • 团队协作
  • 精准的权限划分,根据不通角色分配不通功能,保障数据安全。支持多人实时在线协作,自动同步。
  • 元数据导出(Word、Pdf、Html、Markdown)
  • 支持导出离线文档 Word、Pdf、Html、Markdown,便于线下流通交流、存档。
  • 官方市场一键导入
  • 官方市场有大量各行业、各类型、各设备、各通讯已有的元数据,可一键导入自己的项目,快速形成自己的元数据结构。
  • 每个仪器、每个软件、每次通讯,他们产生、传递的数据结构都是固定的,可在官方市场搜索并导入,避免重复建设。
  • 低代码平台(待建设)
  • BI
  • 大屏
  • 低代码平台

为谁服务

  • 开发工程师
  • 一键解析已有数据源元数据并在线管理,生成差量上线SQL
  • 根据已有的元数据结构,生成项目代码
  • 自定义每个表固定的列
  • BI开发
  • 大屏开发
  • 架构师
  • 打通产品线所有数据源
  • 所有数据源在线管理,避免数据孤岛
  • 约定数据源字段规范
  • 审计开发人员数据源操作
  • DB 工程师
  • 在线管理数据源元数据,自定义全部数据源看板
  • 审计上线 SQL
  • 项目管理/产品管理/工程效率管理人员
  • 了解产品发展过程中,数据形态以及变化
  • 通过数据去做产品发展决策

五、技术选型

业务架构介绍

ERD Online技术栈

  • 前端:React + Ant design + Zustand
  • 后端:Java8 + Spring Boot2 + Maven3 + Mysql8

Zustand

A small, fast and scalable bearbones state-management solution using simplified flux principles. Has a comfy api based on hooks, isn't boilerplatey or opinionated

简而言之,Zustand 是一种前端状态管理技术,类似于Redux。

ERD Online 正是借助 Zustand 强大的状态管理技术,实现跨页面操作元数据大JSON,实现页面和js分离。

Zustand 用法

ERD Online 中,操作大JSON的方法,都提取到了src/store这里,在这里管理了 ERD Online 对大json的全部操作甚至,由于做到了页面和js分离,你可以把 ERD Online 从React 项目改造成 Vue项目(理论可行,因为Ant Design也有Vue版)

ERD ONLINE 中的 Zustand

export type ProjectState =
  {
    tables: any[],
    project: any,
    fetch: () => Promise<void>;
    dispatch: IProjectJsonDispatchSlice & IConfigJsonDispatchSlice & IModulesDispatchSlice
      & IDataTypeDomainsDispatchSlice & IDatabaseDomainsDispatchSlice & IProfileDispatchSlice
      & IEntitiesDispatchSlice & IExportDispatchSlice
  }
  & IProjectJsonSlice
  & IConfigJsonSlice
  & IModulesSlice
  & IDataTypeDomainsSlice
  & IDatabaseDomainsSlice
  & IProfileSlice
  & IExportSlice
  & IEntitiesSlice;

// Turn the set method into an immer proxy
// @ts-ignore
export const immer = config => (set, get, api) => config((partial, replace) => {
  console.log(51, "partial", partial)
  console.log(52, "replace", replace)
  const nextState = typeof partial === 'function'
    ? produce(partial)
    : partial;
  return set(nextState, replace);
}, get, api)

const useProjectStore = create<ProjectState, SetState<ProjectState>, GetState<ProjectState>, StoreApiWithSubscribeWithSelector<ProjectState>>(
  subscribeWithSelector(
    immer(
      (set: SetState<ProjectState>, get: GetState<ProjectState>) => ({
        tables: [],
        project: {},
        fetch: async () => {
          const projectId = cache.getItem(CONSTANT.PROJECT_ID);
          await request.get(`/ncnb/project/info/${projectId}`).then((res: any) => {
            console.log(45, res);
            const data = res?.data;
            if (res?.code === 200 && data) {
              set({project: data});
              get().dispatch.fixProject(data);
              //计算全部表名
              const tables = _.flatMapDepth(data?.projectJSON?.modules, (m) => {
                console.log(130, m);
                return _.map(m.entities, 'title')
              }, 2);
              set({
                tables
              })
            } else {
              message.error('获取项目信息失败');
            }
          });
        },
        dispatch: {
          updateProjectName: (payload: any) => set((state: any) => {
            // @ts-ignore
            state.project.projectName = payload;
          }),
          ...ProjectJsonSlice(set, get),
          ...ConfigJsonSlice(set, get),
        }
      })
    )
  )
);

const globalState = useGlobalStore.getState();
// @ts-ignore
useProjectStore.subscribe(state => state.project, (project, previousProject) => {
  console.log(109, project);
  console.log(110, previousProject);
  globalState.dispatch.setSaved(false);
  Save.saveProject(project);
  globalState.dispatch.setSaved(true);
});

export default useProjectStore;

六、源码地址

https://download.csdn.net/download/weixin_37576193/87732876

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/470927.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

全国各省份影像下载地址(11级别)

安徽省https://pan.baidu.com/s/1fMuWhVZFvSH1UlCGU1bPpA?pwdeasy澳门特别行政区https://pan.baidu.com/s/1aU2D4o2bfeHTJTb6AkUtVA?pwdeasy北京市https://pan.baidu.com/s/1eaNzAWm1pUx_rjhD_wHHhA?pwdeasy福建省百度网盘 请输入提取码甘肃省https://pan.baidu.com/s/1mAqf…

【Tools系列】IDA远程调试Linux文件

Date: 2023.4.28 文章目录 1、工具安装2、IDA+linux_server参考1、工具安装 IDA Pro 7.2 2、IDA+linux_server (1)进入到IDA的安装目录,找到文件夹/dbgsrv,其中有两个文件linux_server和linux_server64,分别为32位的服务端和64位的服务端,可根据调试目标进行选择。并将…

RocketMQ第二节(安装和模块详解)

目录 1&#xff1a;RocketMQ安装 1.1&#xff1a;下载安装包解压 1.2&#xff1a;修改运行配置 1.3&#xff1a;运行RocketMQ 1.3.1&#xff1a;启动NameServer 1.3.2&#xff1a;启动Broker 1.4&#xff1a;消息收发 1.5&#xff1a;服务关闭 2&#xff1a;RocketMQ模…

八部门联合推动IPv6创新发展 知道创宇助力IPv6快速安全改造

近日&#xff0c;工业和信息化部、中央网信办、国家发展改革委、教育部、交通运输部、人民银行、国务院国资委、国家能源局等八部门联合印发《关于推进IPv6技术演进和应用创新发展的实施意见》&#xff08;以下简称“《实施意见》”&#xff09;&#xff0c;提出到2025年底&…

换个花样玩C++(3)const_cast不是一行代码这么简单

我先不说const_cast的事情,还是回到我们之前遇到的一个问题,先看代码 示例1 #include <iostream> int main() {const int a = 1;int* p = (int*)(&a);*p = 100; std::cout << a; } 这段代码里,本来想通过指针p里修改a的值,vs调试看下来a的值在*p=100;这…

Elasticsearch --- 简介、安装

一、简介 1.1、elasticsearch的作用 elasticsearch是一款非常强大的开源搜索引擎&#xff0c;具备非常多强大功能&#xff0c;可以帮助我们从海量数据中快速找到需要的内容 例如&#xff1a; 在GitHub搜索代码 在电商网站搜索商品 在百度搜索答案 1.2、ELK技术栈 elas…

Linux安装helm

前言 运行环境&#xff1a;CentOS7.9 官方参考文档&#xff1a;官方文档 文章末尾附有一键安装脚本 下载安装包 github下载对应版本的安装包&#xff0c;下载地址 进入对应版本的下载页面&#xff0c;这里以v3.11.3为例 选择对应系统的安装包&#xff0c;这里以linux为例 …

WhatsApp CRM:通过 CRM WhatsApp 集成向客户发送消息

WhatsApp CRM&#xff1a;通过 CRM WhatsApp 集成向客户发送消息 你是否在寻找一个支持WhatsApp整合的CRM&#xff1f;或者&#xff0c;你想将WhatsApp与你当前的CRM整合&#xff1f;这篇文章将回答你所有的问题。我们将首先了解什么是WhatsApp CRM&#xff0c;以及你需要知道…

【Python】丘比特之箭,一箭穿心,快去发给你心仪的人叭~

作者主页&#xff1a;爱笑的男孩。的博客_CSDN博客-深度学习,活动,YOLO领域博主爱笑的男孩。擅长深度学习,活动,YOLO,等方面的知识,爱笑的男孩。关注算法,python,计算机视觉,图像处理,深度学习,pytorch,神经网络,opencv领域.https://blog.csdn.net/Code_and516?typeblog个人简…

20230428 -栈与队列1 | 232. 用栈实现队列、225. 用队列实现栈、Queue和Deque异同介绍

1、232. 用栈实现队列 class MyQueue {//整体实现思路&#xff1a;队列是先进先出&#xff0c;栈是先进后出。使用两个栈&#xff0c;一个栈A负责进&#xff0c;一个栈B负责接收栈A数据&#xff0c;然后出出&#xff0c;队列&#xff1a;A->B>C 栈A&#xff1a;A->B&g…

一分钟教你玩转组合图表

在日常工作中&#xff0c;有时候单一的图表类型无法满足多维度的数据展示&#xff0c;这时候就要考虑使用组合图表。 什么是组合图表呢&#xff1f; 就是将两种及两种以上的图表类型组合起来绘制在一个图表上。 下面我们通过经典的柱线组合图来手把手教会你如何制作组合图表。 …

ChatGLM LoRA微调实战方案

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

Kestrel封装在Winform中

Kestrel封装在Winform中 背景思路方法1方法2方法3&#xff08;本文使用的方法&#xff09; 实现在winform程序中引入几个nuget包新建一个Startup类&#xff08;叫什么名字都行&#xff09;修改Program文件创建controller 运行效果(打开浏览器&#xff0c;输入如下地址&#xff…

【高危】Apache Superset <2.1.0 认证绕过漏洞(POC)(CVE-2023-27524)

漏洞描述 Apache Superset 是一个开源的数据可视化和业务智能平台&#xff0c;可用于数据探索分析和数据可视化。 Apache Superset 受影响版本在使用默认的secret_key时&#xff0c;攻击者可通过默认的secret_key为任意用户生成有效的会话令牌&#xff0c;进而绕过验证造成信…

千耘导航让普通棉农享受到科技红利

孟师傅&#xff0c;新疆阿克苏一名普通的棉花种植户&#xff0c;从事农业20年&#xff0c;开拖拉机也有10多年&#xff0c;之前听过农机自动驾驶&#xff0c;但由于这里通信网络信号不太好&#xff0c;身边朋友使用农机导航效果不是特别理想&#xff0c;因此一直没享受到科技带…

【Python】Python学习笔记(六)字符串

字符串 基本操作 使用索引来读取字符串 Python允许使用正数或者负数来读取字符串中的某一个字符。 使用正数索引&#xff1a; #按顺序打印输出字符串内的所有字符。s ABCDEFGprint(s[0] , s[0]) print(s[1] , s[1]) print(s[2] , s[2]) print(s[3] , s[3]) print(s[4]…

计算机网络学习01

网络分层模型 1、OSI 七层模型是什么&#xff1f;每一层的作用是什么&#xff1f; OSI 七层模型 是国际标准化组织提出一个网络分层模型&#xff0c;其大体结构以及每一层提供的功能如下图所示&#xff1a; 每一层都专注做一件事情&#xff0c;并且每一层都需要使用下一层提…

【MySQL自学之路】第5天——对数据表数据的增删改查1

目录 前言 使用的数据库 数据表 ​编辑 表结构 插入数据&#xff08;insert into&#xff09; 插入一条数据 插入多条数据 修改数据&#xff08;update set&#xff09; 修改一条数据的值 ​编辑 修改多条数据的值 删除数据&#xff08;delete from&#xff09;…

计算机网络学习09(TCP传输可靠性保障)

1、TCP 如何保证传输的可靠性&#xff1f; 基于数据块传输 &#xff1a; 应用数据被分割成 TCP 认为最适合发送的数据块&#xff0c;再传输给网络层&#xff0c;数据块被称为报文段或段。对失序数据包重新排序以及去重&#xff1a; TCP 为了保证不发生丢包&#xff0c;就给每个…

Python德劳内三角剖分

文章目录 初步认识构造函数和属性实战-画个球 初步认识 对于熟悉matplotlib三维画图的人来说&#xff0c;最常用的应该是plot_surface&#xff0c;但这个函数的绘图逻辑是&#xff0c;将xy平面映射到z轴&#xff0c;所以没法一次性绘制球&#xff0c;只能把球分成两半&#xf…