1. Installation
On neo4j official website, download community version, click Install can. It's simple, nothing to say. 2. Getting Started
Since it is an introduction, start from the simple, step by step familiar with neo4j. 2.1 Graphical operator Interface
After running the neo4j, open the Web page in the browser: http://localhost:7474, you can enter the Neo4j graphical interface, in which the database is directly operational, you can also view the status of the database.
At the top of the page you can write cypher statements and run them. The right side shows some of the database's status and provides a subset of the operations, including: Database information. Database information. The node category, the category of the edge, attributes (including properties of the node and properties of the edge). Favorites. Write the basic database statements, including the creation of nodes, query the number of nodes, the number of edges and so on. Create a sample diagram. View the status of the database. Documentation. Various official documents. Neo4j Browser Sync. Clears the local database. Synchronize with the cloud database. Browser Settings. Graphical operator interface settings. 2.2 Cypher Basic Statement
Cypher is the database language of neo4j, get started words at least need to know and delete to change. Inserts a node. Inserts a node for the person category, and this node has a property name with a property value of Andres
CREATE (N:person {name: ' Andres '});
Insert Edges. Insert a forward edge of A to B, and the category of the Edge is follow
MATCH (A:person), (B:person)
where a.name = ' Node A ' and B.name = ' Node B '
CREATE (a)-[r:follow]-> (b);
Update the node. Update the node for a person category and set the new name.
MATCH (N:person {name: ' Andres '})
SET n.name = ' Taylor ';
Deletes the node and its attached edge. Neo4j If a node has an edge attached to it, you cannot simply delete the node.
MATCH (N:person {name: ' Andres '})
DETACH DELETE N;
Deletes an edge.
MATCH (A:person)-[r:follow]-> (B:person)
WHERE a.name = ' Andres ' and b.name = ' Taylor '
DELETE R;
Then is the query statement, as a graph database, definitely want to point out a different query right. Shortest path.
MATCH (Ms:person {name: ' Andres '}), (Cs:person {name: ' Taylor '}), p = Shortestpath ((ms)-[r:follow]-(CS)) RETURN p;
Queries the relationship between two nodes.
MATCH (A:person {name: ' Andres '})-[r]-> (B:person {name: ' Taylor '})
RETURN type (r);
Queries all follower of a node.
MATCH (:P erson {name: ' Taylor '})-[r:follow]-> (person)
RETURN person.name;
There is more to see the official User manual: Official user manual 2.3 Creating a neo4j database
After running neo4j, you can select the database creation location in the Software window, and then neo4j automatically creates the database for us.
Creates a uniqueness constraint that has an index effect, similar to a primary key in a relational database. Note that this can only be set when the data is not yet inserted in the database.
CREATE CONSTRAINT on (A:person) ASSERT a.name is UNIQUE;
Create an index.
CREATE INDEX on:P erson (name);
View all the nodes and the number of sides
MATCH (N) RETURN count (n);
MATCH ()--() RETURN count (*);
There is more to see the official User manual: Official user manual 2.4 neo4j driver
NEO4J provides a database driver for several languages, such as in Java, where you can insert a node:
Driver Driver = Graphdatabase.driver ("Bolt://localhost", Authtokens.basic ("neo4j", "neo4j"));
Session session = Driver.session ();
Session.run ("CREATE (A:person {name: ' Arthur '})");
Session.close ();
Driver.close ();
Query node:
Driver Driver = Graphdatabase.driver ("Bolt://localhost", Authtokens.basic ("neo4j", "neo4j"));
Session session = Driver.session ();
Statementresult result = Session.run ("MATCH (a:person) WHERE a.name = ' Arthur ' RETURN a.name as name");
while (Result.hasnext ())
{
record record = Result.next ();
System.out.println (Record.get ("name"). asstring ());
}
Session.close ();
Driver.close ();
3. Pros and cons
Used a period of time neo4j, summed up the pros and cons I found.
Advantages: Data insertion, query operation is very intuitive, no longer like before to consider the relationship between the tables. The graph search and graph traversal methods provided are convenient and the speed is relatively fast.
Cons: The hardest thing to endure is the very slow insertion speed. This may be because you need to save some extra information (in order to query the service) when creating nodes and edges. Do not know is not my code problem, insert 10,000 nodes, 10,000 sides spent nearly 10 minutes ... Super-large nodes. When a node has a very long edge (common to large v), the speed of operations on the node will be greatly reduced. The problem was long overdue, and the authorities said they would deal with it, but it is still not satisfying. The most common way to improve database speed is to allocate more memory, but look at the official manual, seemingly unable to directly set the database memory consumption, but need to calculate after the "reserved" Memory ... 4. Applicable Scenarios
Due to its obvious advantages and disadvantages, NEO4J is suitable for storing "less modified, more queries, no super-large nodes" of the graph data.
In addition, for the disadvantage of neo4j, there is a database with mixed indexes Arangodb may be a good consideration. According to its official website, Arangodb not only has the advantages of general graphics database, but also leads the neo4j in the speed of various operations.
Reprint Address: Click to open the link