【巨杉答疑】巨杉資料庫和mongodb有什麼關係嗎?

哈羅,艾瑞巴蒂~巨杉答疑欄目今日上線啦!

巨杉資料庫作為商業化開源軟體,已經擁有大量社區用戶。開源至今,大到分散式資料庫原理、架構問題,小到SDB巨杉資料庫的安裝使用問題,大家似乎都有很多問題想要和我們交流,所以我們邀請技術大咖和大家好好聊聊,有啥問題儘管放馬過來!

昨天,我們就請到巨杉資料庫的兩位技術大咖在巨杉官方微信群針對分散式資料庫的相關內容對於群友的提問進行解答。來淘點乾貨吧!

1.官方數據說巨杉很多性能超過mongoDB,前者是否可以替代後者,不能完全替代的話,在哪些性能方面巨杉能力不足於mongoDB,為什麼,有設計方面的因素嗎?mongodb和SDB有什麼關係?

SDB完全可以替代mongodb,而且很多功能mongodb並不支持。例如事務、join查詢等。

目前在性能上超越mongodb,而且在分布機制上也比mongodb完善。

要說弱點,主要在社區的推廣和發展上,mongodb最早的出發點是從開發開始的。

e-r關係結構對於開發來說迭代太慢了,所以JSON文檔型和對象一一對應,而且沒有schema的限定,對於開發POC等迭代幫助太大了,很多互聯網企業都是半天出個版本,這對開發要求很高。

Mongodb在易用性上做的很好,我們也在努力,希望大家支持!

Mongodb和SDB沒有任何關係,大家的出發點非常不同。

2.資料庫的開發本身技術要求都很高,需要論文原理來支撐,就像CAP理論中的AC的平衡,更希望能聽到原理性的分析。

CAP主要是指Consistency(一致性); Availability(可用性);Partition tolerance(分區容錯性);主要在分散式存儲系統中提出的理論,P是分散式里必須的,當網路等因素髮生故障的時候,A和C不能同時滿足,因此提出了「三選二」的概念,及AP和CP的取捨選擇。

三選二會誤導很多新人,覺得不是CP就是AP,其實這個選擇是極端情況的,並不是簡單的非黑即白的選擇。

首先,由於分區很少發生,那麼在系統不存在分區的情況下沒什麼理由犧牲C或A。其次,C與A之間的取捨可以在同一系統內以非常細小的粒度反覆發生,而每一次的決策可能因為具體的操作,乃至因為牽涉到特定的數據或用戶而有所不同。所以是0-100%之間的變化。

這裡舉例來說,分散式一主兩從,保障了AP,但網路同步的速度決定了CP的能力,所以這個同步能力就是根據網路環境從0-100%里變化的。

當條件好的時候,就基本都滿足,當斷網了,就要做取捨,但是當同步完成,從節點升級為主節點後,又恢復了。

當然如果要100%保證CP必須強一致,那麼當一台機器宕機,強一致就做不到了,就滿足不了CP了。

ACID是傳統關係型資料庫最為重要的特徵,原子性、一致性、隔離性、持久性;強調的是一致性。屬於CP。

BASE是基本可用(Basically Available)軟狀態(Soft State)最終一致性(Eventually Consistent)軟狀態就是中間狀態,例如同步延時時的分散式從節點的副本狀態。從BASE的角度,高可用是優先保障的。屬於AP。

如何在這兩種狀態保持平衡,就需要從業務邏輯,用戶需求,業務需求出發。

3.現在巨杉資料庫分社區版和企業版,社區辦是否有閹割,這兩種分別適用哪些場景?

開源的社區版和企業版的資料庫內核源碼都是一致的,相較於企業版,社區版只是可視化上操作以及SparkSQL這部分有限制。

其他的就是專業的服務,企業版有一些我們專用的調試工具等,便於服務,但是對社區影響不大。

4. 巨杉資料庫是怎麼與Spark進行結合的?不用普通sql查詢,那是利用什麼方法查詢?

Spark適合低並發,大數據量複雜查詢。

巨杉資料庫專門為spark開發了一套連接器,可以支持為spark 提供原數據。Spark SQL 的語法基本沿用了Hive SQL 的語法,大家基本可以通過查閱hive SQL 語法進行編寫。

5.spark sql與普通sql區別在哪裡?語法不一樣還是語言不同?

Spark SQL是類似於標準SQL的語言,寫得時候基本沒有障礙,但是畢竟不是做OLTP(On-Line Transaction Processing聯機事務處理過程)的,一些語法不支持,屬於SQL子集。

6.巨杉資料庫的瓶頸在哪裡?

目前最大的瓶頸在隔離機制,巨杉SDB主要追求高可用、高性能的,就是ACID和BASE機制中,在BASE機制上巨杉SDB的優勢更明顯。

ACID和BASE分別推動了關係型資料庫和NoSQL的發展,現在大家所主張的NewSQL就是在尋找更好的平衡點,在高可用的基礎上,盡量支持ACID。

對於現在的業務來說,高可用的場景遠大於OLTP場景。

7.nosql 和newsql 的區別?

這個要從nosql講起,在互聯網時代激發了大量用戶,高可用變得非常重要,所以就退出了BASE機制

BASE是基本可用(Basically Available)軟狀態(Soft State)最終一致性(Eventually Consistent)軟狀態就是中間狀態,例如同步延時時的分散式從節點的副本狀態。從BASE的角度,高可用是優先保障的。屬於CAP中的AP,主要目的就是為了保障業務迭代的便捷性和高可用。Newsql就是在BASE基礎上,盡量滿足ACID。

8.巨杉資料庫支持分散式文件存儲嗎?

支持的,巨杉有SequoiaCM產品專門用於非結構化存儲,分布方式相同,存儲結構不同,是塊存儲。

目前SDB 是支持雙存儲的,一個是行存的BSON結構,另外一個塊存儲結構, SDB 對於塊存儲的功能稱為 LOB(大對象),支持存儲任意大小的非結構化文件。所以大家可以使用SDB 的LOB 功能來存儲文件,並且該文件將會被切分成256KB(默認)的塊大小分散式存儲在整個資料庫集群中,數據的冗餘依賴數據分區組的方式進行。

?【巨杉解決方案】ECM企業內容管理

9.SDB目前有官方docker鏡像嗎?

目前沒有官方docker。

主要原因是我們目前從性能角度考慮,docker對於內存管理和i/o的使用上有很多技巧,但是從小項目,易用性角度來說,我們會考慮推出docker。

我們近期在青雲會提供鏡像版本的APP,對於其他雲,我們也考慮使用docker部署。

10.如果我是一個視頻文件,性能會有什麼變化?

如果用戶持續對SDB寫入一些大的非結構化文件,性能的變化主要取決於你的伺服器I/O。

對於SDB、分散式資料庫你有什麼疑問嗎?添加「杉杉」為微信好友來聊聊吧~

杉杉微信號:sequoiadb111


推薦閱讀:

Hadoop計算框架之MapReduce
分散式系統設計:單點模式之挎斗模式
各大公司分散式存儲領域相關論文
OceanBase知乎官方號開通了!

TAG:分散式系統 | NoSQL | MongoDB |