摘要:使用海量并行處理架構(gòu),運(yùn)行于與平臺集群,支持級數(shù)據(jù)存儲。水平可擴(kuò)展隨著數(shù)據(jù)量和吞吐量的增長,開發(fā)人員能夠利用通過服務(wù)器和云基礎(chǔ)架構(gòu)來增加系統(tǒng)的容量。如果一個復(fù)合索引被指定為唯一索引,則這個復(fù)合值一定是唯一的。
1 簡介
SequoiaDB(巨杉數(shù)據(jù)庫)是一款分布式非關(guān)系型文檔數(shù)據(jù)庫,可以被用來存取海量非關(guān)系型的數(shù)據(jù),其底層主要基于分布式,高可用,高性能與動態(tài)數(shù)據(jù)類型設(shè)計,與當(dāng)前主流分布式計算框架 Hadoop 緊密集成。
SequoiaDB 同時兼顧了關(guān)系型數(shù)據(jù)庫中眾多的優(yōu)秀設(shè)計:如索引、動態(tài)查詢和更新等,同時以文檔記錄為基礎(chǔ)更好地處理了動態(tài)靈活的數(shù)據(jù)類型。
SequoiaDB 使用 MPP(海量并行處理)架構(gòu),運(yùn)行于 Linux x86-64 與 PowerPC 平臺集群,支持 PB 級數(shù)據(jù)存儲。
SequoiaDB 是為在現(xiàn)代開發(fā)技術(shù)、編程模型以及計算資源條件下如何搭建和運(yùn)行應(yīng)用程序而設(shè)計的。
1.1 如何搭建應(yīng)用程序新的復(fù)雜型數(shù)據(jù)類型:在今天的應(yīng)用程序中,相對于傳統(tǒng)應(yīng)用單一的關(guān)系模型,出現(xiàn)了多種多樣的數(shù)據(jù)類型,包括動態(tài)屬性、混合結(jié)構(gòu)、文本、多媒體、數(shù)組以及其他復(fù)雜類型都是很常見的。
靈活性:應(yīng)用程序中的數(shù)據(jù)模型隨著開發(fā)的進(jìn)展,是不斷變化的。這是由于現(xiàn)代互聯(lián)網(wǎng)環(huán)境下,很多需求在應(yīng)用的設(shè)計之初并無法規(guī)劃到位。因此隨著時間的推移,應(yīng)用程序會不斷改進(jìn)數(shù)據(jù)模型來適應(yīng)應(yīng)用程序的新特性以及新需求。
現(xiàn)代程序編程語言:面向?qū)ο缶幊陶Z言影響著數(shù)據(jù)的結(jié)構(gòu),而這些結(jié)構(gòu)與關(guān)系型數(shù)據(jù)庫中存儲數(shù)據(jù)的結(jié)構(gòu)完全不同。
快速開發(fā):軟件工程團(tuán)隊現(xiàn)在開始接受短時間的、迭代的開發(fā)周期。在項目中,定義數(shù)據(jù)模型和應(yīng)用程序功能并不是發(fā)生在項目開始的單一事件,而是一個持續(xù)的過程。
1.2 如何運(yùn)行應(yīng)用程序大數(shù)據(jù)的新可擴(kuò)展性能:運(yùn)營和分析負(fù)載對可擴(kuò)展性、可用性、性能和數(shù)據(jù)多樣性提出了新的挑戰(zhàn)。
快速實時性能:用戶期望在很多類型接口應(yīng)用程序中獲得一致的、交互式的體驗。
新硬件:計算、存儲、網(wǎng)絡(luò)以及主內(nèi)存資源在成本和性能之間的關(guān)系發(fā)生了巨大變化。應(yīng)用程序的設(shè)計需要能采用不同的優(yōu)化策略優(yōu)化這些資源,權(quán)衡利用這些資源。
新計算環(huán)境:單臺計算機(jī)資源很難滿足應(yīng)用程序的基礎(chǔ)設(shè)施需求,而云基礎(chǔ)設(shè)施現(xiàn)在能提供海量、彈性、高效的運(yùn)行環(huán)境。
1.3 SequoiaDB 通過創(chuàng)新來面對新的需求文檔型數(shù)據(jù)模型:數(shù)據(jù)以嵌套式的半結(jié)構(gòu)化方式進(jìn)行存儲,而該結(jié)構(gòu)可以映射到現(xiàn)代程序編程語言的對象,很容易被開發(fā)人員所理解。
豐富的查詢模型:SequoiaDB 適合于各種各樣的應(yīng)用程序。它提供了豐富的索引和查詢支持,包括二級索引,聚合框架等。
慣用驅(qū)動:開發(fā)者通過原生庫來與數(shù)據(jù)庫交互,使得 SequoiaDB 的使用變得簡單且自然。所謂原生庫,是整合了他們各自的環(huán)境和代碼庫。
水平可擴(kuò)展:隨著數(shù)據(jù)量和吞吐量的增長,開發(fā)人員能夠利用通過服務(wù)器和云基礎(chǔ)架構(gòu)來增加 SequoiaDB 系統(tǒng)的容量。
高可用性:數(shù)據(jù)的多份副本都是通過遠(yuǎn)程復(fù)制來維護(hù)的。自動故障轉(zhuǎn)移到輔助節(jié)點(diǎn)、機(jī)架和數(shù)據(jù)中心上,使得企業(yè)不需要自定義代碼和復(fù)雜的優(yōu)化,就能讓系統(tǒng)正常運(yùn)行。
內(nèi)存級的性能:數(shù)據(jù)都是在內(nèi)存中直接讀取和寫入的,而且為了系統(tǒng)的持久性,會在后臺持續(xù)把數(shù)據(jù)寫入磁盤。這些都為系統(tǒng)提供了快速的性能,使得系統(tǒng)不在需要使用多帶帶的緩存層。
靈活性:從文檔型數(shù)據(jù)模型到多數(shù)據(jù)中心部署,到可變的一致性,到運(yùn)營級可用性的選擇,SequoiaDB 為開發(fā)和運(yùn)營團(tuán)隊提供了巨大的靈活性。正是由于這些優(yōu)勢,SequoiaDB 非常適合于各種跨行業(yè)的應(yīng)用程序。
2 SequoiaDB 數(shù)據(jù)模型 2.1 作為文檔的數(shù)據(jù)SequoiaDB 以二進(jìn)制表示的文檔形式存儲數(shù)據(jù),這種二進(jìn)制文檔稱為 BSON(二進(jìn)制的JSON)。這個 BSON 編碼擴(kuò)展了流行的 JSON(JavaScript Object Notation),表現(xiàn)在附加的類型上,如整形、長整形以及浮點(diǎn)數(shù)。BSON 文檔包含一個或多個字段,而且每一個字段包含一個特定數(shù)據(jù)類型值,這些特定數(shù)據(jù)類型包括數(shù)組,二進(jìn)制數(shù)據(jù),子文檔。
往往有著相似結(jié)構(gòu)的文檔會組合成集合,類比于關(guān)系型數(shù)據(jù)庫相關(guān)概念就是表;把文檔類比于關(guān)系型數(shù)據(jù)中的行;把字段類比于關(guān)系型數(shù)據(jù)庫中的列。
圖 1 博客應(yīng)用程序的關(guān)系型數(shù)據(jù)模型示例
例如,為博客應(yīng)用程序考慮數(shù)據(jù)模型。在關(guān)系型數(shù)據(jù)庫中,數(shù)據(jù)模型可能包含多個表。為了簡化這個例子,假設(shè)所有的表包括類別表,標(biāo)簽表,用戶表,評論表以及文章表。
而在 SequoiaDB 中,數(shù)據(jù)可能會建模成兩個集合,一個是用戶集合,另外一個是文章集合。在每篇博客中,可能會有多個評論,多個標(biāo)簽以及多個分類,而這里的每個評論、標(biāo)簽、分類都可以作為一個嵌入的數(shù)組。
SequoiaDB 文檔往往把給定記錄的所有數(shù)據(jù)都存放在一個單一的文檔中,而在關(guān)系型數(shù)據(jù)庫中,給定的記錄通常被分配存放在多個表中。換句話說,也就是 SequoiaDB 中的數(shù)據(jù)是更本地化的。在大部分 SequoiaDB 系統(tǒng)中,BSON 文檔往往也是與應(yīng)用程序中的編程語言對象結(jié)構(gòu)緊密相關(guān)的,這使得開發(fā)人員能夠更加容易理解應(yīng)用程序中使用的數(shù)據(jù)如何映射到數(shù)據(jù)庫中存儲的數(shù)據(jù)的關(guān)系。
2.2 動態(tài)模式SequoiaDB 文檔在結(jié)構(gòu)上可以不同。例如,描述用戶的所有文檔可能包含這個用戶 ID,以及他們最后一次登錄系統(tǒng)的時間。然而僅僅有部分文檔可能包含對一個或多個第三方應(yīng)用程序的用戶身份。文檔與文檔之間的字段也是不相同的,而且文檔都包含各自的數(shù)據(jù)結(jié)構(gòu),因此沒有必要在建立集合的時候指定數(shù)據(jù)模型。如果要在一個文檔中加入一個新的字段,那么就創(chuàng)建這樣一個新的字段。這樣既不會影響系統(tǒng)中任何其他文檔,也不會更新編目信息,更不會讓系統(tǒng)離線。
2.3 模式設(shè)計盡管 SequoiaDB 支持強(qiáng)健的模式靈活,但模式設(shè)計仍舊是重要的。模式設(shè)計者應(yīng)該從一些主題來考慮,例如應(yīng)用程序需要執(zhí)行的查詢類型、如何管理應(yīng)用程序代碼中的對象、以及文檔隨時間推移如何改變和增長。模式設(shè)計超出了本文的范圍,是一個廣延性的話題。
圖 2 博客應(yīng)用程序的文檔數(shù)據(jù)模型
SequoiaDB 為所有受歡迎的編程語言提供了原生驅(qū)動程序,為營造自然的開發(fā)環(huán)境而提供了框架。支持的驅(qū)動程序包括 C、C++、Java、.NET、PHP、Python 等。相比關(guān)系數(shù)據(jù)庫的根本區(qū)別在于,SequoiaDB 的查詢模型是在特定編程語言的 API 中以方法或函數(shù)實現(xiàn)的,這與類似 SQL 完全獨(dú)立的語言是相對的。再加上 SequoiaDB JSON 文檔模型和面向?qū)ο缶幊陶Z言中的數(shù)據(jù)結(jié)構(gòu)的相似性,使得應(yīng)用程序之間的集成變得簡單。想獲得完整的驅(qū)動列表,請查閱sequoiadb.com。
3.2 SequoiaDB 命令行SequoiaDB 命令行是一個交互式的 JavaScript 執(zhí)行環(huán)境,所有的 SequoiaDB 發(fā)行版都包含了 SequoiaDB 命令行。幾乎所有 SequoiaDB 支持的命令都通過命令行執(zhí)行,包括管理操作。在信息查詢操作中,與 SequoiaDB 交互時,使用 SequoiaDB 命令行是一種常用的方式。在 SequoiaDB 手冊中的例子都是基于命令行的。
3.3 SequoiaDB SQL 接口SequoiaDB 提供了與 PostgreSQL 關(guān)系型數(shù)據(jù)庫連接的外部表驅(qū)動,可以將 SequoiaDB 中的集合映射為 PG 中的用戶表,使用戶可以通過標(biāo)準(zhǔn) SQL 訪問 SequoiaDB。具體的使用方式請參見 SequoiaDB 信息中心。
3.4 查詢類型SequoiaDB 支持很多類型的查詢。一個查詢可能會返回一個文檔,也可能是返回文檔中特定字段的子集。
鍵值對查詢返回的結(jié)果是基于文檔中任何字段的,通常是關(guān)于主鍵字段的。
范圍查詢返回的結(jié)果是定義為不等式的值(例如,大于,小于或者等于)。
聚合框架查詢返回的是通過查詢返回值的聚合(例如總數(shù)、最小數(shù)、最大數(shù)、平均數(shù),類似于 SQL 的 GROUP BY 語句)。
3.5 索引類似于大多數(shù)數(shù)據(jù)庫管理系統(tǒng),在 SequoiaDB 中,索引對于優(yōu)化系統(tǒng)性能是一個很重要的機(jī)制。雖然索引能夠以數(shù)量級來提高一些操作的性能,但是也產(chǎn)生了寫延遲、磁盤使用、內(nèi)存使用等成本消耗。SequoiaDB 包括文檔中任何字段多種類型的索引。
唯一索引:唯一索引意思是指定一個索引是唯一的。一旦一個唯一索引建立,SequoiaDB將會拒絕對已經(jīng)建立的唯一索引字段的文檔插入新文檔或更新該文檔。默認(rèn)情況下,所有的索引都未被設(shè)置為唯一索引。如果一個復(fù)合索引被指定為唯一索引,則這個復(fù)合值一定是唯一的。在分區(qū)系統(tǒng)中,唯一索引必須包含分區(qū)鍵。
復(fù)合索引:為指定的多個語句查詢,創(chuàng)建復(fù)合索引是有意義的。例如,考慮一個存儲用戶數(shù)據(jù)的應(yīng)用程序,這個應(yīng)用可能需要基于用戶的姓氏、用戶的名字及居住地來查詢該用戶。當(dāng)存在基于用戶的姓氏、用戶的名字及居住地的復(fù)合索引時,查詢可以有效定位到所有指定為這三個值的用戶。復(fù)合索引還有一個好處就是,在一個索引里,任何主要字段都可以被使用,因此這會減少單個字段索引的使用。復(fù)合索引還能通過用戶的姓氏來查找用戶,以此來優(yōu)化查詢。
數(shù)組索引:對于包含數(shù)組的字段,每個數(shù)組值都會作為一個多帶帶的索引條目來存儲。例如,描繪食譜的文檔可能會包括食材這個字段。如果在食材字段有個索引,那么每個食材都能被檢索到,且食材字段的查詢能夠通過該索引而優(yōu)化。創(chuàng)建數(shù)組索引是不需要任何特殊的語法,如果字段包含一個數(shù)組,它將作為數(shù)組索引而被檢索到。
3.6 查詢優(yōu)化SequoiaDB 的自動優(yōu)化查詢使得評估盡可能高效。評估通常包括基于語句選擇數(shù)據(jù)以及基于給定分類標(biāo)準(zhǔn)來分類數(shù)據(jù)。查詢優(yōu)化器為每個查詢類型根據(jù)開銷評估選擇使用最佳索引。這些經(jīng)驗測試的結(jié)果將被存儲為一個緩存的查詢計劃并定期更新。
4 SequoiaDB 數(shù)據(jù)管理 4.1 就地更新SequoiaDB 在磁盤上以連續(xù)的形式存儲每個文檔。當(dāng)要插入新記錄時,SequoiaDB 分配空間并就地更新該文件。通過就地管理數(shù)據(jù),SequoiaDB 能夠以字段進(jìn)行更新,從而減少了磁盤 IO 次數(shù),并且僅僅只更新需要更新的索引條目。
4.2 分片SequoiaDB 通過使用分片技術(shù)為數(shù)據(jù)庫提供了橫向擴(kuò)展機(jī)制,這個分片過程對應(yīng)用程序來說是透明的。分片分配數(shù)據(jù)跨越多個物理分區(qū),每個分區(qū)也即分片。分片是為了替SequoiaDB 部署解決單臺服務(wù)器硬件資源受限問題,如內(nèi)存或者磁盤 I/O 瓶頸,不會增加應(yīng)用程序復(fù)雜性。
SequoiaDB 支持兩種類型的分片:
基于范圍的分片。文檔通過分片的鍵值被分割。文檔具有的分片鍵值接近另一個文檔的分片鍵值時,則這兩個文檔位于同一個分片上。這種方法非常適合需要優(yōu)化基于范圍查詢的應(yīng)用。
基于哈希的分片。文檔通過分片鍵值的 MD5 值來均勻分布。文檔的分片鍵值接近另一個文檔的分片,一般不太可能分布在同一個分片上。這種方法保證了整個分片的寫均勻分布,避免了數(shù)據(jù)的熱點(diǎn)訪問。
圖 3 分片機(jī)制提供了水平擴(kuò)展
分片對于應(yīng)用程序是透明的,不管系統(tǒng)中有 1 個分片還是有 100 個分片,查詢 SequoiaDB的應(yīng)用程序代碼都是一樣的。應(yīng)用程序把查詢請求發(fā)給協(xié)調(diào)節(jié)點(diǎn),協(xié)調(diào)節(jié)點(diǎn)會把該查詢請求分配到合適的分片上。
圖 4 分片對應(yīng)用程序是透明的
對于基于分片鍵值的鍵值查詢,協(xié)調(diào)節(jié)點(diǎn)將分發(fā)查詢請求到具有查詢鍵值文檔所屬的分片中。當(dāng)使用基于范圍分片時,指定分片鍵值范圍的查詢僅僅分發(fā)查詢請求到在查詢鍵值范圍內(nèi)文檔所屬的分片中。
對于沒有使用分片鍵值的查詢,協(xié)調(diào)節(jié)點(diǎn)將會派發(fā)該查詢到所有的分片上,然后在聚合所有分片上的結(jié)果,并將結(jié)果排序作為合適的查詢結(jié)果。
在 SequoiaDB 系統(tǒng)中可以使用多個協(xié)調(diào)節(jié)點(diǎn),而且合適的協(xié)調(diào)節(jié)點(diǎn)數(shù)量是由應(yīng)用程序的性能和可用性需求共同決定的。
4.4 分區(qū)集合除了支持橫向擴(kuò)展的數(shù)據(jù)分片機(jī)制,SequoiaDB 還提供了對集合的縱向分區(qū)功能。用戶可以對一個集合中數(shù)據(jù)的某一字段指定集合分區(qū)鍵,則每條符合特定范圍的記錄會被切分至各自的集合分區(qū)。
集合分區(qū)在邏輯上看做一個集合的子集,每個集合分區(qū)擁有自己獨(dú)立的元數(shù)據(jù)和索引。用戶可以創(chuàng)建一個集合并將其加入一個已有的集合,或者從一個分區(qū)集合中移除特定分區(qū)(Roll-inRoll-out)。
5 一致性和持久性 5.1 事務(wù)模型SequoiaDB 是 ACID 兼容文檔級別,支持提交回滾等事務(wù)操作。默認(rèn)情況下,SequoiaDB為了保證性能關(guān)閉事務(wù)的支持,如果用戶需要則可以在啟動數(shù)據(jù)庫時指定參數(shù)打開事務(wù)。
在關(guān)閉事務(wù)支持時,一個單一操作能夠?qū)懸粋€或多個字段,包括多個子文檔的更新和數(shù)組元素更新。SequoiaDB 的 ACID 保證了文檔更新的完整隔離性,任何錯誤都會引發(fā)回滾操作,以及客戶能得到文檔的一致性視圖。
而當(dāng)事務(wù)打開時,任何在事務(wù)啟動到提交(回滾)之間的操作都會在數(shù)據(jù)節(jié)點(diǎn)寫入事務(wù)日志并跟蹤事務(wù) ID。更改的記錄在事務(wù)提交(回滾)前持有互斥鎖,不可被其他會話更改。當(dāng)前 SequoiaDB 事務(wù)的隔離級別為 UR。
5.2 一致性SequoiaDB 采用集合級別的可配置一致性策略,允許用戶在對記錄修改時,根據(jù)該記錄所在集合判斷是否需要等待備節(jié)點(diǎn)的確認(rèn)。
譬如,對于一個對性能要求較高、對數(shù)據(jù)可靠性要求一般的集合來說,可以在創(chuàng)建集合時將 write concern 參數(shù)設(shè)置為 1,代表只要寫入主節(jié)點(diǎn)就可以返回成功信息。而該操作會在后臺異步地發(fā)送給從節(jié)點(diǎn)執(zhí)行。
而對于性能要求較低、對數(shù)據(jù)可靠性要求很高的集合來說,可以在創(chuàng)建集合時指定 write concern 參數(shù)為 3,代表該操作最少被三個節(jié)點(diǎn)確認(rèn)執(zhí)行成功后才能夠返回。
當(dāng) write concern 的數(shù)量與該集合所在每個副本集中包含節(jié)點(diǎn)數(shù)量相等時,系統(tǒng)可以被認(rèn)為是強(qiáng)一致,否則為最終一致。
5.3 日志SequoiaDB 實現(xiàn)了事務(wù)事務(wù)日志的功能,這確保了在存儲引擎中的快速故障恢復(fù)和持久性。日志有助于防止毀壞,提高操作彈性。每當(dāng)日志內(nèi)存空間占滿后,日志將會被刷入磁盤,可以為服務(wù)器損壞時數(shù)據(jù)恢復(fù)提供方便。
5.4 副本集SequoiaDB 通過使用遠(yuǎn)程復(fù)制功能,維護(hù)了數(shù)據(jù)的多個副本,即副本集。一個副本集是有助于防止數(shù)據(jù)庫停機(jī)的、完全自我修復(fù)的分片。副本故障轉(zhuǎn)移是完全自動,不需要管理員手動干預(yù)。一般來說,一個包含多個節(jié)點(diǎn)的分片構(gòu)成一個副本集。
圖 5 副本集
一個副本集是由多個副本組成。在任何一個時間里,都有一個副本作為主副本,其他副本是從副本。SequoiaDB 在默認(rèn)情況下是最終一致的,即寫作用于主副本,讀作用于從副本。如果主副本因任何原因而宕掉(如過熱、硬件故障或網(wǎng)絡(luò)分區(qū)),從副本中的一個將會被選出作為主副本,且開始處理所有的寫操作。
圖 6 分片和副本集
用戶可以通過指定每個連接會話的讀請求偏好,來定義該會話從主副本或從副本讀取數(shù)據(jù)。
SequoiaDB 副本集中的副本數(shù)量是可配置的,多副本提高了數(shù)據(jù)持久性以及預(yù)防了數(shù)據(jù)庫的停機(jī)時間(如多機(jī)器故障、機(jī)架故障、數(shù)據(jù)中心故障或網(wǎng)絡(luò)分區(qū))。配置操作在返回應(yīng)用程序之前寫入多個副本,提供了同步復(fù)制類似的功能。應(yīng)用程序能夠選擇從從副本中進(jìn)行讀操作,從副本默認(rèn)情況下是最終一致的。在類似報表類應(yīng)用中,即能接受稍稍有些過時數(shù)據(jù)的應(yīng)用,讀從副本是很有用的。
副本集提供了操作靈活性,即不需要使數(shù)據(jù)庫脫機(jī)就能升級硬件和軟件。例如,如果要對副本集中所有副本進(jìn)行硬件升級,可以依次升級從副本而不會影響整個副本集。當(dāng)所有從副本都已升級,可以暫時把主副本降為從副本,然后再更新這個副本。類似的,像添加索引操作,就能繼續(xù)在副本上進(jìn)行而不會影響系統(tǒng)正常的運(yùn)行。
6 可用性 6.1 副本在主副本上修改數(shù)據(jù)的操作會通過一個日志復(fù)制到從副本上,這個日志也叫做事務(wù)日志。這些事務(wù)日志包含了主副本中全部的數(shù)據(jù)操作,將會在從副本上重做。事務(wù)日志的大小是可配置的。
如果一個從副本停機(jī)時間比事務(wù)日志保存的時間還要長,那么從副本必須要使用全量同步過程從主副本恢復(fù)。在全量同步過程中,所有的數(shù)據(jù)庫和集合以及事務(wù)日志都會從主副本或者其他副本復(fù)制到這個從副本上,還會生成索引。在向副本集中加入一個新副本時,也需要執(zhí)行全量同步過程。
6.2 選舉和故障轉(zhuǎn)移副本集降低了運(yùn)行開銷,提高了系統(tǒng)可用性。如果主副本集分片出現(xiàn)故障,所有從副本就一起決定哪個副本應(yīng)該成為主副本,這個過程也就是選舉過程。一旦確定了新的主副本,剩下的從副本都將配置好來接受從新主副本發(fā)來的更新操作。如果原先的主副本重新聯(lián)機(jī),它也會意識到自己不再是主副本,并會配置好自己為從副本。
6.3 選舉優(yōu)先關(guān)于如何選舉新的主副本,SequoiaDB 有一系列標(biāo)準(zhǔn),主要依賴每個節(jié)點(diǎn)的當(dāng)前事務(wù)號(LSN)作為評判依據(jù)。在進(jìn)行選舉的過程中,參與者中 LSN 號最高的節(jié)點(diǎn)(代表該節(jié)點(diǎn)包含最新的數(shù)據(jù))會被推選為主節(jié)點(diǎn)。
6.4 磁盤的容量,內(nèi)存的性能SequoiaDB 大量使用內(nèi)存來加速數(shù)據(jù)庫操作。從內(nèi)存讀數(shù)據(jù)是納秒級的,從普通磁盤讀數(shù)據(jù)是毫秒級的。所以從內(nèi)存讀數(shù)據(jù)大約比從磁盤讀數(shù)據(jù)快 100,000 倍。在 SequoiaDB 中,所有的數(shù)據(jù)都是通過內(nèi)存映射文件來讀取和操作的。不被訪問的數(shù)據(jù)是不會加載到內(nèi)存中的。雖然并不要求所有的數(shù)據(jù)都裝在內(nèi)存中,但是把所有頻繁訪問的索引和數(shù)據(jù)裝入內(nèi)存應(yīng)該是期望的目標(biāo)。例如,應(yīng)用程序頻繁的訪問數(shù)據(jù)庫中的小部分,如最近時間或受歡迎產(chǎn)品的數(shù)據(jù)。如果經(jīng)常被訪問的數(shù)據(jù)超過了單臺機(jī)臺的容量,用戶可以使用分片機(jī)制將SequoiaDB在多個服務(wù)器上進(jìn)行橫向擴(kuò)展。
由于 SequoiaDB 提供了內(nèi)存級的性能,因此對于大多數(shù)應(yīng)用程序來說,都不需要多帶帶的緩存層。
7 總結(jié)SequoiaDB 提供了一個強(qiáng)大的、創(chuàng)新的數(shù)據(jù)庫平臺,它是為如何構(gòu)建和運(yùn)行應(yīng)用程序而設(shè)計。在這份指南中,我們探討了 SequoiaDB 體系結(jié)構(gòu)的基本概念和設(shè)想。類似業(yè)務(wù)最佳實踐等其他主題指南,你能夠在 sequoiadb.com 上找到。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/11705.html
摘要:圖元數(shù)據(jù)與數(shù)據(jù)文件結(jié)構(gòu)映射在建立集合的過程當(dāng)中,大對象存儲必須依附于普通集合存在,一個集合中的大對象僅歸屬于該集合,不能被另外一個集合管理。 前言 企業(yè)內(nèi)容管理(Enterprise Content Management,ECM)系統(tǒng)是一種管理非結(jié)構(gòu)化內(nèi)容的系統(tǒng),傳統(tǒng)代表為EMC Documentum或IBM Filenet等ECM解決方案。隨著大數(shù)據(jù)技術(shù)的越發(fā)普及,越來越多的客戶開始...
摘要:在技術(shù)探索中,選擇了更適合云數(shù)據(jù)庫場景的架構(gòu)和引擎設(shè)計。目前,巨杉數(shù)據(jù)庫付費(fèi)企業(yè)級客戶與社區(qū)用戶總數(shù)超過家,并已在超過家強(qiáng)級別的銀行保險證券等大型金融機(jī)構(gòu)核心生產(chǎn)業(yè)務(wù)上線。這一整體架構(gòu)設(shè)計相信是云數(shù)據(jù)發(fā)展的主流架構(gòu)設(shè)計。 分布式數(shù)據(jù)庫技術(shù)發(fā)展多年,但是在應(yīng)用、業(yè)務(wù)的驅(qū)動下,分布式數(shù)據(jù)庫的架構(gòu)一直在不斷發(fā)展和演進(jìn)。 開源金融級分布式數(shù)據(jù)庫SequoiaDB,經(jīng)過6年的研發(fā),堅持從零開始打...
閱讀 1719·2023-04-25 14:12
閱讀 1204·2021-08-27 16:24
閱讀 2621·2019-08-30 15:44
閱讀 2971·2019-08-30 13:16
閱讀 1755·2019-08-29 14:10
閱讀 1037·2019-08-29 13:54
閱讀 1376·2019-08-29 13:09
閱讀 1911·2019-08-26 18:37