海量儲存系列之一

2021-09-23 16:47:58 字數 1155 閱讀 4786

乙個資料庫,我們可以抽象的認為由下面的乙個邏輯結構組成,刨除意義不大的檢視,儲存過程,外來鍵限制等之後,我們就剩下了下面的這張圖:

從api來說,也就是sql,結構化查詢語言,這個東東我們後面再去細說,先來看看這個關係代數模型。

之所以要從這裡開始,主要的原因是因為,這是最受到關注的乙個部分,自大從一開始做分布式資料層開始,被人問得最多的問題就是:1. 切分以後如何做join。2.如何進行分布式事務。。

可惜,現在我也沒有乙個方法能做到100%讓您滿意。。因為,沒有銀彈,只有取捨。

取捨的原則,也就是要根據,1) 你能做什麼。2)你需要做什麼。3)你能放棄什麼。來決定上層系統的整體架構。傳統的acid的關係代數模型,在新的環境中,很難復用。但,原理沒有變,做法上可以做微調

不知道各位在想起關係代數的時候,會想到什麼?

我給大家一些解釋(當然我沒仔細看過:)

不愛看上面解釋的童鞋們呢,也不用糾結,給大家一些簡單的例子。

1. select 

from tab where user = ?

這就是最簡單的關係代數的例子,我們對他進行抽象來說,其實就是將大量資料中的一小批資料,按照某個要求查出來的過程。

2. select ename,dname from emp,deptwhere emp.deptno=dept.deptno and emp.deptno=30

這是另外乙個例子,本質來說就是個∩的操作。

3. select count() from tab.

這是關係代數的第二個主要的用處,就是進行統計和計算,這類的函式有個專用的名字,叫做aggragate function.

恩,基本上有這個概念就可以了。

那麼這裡請聯想,你所接觸到的什麼地方會有碰到有這樣的一些計算呢?

資料庫?對。不過不是廢話麼。。

還有就是hadoop的平台也會用到,hive pig.

那麼,我們對這類關係代數進行一下簡單的概念上的小結。

也就是用於處理資料的一類方法的抽象,最主要的作用是,按照某個條件選出一批資料,然後再進行一些簡單的統計計算的功能。如是而已:)

本文**於"阿里中介軟體團隊播客",原文發表時間"

2011-12-07"

海量儲存系列之十三

在上一章中,我們主要介紹了規則引擎中最重要的乙個部分,自動擴容,在今天的章節,我們主要還是介紹一下我們在 tddl中的工程實踐吧。首先從原理開始吧。規則引擎是什麼呢?對應在上述例子裡面,其實就是dbnum pk 3 這個規則。他的變化可能很多,比如對於一致性hash則變為乙個if else 的表示式...

海量儲存系列之六

上次我們講到,單機事務個我們面臨的問題,下面我們來說一些我所知的解決的方法。在我開始做 資料層的時候,被問得最多的無非也就是 如何做事務,如何做join.至今仍然如此,我一般都會簡單而明確的跟對方說 沒有高效的實現方法。雖然沒有高效的實現,但實現還是有的。作為引子,我們先來介紹一下這種實現的方式。我...

海量儲存系列之五

在上一章節,我們一起瀏覽了如何進行單機事務操作。下面我們來看一下分布式場景中我們碰到的問題吧。需要說明的一點是,這裡涉及到的權衡點非常的多。就我短短的工作經驗裡面,也只是能夠簡單的涉獵一部分,因為在事務這個領域,目前大家都在嘗試提出各種各樣的不同的方法,而在taobao,我們目前也沒有完美的解決這個...