- 精通Neo4j
- 龐國明等
- 493字
- 2023-07-17 19:00:42
1.7.4 Neo4j的存儲優化
Neo4j支持存儲優化(壓縮和內聯存儲屬性值),對于某些短字符的屬性可以直接存儲在屬性文件中(neostore.propertystore.db)。在實際操作中,像郵政編碼、電話號碼這樣的短字符串屬性就可以直接內聯到屬性存儲文件,而不是單獨地放在另一個動態存儲區,這樣將大幅減少I/O操作并且增大吞吐量,因為只有一個文件需要訪問。
除了可以內聯屬性值,Neo4j還可以對屬性名稱的空間嚴格維護,例如在社交網絡中,有可能會有多個節點存在first_name和last_name這樣的屬性。如果將每個屬性都逐字寫入到磁盤上就會造成浪費。因此,替代方案是屬性名稱都通過屬性索引文件從屬性存儲中間接引用。屬性索引允許所有具有相同名稱的屬性共享單個記錄,因而Neo4j可以節省相當大的空間和I/O開銷。
即使現在的磁盤訪問速度已經很快了,但是CPU訪問磁盤仍然比CPU直接訪問高速緩存要慢得多。因此,Neo4j也采用了緩存策略,保證那些經常訪問的數據可以快速地被多次重復訪問。Neo4j高速緩存的頁面置換算法是基于最不經常使用的頁置換(Least Frequently Used,LFU)緩存策略,根據頁的常用程度進行微調。也就是說即使有些頁面近期沒有使用過,但是因為以前的使用頻率很高,那么在短期之內它也是不會被淘汰的。該策略保證了緩存資源在統計學上的最與配置。
推薦閱讀
- 程序員修煉之道:從小工到專家
- Greenplum:從大數據戰略到實現
- Voice Application Development for Android
- Learning Spring Boot
- Dependency Injection with AngularJS
- 智能數據分析:入門、實戰與平臺構建
- The Game Jam Survival Guide
- 跟老男孩學Linux運維:MySQL入門與提高實踐
- 數據科學工程實踐:用戶行為分析與建模、A/B實驗、SQLFlow
- 云原生數據中臺:架構、方法論與實踐
- 編寫有效用例
- Hadoop大數據開發案例教程與項目實戰(在線實驗+在線自測)
- 數據庫技術及應用
- 大數據數學基礎(Python語言描述)
- 智慧城市中的大數據分析技術