一、開源項(xiàng)目簡介
ERD Online 是一個開源、免費(fèi)在線數(shù)據(jù)建模、元數(shù)據(jù)管理平臺。提供簡單易用的元數(shù)據(jù)設(shè)計、關(guān)系圖設(shè)計、SQL查詢等功能,輔以版本、導(dǎo)入、導(dǎo)出、數(shù)據(jù)源、SQL解析、審計、團(tuán)隊協(xié)作等功能、方便我們快速、安全的管理數(shù)據(jù)庫中的元數(shù)據(jù)。
二、開源協(xié)議
使用AGPL-3.0開源協(xié)議
三、界面展示
功能圖鑒
關(guān)系圖設(shè)計
元數(shù)據(jù)設(shè)計
版本管理
導(dǎo)入
導(dǎo)出
在線SQL
執(zhí)行計劃
四、功能概述
特性
- 開箱即用:將注意力集中在數(shù)據(jù)結(jié)構(gòu)設(shè)計上
- 團(tuán)隊協(xié)作:三級權(quán)限(擁有者、管理員、普通角色)管理,元素級權(quán)限控制
- 元數(shù)據(jù)設(shè)計:快速復(fù)制已有表結(jié)構(gòu)、JSON 生成表,表默認(rèn)字段、默認(rèn)大小寫等控制
- 元數(shù)據(jù)管理:在線管理表結(jié)構(gòu),支持正向向數(shù)據(jù)庫執(zhí)行
- 元數(shù)據(jù)解析:將已有的數(shù)據(jù)庫結(jié)構(gòu)解析到軟件中管理
- 多數(shù)源支持:支持多種數(shù)據(jù)庫連接在線管理(Mysql、Oracle、DB2、SqlServer、PostGreSql),各數(shù)據(jù)源之間元數(shù)據(jù)結(jié)構(gòu)同步
- 版本管理:每個需求與變動,都可以生成版本;每個版本之間可以比對差異
- 可將所有表結(jié)構(gòu),自動生成 word、html、md 文檔,便于線下流動
- 在線SQL:在線SQL查詢、SQL執(zhí)行計劃,歷史查詢留痕
- 永不丟失:元數(shù)據(jù)歷史操作版本留痕(最近9次),可以恢復(fù)到任意歷史版本
- 數(shù)據(jù)字典:全局?jǐn)?shù)據(jù)字典設(shè)計,控制元數(shù)據(jù)設(shè)計規(guī)范
發(fā)展里程碑
什么是ERD Online
ERD 是Entity-Relationship Diagram的縮寫,中文意思為實(shí)體關(guān)系圖,也被稱為 ERD、ER 圖、實(shí)體聯(lián)系模型、實(shí)體聯(lián)系模式圖或 ER 模型,是一種用于數(shù)據(jù)庫設(shè)計的結(jié)構(gòu)圖。ERD Online為開發(fā)者提供一站式的數(shù)據(jù)庫結(jié)構(gòu)設(shè)計、版本管理、執(zhí)行 sql、逆向解析、文檔生成功能。
我們的目標(biāo):通過對元數(shù)據(jù)管理,向大數(shù)據(jù)、低代碼、BI、大屏應(yīng)用等賦能,讓數(shù)據(jù)成為企業(yè)創(chuàng)新的核心引擎。
核心能力
- 元數(shù)據(jù)解析
- 從數(shù)據(jù)源將元數(shù)據(jù)解析出來,通過ERD Online在線管理。
- 元數(shù)據(jù)管理
- 這一設(shè)計解決了軟件開發(fā)生命周期中,元數(shù)據(jù)管理效率低下的問題。
- 多數(shù)源支持(Mysql、Oracle、Sqlserver、Postgresql)
- 支持所有符合SQL規(guī)范的數(shù)據(jù)源,常見的有Mysql、Oracle、Sqlserver、Postgresql。
- 多數(shù)源同步
- 在線ERD Online,多數(shù)據(jù)源同步。這一設(shè)計解決了一個產(chǎn)品需要適配多種不通數(shù)據(jù)源,不同數(shù)據(jù)源 SQL 方言不一致問題。
- 在線導(dǎo)出 SQL(全量或差量)
- 通過記錄元數(shù)據(jù)變動,形成版本節(jié)點(diǎn),支持不同版本比對,生成各種數(shù)據(jù)源 SQL 腳本。這一設(shè)計解決了產(chǎn)品從開發(fā)階段到生產(chǎn)階段,差量 SQL 比對費(fèi)時耗力的問題。
- 在線執(zhí)行 SQL
- 無需安裝第三方數(shù)據(jù)庫管理工具,無需打開Shell窗口,在線往數(shù)據(jù)源執(zhí)行 SQL。這一功能節(jié)省了企業(yè)大量采購正版數(shù)據(jù)庫管理軟件的費(fèi)用。
- 數(shù)據(jù)血緣管理
- 在線管理元數(shù)據(jù)之間的關(guān)聯(lián)關(guān)系,形成血緣視圖,一目了然。這一設(shè)計解決了傳統(tǒng)數(shù)據(jù)關(guān)系不清晰,讓數(shù)據(jù)關(guān)系梳理更高效。
- 團(tuán)隊協(xié)作
- 精準(zhǔn)的權(quán)限劃分,根據(jù)不通角色分配不通功能,保障數(shù)據(jù)安全。支持多人實(shí)時在線協(xié)作,自動同步。
- 元數(shù)據(jù)導(dǎo)出(Word、Pdf、Html、Markdown)
- 支持導(dǎo)出離線文檔 Word、Pdf、Html、Markdown,便于線下流通交流、存檔。
- 官方市場一鍵導(dǎo)入
- 官方市場有大量各行業(yè)、各類型、各設(shè)備、各通訊已有的元數(shù)據(jù),可一鍵導(dǎo)入自己的項(xiàng)目,快速形成自己的元數(shù)據(jù)結(jié)構(gòu)。
- 每個儀器、每個軟件、每次通訊,他們產(chǎn)生、傳遞的數(shù)據(jù)結(jié)構(gòu)都是固定的,可在官方市場搜索并導(dǎo)入,避免重復(fù)建設(shè)。
- 低代碼平臺(待建設(shè))
- BI
- 大屏
- 低代碼平臺
為誰服務(wù)
- 開發(fā)工程師
- 一鍵解析已有數(shù)據(jù)源元數(shù)據(jù)并在線管理,生成差量上線SQL
- 根據(jù)已有的元數(shù)據(jù)結(jié)構(gòu),生成項(xiàng)目代碼
- 自定義每個表固定的列
- BI開發(fā)
- 大屏開發(fā)
- 架構(gòu)師
- 打通產(chǎn)品線所有數(shù)據(jù)源
- 所有數(shù)據(jù)源在線管理,避免數(shù)據(jù)孤島
- 約定數(shù)據(jù)源字段規(guī)范
- 審計開發(fā)人員數(shù)據(jù)源操作
- DB 工程師
- 在線管理數(shù)據(jù)源元數(shù)據(jù),自定義全部數(shù)據(jù)源看板
- 審計上線 SQL
- 項(xiàng)目管理/產(chǎn)品管理/工程效率管理人員
- 了解產(chǎn)品發(fā)展過程中,數(shù)據(jù)形態(tài)以及變化
- 通過數(shù)據(jù)去做產(chǎn)品發(fā)展決策
五、技術(shù)選型
業(yè)務(wù)架構(gòu)介紹
ERD Online技術(shù)棧
- 前端: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 是一種前端狀態(tài)管理技術(shù),類似于Redux。
ERD Online 正是借助 Zustand 強(qiáng)大的狀態(tài)管理技術(shù),實(shí)現(xiàn)跨頁面操作元數(shù)據(jù)大JSON,實(shí)現(xiàn)頁面和js分離。
Zustand 用法
ERD Online 中,操作大JSON的方法,都提取到了src/store這里,在這里管理了 ERD Online 對大json的全部操作甚至,由于做到了頁面和js分離,你可以把 ERD Online 從React 項(xiàng)目改造成 Vue項(xiàng)目(理論可行,因?yàn)锳nt Design也有Vue版)
文章來源:http://www.zghlxwxcb.cn/news/detail-430434.html
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('獲取項(xiàng)目信息失敗'); } }); }, 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.zghlxwxcb.cn/news/detail-430434.html
到了這里,關(guān)于一個開源、免費(fèi)在線數(shù)據(jù)建模、元數(shù)據(jù)管理平臺,簡單易用的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!