Neo4j Client Details

Author
Reihane Boghrati
Big Picture Data Model
  • (users)-[friendship]->(users)
  • (users)-[invitation]->(users)
  • (users)-[create]->(resources)
  • (resources)-[createdFor]->(users)
  • (users)-[manipulation]->(resources)
Schema Description
  • “users” and “resources” are represented as nodes.
  • The profile aggregates "pendingcount", "friendcount" and "resourcecount" are stored as attributes of the user node along with its other attributes.
  • Resource ownership is represented as the "create" relationship. Every resource is posted on a user's wall. This is represented using the “createdFor” relationship.
  • Manipulations are represented as the "manipulation" relationship between a user and a resource node.
  • Friendship relationships are represented as two relationships: “invitation” for pending friendships and “friendship” for confirmed friendships.
  • Profile and thumbnail images for a user are stored as attributes of the user node.
Index Structures
  • Two index structures are created, one on the userid attribute of the users nodes, and the second on the rid attribute of the resources node.
SoAR Rating# †
100,000 members, 100 friends per user, 0 resources per user, 12KB profile images and 2KB thumbnail images
  • ViewProfile: 2251 actions/sec
  • ListFriends: 118 actions/sec
  • VeryLowUpdateActions: 1111 actions/sec
  • LowUpdateActions: 623 actions/sec
Source
Download

# 100,000 members, 100 friends per user, 100 resources per user,12KB profile images and 2KB thumbnail images.

† The reported performance numbers were obtained using instances with the following specifications: 1Gbps network card, Intel(R) Core(TM) i7-4770 CPU@ 3.40GHz, 16 Gigabyte memory. One instance hosted the data store while multiple BGClients were used to generate workload. Processor and network resources of the BGClients were not a bottleneck while obtaining these numbers. The experiments were conducted using neo4j-Server 2.0.1 and Neo4j-Client 2.0.1. The REST API was used to run the client and server separately. We used the Cypher query language to implement BG's actions for Neo4j.