簡體   English   中英

使用分布式Web服務查詢多個數據庫

[英]Querying multiple databases using distributed web services

我對以下情況的最佳做法,尤其是預期的性能有一個快速的疑問:

如果我要從包含示意性的相同sql數據庫的多台服務器中查詢數據,請問讓每台服務器提供一個Web方法(單個客戶端應用程序可以使用)是一種合適的(相對較快)的解決方案嗎?

數據只需要在客戶端上進行整合,就必須串行(或並行使用)幾種Web方法以將數據提供給客戶端。 每個服務器也將實體框架實現為ORM。

性能是我主要關注的問題,隨着我們開始擴展到越來越多的服務器,結果是否會過慢?

問題不是性能,而是可靠性。 隨着您需要查詢以將響應返回給客戶端的服務數量增加,可靠性也會降低。 假設您的數據庫具有99%的可用性(整個一年的維護,補丁和升級總停機時間少於4天)。 如果您需要查詢客戶看到的5個數據庫,並且實際可用性只有95%,那么您的站點一年就會出現將近18天的故障。 如果有10個數據庫,則可用性為90%(關閉了35天),而50台服務器則下降到60%,這意味着您的站點無法使用。

這就是為什么在這種橫向擴展方案中,驅動力是可靠性的原因,而可靠性只有通過解耦數據庫才能實現。 通常的技巧是為數據庫實現異步消息傳遞總線以進行通信,並使到站點的每個請求僅在其本地分片上連接,而每個請求永遠不會查詢多個數據庫。

有關如何大規模完成此操作的詳細說明,請參見本演示文稿MySpace如何使用基於SQL Server的消息傳遞總線來實現可伸縮性

SIGMOD 2009主題演講將依次介紹Facebook如何獲得類似的結果: 構建Facebook:使用memcached和MySQL分區實現大規模性能

如果您的示意性相同的數據駐留在不同的數據庫中,那么您是否研究過表分區並將所有數據存儲在一個數據庫中? 這可能會有所幫助。

在當前情況下,我建議您使用ORM / ADO.Net從不同的數據庫服務器中獲取數據,然后在應用程序中進行邏輯合並。

在SQL Server 2005中, 有一些方法可以通過Web服務公開數據,但是我不建議您這樣做,因為Web服務本身會跨越應用程序邊界,因此會降低性能。

暫無
暫無

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

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