Ancelus Benchmarks
The benchmarks for Ancelus have been carefully designed to avoid special advantage from the use of cache memory or other non-random conditions. The use of “page anticipation” algorithms has been carefully avoided, along with any other technique that might require prior knowledge of the application or data structure. When comparing Ancelus with table-based relational databases, both systems are loaded from the same randomized file. Data load time is not included in benchmark times.
Relational Database Comparison
Three Table SQL range select
Table 1: 200 million rows, 2 columns; Table 2: 1 million rows, 2 columns
Table 3: 100,000 rows, 2 columns; 12,000 hits in range
|
Benchmark |
RDB |
Ancelus |
Ratio |
| First Return |
230 sec |
270 micro sec |
850,000:1 |
| Full List |
230 sec |
33 milli sec |
7,000:1 |
| Key Insert Transaction Latency (table 1) |
7 micro sec |
||
| Transactions / Second |
53 T/s |
371,000 T/s |
7,000:1 |
| $/100 Trans/Second (hardware only) |
$2,264 |
$0.32 |
7,000:1 |
| Transactions / Second (Dual Core) |
53 T/s |
722,000 T/s |
13,000:1 |
| $/100 Trans/Second (hardware only) |
$2,264 |
$0.17 |
13,000:1 |
| Add Column |
3,940 sec |
800 milli sec |
5,000:1 |
| Total Lock time |
3,940 sec |
<100 nano sec |
4x1013:1 |
| Out of Service time |
3,940 sec |
0 |
NA |
| Dataspace Compression |
14.1 GB |
3.2 GB |
77% |
|
Function |
Width |
Rows |
nano sec |
Transactions / sec |
Notes |
|
Find (indexed lookup) |
10 |
10,000 |
410 |
2,400,000 |
c |
|
|
10 |
100,000 |
860 |
1,200,000 |
c |
|
|
10 |
1,000,000 |
1700 |
590,000 |
c |
|
|
10 |
10,000,000 |
2900 |
340,000 |
c |
|
|
10 |
100,000,000 |
4600 |
220,000 |
c |
|
Get/Put |
10 |
10,000 |
45 |
22,000,000 |
c |
|
|
10 |
100,000 |
82 |
12,000,000 |
c |
|
|
10 |
1,000,000 |
130 |
7,100,000 |
c |
|
|
10 |
10,000,000 |
170 |
5,900,000 |
c |
|
|
10 |
100,000,000 |
220 |
4,500,000 |
c |
|
Next/Pre (Key) |
10 |
10,000 |
75 |
13,000,000 |
c |
|
|
10 |
100,000 |
150 |
5,000,000 |
c |
|
|
10 |
1,000,000 |
250 |
4,200,000 |
c |
|
|
10 |
10,000,000 |
340 |
2,900,000 |
c |
|
|
10 |
100,000,000 |
430 |
2,300,000 |
c |
|
Insert/Delete (Key) |
10 |
10,000 |
940 |
1,100,000 |
c |
|
|
10 |
100,000 |
1400 |
710,000 |
c |
|
|
10 |
1,000,000 |
2300 |
430,000 |
c |
|
|
10 |
10,000,000 |
3800 |
260,000 |
c |
|
|
10 |
100,000,000 |
6100 |
160,000 |
c |
|
Next/Pre (List) |
4 |
1,000,000 |
140 |
7,100,000 |
a |
|
Insert/Delete (List) |
4 |
1,000,000 |
160 |
6,300,000 |
a |
|
Lock & Unlock Column |
|
|
20 |
|
a |
|
Open Database |
|
|
150 micro sec |
|
a |
| a | Not size dependent |
| b | Time increases linearly with size |
| c | Time increases as the log of size |
| SW | Ancelus 3.0.0 (64 bit); Linux 2.6 (64 bit) |
| HW | AMD Athalon Dual Core x2 5200+ (64 bit); 8 GB PC 6400 memory |
| Feature | Current Limit | Expandable to: | Comments |
| Memory Segments |
256 |
|
potentially limited by the operating system |
| Largest memory segment |
2 terabytes |
8 exabytes |
|
| Database size |
512 terabytes |
8 exabytes |
tables and columns can span multiple memory segments |
| Tables |
2 billion |
2 trillion |
|
|
Rows |
2 billion |
2 trillion |
|
| Columns |
2 billion |
2 trillion |
|
| Columns per database |
2 billion |
2 trillion |