The Neo4j Manual v1.6

License: Creative Commons 3.0

2012-01-22 14:57:04


Table of Contents

Preface
I. Introduction
1. Neo4j Highlights
2. Graph Database Concepts
2.1. What is a Graph Database?
2.2. Comparing Database Models
3. The Neo4j Graph Database
3.1. Nodes
3.2. Relationships
3.3. Properties
3.4. Paths
3.5. Traversal
II. Tutorials
4. Using Neo4j embedded in Java applications
4.1. Include Neo4j in your project
4.2. Hello World
4.3. User database with index
4.4. Traversal
4.5. Domain entities
4.6. Graph Algorithm examples
4.7. Reading a management attribute
4.8. Cypher Queries
5. Cypher Cookbook
5.1. Hyperedges and Cypher
5.2. Basic Friend finding based on social neighborhood
5.3. Co-favorited places
5.4. Find people based on similar favorites
5.5. Multirelational (social) graphs
6. Using the Neo4j REST API
6.1. How to use the REST API from Java
7. Extending the Neo4j Server
7.1. Server Plugins
7.2. Unmanaged Extensions
8. The Traversal Framework
8.1. Main concepts
8.2. Traversal Framework Java API
9. Domain Modeling Gallery
9.1. User roles in graphs
9.2. ACL structures in graphs
10. Languages
11. Using Neo4j embedded in Python applications
11.1. Hello, world!
11.2. A sample app using traversals and indexes
III. Reference
12. Capabilities
12.1. Data Security
12.2. Data Integrity
12.3. Data Integration
12.4. Availability and Reliability
12.5. Capacity
13. Transaction Management
13.1. Interaction cycle
13.2. Isolation levels
13.3. Default locking behavior
13.4. Deadlocks
13.5. Delete semantics
13.6. Creating unique nodes
13.7. Transaction events
14. Indexing
14.1. Introduction
14.2. Create
14.3. Delete
14.4. Add
14.5. Remove
14.6. Update
14.7. Search
14.8. Relationship indexes
14.9. Scores
14.10. Configuration and fulltext indexes
14.11. Extra features for Lucene indexes
14.12. Batch insertion
14.13. Automatic Indexing
15. Cypher Query Language
15.1. Compatibility
15.2. Parameters
15.3. Identifiers
15.4. Start
15.5. Match
15.6. Where
15.7. Return
15.8. Aggregation
15.9. Order by
15.10. Skip
15.11. Limit
15.12. Functions
16. Graph Algorithms
16.1. Introduction
17. Neo4j Server
17.1. Server Installation
17.2. Server Configuration
17.3. Setup for remote debugging
17.4. Using the server (including web administration) with an embedded database
17.5. Server Performance Tuning
17.6. Server Installation in the Cloud
18. REST API
18.1. Service root
18.2. Nodes
18.3. Relationships
18.4. Relationship types
18.5. Node properties
18.6. Relationship properties
18.7. Indexes
18.8. Unique Indexes
18.9. Automatic Indexes
18.10. Configurable Automatic Indexing
18.11. Traversals
18.12. Cypher queries
18.13. Built-in Graph Algorithms
18.14. Batch operations
18.15. Cypher Plugin
18.16. Gremlin Plugin
19. Python embedded bindings
19.1. Installation
19.2. Core API
19.3. Indexes
19.4. Cypher Queries
19.5. Traversals
IV. Operations
20. Installation & Deployment
20.1. Deployment Scenarios
20.2. System Requirements
20.3. Installation
20.4. Upgrading
20.5. Usage Data Collector
21. Configuration & Performance
21.1. Introduction
21.2. Performance Guide
21.3. Caches in Neo4j
21.4. JVM Settings
21.5. Compressed storage of short strings
21.6. Compressed storage of short arrays
21.7. Memory mapped IO settings
21.8. Linux Performance Guide
21.9. Linux specific notes
22. High Availability
22.1. Architecture
22.2. Setup and configuration
22.3. How Neo4j HA operates
22.4. High Availability setup tutorial
22.5. Setting up HAProxy as a load balancer
23. Backup
23.1. Embedded and Server
23.2. Online Backup from Java
23.3. High Availability
23.4. Restoring Your Data
24. Security
24.1. Securing access to the Neo4j Server
25. Monitoring
25.1. JMX
V. Tools
26. Web Administration
26.1. Dashboard tab
26.2. Data tab
26.3. Console tab
26.4. The Server Info tab
27. Neo4j Shell
27.1. Starting the shell
27.2. Passing options and arguments
27.3. Enum options
27.4. Filters
27.5. Node titles
27.6. How to use (individual commands)
27.7. Extending the shell: Adding your own commands
27.8. An example shell session
27.9. A Matrix example
VI. Community
28. Community Support
29. Contributing to Neo4j
29.1. Contributor License Agreement
29.2. Writing Neo4j Documentation
29.3. Areas for contribution
29.4. Contributors
A. Manpages
neo4j — Neo4j Server control and management
neo4j-shell — a command-line tool for exploring and manipulating a graph database
neo4j-coordinator — Neo4j Coordinator for High-Availability clusters
neo4j-coordinator-shell — Neo4j Coordinator Shell interactive interface
B. Questions & Answers

