一、neo4j有什么缺點(diǎn)
1、社區(qū)版免費(fèi)開(kāi)源,但是企業(yè)級(jí)項(xiàng)目實(shí)用性不強(qiáng),嵌入式模式相對(duì)于遠(yuǎn)程連接模式效率較高,但僅支持java和基于jvm的語(yǔ)言,社區(qū)版不能使用集群。
2、企業(yè)版閉源且費(fèi)用昂貴,集群也只是HA高可用,不能進(jìn)行分布式存儲(chǔ),想要提高性能和容量只能加大機(jī)器的硬盤(pán)、使用更高的內(nèi)存和SSD,硬件最終會(huì)達(dá)到瓶頸。
3、圖數(shù)據(jù)結(jié)構(gòu)導(dǎo)致寫(xiě)入性能差,實(shí)時(shí)性讀寫(xiě)跟不上,大數(shù)據(jù)量導(dǎo)入麻煩,官方提供的load csv模式性能也不夠理想,neo4j-import倒是不錯(cuò),但是只能用于數(shù)據(jù)庫(kù)初始化局限太大。
4、社區(qū)不強(qiáng)大,資料不豐富,碰到問(wèn)題需要慢慢爬坑。
延伸閱讀:
二、id的一些典型的類(lèi)型
整型:整型通常來(lái)說(shuō)是優(yōu)異的選擇,這是因?yàn)檎偷倪\(yùn)算和比較都很快,而且還可以設(shè)置 AUTO_INCREMENT 屬性自動(dòng)遞增。ENUM 和 SET:通常不會(huì)選擇枚舉和集合作為 id,然后對(duì)于那些包含有“類(lèi)型”、“狀態(tài)”、“性別”這類(lèi)型的列來(lái)說(shuō)是挺合適的。例如我們需要有一張表存儲(chǔ)下拉菜單時(shí),通常會(huì)有一個(gè)值和一個(gè)名稱(chēng),這個(gè)時(shí)候值使用枚舉作為主鍵也是可以的。字符串:盡可能地避免使用字符串作為 id,一是字符串占據(jù)的空間更大,二是通常會(huì)比整型慢。選用字符串作為 id 時(shí),還需要特別注意 MD5、SHA1和 UUID 這些函數(shù)。每個(gè)值是在很大范圍的隨機(jī)值,沒(méi)有次序,這會(huì)導(dǎo)致插入和查詢(xún)更慢:插入的時(shí)候,由于建立索引是隨機(jī)位置(會(huì)導(dǎo)致分頁(yè)、隨機(jī)磁盤(pán)訪問(wèn)和聚集索引碎片),會(huì)降低插入速度。查詢(xún)的時(shí)候,相鄰的數(shù)據(jù)行在磁盤(pán)或內(nèi)存上上可能跨度很大,也會(huì)導(dǎo)致速度更慢。如果確實(shí)要使用 UUID 值,應(yīng)當(dāng)移除掉“-”字符,或者是使用 UNHEX 函數(shù)將其轉(zhuǎn)換為16字節(jié)數(shù)字,并使用 BINARY(16)存儲(chǔ)。然后可以使用 HEX 函數(shù)以十六進(jìn)制的方式進(jìn)行獲取。UUID 產(chǎn)生的方法有很多,有些是隨機(jī)分布的,有些是有序的,但是即便是有序的性能也不如整型。