Mysql

數據庫設計幫助:MySql/PostgreSQL 單庫/多庫

  • December 28, 2017

我們計劃使用 PHP 和 MySQL/PostgreSQL 建構基於 Web 的自定義業務分析工具。在我們的應用程序中,我們計劃使用 Excel 表格上傳客戶數據,這些數據將顯示在自定義建構互動式儀表板上。

在開始處理此應用程序之前,我有幾個問題

1)對於從excel上傳的海量數據,哪個數據庫適合MySQL或PostgreSQL?

2)在某些時候,多個客戶可以同時開始數據上傳嗎?為了處理這種情況,建議為每個客戶創建一個單獨的數據庫或為應用程序使用單個數據庫(單租戶與多租戶)。請告訴我每種情況的優缺點?

  1. 如果我採用多個數據庫設計並跨多個數據庫連接表,它將如何影響我的儀表板性能?

謝謝

對於數據倉庫/分析類型的應用程序 (DW/OLAP),我會選擇 PostgreSQL。它具有集合運算符、視窗函式(也稱為分析函式)和公用表表達式。您很可能必須使用 MySQL 在您自己的程式碼中實現其中的部分或全部,並伴隨著出現錯誤的可能性。MySQL 更適合讀取繁重的 OLTP 類型的應用程序,而 PostgreSQL 更適合 OLAP 工作(恕我直言)。

關於“多租戶” - 為什麼不為所有人使用相同的數據庫並簡單地通過 customer_id 辨識不同的客戶 - 或者(取決於客戶的數量)為每個客戶提供單獨的表,在其他表中使用非客戶特定的數據? 您有多少客戶,您希望在未來 10 年內儲存/分析多少數據?現代 RDBMS 可以儲存大量數據并快速檢索(使用合適的磁碟配置),但我更喜歡 PostgreSQL 用於大型數據庫。

如果您只是偶爾跨客戶查詢並且您的大部分分析都是針對每個客戶完成的,那麼分片可能會很有趣——您可以為每個客戶(在不同的磁碟上)設置一個表(甚至是模式)。同樣,數據量的知識在這裡會有所幫助。

此外,關於多租戶,請參閱我向 jynus 提出的關於跨伺服器查詢的問題 - 甚至是同一伺服器內的不同模式。

我接受 jynus 關於“聖戰”的觀點——這篇文章只是我對你的特定問題的看法——如果我被問到不同的場景,我可能會推薦 MySQL。

$$ EDIT $$ 究竟什麼是“我的儀表板性能”?

如果您輸入 Excel 文件中保存的記錄數,那麼兩個 MySQL 和 Postgres 中的任何一個都可以。插入必須分批執行或使用批量介面(數據庫製造商專有,在 MySQL 上可能要求您推送的文件與數據庫伺服器位於同一物理節點上)。

為不同的使用者(或任何你在概念上可能認為邊界的獨立實體)創建單獨的數據庫通常是一種反模式。想像一下,如果你有 5000 個客戶,管理 5000 個數據庫(每個都有自己獨立的結構)真的很痛苦。如果每個客戶有 10000 條記錄,您最終要麼管理一個包含 50M 記錄的小型數據庫,要麼管理 5000 個小型數據庫。另一方面,如果涉及安全問題(您儲存百事可樂和可口可樂的秘密配方),最好使用完全獨立的伺服器。

如果多個客戶同時上傳,我認為沒有問題。如果兩者都可以更新相同的內容,例如(零攝氏度時的水密度),“第二個”上傳者將收到錯誤,因為違反了唯一密鑰。另一方面,如果每個客戶都有自己的數據,customerID 是密鑰的一部分,所以上傳沒有問題。即使批量導入意味著表上的鎖定(不應該),客戶在導入期間也只會遇到短暫的延遲。

引用自:https://dba.stackexchange.com/questions/72441