官术网_书友最值得收藏!

1.3 系統(tǒng)架構(gòu)中的數(shù)據(jù)分布式設(shè)計(jì)

系統(tǒng)架構(gòu)中的數(shù)據(jù)分布式設(shè)計(jì)是支持分布式處理的軟件設(shè)計(jì),即在通信網(wǎng)絡(luò)互連的多處體系結(jié)構(gòu)上執(zhí)行任務(wù)的系統(tǒng)設(shè)計(jì)。在分布式設(shè)計(jì)中,分布式操作系統(tǒng)、分布式程序設(shè)計(jì)語(yǔ)言及其編譯系統(tǒng)、分布式文件系統(tǒng)、分布式數(shù)據(jù)庫(kù)系統(tǒng)等,這些都是分布式的關(guān)鍵技術(shù)。下面將介紹數(shù)據(jù)分布式設(shè)計(jì)的相關(guān)內(nèi)容。

1.獨(dú)立Schema式模式設(shè)計(jì)

獨(dú)立Schema,簡(jiǎn)單來(lái)說(shuō),就是一個(gè)大系統(tǒng)由相關(guān)的多個(gè)小系統(tǒng)組成,且不同小系統(tǒng)具有互不相同的數(shù)據(jù)庫(kù)Schema定義。獨(dú)立模式可管理性高,通信開(kāi)銷小。

我們?cè)趯W(xué)習(xí)數(shù)據(jù)庫(kù)SQL的過(guò)程中,會(huì)遇到一個(gè)模糊的Schema概念。Schema就是數(shù)據(jù)庫(kù)對(duì)象的集合,這個(gè)集合包含各種對(duì)象,如表、視圖、存儲(chǔ)過(guò)程、索引等。為了區(qū)分不同的集合,就需要為不同的集合命名。默認(rèn)情況下,一個(gè)用戶對(duì)應(yīng)一個(gè)集合,用戶的Schema名同于用戶名,所以Schema集合看上去像用戶名。

如果把DataBase看作是一個(gè)倉(cāng)庫(kù),該倉(cāng)庫(kù)內(nèi)有很多房間(Schema),一個(gè)Schema代表一個(gè)房間,那么Table可以被看作是每個(gè)房間中的儲(chǔ)物柜,User是每個(gè)Schema的用戶并有操作數(shù)據(jù)庫(kù)中每個(gè)房間的權(quán)利。也就是說(shuō),每個(gè)數(shù)據(jù)庫(kù)映射的User有每個(gè)Schema(房間)的鑰匙。訪問(wèn)一個(gè)表時(shí),如果沒(méi)有指明該表屬于哪一個(gè)Schema中,系統(tǒng)就會(huì)自動(dòng)在表上添加默認(rèn)的Schema名。在數(shù)據(jù)庫(kù)中,一個(gè)對(duì)象的完整名稱為schema.object,而不是user.object。

在MySQL中創(chuàng)建一個(gè)Schema和創(chuàng)建一個(gè)DataBase的效果是一樣的,但是在SQL Server和Oracle數(shù)據(jù)庫(kù)中效果是不同的。

在SQL Server 2005中,為了向后兼容,當(dāng)使用存儲(chǔ)過(guò)程創(chuàng)建一個(gè)用戶的時(shí)候,SQL Server 2005同時(shí)也創(chuàng)建了一個(gè)與用戶名相同的Schema。當(dāng)使用CREATE USER命令創(chuàng)建數(shù)據(jù)庫(kù)用戶時(shí),可以用該用戶指定一個(gè)已經(jīng)存在的Schema作為默認(rèn)的Schema;如果不指定,則該用戶所默認(rèn)的Schema即為DBO Schema。我們將DBO房間(Schema)比作一個(gè)大的公共房間,在當(dāng)前登錄用戶沒(méi)有默認(rèn)Schema的前提下,如果在大倉(cāng)庫(kù)中進(jìn)行一些操作(如創(chuàng)建表),但沒(méi)有指定特定的房間(Schema),那么物品就會(huì)放在公共的DBO房間中。但是如果當(dāng)前登錄用戶有默認(rèn)的Schema,那么所執(zhí)行的操作都是在默認(rèn)的Schema上進(jìn)行。

在Oracle數(shù)據(jù)庫(kù)中不能直接新建一個(gè)Schema,如果要想創(chuàng)建一個(gè)“Schema”,只能通過(guò)創(chuàng)建一個(gè)用戶的方法實(shí)現(xiàn)。在創(chuàng)建一個(gè)用戶的同時(shí),為這個(gè)用戶創(chuàng)建一個(gè)與用戶名同名的Schema,并作為該用戶的默認(rèn)Schema。此時(shí),Schema的個(gè)數(shù)與User的個(gè)數(shù)相同,而且Schema名與User名一一對(duì)應(yīng)并相同。

下面簡(jiǎn)單介紹Schema的基礎(chǔ)知識(shí)。

1)關(guān)于Schema的表

(1)設(shè)計(jì)數(shù)據(jù)的表、索引及表與表的關(guān)系。

(2)在數(shù)據(jù)建模的基礎(chǔ)上將關(guān)系模型轉(zhuǎn)為數(shù)據(jù)庫(kù)表。