List of Figures

2.1. RDBMS
2.2. Graph Database as RDBMS
2.3. Key-Value Store
2.4. Graph Database as Key-Value Store
2.5. Document Store
2.6. Graph Database as Document Store
4.1. Hello World Graph
4.2. Node space view of users
4.3. Matrix node space view
4.4. Descendants Example Graph
4.5. Social network data model
8.1. Traversal Example Graph
15.1. Example Graph
18.1. Final Graph
18.2. Final Graph
18.3. Final Graph
18.4. Final Graph
18.5. Final Graph
18.6. Final Graph
18.7. Final Graph
18.8. Final Graph
18.9. Final Graph
18.10. Starting Graph
18.11. Final Graph
18.12. Starting Graph
18.13. Final Graph
18.14. Final Graph
18.15. Starting Graph
18.16. Final Graph
18.17. Final Graph
18.18. Starting Graph
18.19. Final Graph
18.20. Final Graph
18.21. Final Graph
18.22. Final Graph
18.23. Final Graph
18.24. Final Graph
18.25. Final Graph
18.26. Final Graph
18.27. Final Graph
18.28. Final Graph
18.29. Final Graph
18.30. Final Graph
18.31. Final Graph
18.32. Final Graph
18.33. Starting Graph
18.34. Final Graph
18.35. Final Graph
18.36. Final Graph
18.37. Final Graph
18.38. Final Graph
18.39. Final Graph
18.40. Final Graph
18.41. Final Graph
18.42. Final Graph
18.43. Final Graph
18.44. Final Graph
18.45. Final Graph
18.46. Final Graph
18.47. Final Graph
18.48. Final Graph
18.49. Final Graph
18.50. Final Graph
18.51. Final Graph
18.52. Final Graph
18.53. Final Graph
18.54. Final Graph
18.55. Final Graph
18.56. Final Graph
18.57. Final Graph
18.58. Final Graph
18.59. Final Graph
18.60. Final Graph
18.61. Final Graph
18.62. Final Graph
18.63. Final Graph
18.64. Final Graph
18.65. Final Graph
18.66. Final Graph
18.67. Final Graph
18.68. Final Graph
18.69. Final Graph
18.70. Final Graph
18.71. Final Graph
18.72. Final Graph
18.73. Final Graph
18.74. Final Graph
18.75. Final Graph
18.76. Final Graph
18.77. Final Graph
18.78. Final Graph
18.79. Final Graph
18.80. Final Graph
18.81. Final Graph
18.82. Final Graph
18.83. Final Graph
18.84. Final Graph
18.85. Final Graph
18.86. Final Graph
18.87. Final Graph
18.88. Final Graph
18.89. Starting Graph
18.90. Final Graph
18.91. Starting Graph
18.92. Final Graph
22.1. Typical setup when running multiple Neo4j instances in HA mode
25.1. Connecting JConsole to the Neo4j Java process
25.2. Neo4j MBeans View
26.1. Web Administration Dashboard
26.2. Entity charting
26.3. Status indicator panels
26.4. Browsing and manipulating data
26.5. Editing properties
26.6. Traverse data with Gremlin
26.7. Query data with Cypher
26.8. Interact over HTTP
26.9. JMX Attributes
29.1. Hello World Graph

List of Tables

3.1. Using relationship direction and type
3.2. Property value types
6.1. Neo4j REST clients contributed by the community.
10.1. Neo4j embedded drivers contributed by the community.
14.1. Lucene indexing configuration parameters
17.1. neo4j-wrapper.conf JVM tuning properties
20.1. Neo4j deployment options
20.2. Neo4j editions
20.3. Upgrade process for Neo4J version
21.1. Guidelines for heap size
22.1. HighlyAvailableGraphDatabase configuration parameters
25.1. MBeans exposed by the Neo4j Kernel
25.2. MBean Memory Mapping
25.3. MBean Locking
25.4. MBean Transactions
25.5. MBean Cache
25.6. MBean Configuration
25.7. MBean Primitive count
25.8. MBean XA Resources
25.9. MBean Store file sizes
25.10. MBean Kernel
25.11. MBean High Availability