首頁> 産品技術 > Vernox融合數據庫

Vernox融合數據庫

大數據時代迅猛發展,傳統的關系型數據庫已經無法滿足用戶需求,半結構化數據、非結構化數據占比日益增加,高吞吐,海量的數據壓力以及移動互聯網時代,高並發的訪問都需要新型數據庫來支撐。內存數據庫、文檔數據庫、列存儲數據庫、圖數據庫等新技術層出不窮。這樣的技術發展趨勢對數據庫的使用者和維護者來說,帶來了更高的學習成本和技術更新壓力。

企業在雲計算的大環境下開始轉型升級,以需求驅動轉型成數據驅動,支撐大數據分析計算的底層數據庫就顯得尤爲重要。目前,當需要操作和存儲異構數據時,企業大多采用各類型數據庫多管齊下的策略,這樣導致了操作的不流暢和聯合檢索的複雜,因此,融合數據庫是必然的趨勢。

Vernox融合了事務、Json、圖表三個功能于一體,不基于任何開源代碼,完全自主研發,並且創新性的將B+樹索引與後綴排序算法相結合,形成了獨具競爭力優勢的字符串後綴索引,在中文檢索速度上超越傳統大型關系型數據庫近十倍,融合、高效、原創,是Vernox立足的根本,未來的競爭是數據競爭,掌握了底層數據庫技術,即是掌握了核心競爭力。
展開
1、融合關系、圖、文檔(json)于一身

Vernox原生支持图数据以节点和关系的形态存储,并建立网状图索引。图索引为图表的基礎索引,不能单独创建。检索方式按照广度优先方式或深度优先方式进行遍历,对社交关系等网状数据的存储和操作具有天然优势。同时,Vernox还原生支持json文本格式,极大方便了对多样性文本数据的存储和操作,不用再担心新增数据是否能对应表结构中的字段,真正实现了大数据的实时存储,也方便了上层大数据分析引擎的應用。Vernox采用json列的方式存储json格式的数据,即每张表有一个名为“$”的字段,该字段用于存储json格式数据。

Vernox不仅提供了结构化数据,文档型数据和图数据的存储能力,更大的亮点是Vernox在内核数据操作上,实现了不同类型数据的Join操作,并以标准SQL语法对上层應用提供服务能力,大大提升了應用成同时操作多种类型数据的便利性和实时性。一句Join SQL语句即可完成传统模式下,不同数据库查询,應用程序内存拼装,應用处理一致性的低效率,高复杂的开发过程。

目前市场上有针对图关系数据的图数据库,也有针对多样性文本数据的文档数据库,但是,他们都是各自独立應用,如果业务中有需求用到多种数据库,那么同时操控多个库将是一个庞大而复杂的工程。因此Vernox决定将多种功能融于一身,集合关系、图数据库、文档数据库的优势,打造出国内鲜有的融合数据库。
 
2、Vernox核心優勢-字符串索引

在关系型数据库中,对于字符串类型的字段建立B+树索引的方式都是将完整的字符串存入B+树索引的节点中。在节点内部按照整个字符串的字典序排列。这样的B+树索引方式存在的问题是,对带有前百分号的字符串模糊匹配支持并不是友好。具体而言,对于like‘%X%’或者like‘%X’形式的查询条件只能使用覆盖索引遍历或者全表遍历,只有like‘X%’形式的条件可以很好的使用B+树索引。而在目前在许多應用中会大量使用like‘%X%’形式的查询,传统关系型数据库在该情况下所使用的全表遍历策略效率十分缓慢。

针对这样的情况,Vernox在已有的B+树索引的基礎上,引入了后缀数组。自主研发出高效精准的字符串索引,用于汉字模糊匹配。具体原理如下:   
字符串的后缀是指字符串某位置与字符串结尾之间的子串,而后缀数组(Suffix Array)则是一个存放该字符串所有后缀的一维数组,这些子串按照字典序由小到大依次排列。


從上面對後綴數組的描述中不難發現,在後綴數組中所有後綴按照其字典序排列,所以可以通過二分法快速的找到符合條件的後綴,這與B+樹的查詢規則相同。所以我們將B+樹索引與後綴數組這兩種已有技術相結合,提出了一種基于後綴數組的字符串B+樹索引,從而使B+樹索引可以支持帶有前百分號的字符串模糊匹配。
 
3、Vernox核心優勢-基于成本的智能優化

大部分的關系型數據庫,sql解析一共分爲4步:
1、 语法检查:此步骤检查sql语句的拼写是否符合标准语法;
2、語義檢查:此步驟檢查sql語句中對象及字段是否真實存在,以及該用戶是否具備相應操作權限;
3、語句解析:關系型數據庫在這一步時根據統計信息生成基于成本的執行計劃,執行計劃將一直緩存于內存中,以備將來複用。
   
Sql解析主要分为2类:硬解析(hard parse)和软解析(soft parse),硬解析即每次执行语句时都根据当前条件成本产生执行计划;软解析在sql解析这一步,一旦在执行计划中找到相似模板,即调用对应模板的执行计划进行解析,软解析省去了评估条件成本所耗费的大量系统资源。
·
執行sql,返回結果

Vernox全程采用硬解析。軟解析雖然能節省系統資源,但存在一個問題,完全根據緩存中的執行計劃模板進行匹配解析,有可能會造成索引先走成本較高條件,再走成本較低條件,這樣雖然節省了系統資源,但sql解析本身的成本依然很高。

對于傳統關系型數據庫來說,他們的架構本身是基于磁盤,如果每次sql解析都采用硬解析,頻繁的磁盤I/O會耗費大量CPU資源,而Vernox對索引緩存結構進行改進,保證了所有sql解析都在內存進行,極大降低了系統資源消耗,因此我們決定全程使用sql硬解析,實現了真正基于成本的智能查詢。

內存索引的成本評估精確到每個條件命中的條數,磁盤索引的成本評估也可以做到每個條件命中的葉子數據塊數。