如何評價SequoiaDB巨杉資料庫?

SequoiaDB巨杉資料庫最近發布了B輪融資的消息,感覺目前國內來說自己出來做分散式nosql/newsql資料庫的廠商和團隊並不多,之前也了解Sequoiadb的產品應該也是國內開源的資料庫產品裡面比較出名的吧,所以想看看大家有沒有什麼使用的經驗


感謝大家關注

之前回答過關於公司的問題,這次主要談談產品

簡單的說

SequoiaDB(巨杉資料庫)是一款企業級分散式NewSQL資料庫,自主研發並擁有完全自主知識產權,沒有基於任何其他外部的開源資料庫源代碼。SequoiaDB支持標準SQL、事務操作、高並發、分散式、可擴展、與雙引擎存儲等特性,並已經作為商業化的資料庫產品開源。

具體來說sequoiadb的技術特性包括以下幾點

系統架構

SequoiaDB作為典型Share-Nothing的分散式資料庫,同時具備高性能與高可用的特性。SequoiaDB採用分片技術為系統提供了橫向擴展機制,其分片過程對於應用程序來說完全透明。這樣的機制解決了單台伺服器硬體資源(如內存、CPU、磁碟 I/O)受限的問題,並不會增加應用程序開發的複雜性。

下圖為SequoiaDB的整體架構


協調節點:負責調度、分配、匯總,是SequoiaDB的數據分發節點,本身不存儲任何數據,主要負責接收應用程序的訪問請求;

編目節點:負責存儲整個資料庫的部署結構與節點狀態信息,並且記錄集合空間與集合的參數信息,同時記錄每個集合的數據切分狀況;

數據節點:承載數據存儲、計算的進程,提供高性能的讀寫服務,且在多索引的支持下針對海量數據查詢性能優越。多個數據節點可以組成一個數據節點組,根據選舉演算法自動選擇一個主數據節點,其餘節點為備數據節點。

高性能標準SQL的支持

矽谷新一代分散式資料庫的主流發展方向是NoSQL和SQL的融合。目前大多數分散式資料庫系統的SQL引擎技術存在許多不足,既不能完整支持標準SQL,同時其性能也存在較大瓶頸。SequoiaDB 從「2.0時代」開始,已經全面支持標準SQL,提供高性能的SQL引擎組件。提供完整的CRUD及事務的支持,真正成為新一代的NewSQL資料庫。2.0企業版包含了標準SQL2003引擎、深度數據壓縮等多項全新功能,在100%支持和兼容原有JSON特性的基礎上,提供了標準SQL2003的語法支持,能夠兼容傳統應用,並最大程度滿足傳統應用開發人員對於資料庫SQL訪問方式的需求。

靈活的數據類型定義

SequoiaDB採用JSON文檔類型定義數據存儲模型(類對象存儲)。JSON作為當今應用設計中主流的存儲與通訊協議格式,使用的數據模型與平台、語言無關,從而為企業內異構數據的整合提供了標準方式。傳統企業內存在大量的結構化數據資產需要用分散式大數據的手段處理,同時又希望盡量保留其關係型結構,JSON數據模型則恰好滿足這些需求。

以下鏈接為關於JOSN的使用介紹,供大家學習參考

https://zhuanlan.zhihu.com/p/23211647?refer=sequoiadb

JSON與塊存儲雙引擎

除了JSON存儲引擎以外,為了提高非結構化文件的讀寫性能,SequoiaDB核心引擎提供了分散式塊存儲模式,可以將非結構化大文件按照固定大小的數據塊進行切分並存放於不同分區。當用戶需要管理海量的小文件(例如照片、音視頻、文檔、圖片等)時,SequoiaDB的雙存儲引擎特性能夠幫助用戶快速搭建一個高性能、高可用的內容管理與影像平台系統。使用SequoiaDB搭建的影像平台系統架構相對簡單,元數據與內容數據均可使用SequoiaDB伺服器的本地磁碟存放,不再需要額外購買昂貴的外部存儲設備,節省企業的開發和運維成本。

集成Spark內存計算框架

作為全球獲得Databricks認證的14家發行商之一,SequoiaDB企業版通過深度集成最新的Spark內存計算框架,實現了批處理分析、流處理等貼近應用的功能。存儲層和計算層兩層分離的架構、技術互補,是矽谷大數據新架構的主流,這樣分散式計算與分散式存儲的能力便能夠發揮到極致。

以下為具體介紹

http://blog.sequoiadb.com/cn/Detail-id-11

多維度分區

在大部分新型分散式資料庫中,表或集合中的數據一般只能通過針對主鍵或分區鍵進行散列,來判斷某一條記錄應當被存儲在哪個物理分區中。這種做法是一維分區。SequoiaDB是引入了多維分區的概念,除了使用分區鍵將記錄散列在不同節點以外,還能在每個節點內部根據其他維度進一步分區,使在高存儲密度伺服器中的大表按照額外提供的維度被進一步切分縮減。這種機制在管理海量數據時會大幅度提升性能,降低磁碟訪問開銷。

下圖顯示了在一個分區內,SequoiaDB按照時間維度進行切分,使每一個子分區僅包含指定時間範圍內的數據。

