標籤:file doc join 處理 seq 瓶頸 斷網 orm 大資料
哈羅,艾瑞巴蒂~巨杉答疑欄目今日上線啦!
巨杉資料庫作為商業化開源軟體,已經擁有大量社區使用者。開源至今,大到分散式資料庫原理、架構問題,小到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產品專門用於非結構化儲存,分布方式相同,儲存結構不同,是Block Storage。
目前SDB 是支援雙儲存的,一個是行存的BSON結構,另外一個Block Storage結構, SDB 對於Block Storage的功能稱為 LOB(大對象),支援儲存任意大小的非結構化檔案。所以大家可以使用SDB 的LOB 功能來隱藏檔,並且該檔案將會被切分成256KB(預設)的塊大小分布式儲存在整個資料庫叢集中,資料的冗餘依賴資料分區組的方式進行。
?【巨杉解決方案】ECM企業內容管理
9.SDB目前有官方docker鏡像嗎?
目前沒有官方docker。
主要原因是我們目前從效能角度考慮,docker對於記憶體管理和i/o的使用上有很多技巧,但是從小項目,易用性角度來說,我們會考慮推出docker。
我們近期在青雲會提供鏡像版本的APP,對於其他雲,我們也考慮使用docker部署。
10.如果我是一個視頻檔案,效能會有什麼變化?
如果使用者持續對SDB寫入一些大的非結構化檔案,效能的變化主要取決於你的伺服器I/O。
對於SDB、分散式資料庫你有什麼疑問嗎?添加“杉杉”為好友來聊聊吧~
【巨杉答疑】巨杉資料庫和mongodb有什麼關係嗎?