分布式資料庫如何解決儲存過程?

時間 2021-05-10 02:18:31

1樓:xchliu

這是個好問題。事實上,太多的系統使用儲存過程來實現業務場景了,雖然在網際網路不多,畢竟網際網路系統沒有歷史包袱。在傳統企業系統中,儲存過程改造問題是非常艱鉅的任務。

於是才有了這個問題,也就是說分布式資料支援儲存過程,改造代價就會小很多。而從分布式資料庫實現的角度,變成了乙個選擇題:要不要支援?。

因為單機中儲存過程減少網路開銷,在分布式架構中網路開銷又變大了。選擇支援,則增加實現難度,收益卻不會太大;選擇不支援,很多專案就無緣了。

所以這是個好問題。

2樓:陳廣勝

首先,儲存過程可以減少應用(資料庫客戶端)和資料庫之間的通訊次數,資料庫也可以進行一些激進的優化,可以實現較大的效能提公升。儲存過程要求應用把整個完整邏輯一次性的交給資料庫執行,至於這個資料庫採用什麼架構(單節點的還是分布式的,共享還是無共享的),在概念上並沒有什麼不同。

其次,對於無共享的分布式資料庫(分片),不一樣的地方在於,即使使用儲存過程,資料庫的內部節點之間,有時還是需要不只一次通訊的。第一,分布式事務需要兩階段提交;第二,雖然理論上絕大多數分布式事務都可以拆解成one-shot 事務(分布式事務對每個分片的請求都一次性的推給這個分片節點),但是限於資料庫的架構(比如spanner的自動分片),許多資料庫做不到這點;拆解one-shot事務需要事務對資料分片有感知,並且在事務執行前可以靜態地分析出乙個事務要工作在哪些節點上。

3樓:「已登出」

你覺得分布式資料庫,資料被分散在不同的分片上,然後導致以下3個問題:

1.儲存過程在哪執行?

2.跨分片資料處理的儲存過程如何實現?

3.儲存過程的業務呼叫路由如何實現?

那麼我問你,你提到的Oracle、DB2這類資料庫,它們的儲存一來會分散到不同的磁碟上,二來會通過一些簡單的方式做HA,請問對於以上3個問題,Oracle與DB2是如何做到的,你要不先去看看文件?

Oracle與DB2的專業文件,可比上面那些民間答主,專業的多。

4樓:「已登出」

儲存過程在路由節點執行或者主節點執行,不同資料庫有不同的實現,一般是資料庫的主節點專門處理這任務,拆分之後分配給從節點然後將結果彙總返回

分布式資料庫計算引擎對分布式儲存系統底座提出了哪些新的技術挑戰?

lemon wonder 我說一下HTAP情況,對於資料庫,TP主要是事務相關,一般底層儲存引擎使用行存,對於AP是分析性,對事務要求沒那麼高,一般用列存,要處理HTAP,那要做到行列混合儲存就很困難。對於儲存引擎,一種是外掛程式型,向MySQL中,SQL和儲存約定好介面,實現介面並直接使用。但是要...

分布式資料庫,如hadoop cassandra mysql集群,主流是採用什麼儲存技術,DAS NAS還是SAN?

如果簡單的回答題主的問題,那麼答案是DAS。除了MySQL以外,其他的都是經典的分布式系統。這些分布式系統通常假定任何裝置都是不可靠的,演算法上會對資料做冗餘儲存,因此對介質本身的要求相對較低,DAS即可。MySQL相對特殊。一般而言,如果用MySQL,題主要用的是關聯式資料庫,且資料一般是比較重要...

如何評價青雲開源的分布式資料庫 radondb?

就沒人吐槽一下那個 計算節點 麼?計算節點 使用tokudb儲存引擎儲存全量資料,為了支援複雜查詢。如果我乙個分布式系統的資料總量有20T 100T,也用單個 計算節點 儲存全量資料?而且這個資料同步過程是非同步的,顯然沒法用在OLTP場景。 靈劍 用Sharding中介軟體冒充NewSQL這件事,...