Neo4j 1.6.M0 發布,一個新的里程碑
Neo4j 發布了 1.6 版本的第一個里程碑,Neo4j 1.6 重在提升架構,包括構建、壓力測試等等;另外在計算方面更快跟好。
Neo4j是一個嵌入式,基于磁盤的,支持完整事務的Java持久化引擎,它在圖像中而不是表中存儲數據。Neo4j提供了大規模可擴展性,在一臺機器上可以處理數十億節點/關系/屬性的圖像,可以擴展到多臺機器并行運行。相對于關系數據庫來說,圖形數據庫善于處理大量復雜、互連接、低結構化的數據,這些數據變化迅速,需要頻繁的查詢——在關系數據庫中,這些查詢會導致大量的表連接,因此會產生性能上的問題。Neo4j重點解決了擁有大量連接的傳統 RDBMS在查詢時出現的性能衰退問題。通過圍繞圖形進行數據建模,Neo4j會以相同的速度遍歷節點與邊,其遍歷速度與構成圖形的數據量沒有任何關系。此外,Neo4j還提供了非常快的圖形算法、推薦系統和OLAP風格的分析,而這一切在目前的RDBMS系統中都是無法實現的。
Neo是一個網絡——面向網絡的數據庫——也就是說,它是一個嵌入式的、基于磁盤的、具備完全的事務特性的Java持久化引擎,但是它將結構化數據存儲在網絡上而不是表中。網絡(從數學角度叫做圖)是一個靈活的數據結構,可以應用更加敏捷和快速的開發模式。 你可以把Neo看作是一個高性能的圖引擎,該引擎具有成熟和健壯的數據庫的所有特性。程序員工作在一個面向對象的、靈活的網絡結構下而不是嚴格、靜態的表中——但是他們可以享受到具備完全的事務特性、企業級的數據庫的所有好處。 由于使用了“面向網絡的數據庫”,人們對Neo充滿了好奇。在該模型中,以“節點空間”來表達領域數據——相對于傳統的模型表、行和列來說,節點空間是很多節點、關系和屬性(鍵值對)構成的網絡。關系是第一級對象,可以由屬性來注解,而屬性則表明了節點交互的上下文。網絡模型完美的匹配了本質上就是繼承關系的問題域,例如語義Web應用。Neo的創建者發現繼承和結構化數據并不適合傳統的關系數據庫模型:
1.對象關系的不匹配使得把面向對象的“圓的對象”擠到面向關系的“方的表”中是那么的困難和費勁,而這一切是可以避免的。
2.關系模型靜態、剛性、不靈活的本質使得改變schemas以滿足不斷變化的業務需求是非常困難的。由于同樣的原因,當開發小組想應用敏捷軟件開發時,數據庫經常拖后腿。
3.關系模型很不適合表達半結構化的數據——而業界的分析家和研究者都認為半結構化數據是信息管理中的下一個重頭戲。
4.網絡是一種非常高效的數據存儲結構。人腦是一個巨大的網絡,萬維網也同樣構造成網狀,這些都不是巧合。關系模型可以表達面向網絡的數據,但是在遍歷網絡并抽取信息的能力上關系模型是非常弱的。
雖然Neo是一個比較新的開源項目,但它已經在具有1億多個節點、關系和屬性的產品中得到了應用,并且能滿足企業的健壯性和性能的需求: 完全支持JTA和JTS、2PC分布式ACID事務、可配置的隔離級別和大規模、可測試的事務恢復。這些不僅僅是口頭上的承諾:Neo已經應用在高請求的24/7環境下超過3年了。它是成熟、健壯的,完全達到了部署的門檻。