簡體   English   中英

如何編寫單個前端應用程序以容納共享的數據庫/分離的架構數據結構?

[英]How do I write a single front-end application to accommodate a shared database/seperate schema data structure?

我正在使用django rest框架和帶有PostgreSQL數據庫的django-tenant-schemas包創建一個SaaS應用程序。 數據庫中的每個用戶都具有相同的基本架構。 用戶可以擴展基本架構,以允許自定義表/列。

因此,如果我想編寫一個能夠解釋自定義表的前端,該怎么辦? (如果有幫助,我正在使用角度2)

為了符合SO提出的可以回答而不僅僅是討論的問題的政策,以下是我的問題:

1)甚至可以為這種類型的數據結構編寫一個前端應用程序嗎?

2)我想做的事情有一個字,一個概念或想法嗎? 我希望能夠對此進行更多的研究,但是我很難知道什至谷歌。

如果我的問題似乎含糊不清,那是因為我仍在嘗試找出如何提出問題。 如果您需要澄清,請隨時在評論中提問。 我真的只是在尋找#2的答案,所以我可以繼續我的研究。

這是可能的,但很困難(不,我所知道的並沒有一個詞)。 您的應用程序除了其原始功能外,還需要承擔數據庫管理應用程序的某些職責,然后用戶界面需要能夠適應可變模式。 您將進行很多查詢系統表的操作,以發現用戶對其架構的操作,並親自管理訪問和權限,以確保用戶可以更改其更改,但不能更改核心模式。

您確定需要一個關系數據庫嗎? 在不完全知道您要做什么的情況下很難提出任何建議,但是如果您的模型不是太復雜,那么像MongoDB這樣的“無模式”文檔數據庫可能會更合適。 如果您確實有一個高度關系的結構,只需要在頂部支持自定義,則可以考慮利用Postgres的JSON / JSONB數據類型。

實際上,這種設置純粹是API問題,而不是前端問題。 請記住,您的前端並不關心數據庫的設置方式,它只關心可以調用的API。 您的API必須使用每個人都可以調用的公用端點來進行工作,然后根據當前用戶訪問正確的數據庫。 這被稱為多租戶應用程序-實際上,Rails有一個提供此功能的gem(公寓gem) 我知道您使用的是Django,但如果Rails有一個“插件”來協助此設置,那么Django具有類似的功能我就不會感到驚訝。

請注意,由於不同的用戶可能具有不同的表,因此您的前端並不是完全靜態的-它可能實際上必須包含返回用戶自定義信息的API請求,以幫助其根據不同用戶的需求配置其UI。 這不是重點,只是前端應用程序設計中要包含的內容。

您應該重新考慮數據庫設計。 您的操作方式將導致大量維護問題。

這是Microsoft關於SaaS應用程序的數據體系結構的重要白皮書。

這是有關Salesforce體系結構文章

對於您的特定情況,假設您有一個聯系人表,用戶可以在其中存儲他們的聯系人。 您可以擁有一個包含所有租戶/帳戶將具有的公用字段的公用基本表。 然后有一個contact_custom_fields表來存儲自定義字段定義。 該表可能具有fieldId,accountId,fieldName,fieldType ...

最后,有一個contact_custom_field_values表來存儲自定義字段的實際字段值。 該表可以具有accountId,contactId,fieldId,fieldValue。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM