一、圖數據庫、mysql和kv數據庫有什么不同
區別還是很大的,最根本的區別還是底層存儲結構上的區別。
圖數據庫應該就是使用圖作為底層存儲結構。在結構上關系上應該是更強大的。
mysql之類的關系數據庫以表(直觀上的行列)作為操作對象,底層結構索引都是用來保證對表的快速操作的,上層接口上是線性的。
kv數據庫嚴格來說不是數據庫,只是一種存儲的結構,只是v部分可以存儲多種數據,本質的查詢部分還是key,這部分一般只是一種結構(哈希/BST)。名列前茅層key是查詢接口,第二層的v是結構相關的。它的真正的高效檢索部分是名列前茅部分。可以等同于只有多列的表,但列與列之間沒有行約束關系。
另外,雖然圖數據庫理論上結構上有優勢但實際上應該說還是關系數據更有操作上的優勢,這主要從信息角度不管是哪種數據庫都不能解決復雜的數據查詢問題。圖結構和表結構沒有本質區別,但操作對象上表達形式上要復雜的,表結構具有操作上的直觀優勢,更易于理解和使用。比對kv結構,kv的優勢是結構是松散的更少的約束性,修改更方便。
kv數據庫封裝成數據庫是不太可能的,這是因為基礎結構本質的不同。相比關系型數據庫它還少了相當多的結構和特征。
延伸閱讀:
二、圖數據庫優點有什么
使用圖(或者網)的方式來表達現實世界的關系很直接、自然,易于建模。比如某人喜歡看某電影,就可以建立一條邊連接這個人和這部電影,這條邊就叫做“喜歡”邊,同時這個人還可以有其它邊,比如“朋友”邊、“同學”邊等,同樣這個電影也可以有其它邊,比如“導演”邊、“主演”邊等,這樣就構建了自然的關系網。圖數據庫可以很高效的插入大量數據。圖數據庫面向的應用領域數據量可能都比較大,比如知識圖譜、社交關系、風控關系等,總數據量級別一般在億或十億以上,有的甚至達到百億邊。mysql不做分表分庫的情況下插入百萬數據基本就慢到不行,圖數據庫基本能勝任億級以上的數據,比如neo4j、titan(janus)、hugegraph等圖數據庫,持續插入十億級的數據基本還能保持在一個較高的速度。圖數據庫可以很高效的查詢關聯數據。傳統關系型數據庫不擅長做關聯查詢,特別是多層關聯(比如查我的好友的好友有哪些人),因為一般來說都需要做表連接,表連接是一個很昂貴的操作,涉及到大量的IO操作及內存消耗。圖數據庫對關聯查詢一般都進行針對性的優化,比如存儲模型上、數據結構、查詢算法等,防止局部數據的查詢引發全部數據的讀取。