使用多維分區技術時,開發人員不需要關注底層資料庫集合的具體切分邏輯。資料庫會自動根據查詢條件判斷,該查詢只需要查找特定某些子分區,或需要在全部子分區上進行檢索。

以下為企業級解決方案,有興趣的朋友可以具體了解:

近線數據服務平台http://solution.sequoiadb.com/cn/Detail-cat_id-5-id-19

企業內容管理 http://solution.sequoiadb.com/cn/Detail-cat_id-5-id-20

大數據湖 http://solution.sequoiadb.com/cn/Detail-cat_id-5-id-18

360度全量數據視圖 http://solution.sequoiadb.com/cn/Detail-cat_id-5-id-17

感興趣的朋友可以訪問巨杉資料庫開源社區

bbs.sequoiadb.com

下載鏈接:

http://Download.sequoiadb.com/cn


引用我在另一個問題的答案吧:

作者:匿名用戶

鏈接:如何看待國產資料庫SequoiaDB開源? - 匿名用戶的回答

sequoiadb開源已經有一年多了吧,開源之後再15年底時候我們團隊拿來做過一些項目的底層資料庫,主要是偏物聯網相關方面的。

總的來說,我認為有幾點吧

1)相比mongo還是有中文的齊全文檔,作為中國的碼農。。英文文檔看得還是頭疼啊。

2)應該說開源社區這邊的支持還是比較快速的,在群里提問基本當天都會有人回答,然後在剛開始配置和對接程序的時候原廠的同學還在區裏手把手教了我們的工程師。。還是很給力的

3)總體上說使用和遷移轉換時候不會不上手,不過現在據說多了SQL的支持,還沒有嘗試過,聽起來很厲害的樣子,不過他們原生的操作語句也還是很好理解的

對於開源,

我跟我們的工程師小小的看過15年某個版本的github上面的代碼,確實內核部分的代碼還是比較清晰和給力的,確實也是沒有說抄了什麼別的產品。

感覺sequoiadb開源還算是比較有誠意的,希望以後國內多一些這樣給力的開源產品還有社區啊


這兩天剛下載了社區版v2.6.3對比mongo社區版v3.4.6測試了一下。

你問我支持不支持我說支持。為什麼?因為人家是國產而且是開源的。

你問我好用不好用我說好用。為什麼?因為感覺介面跟mongo的幾乎完全兼容,會用mongodb就會用sequoiadb。下載tar包之後解壓後就是一個.run文件,直接安裝即可。安裝速度也很快。

你問我文檔怎麼樣?我說文檔中規中矩,中文的終於可以一目十行的看文檔了。

你問我社區活躍不活躍?我去github和oschina上看了一下,最近一次提交代碼的時候都是1-2年前。

你問我測試的結果怎麼樣?我先回答你我是怎麼測試的。

mongo是在本機上測試的。ubuntu16.04,i7 16GB內存。解壓後直接運行除了指定data路徑外沒有調任何參數。

sequoia是在伺服器上測試的。centos7 e5 16GB內存。文檔有一個推薦的系統設置,我沒有照做。因為我就是一個小白用戶,希望裝上就能用,同時也能對mongo公平。注意文檔沒說支持centos7,我想7應該也能兼容6,所以就用了。

測試代碼都是用java寫的。jdk1.7。兩份代碼幾乎一模一樣,會用mongo就會用巨杉。

客戶端程序分別在兩台機器上跑的,一個在ubuntu上,一個在win7上。

我根據自己的需求測試的是三組索引。分別是&,&,&。索引設置為unique=true,enforce=false。

順序讀寫:

idcard email name,addr

idcard1 email1 name1,addr1

idcard2 email2 name2,addr2

隨機讀寫

idcard email name,addr

idcard123 email123 name123,addr123

idcard789 email789 name789,addr789

這裡的讀寫是先分別根據三組索引去查值是否已存在,三組索引查到的都是同一個文檔就更新文檔,一個都沒查到就直接入。其他情況放棄這一條數據。都是一條一提交。

測試的結果來看,巨杉的速度跟mongo比差了不少。不是稍微遜色一點,差距有點大。不知道是不是我不聽話沒有按照文檔說的先做好一些系統的配置,又或許是我測試方法不對。你們可以自己安裝這兩個資料庫對比測試測試。從我的測試結果來看我還是會選擇mongo的。mongo有一個不好的地方就是瘋狂地吃內存,直到把你內存吃完為止。

也許巨杉資料庫真正優秀的地方是它的事務,而不是速度。大家還是自己去探索吧,如果你有新發現請at我一下。


https://github.com/SequoiaDB/SequoiaDB/blob/master/SequoiaDB/engine/cls/clsSyncManager.cpp

https://github.com/mongodb/mongo/blob/master/src/mongo/s/mongos_options.cpp

隨便對比了兩個文件,差距還是比較大的


推薦閱讀:

2000年之後資料庫的發展歷史怎樣?
有哪些分散式資料庫書籍或論文比較好?
MongoDB和MySQL如何搭配使用?
知乎為什麼不使用 NoSQL 資料庫?
Cassandra現在的應用前景怎麼樣?

TAG:資料庫 | NoSQL | MongoDB |