(3)在滿足業(yè)務(wù)模型需要的基礎(chǔ)上,根據(jù)數(shù)據(jù)庫(kù)和應(yīng)用特點(diǎn)來(lái)優(yōu)化表結(jié)構(gòu)。

2)關(guān)于Schema程序功能與性能

(1)滿足業(yè)務(wù)功能需求。

(2)同性能密切相關(guān)。

(3)滿足周邊需求(統(tǒng)計(jì)、遷移等)。(4)數(shù)據(jù)庫(kù)擴(kuò)展性。

3)關(guān)于Schema的索引

(1)正確使用索引。

(2)更新盡可能使用主鍵或唯一索引。

(3)主鍵盡可能使用自增ID字段。

(4)核心查詢使用覆蓋索引。

(5)建立聯(lián)合索引,避免回收表數(shù)據(jù)。

2.集中式模式設(shè)計(jì)

集中式模式設(shè)計(jì)是指一個(gè)大系統(tǒng)必須支持來(lái)自不同地方的訪問(wèn),或者該系統(tǒng)由多個(gè)不同的小系統(tǒng)組成,對(duì)數(shù)據(jù)進(jìn)行集中化、統(tǒng)一格式存儲(chǔ)。該模式可管理性、數(shù)據(jù)一致性都比較高。

互聯(lián)網(wǎng)的技術(shù)架構(gòu)正在經(jīng)歷“集中式→分布式→云平臺(tái)”的發(fā)展歷程。這3種技術(shù)架構(gòu)的產(chǎn)生過(guò)程是一個(gè)迭代發(fā)展過(guò)程。從技術(shù)和優(yōu)勢(shì)來(lái)說(shuō),這也是一個(gè)逐漸演進(jìn)過(guò)程;從業(yè)務(wù)需求和架構(gòu)成熟度來(lái)說(shuō),這是一個(gè)愈加遞增、健壯的發(fā)展過(guò)程。

目前,集中式架構(gòu)主要集中在傳統(tǒng)IT行業(yè),分布式和云平臺(tái)技術(shù)架構(gòu)主要集中在需求演變快速的互聯(lián)網(wǎng)行業(yè),但這并不能表明滿足低并發(fā)、擴(kuò)展性差的集中式架構(gòu)就落后了。對(duì)于傳統(tǒng)行業(yè)來(lái)說(shuō),在業(yè)務(wù)壓力不大、并發(fā)要求和擴(kuò)展性不高、公司技術(shù)人員能力迭代更新延遲的前提下,集中式三層架構(gòu)依舊有其優(yōu)勢(shì)和價(jià)值。

3.分區(qū)式模式設(shè)計(jì)

分區(qū)主要分為水平分區(qū)與垂直分區(qū)。當(dāng)系統(tǒng)為“地域分布廣泛的用戶”提供相同服務(wù)時(shí),常常使用水平分區(qū)策略。垂直分區(qū)為字段分隔,一般較少使用。采用分區(qū)方式,可伸縮性較好。

(1)分區(qū)式模式是將記錄進(jìn)行分類(即分片、分區(qū)或分箱),它不關(guān)心記錄的順序。

(2)分區(qū)式模式的目的是將數(shù)據(jù)中相似的數(shù)據(jù)記錄成不同的、更小的數(shù)據(jù)。

(3)分區(qū)式模式的適用范圍就是指必須提前知道有多少個(gè)分區(qū),例如按年、月、日等分區(qū)。

(4)分區(qū)式模式的結(jié)構(gòu)中對(duì)數(shù)據(jù)是通過(guò)分區(qū)器進(jìn)行分區(qū)的,所以需要自定義分區(qū)器(partitioner)函數(shù)來(lái)確定每條記錄應(yīng)該被分在哪個(gè)分區(qū)。

4.復(fù)制式模式設(shè)計(jì)

復(fù)制式模式設(shè)計(jì)是指在整個(gè)分布式系統(tǒng)中保存多個(gè)副本,并且以某種機(jī)制保持多個(gè)數(shù)據(jù)副本之間的數(shù)據(jù)一致性。復(fù)制式可有效提升數(shù)據(jù)的可靠性。

5.子集式模式設(shè)計(jì)

子集式模式設(shè)計(jì)是指某節(jié)點(diǎn)因功能或非功能考慮而保持全體數(shù)據(jù)的一個(gè)相對(duì)固定的子集。子集式是復(fù)制式的特殊方式。

6.重組式模式設(shè)計(jì)

重組式模式設(shè)計(jì)是指不同數(shù)據(jù)節(jié)點(diǎn)因要支持的功能不同,而以不同的Schema保存數(shù)據(jù),但本質(zhì)上數(shù)據(jù)是同源的,并以“重新組織”的格式進(jìn)行傳遞和保存。

主站蜘蛛池模板: 航空| 托克逊县| 塔城市| 拉萨市| 北票市| 沅江市| 华阴市| 乡城县| 漳平市| 林芝县| 冕宁县| 罗源县| 大竹县| 南充市| 浑源县| 浦县| 太白县| 鹿泉市| 喀什市| 景宁| 海晏县| 塔河县| 五大连池市| 喜德县| 阜新市| 秦皇岛市| 酒泉市| 陆丰市| 横山县| 新源县| 罗甸县| 乌兰浩特市| 唐山市| 松原市| 滨州市| 上杭县| 葫芦岛市| 桂东县| 大田县| 梅河口市| 鞍山市|