Sql-Server
在應用程序中同時使用雲和本地數據庫
我正在使用 Entity 框架在 .NET Core 中開發紡織品商店應用程序。所以我在 Azure 中開發它,並使用 Shop ID 作為主鍵的不同商店使用相同的應用程序。
從理論上講,這對不同類型的商店都適用,特別是因為這個概念在任何規模的商店中都是相同的。
但問題是,在大型商店中,交易量會非常高(流量)。所以他們不能接受服務供應的延遲。因此,當多個大型商店使用同一個數據庫時,小型商店的傳遞也可能會出現嚴重延遲。
作為一種解決方案,我考慮為大型商店使用本地數據庫並將其與 Azure SQL 同步。但是出現了一個問題,它應該同步多快。因為有公眾使用者正在使用這些商店的應用程序線上購買。因此,如果同步延遲可能最終導致線上客戶的庫存資訊錯誤。
那麼這是處理這種情況的最佳和有效的方法。我很高興沒有 OnPrem 解決方案,但 Azure DB 本身的配置很好。
請建議!提前致謝。
一種選擇可能是在 azure sql 彈性池中擁有一堆數據庫。這取決於商店的數量,但理想情況下,每家商店都有一個分貝。
如果流量大,盡量減少數據庫和應用之間的in/out數據量;選項是記憶體或查詢優化和良好的索引策略。
我喜歡@MBuschi 的回复,但我想補充一點。
我曾在一家提供相同服務的公司工作,我認為該解決方案可以應用於您的相同場景,我的建議是:使用單租戶(圖片中的選項 2)。
- 訂單:很好,因為它允許您分離數據,因此當客戶離開時,您可以刪除數據庫。將多租戶(圖片中的選項 3)留給 Uber 和 Stotify,它們是企業對客戶,您更像是企業對企業,對嗎?
- 成本:您可以與使用者簽訂契約,由他們支付消費費用。因此,他們將按月收取他們的消費+您的應用程序的費用。
- 性能:正如@MBuschi 所說,您還可以將數據庫放在彈性池中,最大限度地降低成本並獲得更好的性能。
…但我不建議你去混合。如果你去雲,那就堅持下去,把一切都放在雲上。您要避免的場景是讓客戶在雲端和本地:這將是一場噩夢,因為無論您是否願意,您最終都會開發兩個不同的應用程序。
“……不,但實際上,應用程序在本地和雲端是相同的……”
是的,也許現在,想想未來……