Table of Contents
- OS: RedHat 7.0
- Hardware/Cloud Setup:
- CPU: 8-core (Intel Xeon Gold 6148 2.4GHz, cache 28160KB)
- DRAM: 64GB
- Disks: 1TB SSD
- Networks： ACS Network (powered by Microsoft Azure Cloud Services）
- Cluster Setup: 3-instances
- Neo4j: Causal cluster
- Ultipa: HTAP cluster
- Neo4j 4.07 Enterprise Edition
- Ultipa Server v2.1
- Ultipa KG v2.1
- Docker 19.0+
- Alimama published dataset
- User transactional behavior dataset (5.15M vertices, 100M edges)
- Vertex Entities: users and products.
- Edge Relationships: Page Views, Add-to-cart, Add-to-favorite, buy (purchase), etc.
- Average node degree ~= 20 (100M/5M)
The testing includes side-by-side feature comparison and performance benchmarking between Neo4j v4.07 Enterprise edition and Ultipa v2.1 edition.
Based on retail banking needs, the testing will be primarily focusing on graph queries and graph computing performances:
- Meta-data related operations: CRUD operations on nodes and edges;
- Graph operations: Path, k-hop queries
- Graph algorithms: Benchmark against a few typical graph algorithms
For non-performance functionality related features, the following areas are tested:
- Support of visualization (GUI features)
- Support of high-availability and cluster deployment and management
- Support of extensibility
- Support of toolkits/toolchains
- Overall usability and user experience.
Both systems are deployed in cluster setup:
- Neo4j Enterprise v4.07 with 3 instances causal cluster setup
- Ultipa v2.1 with 3 instances HTAP cluster setup
Note that, the bank’s on-premise cloud environment is supposedly ACS (Advanced Cloud Services) which is based on Microsoft Azure with some special network adaptations, think ACS for the bank’s private cloud as AWS for the public cloud. Due to Neo4j’s incompatibility with ACS, we had to resolve to use a bare-metal cluster setup to conduct the following testing.
Randomized queries against nodes and edges by their IDs. The queries are repeated 1,000 times for each type, total time and average individual query time are counted. If TPS (transactions per second) is counted, it’s also recorded.
Note that all numbers below are in milliseconds (ms), unless otherwise annotated.