Sql-Server

在應用程序中同時使用雲和本地數據庫

  • May 31, 2021

我正在使用 Entity 框架在 .NET Core 中開發紡織品商店應用程序。所以我在 Azure 中開發它,並使用 Shop ID 作為主鍵的不同商店使用相同的應用程序。

從理論上講,這對不同類型的商店都適用,特別是因為這個概念在任何規模的商店中都是相同的。

但問題是,在大型商店中,交易量會非常高(流量)。所以他們不能接受服務供應的延遲。因此,當多個大型商店使用同一個數據庫時,小型商店的傳遞也可能會出現嚴重延遲。

作為一種解決方案,我考慮為大型商店使用本地數據庫並將其與 Azure SQL 同步。但是出現了一個問題,它應該同步多快。因為有公眾使用者正在使用這些商店的應用程序線上購買。因此,如果同步延遲可能最終導致線上客戶的庫存資訊錯誤。

那麼這是處理這種情況的最佳和有效的方法。我很高興沒有 OnPrem 解決方案,但 Azure DB 本身的配置很好。

請建議!提前致謝。

一種選擇可能是在 azure sql 彈性池中擁有​​一堆數據庫。這取決於商店的數量,但理想情況下,每家商店都有一個分貝。

如果流量大,盡量減少數據庫和應用之間的in/out數據量;選項是記憶體或查詢優化和良好的索引策略。

我喜歡@MBuschi 的回复,但我想補充一點。

我曾在一家提供相同服務的公司工作,我認為該解決方案可以應用於您的相同場景,我的建議是:使用單租戶(圖片中的選項 2)。

在此處輸入圖像描述

  1. 訂單:很好,因為它允許您分離數據,因此當客戶離開時,您可以刪除數據庫。將多租戶(圖片中的選項 3)留給 Uber 和 Stotify,它們是企業對客戶,您更像是企業對企業,對嗎?
  2. 成本:您可以與使用者簽訂契約,由他們支付消費費用。因此,他們將按月收取他們的消費+您的應用程序的費用。
  3. 性能:正如@MBuschi 所說,您還可以將數據庫放在彈性池中,最大限度地降低成本並獲得更好的性能。

…但我不建議你去混合。如果你去雲,那就堅持下去,把一切都放在雲上。您要避免的場景是讓客戶在雲端和本地:這將是一場噩夢,因為無論您是否願意,您最終都會開發兩個不同的應用程序。

“……不,但實際上,應用程序在本地和雲端是相同的……”

是的,也許現在,想想未來……

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