blob: 46723362897ce34bfa27ad426d29be193132beb4 [file] [log] [blame]
<!doctype html><html lang=en class=no-js><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta name=generator content="Hugo 0.102.3"><link rel=canonical type=text/html href=/docs/performance/><link rel=alternate type=application/rss+xml href=/docs/performance/index.xml><meta name=robots content="noindex, nofollow"><link rel="shortcut icon" href=/favicons/favicon.ico><link rel=apple-touch-icon href=/favicons/apple-touch-icon-180x180.png sizes=180x180><link rel=icon type=image/png href=/favicons/favicon-16x16.png sizes=16x16><link rel=icon type=image/png href=/favicons/favicon-32x32.png sizes=32x32><link rel=icon type=image/png href=/favicons/android-36x36.png sizes=36x36><link rel=icon type=image/png href=/favicons/android-48x48.png sizes=48x48><link rel=icon type=image/png href=/favicons/android-72x72.png sizes=72x72><link rel=icon type=image/png href=/favicons/android-96x96.png sizes=96x96><link rel=icon type=image/png href=/favicons/android-144x144.png sizes=144x144><link rel=icon type=image/png href=/favicons/android-192x192.png sizes=192x192><title>PERFORMANCE | HugeGraph</title><meta name=description content><meta property="og:title" content="PERFORMANCE"><meta property="og:description" content="Apache HugeGraph site"><meta property="og:type" content="website"><meta property="og:url" content="/docs/performance/"><meta property="og:site_name" content="HugeGraph"><meta itemprop=name content="PERFORMANCE"><meta itemprop=description content="Apache HugeGraph site"><meta name=twitter:card content="summary"><meta name=twitter:title content="PERFORMANCE"><meta name=twitter:description content="Apache HugeGraph site"><link rel=preload href=/scss/main.min.14ea575cb35d93d46ff8681b2334f40fd46243c100c5c39f5a841b931fae2d40.css as=style><link href=/scss/main.min.14ea575cb35d93d46ff8681b2334f40fd46243c100c5c39f5a841b931fae2d40.css rel=stylesheet integrity><script src=https://code.jquery.com/jquery-3.5.1.min.js integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin=anonymous></script>
<link rel=stylesheet href=/css/prism.css><script type=application/javascript>var doNotTrack=!1;doNotTrack||(window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)},ga.l=+new Date,ga("create","UA-00000000-0","auto"),ga("send","pageview"))</script><script async src=https://www.google-analytics.com/analytics.js></script></head><body class=td-section><header><nav class="js-navbar-scroll navbar navbar-expand navbar-dark flex-column flex-md-row td-navbar"><a class=navbar-brand href=/><span class=navbar-logo><svg id="图层_1" data-name="图层 1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 16 16"><defs><style>.cls-1{fill:none;stroke:#fff;stroke-miterlimit:10;stroke-width:.5px;opacity:.3}.cls-2{fill:#229efa}.cls-3{fill:#9948f7}.cls-4{fill:#33bc7a}.cls-5{fill:url(#未命名的渐变_3)}.cls-6{fill:url(#未命名的渐变_13)}.cls-7{fill:url(#未命名的渐变_11)}</style><linearGradient id="未命名的渐变_3" x1="6.16" y1="14.63" x2="6.16" y2="6.01" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#2e3192"/><stop offset="0" stop-color="#229efa"/><stop offset=".44" stop-color="#239cf8"/><stop offset=".6" stop-color="#2795f2"/><stop offset=".71" stop-color="#2d8ae8"/><stop offset=".81" stop-color="#3679d9"/><stop offset=".89" stop-color="#4263c6"/><stop offset=".95" stop-color="#5048af"/><stop offset="1" stop-color="#5c319b"/></linearGradient><linearGradient id="未命名的渐变_13" x1="10.75" y1="8.2" x2="4.49" y2="1.94" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#991146"/><stop offset="0" stop-color="#326b4e"/><stop offset=".02" stop-color="#3a685c"/><stop offset=".07" stop-color="#506180"/><stop offset=".13" stop-color="#645aa0"/><stop offset=".19" stop-color="#7554bc"/><stop offset=".26" stop-color="#8250d2"/><stop offset=".35" stop-color="#8d4ce3"/><stop offset=".45" stop-color="#944aee"/><stop offset=".6" stop-color="#9848f5"/><stop offset="1" stop-color="#9948f7"/></linearGradient><linearGradient id="未命名的渐变_11" x1="15.34" y1="6.67" x2="7.88" y2="10.98" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#33bc7a"/><stop offset=".45" stop-color="#32ba7a"/><stop offset=".61" stop-color="#2fb37c"/><stop offset=".73" stop-color="#29a87e"/><stop offset=".82" stop-color="#219782"/><stop offset=".9" stop-color="#168186"/><stop offset=".97" stop-color="#09668b"/><stop offset="1" stop-color="#03598e"/></linearGradient></defs><title>logo</title><rect class="cls-1" x="-143.14" y="-373.46" width="597.8" height="424.44"/><circle class="cls-2" cx="12.02" cy="1.83" r="1.33"/><circle class="cls-3" cx="12.02" cy="14.17" r="1.33"/><circle class="cls-4" cx="1.33" cy="8" r="1.33"/><path class="cls-5" d="M7.91 10h0a2.65 2.65.0 01-.23-3.74A1.75 1.75.0 017.91 6h0A2.66 2.66.0 014.4 6h0a1.81 1.81.0 01.24.24A2.65 2.65.0 014.4 10h0a2.62 2.62.0 00-.89 2 2.65 2.65.0 104.4-2z"/><path class="cls-6" d="M12.19 5.49a2.78 2.78.0 01-.5.11A2.64 2.64.0 018.76 3.5h0a2.65 2.65.0 10-2.6 3.17A2.6 2.6.0 007 6.53H7a2.65 2.65.0 013.44 2 2.94 2.94.0 010-.51 2.65 2.65.0 011.75-2.53z"/><path class="cls-7" d="M13 5.35a2.64 2.64.0 00-2.59 2.12h0a3 3 0 01-.08.32A2.65 2.65.0 017.54 9.58a2.86 2.86.0 00.37.41h0a2.63 2.63.0 01.9 2 2.84 2.84.0 01-.05.51 2.64 2.64.0 013.12-2.06l.32.08h0a2.6 2.6.0 00.84.14 2.65 2.65.0 100-5.3z"/></svg></span><span class=font-weight-bold>HugeGraph</span></a><div class="td-navbar-nav-scroll ml-md-auto" id=main_navbar><ul class="navbar-nav mt-2 mt-lg-0"><li class="nav-item mr-4 mb-2 mb-lg-0"><a class=nav-link href=/docs/><i class='fas fa-book pr-2'></i><span>Documentation</span></a></li><li class="nav-item mr-4 mb-2 mb-lg-0"><a class=nav-link href=https://github.com/apache/incubator-hugegraph target=_blank><i class='fab fa-github pr-2'></i><span>GitHub</span></a></li><li class="nav-item mr-4 mb-2 mb-lg-0"><a class=nav-link href=/docs/download/download/><i class='fas fa-download pr-2'></i><span>Download</span></a></li><li class="nav-item mr-4 mb-2 mb-lg-0"><a class=nav-link href=/community/><span>Community</span></a></li><li class="nav-item dropdown mr-4 d-none d-lg-block"><a class="nav-link dropdown-toggle" href=# id=navbarDropdown role=button data-toggle=dropdown aria-haspopup=true aria-expanded=false>English</a><div class=dropdown-menu aria-labelledby=navbarDropdownMenuLink><a class=dropdown-item href=/cn/docs/performance/>中文</a></div></li></ul></div><div class="navbar-nav d-none d-lg-block"></div></nav></header><div class="container-fluid td-outer"><div class=td-main><div class="row flex-xl-nowrap"><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><div class=td-content><div class="pageinfo pageinfo-primary d-print-none"><p>This is the multi-page printable view of this section.
<a href=# onclick="return print(),!1">Click here to print</a>.</p><p><a href=/docs/performance/>Return to the regular view of this page</a>.</p></div><h1 class=title>PERFORMANCE</h1><ul><li>1: <a href=#pg-63f6d63db3ee3a5270fc1ca0a0c0e181>HugeGraph BenchMark Performance</a></li><li>2: <a href=#pg-699ebe5daed825049424b7539aad30f9>HugeGraph-API Performance</a></li><ul><li>2.1: <a href=#pg-dbfafc29a5e930415f78f72c47ee67f2>v0.5.6 Stand-alone(RocksDB)</a></li><li>2.2: <a href=#pg-fd5b165e28a07f1c35ab177b10e15dc8>v0.5.6 Cluster(Cassandra)</a></li></ul><li>3: <a href=#pg-8e73cd18ae7e460700391440de46c404>HugeGraph-Loader Performance</a></li><li>4: <a href=#pg-0b6ebbdbce17d47f26fcb874226e5edc></a></li></ul><div class=content></div></div><div class=td-content><h1 id=pg-63f6d63db3ee3a5270fc1ca0a0c0e181>1 - HugeGraph BenchMark Performance</h1><blockquote><p><strong>Note:</strong></p><p>The current performance metrics are based on an earlier version. The <strong>latest version</strong> has significant
improvements in both performance and functionality. We encourage you to refer to the most recent release featuring
<strong>autonomous distributed storage</strong> and <strong>enhanced computational push down capabilities</strong>. Alternatively,
you may wait for the community to update the data with these enhancements.</p></blockquote><h3 id=1-test-environment>1 Test environment</h3><h4 id=11-hardware-information>1.1 Hardware information</h4><table><thead><tr><th>CPU</th><th>Memory</th><th>网卡</th><th>磁盘</th></tr></thead><tbody><tr><td>48 Intel(R) Xeon(R) CPU E5-2650 v4 @ 2.20GHz</td><td>128G</td><td>10000Mbps</td><td>750GB SSD</td></tr></tbody></table><h4 id=12-software-information>1.2 Software information</h4><h5 id=121-test-cases>1.2.1 Test cases</h5><p>Testing is done using the <a href=https://github.com/socialsensor/graphdb-benchmarks>graphdb-benchmark</a>, a benchmark suite for graph databases. This benchmark suite mainly consists of four types of tests:</p><ul><li>Massive Insertion, which involves batch insertion of vertices and edges, with a certain number of vertices or edges being submitted at once.</li><li>Single Insertion, which involves the immediate insertion of each vertex or edge, one at a time.</li><li>Query, which mainly includes the basic query operations of the graph database:<ul><li>Find Neighbors, which queries the neighbors of all vertices.</li><li>Find Adjacent Nodes, which queries the adjacent vertices of all edges.</li><li>Find the Shortest Path, which queries the shortest path from the first vertex to 100 random vertices.</li></ul></li><li>Clustering, which is a community detection algorithm based on the Louvain Method.</li></ul><h5 id=122-test-dataset>1.2.2 Test dataset</h5><p>Tests are conducted using both synthetic and real data.</p><ul><li><p>MIW, SIW, and QW use SNAP datasets:</p><ul><li><a href=http://snap.stanford.edu/data/email-Enron.html>Enron Dataset</a></li><li><a href=http://snap.stanford.edu/data/amazon0601.html>Amazon dataset</a></li><li><a href=http://snap.stanford.edu/data/com-Youtube.html>Youtube dataset</a></li><li><a href=http://snap.stanford.edu/data/com-LiveJournal.html>LiveJournal dataset</a></li></ul></li><li><p>CW uses synthetic data generated by the <a href=https://sites.google.com/site/andrealancichinetti/files>LFR-Benchmark generator</a>.</p></li></ul><p>The size of the datasets used in this test is not mentioned.</p><table><thead><tr><th>Name</th><th>Number of Vertices</th><th>Number of Edges</th><th>File Size</th></tr></thead><tbody><tr><td>email-enron.txt</td><td>36,691</td><td>367,661</td><td>4MB</td></tr><tr><td>com-youtube.ungraph.txt</td><td>1,157,806</td><td>2,987,624</td><td>38.7MB</td></tr><tr><td>amazon0601.txt</td><td>403,393</td><td>3,387,388</td><td>47.9MB</td></tr><tr><td>com-lj.ungraph.txt</td><td>3997961</td><td>34681189</td><td>479MB</td></tr></tbody></table><h4 id=13-service-configuration>1.3 Service configuration</h4><ul><li><p>HugeGraph version: 0.5.6, RestServer and Gremlin Server and backends are on the same server</p><ul><li>RocksDB version: rocksdbjni-5.8.6</li></ul></li><li><p>Titan version: 0.5.4, using thrift+Cassandra mode</p><ul><li>Cassandra version: cassandra-3.10, commit-log and data use SSD together</li></ul></li><li><p>Neo4j version: 2.0.1</p></li></ul><blockquote><p>The Titan version adapted by graphdb-benchmark is 0.5.4.</p></blockquote><h3 id=2-test-results>2 Test results</h3><h4 id=21-batch-insertion-performance>2.1 Batch insertion performance</h4><table><thead><tr><th>Backend</th><th>email-enron(30w)</th><th>amazon0601(300w)</th><th>com-youtube.ungraph(300w)</th><th>com-lj.ungraph(3000w)</th></tr></thead><tbody><tr><td>HugeGraph</td><td>0.629</td><td>5.711</td><td>5.243</td><td>67.033</td></tr><tr><td>Titan</td><td>10.15</td><td>108.569</td><td>150.266</td><td>1217.944</td></tr><tr><td>Neo4j</td><td>3.884</td><td>18.938</td><td>24.890</td><td>281.537</td></tr></tbody></table><p><em>Instructions</em></p><ul><li>The data scale is in the table header in terms of edges</li><li>The data in the table is the time for batch insertion, in seconds</li><li>For example, HugeGraph(RocksDB) spent 5.711 seconds to insert 3 million edges of the amazon0601 dataset.</li></ul><h5 id=conclusion>Conclusion</h5><ul><li>The performance of batch insertion: HugeGraph(RocksDB) > Neo4j > Titan(thrift+Cassandra)</li></ul><h4 id=22-traversal-performance>2.2 Traversal performance</h4><h5 id=221-explanation-of-terms>2.2.1 Explanation of terms</h5><ul><li>FN(Find Neighbor): Traverse all vertices, find the adjacent edges based on each vertex, and use the edges and vertices to find the other vertices adjacent to the original vertex.</li><li>FA(Find Adjacent): Traverse all edges, get the source vertex and target vertex based on each edge.</li></ul><h5 id=222-fn-performance>2.2.2 FN performance</h5><table><thead><tr><th>Backend</th><th>email-enron(3.6w)</th><th>amazon0601(40w)</th><th>com-youtube.ungraph(120w)</th><th>com-lj.ungraph(400w)</th></tr></thead><tbody><tr><td>HugeGraph</td><td>4.072</td><td>45.118</td><td>66.006</td><td>609.083</td></tr><tr><td>Titan</td><td>8.084</td><td>92.507</td><td>184.543</td><td>1099.371</td></tr><tr><td>Neo4j</td><td>2.424</td><td>10.537</td><td>11.609</td><td>106.919</td></tr></tbody></table><p><em>Instructions</em></p><ul><li>The data in the table header &ldquo;()&rdquo; represents the data scale, in terms of vertices.</li><li>The data in the table represents the time spent traversing vertices in seconds.</li><li>For example, HugeGraph uses the RocksDB backend to traverse all vertices in amazon0601, and search for adjacent edges and another vertex, which takes a total of 45.118 seconds.</li></ul><h5 id=223-fa-performance>2.2.3 FA performance</h5><table><thead><tr><th>Backend</th><th>email-enron(30w)</th><th>amazon0601(300w)</th><th>com-youtube.ungraph(300w)</th><th>com-lj.ungraph(3000w)</th></tr></thead><tbody><tr><td>HugeGraph</td><td>1.540</td><td>10.764</td><td>11.243</td><td>151.271</td></tr><tr><td>Titan</td><td>7.361</td><td>93.344</td><td>169.218</td><td>1085.235</td></tr><tr><td>Neo4j</td><td>1.673</td><td>4.775</td><td>4.284</td><td>40.507</td></tr></tbody></table><p><em>Explanation</em></p><ul><li>The data size in the header &ldquo;()&rdquo; is based on the number of vertices.</li><li>The data in the table is the time it takes to traverse the vertices in seconds.</li><li>For example, HugeGraph with RocksDB backend traverses all vertices in the amazon0601 dataset, and it looks up adjacent edges and other vertices, taking a total of 45.118 seconds.</li></ul><h6 id=conclusion-1>Conclusion</h6><ul><li>Traversal performance: Neo4j > HugeGraph(RocksDB) > Titan(thrift+Cassandra)</li></ul><h4 id=23-performance-of-common-graph-analysis-methods-in-hugegraph>2.3 Performance of Common Graph Analysis Methods in HugeGraph</h4><h5 id=terminology-explanation>Terminology Explanation</h5><ul><li>FS (Find Shortest Path): finding the shortest path between two vertices</li><li>K-neighbor: all vertices that can be reached by traversing K hops (including 1, 2, 3&mldr;(K-1) hops) from the starting vertex</li><li>K-out: all vertices that can be reached by traversing exactly K out-edges from the starting vertex.</li></ul><h5 id=fs-performance>FS performance</h5><table><thead><tr><th>Backend</th><th>email-enron(30w)</th><th>amazon0601(300w)</th><th>com-youtube.ungraph(300w)</th><th>com-lj.ungraph(3000w)</th></tr></thead><tbody><tr><td>HugeGraph</td><td>0.494</td><td>0.103</td><td>3.364</td><td>8.155</td></tr><tr><td>Titan</td><td>11.818</td><td>0.239</td><td>377.709</td><td>575.678</td></tr><tr><td>Neo4j</td><td>1.719</td><td>1.800</td><td>1.956</td><td>8.530</td></tr></tbody></table><p><em>Explanation</em></p><ul><li>The data in the header &ldquo;()&rdquo; represents the data scale in terms of edges</li><li>The data in the table is the time it takes to find the shortest path <strong>from the first vertex to 100 randomly selected vertices</strong> in seconds</li><li>For example, HugeGraph using the RocksDB backend to find the shortest path from the first vertex to 100 randomly selected vertices in the amazon0601 graph took a total of 0.103s.</li></ul><h6 id=conclusion-2>Conclusion</h6><ul><li>In scenarios with small data size or few vertex relationships, HugeGraph outperforms Neo4j and Titan.</li><li>As the data size increases and the degree of vertex association increases, the performance of HugeGraph and Neo4j tends to be similar, both far exceeding Titan.</li></ul><h5 id=k-neighbor-performance>K-neighbor Performance</h5><table><thead><tr><th>Vertex</th><th>Depth</th><th>Degree 1</th><th>Degree 2</th><th>Degree 3</th><th>Degree 4</th><th>Degree 5</th><th>Degree 6</th></tr></thead><tbody><tr><td>v1</td><td>Time</td><td>0.031s</td><td>0.033s</td><td>0.048s</td><td>0.500s</td><td>11.27s</td><td>OOM</td></tr><tr><td>v111</td><td>Time</td><td>0.027s</td><td>0.034s</td><td>0.115s</td><td>1.36s</td><td>OOM</td><td>&ndash;</td></tr><tr><td>v1111</td><td>Time</td><td>0.039s</td><td>0.027s</td><td>0.052s</td><td>0.511s</td><td>10.96s</td><td>OOM</td></tr></tbody></table><p><em>Explanation</em></p><ul><li>HugeGraph-Server&rsquo;s JVM memory is set to 32GB and may experience OOM when the data is too large.</li></ul><h5 id=k-out-performance>K-out performance</h5><table><thead><tr><th>Vertex</th><th>Depth</th><th>1st Degree</th><th>2nd Degree</th><th>3rd Degree</th><th>4th Degree</th><th>5th Degree</th><th>6th Degree</th></tr></thead><tbody><tr><td>v1</td><td>Time</td><td>0.054s</td><td>0.057s</td><td>0.109s</td><td>0.526s</td><td>3.77s</td><td>OOM</td></tr><tr><td>Degree</td><td>10</td><td>133</td><td>2453</td><td>50,830</td><td>1,128,688</td><td></td><td></td></tr><tr><td>v111</td><td>Time</td><td>0.032s</td><td>0.042s</td><td>0.136s</td><td>1.25s</td><td>20.62s</td><td>OOM</td></tr><tr><td>Degree</td><td>10</td><td>211</td><td>4944</td><td>113150</td><td>2,629,970</td><td></td><td></td></tr><tr><td>v1111</td><td>Time</td><td>0.039s</td><td>0.045s</td><td>0.053s</td><td>1.10s</td><td>2.92s</td><td>OOM</td></tr><tr><td>Degree</td><td>10</td><td>140</td><td>2555</td><td>50825</td><td>1,070,230</td><td></td><td></td></tr></tbody></table><p><em>Explanation</em></p><ul><li>The JVM memory of HugeGraph-Server is set to 32GB, and OOM may occur when the data is too large.</li></ul><h6 id=conclusion-3>Conclusion</h6><ul><li>In the FS scenario, HugeGraph outperforms Neo4j and Titan in terms of performance.</li><li>In the K-neighbor and K-out scenarios, HugeGraph can achieve results returned within seconds within 5 degrees.</li></ul><h4 id=24-comprehensive-performance-test---cw>2.4 Comprehensive Performance Test - CW</h4><table><thead><tr><th>Database</th><th>Size 1000</th><th>Size 5000</th><th>Size 10000</th><th>Size 20000</th></tr></thead><tbody><tr><td>HugeGraph(core)</td><td>20.804</td><td>242.099</td><td>744.780</td><td>1700.547</td></tr><tr><td>Titan</td><td>45.790</td><td>820.633</td><td>2652.235</td><td>9568.623</td></tr><tr><td>Neo4j</td><td>5.913</td><td>50.267</td><td>142.354</td><td>460.880</td></tr></tbody></table><p><em>Explanation</em></p><ul><li>The &ldquo;scale&rdquo; is based on the number of vertices.</li><li>The data in the table is the time required to complete community discovery in seconds. For example, if HugeGraph uses the RocksDB backend and operates on a dataset of 10,000 vertices, and the community aggregation is no longer changing, it takes 744.780 seconds.</li><li>The CW test is a comprehensive evaluation of CRUD operations.</li><li>In this test, HugeGraph, like Titan, did not use the client and directly operated on the core.</li></ul><h5 id=conclusion-4>Conclusion</h5><ul><li>Performance of community detection algorithm: Neo4j > HugeGraph > Titan</li></ul></div><div class=td-content style=page-break-before:always><h1 id=pg-699ebe5daed825049424b7539aad30f9>2 - HugeGraph-API Performance</h1><p>The HugeGraph API performance test mainly tests HugeGraph-Server&rsquo;s ability to concurrently process RESTful API requests, including:</p><ul><li>Single insertion of vertices/edges</li><li>Batch insertion of vertices/edges</li><li>Vertex/Edge Queries</li></ul><p>For the performance test of the RESTful API of each release version of HugeGraph, please refer to:</p><ul><li><a href=/docs/performance/api-preformance/hugegraph-api-0.5.6-rocksdb/>v0.5.6 stand-alone</a></li><li><a href=/docs/performance/api-preformance/hugegraph-api-0.5.6-cassandra/>v0.5.6 cluster</a></li></ul><blockquote><p>Updates coming soon, stay tuned!</p></blockquote></div><div class=td-content style=page-break-before:always><h1 id=pg-dbfafc29a5e930415f78f72c47ee67f2>2.1 - v0.5.6 Stand-alone(RocksDB)</h1><blockquote><p><strong>Note:</strong></p><p>The current performance metrics are based on an earlier version. The <strong>latest version</strong> has significant
improvements in both performance and functionality. We encourage you to refer to the most recent release featuring
<strong>autonomous distributed storage</strong> and <strong>enhanced computational push down capabilities</strong>. Alternatively,
you may wait for the community to update the data with these enhancements.</p></blockquote><h3 id=1-test-environment>1 Test environment</h3><p>Compressed machine information:</p><table><thead><tr><th>CPU</th><th>Memory</th><th>网卡</th><th>磁盘</th></tr></thead><tbody><tr><td>48 Intel(R) Xeon(R) CPU E5-2650 v4 @ 2.20GHz</td><td>128G</td><td>10000Mbps</td><td>750GB SSD,2.7T HDD</td></tr></tbody></table><ul><li>Information about the machine used to generate loads: configured the same as the machine that is being tested under load.</li><li>Testing tool: Apache JMeter 2.5.1</li></ul><p>Note: The load-generating machine and the machine under test are located in the same local network.</p><h3 id=2-test-description>2 Test description</h3><h4 id=21-definition-of-terms-the-unit-of-time-is-ms>2.1 Definition of terms (the unit of time is ms)</h4><ul><li>Samples: The total number of threads completed in the current scenario.</li><li>Average: The average response time.</li><li>Median: The statistical median of the response time.</li><li>90% Line: The response time below which 90% of all threads fall.</li><li>Min: The minimum response time.</li><li>Max: The maximum response time.</li><li>Error: The error rate.</li><li>Throughput: The number of requests processed per unit of time.</li><li>KB/sec: Throughput measured in terms of data transferred per second.</li></ul><h4 id=22-underlying-storage>2.2 Underlying storage</h4><p>RocksDB is used for backend storage, HugeGraph and RocksDB are both started on the same machine, and the configuration files related to the server remain as default except for the modification of the host and port.</p><h3 id=3-summary-of-performance-results>3 Summary of performance results</h3><ol><li>The speed of inserting a single vertex and edge in HugeGraph is about 1w per second</li><li>The batch insertion speed of vertices and edges is much faster than the single insertion speed</li><li>The concurrency of querying vertices and edges by id can reach more than 13000, and the average delay of requests is less than 50ms</li></ol><h3 id=4-test-results-and-analysis>4 Test results and analysis</h3><h4 id=41-batch-insertion>4.1 batch insertion</h4><h5 id=411-upper-limit-stress-testing>4.1.1 Upper limit stress testing</h5><h6 id=test-methods>Test methods</h6><p>The upper limit of stress testing is to continuously increase the concurrency and test whether the server can still provide services normally.</p><h6 id=stress-parameters>Stress Parameters</h6><p>Duration: 5 minutes</p><h6 id=maximum-insertion-speed-for-vertices>Maximum insertion speed for vertices:</h6><center><img src=/docs/images/API-perf/v0.5.6/rocksdb/vertex_batch.png alt=image></center><h6 id=in-conclusion>in conclusion:</h6><ul><li>With a concurrency of 2200, the throughput for vertices is 2026.8. This means that the system can process data at a rate of 405360 per second (2026.8 * 200).</li></ul><h6 id=maximum-insertion-speed-for-edges>Maximum insertion speed for edges</h6><center><img src=/docs/images/API-perf/v0.5.6/rocksdb/edge_batch.png alt=image></center><h6 id=conclusion>Conclusion:</h6><ul><li>With a concurrency of 900, the throughput for edges is 776.9. This means that the system can process data at a rate of 388450 per second (776.9 * 500).</li></ul><h4 id=42-single-insertion>4.2 Single insertion</h4><h5 id=421-stress-limit-testing>4.2.1 Stress limit testing</h5><h6 id=test-methods-1>Test Methods</h6><p>Stress limit testing is a process of continuously increasing the concurrency level to test the upper limit of the server&rsquo;s ability to provide normal service.</p><h6 id=stress-parameters-1>Stress parameters</h6><ul><li>Duration: 5 minutes.</li><li>Service exception indicator: Error rate greater than 0.00%.</li></ul><h6 id=single-vertex-insertion>Single vertex insertion</h6><center><img src=/docs/images/API-perf/v0.5.6/rocksdb/vertex_single.png alt=image></center><h6 id=conclusion-1>Conclusion:</h6><ul><li>With a concurrency of 11500, the throughput is 10730. This means that the system can handle a single concurrent insertion of vertices at a concurrency level of 11500.</li></ul><h6 id=single-edge-insertion>Single edge insertion</h6><center><img src=/docs/images/API-perf/v0.5.6/rocksdb/edge_single.png alt=image></center><h6 id=conclusion-2>Conclusion:</h6><ul><li>With a concurrency of 9000, the throughput is 8418. This means that the system can handle a single concurrent insertion of edges at a concurrency level of 9000.</li></ul><h4 id=43-search-by-id>4.3 Search by ID</h4><h5 id=431-stress-test-upper-limit>4.3.1 Stress test upper limit</h5><h6 id=testing-method>Testing method</h6><p>Continuously increasing the concurrency level to test the upper limit of the server&rsquo;s ability to provide service under normal conditions.</p><h6 id=stress-parameters-2>stress parameters</h6><ul><li>Duration: 5 minutes</li><li>Service abnormality indicator: error rate greater than 0.00%</li></ul><h6 id=querying-vertices-by-id>Querying vertices by ID</h6><center><img src=/docs/images/API-perf/v0.5.6/rocksdb/vertex_id_query.png alt=image></center><h6 id=conclusion-3>Conclusion:</h6><ul><li>Concurrency is 14,000, throughput is 12,663. The concurrency capacity for querying vertices by ID is 14,000, with an average delay of 44ms.</li></ul><h6 id=querying-edges-by-id>Querying edges by ID</h6><center><img src=/docs/images/API-perf/v0.5.6/rocksdb/edge_id_query.png alt=image></center><h6 id=conclusion-4>Conclusion:</h6><ul><li>Concurrency is 13,000, throughput is 12,225. The concurrency capacity for querying edges by ID is 13,000, with an average delay of 12ms.</li></ul></div><div class=td-content style=page-break-before:always><h1 id=pg-fd5b165e28a07f1c35ab177b10e15dc8>2.2 - v0.5.6 Cluster(Cassandra)</h1><blockquote><p><strong>Note:</strong></p><p>The current performance metrics are based on an earlier version. The <strong>latest version</strong> has significant
improvements in both performance and functionality. We encourage you to refer to the most recent release featuring
<strong>autonomous distributed storage</strong> and <strong>enhanced computational push down capabilities</strong>. Alternatively,
you may wait for the community to update the data with these enhancements.</p></blockquote><h3 id=1-test-environment>1 Test environment</h3><p>Compressed machine information</p><table><thead><tr><th>CPU</th><th>Memory</th><th>网卡</th><th>磁盘</th></tr></thead><tbody><tr><td>48 Intel(R) Xeon(R) CPU E5-2650 v4 @ 2.20GHz</td><td>128G</td><td>10000Mbps</td><td>750GB SSD,2.7T HDD</td></tr></tbody></table><ul><li>Starting Pressure Machine Information: Configure the same as the compressed machine.</li><li>Testing tool: Apache JMeter 2.5.1.</li></ul><p>Note: The machine used to initiate the load and the machine being tested are located in the same data center (or server room)</p><h3 id=2-test-description>2 Test Description</h3><h4 id=21-definition-of-terms-the-unit-of-time-is-ms>2.1 Definition of terms (the unit of time is ms)</h4><ul><li>Samples &ndash; The total number of threads completed in this scenario.</li><li>Average &ndash; The average response time.</li><li>Median &ndash; The median response time in statistical terms.</li><li>90% Line &ndash; The response time below which 90% of all threads fall.</li><li>Min &ndash; The minimum response time.</li><li>Max &ndash; The maximum response time.</li><li>Error &ndash; The error rate.</li><li>Throughput &ndash; The number of transactions processed per unit of time.</li><li>KB/sec &ndash; The throughput measured in terms of data transmitted per second.</li></ul><h4 id=22-low-level-storage>2.2 Low-Level Storage</h4><p>A 15-node Cassandra cluster is used for backend storage. HugeGraph and the Cassandra cluster are located on separate servers. Server-related configuration files are modified only for host and port settings, while the rest remain default.</p><h3 id=3-summary-of-performance-results>3 Summary of Performance Results</h3><ol><li>The speed of a single vertex and edge insertion in HugeGraph is 9000 and 4500 per second, respectively.</li><li>The speed of bulk vertex and edge insertion is 50,000 and 150,000 per second, respectively, which is much higher than the single insertion speed.</li><li>The concurrency for querying vertices and edges by ID can reach more than 12,000, and the average request delay is less than 70ms.</li></ol><h3 id=4-test-results-and-analysis>4 Test Results and Analysis</h3><h4 id=41-batch-insertion>4.1 Batch Insertion</h4><h5 id=411-pressure-upper-limit-test>4.1.1 Pressure Upper Limit Test</h5><h6 id=test-method>Test Method</h6><p>Continuously increase the concurrency level to test the upper limit of the server&rsquo;s ability to provide services.</p><h6 id=pressure-parameters>Pressure Parameters</h6><p>Duration: 5 minutes.</p><h6 id=maximum-insertion-speed-of-vertices>Maximum Insertion Speed of Vertices:</h6><center><img src=/docs/images/API-perf/v0.5.6/cassandra/vertex_batch.png alt=image></center><h6 id=conclusion>Conclusion:</h6><ul><li>At a concurrency level of 3500, the throughput of vertices is 261, and the amount of data processed per second is 52,200 (261 * 200).</li></ul><h6 id=maximum-insertion-speed-of-edges>Maximum Insertion Speed of Edges:</h6><center><img src=/docs/images/API-perf/v0.5.6/cassandra/edge_batch.png alt=image></center><h6 id=conclusion-1>Conclusion:</h6><ul><li>At a concurrency level of 1000, the throughput of edges is 323, and the amount of data processed per second is 161,500 (323 * 500).</li></ul><h4 id=42-single-insertion>4.2 Single Insertion</h4><h5 id=421-pressure-upper-limit-test>4.2.1 Pressure Upper Limit Test</h5><h6 id=test-method-1>Test Method</h6><p>Continuously increase the concurrency level to test the upper limit of the server&rsquo;s ability to provide services.</p><h6 id=pressure-parameters-1>Pressure Parameters</h6><ul><li>Duration: 5 minutes.</li><li>Service exception mark: Error rate greater than 0.00%.</li></ul><h6 id=single-insertion-of-vertices>Single Insertion of Vertices:</h6><center><img src=/docs/images/API-perf/v0.5.6/cassandra/vertex_single.png alt=image></center><h6 id=conclusion-2>Conclusion:</h6><ul><li>At a concurrency level of 9000, the throughput is 8400, and the single-insertion concurrency capability for vertices is 9000.</li></ul><h6 id=single-insertion-of-edges>Single Insertion of Edges:</h6><center><img src=/docs/images/API-perf/v0.5.6/cassandra/edge_single.png alt=image></center><h6 id=conclusion-3>Conclusion:</h6><ul><li>At a concurrency level of 4500, the throughput is 4160, and the single-insertion concurrency capability for edges is 4500.</li></ul><h4 id=43-query-by-id>4.3 Query by ID</h4><h5 id=431-pressure-upper-limit-test>4.3.1 Pressure Upper Limit Test</h5><h6 id=test-method-2>Test Method</h6><p>Continuously increase the concurrency and test the upper limit of the pressure that the server can still provide services normally.</p><h6 id=pressure-parameters-2>Pressure Parameters</h6><ul><li>Duration: 5 minutes</li><li>Service exception flag: error rate greater than 0.00%</li></ul><h6 id=query-by-id-for-vertices>Query by ID for vertices</h6><center><img src=/docs/images/API-perf/v0.5.6/cassandra/vertex_id_query.png alt=image></center><h6 id=conclusion-4>Conclusion:</h6><ul><li>The concurrent capacity of the vertex search by ID is 14500, with a throughput of 13576 and an average delay of 11ms.</li></ul><h6 id=edge-search-by-id>Edge search by ID</h6><center><img src=/docs/images/API-perf/v0.5.6/cassandra/edge_id_query.png alt=image></center><h6 id=conclusion-5>Conclusion:</h6><ul><li>For edge ID-based queries, the server&rsquo;s concurrent capacity is up to 12,000, with a throughput of 10,688 and an average latency of 63ms.</li></ul></div><div class=td-content style=page-break-before:always><h1 id=pg-8e73cd18ae7e460700391440de46c404>3 - HugeGraph-Loader Performance</h1><blockquote><p><strong>Note:</strong></p><p>The current performance metrics are based on an earlier version. The <strong>latest version</strong> has significant
improvements in both performance and functionality. We encourage you to refer to the most recent release featuring
<strong>autonomous distributed storage</strong> and <strong>enhanced computational push down capabilities</strong>. Alternatively,
you may wait for the community to update the data with these enhancements.</p></blockquote><h2 id=use-cases>Use Cases</h2><p>When the number of graph data to be batch inserted (including vertices and edges) is at the billion level or below,
or the total data size is less than TB, the <a href=/docs/quickstart/hugegraph-loader>HugeGraph-Loader</a> tool can be used to continuously and quickly import
graph data.</p><h2 id=performance>Performance</h2><blockquote><p>The test uses the edge data of website.</p></blockquote><h3 id=rocksdb-single-machine-performance-update-multi-raft--rocksdb-cluster-is-supported-now>RocksDB single-machine performance (Update: multi-raft + rocksdb cluster is supported now)</h3><ul><li>When the label index is turned off, 228k edges/s.</li><li>When the label index is turned on, 153k edges/s.</li></ul><h3 id=cassandra-cluster-performance>Cassandra cluster performance</h3><ul><li>When label index is turned on by default, 63k edges/s.</li></ul></div><div class=td-content style=page-break-before:always><h1 id=pg-0b6ebbdbce17d47f26fcb874226e5edc>4 -</h1><h3 id=1-测试环境>1 测试环境</h3><h4 id=11-硬件信息>1.1 硬件信息</h4><table><thead><tr><th>CPU</th><th>Memory</th><th>网卡</th><th>磁盘</th></tr></thead><tbody><tr><td>48 Intel(R) Xeon(R) CPU E5-2650 v4 @ 2.20GHz</td><td>128G</td><td>10000Mbps</td><td>750GB SSD</td></tr></tbody></table><h4 id=12-软件信息>1.2 软件信息</h4><h5 id=121-测试用例>1.2.1 测试用例</h5><p>测试使用<a href=https://github.com/socialsensor/graphdb-benchmarks>graphdb-benchmark</a>,一个图数据库测试集。该测试集主要包含4类测试:</p><ul><li><p>Massive Insertion,批量插入顶点和边,一定数量的顶点或边一次性提交</p></li><li><p>Single Insertion,单条插入,每个顶点或者每条边立即提交</p></li><li><p>Query,主要是图数据库的基本查询操作:</p><ul><li>Find Neighbors,查询所有顶点的邻居</li><li>Find Adjacent Nodes,查询所有边的邻接顶点</li><li>Find Shortest Path,查询第一个顶点到100个随机顶点的最短路径</li></ul></li><li><p>Clustering,基于Louvain Method的社区发现算法</p></li></ul><h5 id=122-测试数据集>1.2.2 测试数据集</h5><p>测试使用人造数据和真实数据</p><ul><li><p>MIW、SIW和QW使用SNAP数据集</p><ul><li><p><a href=http://snap.stanford.edu/data/email-Enron.html>Enron Dataset</a></p></li><li><p><a href=http://snap.stanford.edu/data/amazon0601.html>Amazon dataset</a></p></li><li><p><a href=http://snap.stanford.edu/data/com-Youtube.html>Youtube dataset</a></p></li><li><p><a href=http://snap.stanford.edu/data/com-LiveJournal.html>LiveJournal dataset</a></p></li></ul></li><li><p>CW使用<a href=https://sites.google.com/site/andrealancichinetti/files>LFR-Benchmark generator</a>生成的人造数据</p></li></ul><h6 id=本测试用到的数据集规模>本测试用到的数据集规模</h6><table><thead><tr><th>名称</th><th>vertex数目</th><th>edge数目</th><th>文件大小</th></tr></thead><tbody><tr><td>email-enron.txt</td><td>36,691</td><td>367,661</td><td>4MB</td></tr><tr><td>com-youtube.ungraph.txt</td><td>1,157,806</td><td>2,987,624</td><td>38.7MB</td></tr><tr><td>amazon0601.txt</td><td>403,393</td><td>3,387,388</td><td>47.9MB</td></tr></tbody></table><h4 id=13-服务配置>1.3 服务配置</h4><ul><li>HugeGraph版本:0.4.4,RestServer和Gremlin Server和backends都在同一台服务器上</li><li>Cassandra版本:cassandra-3.10,commit-log 和data共用SSD</li><li>RocksDB版本:rocksdbjni-5.8.6</li><li>Titan版本:0.5.4, 使用thrift+Cassandra模式</li></ul><blockquote><p>graphdb-benchmark适配的Titan版本为0.5.4</p></blockquote><h3 id=2-测试结果>2 测试结果</h3><h4 id=21-batch插入性能>2.1 Batch插入性能</h4><table><thead><tr><th>Backend</th><th>email-enron(30w)</th><th>amazon0601(300w)</th><th>com-youtube.ungraph(300w)</th></tr></thead><tbody><tr><td>Titan</td><td>9.516</td><td>88.123</td><td>111.586</td></tr><tr><td>RocksDB</td><td>2.345</td><td>14.076</td><td>16.636</td></tr><tr><td>Cassandra</td><td>11.930</td><td>108.709</td><td>101.959</td></tr><tr><td>Memory</td><td>3.077</td><td>15.204</td><td>13.841</td></tr></tbody></table><p><em>说明</em></p><ul><li>表头"()&ldquo;中数据是数据规模,以边为单位</li><li>表中数据是批量插入的时间,单位是s</li><li>例如,HugeGraph使用RocksDB插入amazon0601数据集的300w条边,花费14.076s,速度约为21w edges/s</li></ul><h5 id=结论>结论</h5><ul><li>RocksDB和Memory后端插入性能优于Cassandra</li><li>HugeGraph和Titan同样使用Cassandra作为后端的情况下,插入性能接近</li></ul><h4 id=22-遍历性能>2.2 遍历性能</h4><h5 id=221-术语说明>2.2.1 术语说明</h5><ul><li>FN(Find Neighbor), 遍历所有vertex, 根据vertex查邻接edge, 通过edge和vertex查other vertex</li><li>FA(Find Adjacent), 遍历所有edge,根据edge获得source vertex和target vertex</li></ul><h5 id=222-fn性能>2.2.2 FN性能</h5><table><thead><tr><th>Backend</th><th>email-enron(3.6w)</th><th>amazon0601(40w)</th><th>com-youtube.ungraph(120w)</th></tr></thead><tbody><tr><td>Titan</td><td>7.724</td><td>70.935</td><td>128.884</td></tr><tr><td>RocksDB</td><td>8.876</td><td>65.852</td><td>63.388</td></tr><tr><td>Cassandra</td><td>13.125</td><td>126.959</td><td>102.580</td></tr><tr><td>Memory</td><td>22.309</td><td>207.411</td><td>165.609</td></tr></tbody></table><p><em>说明</em></p><ul><li>表头&rdquo;()&ldquo;中数据是数据规模,以顶点为单位</li><li>表中数据是遍历顶点花费的时间,单位是s</li><li>例如,HugeGraph使用RocksDB后端遍历amazon0601的所有顶点,并查找邻接边和另一顶点,总共耗时65.852s</li></ul><h5 id=223-fa性能>2.2.3 FA性能</h5><table><thead><tr><th>Backend</th><th>email-enron(30w)</th><th>amazon0601(300w)</th><th>com-youtube.ungraph(300w)</th></tr></thead><tbody><tr><td>Titan</td><td>7.119</td><td>63.353</td><td>115.633</td></tr><tr><td>RocksDB</td><td>6.032</td><td>64.526</td><td>52.721</td></tr><tr><td>Cassandra</td><td>9.410</td><td>102.766</td><td>94.197</td></tr><tr><td>Memory</td><td>12.340</td><td>195.444</td><td>140.89</td></tr></tbody></table><p><em>说明</em></p><ul><li>表头&rdquo;()&ldquo;中数据是数据规模,以边为单位</li><li>表中数据是遍历边花费的时间,单位是s</li><li>例如,HugeGraph使用RocksDB后端遍历amazon0601的所有边,并查询每条边的两个顶点,总共耗时64.526s</li></ul><h6 id=结论-1>结论</h6><ul><li>HugeGraph RocksDB > Titan thrift+Cassandra > HugeGraph Cassandra > HugeGraph Memory</li></ul><h4 id=23-hugegraph-图常用分析方法性能>2.3 HugeGraph-图常用分析方法性能</h4><h5 id=术语说明>术语说明</h5><ul><li>FS(Find Shortest Path), 寻找最短路径</li><li>K-neighbor,从起始vertex出发,通过K跳边能够到达的所有顶点, 包括1, 2, 3&mldr;(K-1), K跳边可达vertex</li><li>K-out, 从起始vertex出发,恰好经过K跳out边能够到达的顶点</li></ul><h5 id=fs性能>FS性能</h5><table><thead><tr><th>Backend</th><th>email-enron(30w)</th><th>amazon0601(300w)</th><th>com-youtube.ungraph(300w)</th></tr></thead><tbody><tr><td>Titan</td><td>11.333</td><td>0.313</td><td>376.06</td></tr><tr><td>RocksDB</td><td>44.391</td><td>2.221</td><td>268.792</td></tr><tr><td>Cassandra</td><td>39.845</td><td>3.337</td><td>331.113</td></tr><tr><td>Memory</td><td>35.638</td><td>2.059</td><td>388.987</td></tr></tbody></table><p><em>说明</em></p><ul><li>表头&rdquo;()&ldquo;中数据是数据规模,以边为单位</li><li>表中数据是找到<strong>从第一个顶点出发到达随机选择的100个顶点的最短路径</strong>的时间,单位是s</li><li>例如,HugeGraph使用RocksDB查找第一个顶点到100个随机顶点的最短路径,总共耗时2.059s</li></ul><h6 id=结论-2>结论</h6><ul><li>在数据规模小或者顶点关联关系少的场景下,Titan最短路径性能优于HugeGraph</li><li>随着数据规模增大且顶点的关联度增高,HugeGraph最短路径性能优于Titan</li></ul><h5 id=k-neighbor性能>K-neighbor性能</h5><table><thead><tr><th>顶点</th><th>深度</th><th>一度</th><th>二度</th><th>三度</th><th>四度</th><th>五度</th><th>六度</th></tr></thead><tbody><tr><td>v1</td><td>时间</td><td>0.031s</td><td>0.033s</td><td>0.048s</td><td>0.500s</td><td>11.27s</td><td>OOM</td></tr><tr><td>v111</td><td>时间</td><td>0.027s</td><td>0.034s</td><td>0.115</td><td>1.36s</td><td>OOM</td><td>&ndash;</td></tr><tr><td>v1111</td><td>时间</td><td>0.039s</td><td>0.027s</td><td>0.052s</td><td>0.511s</td><td>10.96s</td><td>OOM</td></tr></tbody></table><p><em>说明</em></p><ul><li>HugeGraph-Server的JVM内存设置为32GB,数据量过大时会出现OOM</li></ul><h5 id=k-out性能>K-out性能</h5><table><thead><tr><th>顶点</th><th>深度</th><th>一度</th><th>二度</th><th>三度</th><th>四度</th><th>五度</th><th>六度</th></tr></thead><tbody><tr><td>v1</td><td>时间</td><td>0.054s</td><td>0.057s</td><td>0.109s</td><td>0.526s</td><td>3.77s</td><td>OOM</td></tr><tr><td></td><td>10</td><td>133</td><td>2453</td><td>50,830</td><td>1,128,688</td><td></td><td></td></tr><tr><td>v111</td><td>时间</td><td>0.032s</td><td>0.042s</td><td>0.136s</td><td>1.25s</td><td>20.62s</td><td>OOM</td></tr><tr><td></td><td>10</td><td>211</td><td>4944</td><td>113150</td><td>2,629,970</td><td></td><td></td></tr><tr><td>v1111</td><td>时间</td><td>0.039s</td><td>0.045s</td><td>0.053s</td><td>1.10s</td><td>2.92s</td><td>OOM</td></tr><tr><td></td><td>10</td><td>140</td><td>2555</td><td>50825</td><td>1,070,230</td><td></td><td></td></tr></tbody></table><p><em>说明</em></p><ul><li>HugeGraph-Server的JVM内存设置为32GB,数据量过大时会出现OOM</li></ul><h6 id=结论-3>结论</h6><ul><li>FS场景,HugeGraph性能优于Titan</li><li>K-neighbor和K-out场景,HugeGraph能够实现在5度范围内秒级返回结果</li></ul><h4 id=24-图综合性能测试-cw>2.4 图综合性能测试-CW</h4><table><thead><tr><th>数据库</th><th>规模1000</th><th>规模5000</th><th>规模10000</th><th>规模20000</th></tr></thead><tbody><tr><td>Titan</td><td>45.943</td><td>849.168</td><td>2737.117</td><td>9791.46</td></tr><tr><td>Memory(core)</td><td>41.077</td><td>1825.905</td><td>*</td><td>*</td></tr><tr><td>Cassandra(core)</td><td>39.783</td><td>862.744</td><td>2423.136</td><td>6564.191</td></tr><tr><td>RocksDB(core)</td><td>33.383</td><td>199.894</td><td>763.869</td><td>1677.813</td></tr></tbody></table><p><em>说明</em></p><ul><li>&ldquo;规模"以顶点为单位</li><li>表中数据是社区发现完成需要的时间,单位是s,例如HugeGraph使用RocksDB后端在规模10000的数据集,社区聚合不再变化,需要耗时763.869s</li><li>&ldquo;*&ldquo;表示超过10000s未完成</li><li>CW测试是CRUD的综合评估</li><li>后三者分别是HugeGraph的不同后端,该测试中HugeGraph跟Titan一样,没有通过client,直接对core操作</li></ul><h5 id=结论-4>结论</h5><ul><li>HugeGraph在使用Cassandra后端时,性能略优于Titan,随着数据规模的增大,优势越来越明显,数据规模20000时,比Titan快30%</li><li>HugeGraph在使用RocksDB后端时,性能远高于Titan和HugeGraph的Cassandra后端,分别比两者快了6倍和4倍</li></ul></div></main></div></div><footer class="bg-dark py-3 row d-print-none"><div class=footer-container><div class="row bg-dark"><div class=col-1></div><div class="col-4 text-center container-center"><div class=footer-row><a href=https://www.apache.org><div class=footer-apache-logo><svg id="Layer_2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 7127.6 2890" enable-background="new 0 0 7127.6 2890"><path fill="#6d6e71" d="M7104.7 847.8c15.3 15.3 22.9 33.7 22.9 55.2s-7.6 39.9-22.9 55.4c-15.3 15.4-33.8 23.1-55.6 23.1s-40.2-7.6-55.4-22.9c-15.1-15.3-22.7-33.7-22.7-55.2s7.6-39.9 22.9-55.4c15.3-15.4 33.7-23.1 55.4-23.1C7070.9 824.9 7089.4 832.5 7104.7 847.8zM7098.1 951.9c13.3-13.6 20-29.8 20-48.7s-6.6-35-19.8-48.5c-13.2-13.4-29.4-20.1-48.6-20.1-19.2.0-35.4 6.7-48.7 20.2s-19.9 29.7-19.9 48.7 6.6 35.2 19.7 48.6c13.1 13.4 29.3 20.1 48.5 20.1S7084.7 965.4 7098.1 951.9zm-11-63.8c0 14-6.1 22.8-18.4 26.4l22.5 30.5H7073l-20.3-28.3h-18.6V945h-14.7v-84.6h31.8c12.8.0 22 2.2 27.6 6.6C7084.4 871.4 7087.1 878.4 7087.1 888.1zM7068.2 9e2c3-2.4 4.4-6.5 4.4-12s-1.5-9.4-4.5-11.6-8.4-3.2-16-3.2h-18v30.5h17.5C7059.7 903.6 7065.3 902.4 7068.2 9e2z"/><path fill="#6d6e71" d="M1803.6 499.8v155.4h-20V499.8h-56.8v-19.2h133.9v19.2H1803.6z"/><path fill="#6d6e71" d="M2082.2 655.2v-76.9H1977v76.9h-20V480.5h20v78.9h105.2v-78.9h20v174.7h-20z"/><path fill="#6d6e71" d="M2241.4 499.8v57.4h88.1v19.2h-88.1v59.8h101.8v19h-121.8V480.5H2340v19.2H2241.4z"/><path fill="#d22128" d="M1574.5 1852.4l417.3-997.6h80.1l417.3 997.6h-105.4l-129.3-311.9h-448.2l-127.9 311.9H1574.5zM2032.6 970l-205.1 493.2h404.7L2032.6 970z"/><path fill="#d22128" d="M2596.9 1852.4V854.8H3010c171.4.0 295.1 158.8 295.1 313.3.0 163-115.2 316.1-286.6 316.1h-324.6v368.1h-97zm97-455.3h318.9c118 0 193.9-108.2 193.9-229 0-125.1-92.7-226.2-202.3-226.2h-310.5v455.2z"/><path fill="#d22128" d="M3250.5 1852.4l417.3-997.6h80.1l417.3 997.6h-105.4l-129.3-311.9h-448.2l-127.9 311.9H3250.5zM3708.6 970l-205.1 493.2h404.7L3708.6 970z"/><path fill="#d22128" d="M4637.3 849.1c177 0 306.3 89.9 368.1 217.8l-78.7 47.8c-63.2-132.1-186.9-177-295.1-177-238.9.0-369.5 213.6-369.5 414.5.0 220.6 161.6 420.1 373.7 420.1 112.4.0 244.5-56.2 307.7-185.5l81.5 42.1c-64.6 148.9-241.7 231.8-394.8 231.8-274 0-466.5-261.3-466.5-514.2C4163.8 1106.3 4336.6 849.1 4637.3 849.1z"/><path fill="#d22128" d="M5949.1 854.8v997.6h-98.4v-466.5h-591.5v466.5h-96.9V854.8h96.9v444h591.5v-444H5949.1z"/><path fill="#d22128" d="M6844.6 1765.2v87.1h-670.2V854.8H6832v87.1h-560.6v359.7h489v82.9h-489v380.8H6844.6z"/><path fill="#6d6e71" d="M1667.6 2063.6c11.8 3.5 22.2 8.3 31 14.2l-10.3 22.6c-9-6-18.6-10.4-28.9-13.4-10.2-2.9-20-4.4-29.2-4.4-13.6.0-24.5 2.4-32.6 7.3s-12.2 11.8-12.2 20.7c0 7.6 2.3 14 6.8 19s10.2 8.9 17 11.7c6.8 2.8 16.1 6 28 9.6 14.4 4.6 26 8.9 34.7 12.9 8.8 4 16.3 9.9 22.5 17.8 6.2 7.8 9.3 18.2 9.3 31 0 11.7-3.2 21.8-9.5 30.6-6.3 8.7-15.3 15.5-26.8 20.3-11.6 4.8-24.9 7.2-40 7.2s-29.7-2.9-43.9-8.7c-14.2-5.8-26.4-13.6-36.6-23.4l10.7-21.6c9.6 9.4 20.7 16.7 33.3 21.9 12.6 5.2 24.8 7.8 36.8 7.8 15.3.0 27.3-3 36.1-8.9s13.2-13.9 13.2-23.9c0-7.8-2.3-14.3-6.9-19.4-4.6-5.1-10.3-9-17.1-11.9-6.8-2.8-16.1-6-28-9.6-14.2-4.2-25.7-8.3-34.6-12.2-8.9-3.9-16.4-9.7-22.5-17.5-6.1-7.7-9.2-17.9-9.2-30.6.0-10.9 3-20.4 9-28.6s14.6-14.6 25.6-19.1c11.1-4.5 23.8-6.8 38.2-6.8C1643.8 2058.3 1655.7 2060.1 1667.6 2063.6z"/><path fill="#6d6e71" d="M1980.1 2072.8c16.8 9.4 30.2 22.3 40 38.4 9.8 16.2 14.8 33.9 14.8 53.3.0 19.5-4.9 37.4-14.8 53.6-9.8 16.3-23.2 29.1-40 38.6s-35.3 14.3-55.2 14.3c-20.3.0-38.8-4.7-55.7-14.3-16.8-9.5-30.2-22.4-40-38.6-9.8-16.3-14.8-34.1-14.8-53.6s4.9-37.3 14.8-53.5c9.8-16.2 23.2-29 40-38.3 16.8-9.4 35.4-14 55.7-14C1944.8 2058.6 1963.2 2063.3 1980.1 2072.8zM1881.9 2092.7c-13.1 7.4-23.6 17.5-31.4 30.1-7.8 12.6-11.8 26.5-11.8 41.7.0 15.3 3.9 29.3 11.8 42 7.8 12.7 18.3 22.8 31.4 30.2 13.1 7.4 27.4 11.1 42.9 11.1s29.7-3.7 42.7-11.1 23.3-17.4 31.1-30.2c7.7-12.7 11.6-26.7 11.6-42s-3.9-29.2-11.6-41.8c-7.7-12.6-18.1-22.6-31.1-30s-27.2-11.2-42.6-11.2C1909.4 2081.5 1895.1 2085.2 1881.9 2092.7z"/><path fill="#6d6e71" d="M2186.5 2082.4v74h98.4v23.2h-98.4v90.2h-24.1v-210.6h133.8v23.2H2186.5z"/><path fill="#6d6e71" d="M2491.6 2082.4v187.4h-24.1v-187.4h-68.4v-23.2h161.4v23.2H2491.6z"/><path fill="#6d6e71" d="M2871.8 2269.8l-56.8-177.4-57.6 177.4h-24.5l-70.5-210.6h25.9l57.9 182.7 57.1-182.4 24.1-.3 57.7 182.7 57.1-182.7h25l-70.6 210.6H2871.8z"/><path fill="#6d6e71" d="M3087.3 2216.6l-23.5 53.2h-25.6l94.4-210.6h25l94.1 210.6h-26.1l-23.5-53.2H3087.3zM3144.5 2086.6l-46.9 106.8h94.4l-47.5-106.8z"/><path fill="#6d6e71" d="M3461.1 2202.7c-6 .4-10.7.6-14.1.6h-56v66.5h-24v-210.6h80c26.2.0 46.6 6.2 61.2 18.5 14.5 12.3 21.8 29.8 21.8 52.3.0 17.2-4.1 31.7-12.2 43.3-8.1 11.6-19.8 20-35 25l49.2 71.5h-27.3L3461.1 2202.7zM3491.3 2167.6c10.3-8.4 15.5-20.8 15.5-37 0-15.9-5.2-27.9-15.5-36s-25.1-12.2-44.3-12.2h-56v97.8h56C3466.2 2180.2 3481 2176 3491.3 2167.6z"/><path fill="#6d6e71" d="M3688.3 2082.4v69.2h106.2v23.2h-106.2v72.1h122.8v22.9h-146.9v-210.6h142.9v23.2H3688.3z"/><path fill="#6d6e71" d="M4147 2082.4v74h98.4v23.2H4147v90.2h-24.1v-210.6h133.8v23.2H4147z"/><path fill="#6d6e71" d="M4523.3 2072.8c16.8 9.4 30.2 22.3 40 38.4 9.8 16.2 14.8 33.9 14.8 53.3.0 19.5-4.9 37.4-14.8 53.6-9.8 16.3-23.2 29.1-40 38.6s-35.3 14.3-55.2 14.3c-20.3.0-38.8-4.7-55.7-14.3-16.8-9.5-30.2-22.4-40-38.6-9.8-16.3-14.8-34.1-14.8-53.6s4.9-37.3 14.8-53.5c9.8-16.2 23.2-29 40-38.3 16.8-9.4 35.4-14 55.7-14C4488.1 2058.6 4506.5 2063.3 4523.3 2072.8zM4425.2 2092.7c-13.1 7.4-23.6 17.5-31.4 30.1-7.8 12.6-11.8 26.5-11.8 41.7.0 15.3 3.9 29.3 11.8 42 7.8 12.7 18.3 22.8 31.4 30.2 13.1 7.4 27.4 11.1 42.9 11.1s29.7-3.7 42.7-11.1 23.3-17.4 31.1-30.2c7.7-12.7 11.6-26.7 11.6-42s-3.9-29.2-11.6-41.8c-7.7-12.6-18.1-22.6-31.1-30s-27.2-11.2-42.6-11.2C4452.6 2081.5 4438.3 2085.2 4425.2 2092.7z"/><path fill="#6d6e71" d="M4854.7 2247.7c-15.7 15.5-37.3 23.3-64.8 23.3-27.7.0-49.4-7.8-65.1-23.3-15.7-15.5-23.6-37-23.6-64.6v-124h24.1v124c0 20.3 5.8 36.1 17.3 47.5 11.6 11.4 27.3 17.1 47.3 17.1 20.1.0 35.8-5.7 47.1-17 11.4-11.3 17-27.2 17-47.7v-124h24.1v124C4878.2 2210.7 4870.4 2232.2 4854.7 2247.7z"/><path fill="#6d6e71" d="M5169.5 2269.8l-126.3-169.1v169.1h-24.1v-210.6h25l126.3 169.3v-169.3h23.8v210.6H5169.5z"/><path fill="#6d6e71" d="M5478.4 2073.1c16.4 9.3 29.4 21.9 38.9 37.9 9.6 16 14.3 33.9 14.3 53.5s-4.8 37.6-14.3 53.6c-9.5 16.1-22.6 28.7-39.3 37.9-16.6 9.2-35.2 13.8-55.5 13.8h-84.3v-210.6h85.2C5443.7 2059.2 5462 2063.8 5478.4 2073.1zM5362.3 2246.9h61.4c15.5.0 29.6-3.5 42.3-10.6s22.8-16.9 30.2-29.5c7.4-12.5 11.1-26.5 11.1-42s-3.8-29.4-11.3-41.9-17.7-22.3-30.6-29.6c-12.8-7.2-27-10.9-42.6-10.9h-60.5v164.5z"/><path fill="#6d6e71" d="M5668.6 2216.6l-23.5 53.2h-25.6l94.4-210.6h25l94.1 210.6h-26l-23.5-53.2H5668.6zM5725.8 2086.6l-46.9 106.8h94.4l-47.5-106.8z"/><path fill="#6d6e71" d="M5991 2082.4v187.4h-24v-187.4h-68.4v-23.2H6060v23.2h-69z"/><path fill="#6d6e71" d="M6175.9 2269.8v-210.6h24.1v210.6H6175.9z"/><path fill="#6d6e71" d="M6493.7 2072.8c16.8 9.4 30.2 22.3 40 38.4 9.8 16.2 14.8 33.9 14.8 53.3.0 19.5-4.9 37.4-14.8 53.6-9.8 16.3-23.2 29.1-40 38.6s-35.3 14.3-55.2 14.3c-20.3.0-38.8-4.7-55.7-14.3-16.8-9.5-30.2-22.4-40-38.6-9.8-16.3-14.8-34.1-14.8-53.6s4.9-37.3 14.8-53.5c9.8-16.2 23.2-29 40-38.3 16.8-9.4 35.4-14 55.7-14C6458.5 2058.6 6476.9 2063.3 6493.7 2072.8zM6395.6 2092.7c-13.1 7.4-23.6 17.5-31.4 30.1-7.8 12.6-11.8 26.5-11.8 41.7.0 15.3 3.9 29.3 11.8 42 7.8 12.7 18.3 22.8 31.4 30.2 13.1 7.4 27.4 11.1 42.9 11.1s29.7-3.7 42.7-11.1 23.3-17.4 31.1-30.2c7.7-12.7 11.6-26.7 11.6-42s-3.9-29.2-11.6-41.8c-7.7-12.6-18.1-22.6-31.1-30s-27.2-11.2-42.6-11.2C6423 2081.5 6408.8 2085.2 6395.6 2092.7z"/><path fill="#6d6e71" d="M6826.5 2269.8l-126.3-169.1v169.1h-24.1v-210.6h25l126.3 169.3v-169.3h23.8v210.6H6826.5z"/><linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="-4516.6152" y1="-2338.7222" x2="-4108.4111" y2="-1861.3982" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)"><stop offset="0" style="stop-color:#F69923"/><stop offset=".3123" style="stop-color:#F79A23"/><stop offset=".8383" style="stop-color:#E97826"/></linearGradient><path fill="url(#SVGID_1_)" d="M1230.1 13.7c-45.3 26.8-120.6 102.5-210.5 212.3l82.6 155.9c58-82.9 116.9-157.5 176.3-221.2 4.6-5.1 7-7.5 7-7.5-2.3 2.5-4.6 5-7 7.5-19.2 21.2-77.5 89.2-165.5 224.4 84.7-4.2 214.9-21.6 321.1-39.7 31.6-177-31-258-31-258S1323.4-41.4 1230.1 13.7z"/><path fill="none" d="M1090.2 903.1c.6-.1 1.2-.2 1.8-.3l-11.9 1.3c-.7.3-1.4.7-2.1 1C1082.1 904.4 1086.2 903.7 1090.2 903.1z"/><path fill="none" d="M1005.9 1182.3c-6.7 1.5-13.7 2.7-20.7 3.7C992.3 1185 999.2 1183.8 1005.9 1182.3z"/><path fill="none" d="M432.9 1808.8c.9-2.3 1.8-4.7 2.6-7 18.2-48 36.2-94.7 54-140.1 20-51 39.8-100.4 59.3-148.3 20.6-50.4 40.9-99.2 60.9-146.3 21-49.4 41.7-97 62-142.8 16.5-37.3 32.8-73.4 48.9-108.3 5.4-11.7 10.7-23.2 16-34.6 10.5-22.7 21-44.8 31.3-66.5 9.5-20 19-39.6 28.3-58.8 3.1-6.4 6.2-12.8 9.3-19.1.5-1 1-2 1.5-3.1l-10.2 1.1-8-15.9c-.8 1.6-1.6 3.1-2.4 4.6-14.5 28.8-28.9 57.9-43.1 87.2-8.2 16.9-16.4 34-24.6 51-22.6 47.4-44.8 95.2-66.6 143.3-22.1 48.6-43.7 97.5-64.9 146.5-20.8 48.1-41.3 96.2-61.2 144.2-20 48-39.5 95.7-58.5 143.2-19.9 49.5-39.2 98.7-58 147.2-4.2 10.9-8.5 21.9-12.7 32.8-15 39.2-29.7 77.8-44 116l12.7 25.1 11.4-1.2c.4-1.1.8-2.3 1.3-3.4C396.7 1905.4 414.9 1856.4 432.9 1808.8z"/><path fill="none" d="M980 1186.8c.1.0.1.0.1-.1C980.1 1186.8 980.1 1186.8 980 1186.8z"/><path fill="#be202e" d="M952.6 1323c-10.6 1.9-21.4 3.8-32.5 5.7-.1.0-.1.1-.2.1 5.6-.8 11.2-1.7 16.6-2.6C942 1325.2 947.3 1324.1 952.6 1323z"/><path opacity=".35" fill="#be202e" d="M952.6 1323c-10.6 1.9-21.4 3.8-32.5 5.7-.1.0-.1.1-.2.1 5.6-.8 11.2-1.7 16.6-2.6C942 1325.2 947.3 1324.1 952.6 1323z"/><path fill="#be202e" d="M980.3 1186.7C980.2 1186.7 980.2 1186.7 980.3 1186.7c-.1.1-.2.1-.2.1 1.8-.2 3.5-.5 5.2-.8 7-1 13.9-2.2 20.7-3.7C997.5 1183.8 989 1185.2 980.3 1186.7z"/><path opacity=".35" fill="#be202e" d="M980.3 1186.7C980.2 1186.7 980.2 1186.7 980.3 1186.7c-.1.1-.2.1-.2.1 1.8-.2 3.5-.5 5.2-.8 7-1 13.9-2.2 20.7-3.7C997.5 1183.8 989 1185.2 980.3 1186.7z"/><linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="-7537.7339" y1="-2391.4075" x2="-4625.4141" y2="-2391.4075" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)"><stop offset=".3233" style="stop-color:#9E2064"/><stop offset=".6302" style="stop-color:#C92037"/><stop offset=".7514" style="stop-color:#CD2335"/><stop offset="1" style="stop-color:#E97826"/></linearGradient><path fill="url(#SVGID_2_)" d="M858.6 784.7c25.1-46.9 50.5-92.8 76.2-137.4 26.7-46.4 53.7-91.3 80.9-134.7 1.6-2.6 3.2-5.2 4.8-7.7 27-42.7 54.2-83.7 81.6-122.9L1019.5 226c-6.2 7.6-12.5 15.3-18.8 23.2-23.8 29.7-48.6 61.6-73.9 95.5-28.6 38.2-58 78.9-87.8 121.7-27.6 39.5-55.5 80.9-83.5 123.7-23.8 36.5-47.7 74-71.4 112.5-.9 1.4-1.8 2.9-2.6 4.3L789 919.2c22.8-45.6 46.1-90.5 69.6-134.5z"/><linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="-7186.1777" y1="-2099.3059" x2="-5450.7183" y2="-2099.3059" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)"><stop offset="0" style="stop-color:#282662"/><stop offset=".0954839" style="stop-color:#662E8D"/><stop offset=".7882" style="stop-color:#9F2064"/><stop offset=".9487" style="stop-color:#CD2032"/></linearGradient><path fill="url(#SVGID_3_)" d="M369 1981c-14.2 39.1-28.5 78.9-42.9 119.6-.2.6-.4 1.2-.6 1.8-2 5.7-4.1 11.5-6.1 17.2-9.7 27.4-18 52.1-37.3 108.2 31.7 14.5 57.1 52.5 81.1 95.6-2.6-44.7-21-86.6-56.2-119.1 156.1 7 290.6-32.4 360.1-146.6 6.2-10.2 11.9-20.9 17-32.2-31.6 40.1-70.8 57.1-144.5 53-.2.1-.3.1-.5.2.2-.1.3-.1.5-.2 108.6-48.6 163.1-95.3 211.2-172.6 11.4-18.3 22.5-38.4 33.8-60.6-94.9 97.5-205 125.3-320.9 104.2l-86.9 9.5C374.4 1966.3 371.7 1973.6 369 1981z"/><linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="-7374.1626" y1="-2418.5454" x2="-4461.8428" y2="-2418.5454" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)"><stop offset=".3233" style="stop-color:#9E2064"/><stop offset=".6302" style="stop-color:#C92037"/><stop offset=".7514" style="stop-color:#CD2335"/><stop offset="1" style="stop-color:#E97826"/></linearGradient><path fill="url(#SVGID_4_)" d="M409.6 1786.3c18.8-48.5 38.1-97.7 58-147.2 19-47.4 38.5-95.2 58.5-143.2s40.4-96.1 61.2-144.2c21.2-49 42.9-97.8 64.9-146.5 21.8-48.1 44-95.9 66.6-143.3 8.1-17.1 16.3-34.1 24.6-51 14.2-29.3 28.6-58.4 43.1-87.2.8-1.6 1.6-3.1 2.4-4.6L681.4 706.8c-1.8 2.9-3.5 5.8-5.3 8.6-25.1 40.9-50 82.7-74.4 125.4-24.7 43.1-49 87.1-72.7 131.7-20 37.6-39.6 75.6-58.6 113.9-3.8 7.8-7.6 15.5-11.3 23.2-23.4 48.2-44.6 94.8-63.7 139.5-21.7 50.7-40.7 99.2-57.5 145.1-11 30.2-21 59.4-30.1 87.4-7.5 24-14.7 47.9-21.5 71.8-16 56.3-29.9 112.4-41.2 168.3L353 1935.1c14.3-38.1 28.9-76.8 44-116C401.1 1808.2 405.4 1797.3 409.6 1786.3z"/><linearGradient id="SVGID_5_" gradientUnits="userSpaceOnUse" x1="-7161.7642" y1="-2379.1431" x2="-5631.2524" y2="-2379.1431" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)"><stop offset="0" style="stop-color:#282662"/><stop offset=".0954839" style="stop-color:#662E8D"/><stop offset=".7882" style="stop-color:#9F2064"/><stop offset=".9487" style="stop-color:#CD2032"/></linearGradient><path fill="url(#SVGID_5_)" d="M243.5 1729.4c-13.6 68.2-23.2 136.2-28 203.8-.2 2.4-.4 4.7-.5 7.1-33.7-54-124-106.8-123.8-106.2 64.6 93.7 113.7 186.7 120.9 278-34.6 7.1-82-3.2-136.8-23.3 57.1 52.5 1e2 67 116.7 70.9-52.5 3.3-107.1 39.3-162.1 80.8 80.5-32.8 145.5-45.8 192.1-35.3C148.1 2414.2 74.1 2645 0 2890c22.7-6.7 36.2-21.9 43.9-42.6 13.2-44.4 100.8-335.6 238-718.2 3.9-10.9 7.8-21.8 11.8-32.9 1.1-3 2.2-6.1 3.3-9.2 14.5-40.1 29.5-81.1 45.1-122.9 3.5-9.5 7.1-19 10.7-28.6.1-.2.1-.4.2-.6l-107.9-213.2C244.6 1724.4 244 1726.9 243.5 1729.4z"/><linearGradient id="SVGID_6_" gradientUnits="userSpaceOnUse" x1="-7374.1626" y1="-2117.1309" x2="-4461.8428" y2="-2117.1309" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)"><stop offset=".3233" style="stop-color:#9E2064"/><stop offset=".6302" style="stop-color:#C92037"/><stop offset=".7514" style="stop-color:#CD2335"/><stop offset="1" style="stop-color:#E97826"/></linearGradient><path fill="url(#SVGID_6_)" d="M805.6 937c-3.1 6.3-6.2 12.7-9.3 19.1-9.3 19.2-18.8 38.8-28.3 58.8-10.3 21.7-20.7 43.9-31.3 66.5-5.3 11.4-10.6 22.9-16 34.6-16.1 35-32.4 71.1-48.9 108.3-20.3 45.8-41 93.4-62 142.8-20 47.1-40.3 95.9-60.9 146.3-19.5 47.9-39.3 97.3-59.3 148.3-17.8 45.4-35.9 92.1-54 140.1-.9 2.3-1.8 4.7-2.6 7-18 47.6-36.2 96.6-54.6 146.8-.4 1.1-.8 2.3-1.3 3.4l86.9-9.5c-1.7-.3-3.5-.5-5.2-.9 103.9-13 242.1-90.6 331.4-186.5 41.1-44.2 78.5-96.3 113-157.3 25.7-45.4 49.8-95.8 72.8-151.5 20.1-48.7 39.4-101.4 58-158.6-23.9 12.6-51.2 21.8-81.4 28.2-5.3 1.1-10.7 2.2-16.1 3.1-5.5 1-11 1.8-16.6 2.6.1.0.1-.1.2-.1 96.9-37.3 158-109.2 202.4-197.4-25.5 17.4-66.9 40.1-116.6 51.1-6.7 1.5-13.7 2.7-20.7 3.7-1.7.3-3.5.6-5.2.8.1.0.1.0.1-.1h.1c33.6-14.1 62-29.8 86.6-48.4 5.3-4 10.4-8.1 15.3-12.3 7.5-6.5 14.7-13.3 21.5-20.5 4.4-4.6 8.6-9.3 12.7-14.2 9.6-11.5 18.7-23.9 27.1-37.3 2.6-4.1 5.1-8.3 7.6-12.6 3.2-6.2 6.3-12.3 9.3-18.3 13.5-27.2 24.4-51.5 33-72.8 4.3-10.6 8.1-20.5 11.3-29.7 1.3-3.7 2.5-7.2 3.7-10.6 3.4-10.2 6.2-19.3 8.4-27.3 3.3-12 5.3-21.5 6.4-28.4-3.3 2.6-7.1 5.2-11.3 7.7-29.3 17.5-79.5 33.4-119.9 40.8l79.8-8.8-79.8 8.8c-.6.1-1.2.2-1.8.3-4 .7-8.1 1.3-12.2 2 .7-.3 1.4-.7 2.1-1l-273 29.9C806.6 935 806.1 936 805.6 937z"/><linearGradient id="SVGID_7_" gradientUnits="userSpaceOnUse" x1="-7554.8232" y1="-2132.0981" x2="-4642.5034" y2="-2132.0981" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)"><stop offset=".3233" style="stop-color:#9E2064"/><stop offset=".6302" style="stop-color:#C92037"/><stop offset=".7514" style="stop-color:#CD2335"/><stop offset="1" style="stop-color:#E97826"/></linearGradient><path fill="url(#SVGID_7_)" d="M1112.9 385.1c-24.3 37.3-50.8 79.6-79.4 127.5-1.5 2.5-3 5.1-4.5 7.6-24.6 41.5-50.8 87.1-78.3 137-23.8 43.1-48.5 89.3-74.3 139C854 839.5 830.8 885.4 807 934l273-29.9c79.5-36.6 115.1-69.7 149.6-117.6 9.2-13.2 18.4-27 27.5-41.3 28-43.8 55.6-92 80.1-139.9 23.7-46.3 44.7-92.2 60.7-133.5 10.2-26.3 18.4-50.8 24.1-72.3 5-19 8.9-36.9 11.9-54.1C1327.9 363.5 1197.6 380.9 1112.9 385.1z"/><path fill="#be202e" d="M936.5 1326.1c-5.5 1-11 1.8-16.6 2.6C925.5 1328 931 1327.1 936.5 1326.1z"/><path opacity=".35" fill="#be202e" d="M936.5 1326.1c-5.5 1-11 1.8-16.6 2.6C925.5 1328 931 1327.1 936.5 1326.1z"/><linearGradient id="SVGID_8_" gradientUnits="userSpaceOnUse" x1="-7374.1626" y1="-2027.484" x2="-4461.8433" y2="-2027.484" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)"><stop offset=".3233" style="stop-color:#9E2064"/><stop offset=".6302" style="stop-color:#C92037"/><stop offset=".7514" style="stop-color:#CD2335"/><stop offset="1" style="stop-color:#E97826"/></linearGradient><path fill="url(#SVGID_8_)" d="M936.5 1326.1c-5.5 1-11 1.8-16.6 2.6C925.5 1328 931 1327.1 936.5 1326.1z"/><path fill="#be202e" d="M980 1186.8c1.8-.2 3.5-.5 5.2-.8C983.5 1186.3 981.8 1186.6 980 1186.8z"/><path opacity=".35" fill="#be202e" d="M980 1186.8c1.8-.2 3.5-.5 5.2-.8C983.5 1186.3 981.8 1186.6 980 1186.8z"/><linearGradient id="SVGID_9_" gradientUnits="userSpaceOnUse" x1="-7374.1626" y1="-2037.7417" x2="-4461.8433" y2="-2037.7417" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)"><stop offset=".3233" style="stop-color:#9E2064"/><stop offset=".6302" style="stop-color:#C92037"/><stop offset=".7514" style="stop-color:#CD2335"/><stop offset="1" style="stop-color:#E97826"/></linearGradient><path fill="url(#SVGID_9_)" d="M980 1186.8c1.8-.2 3.5-.5 5.2-.8C983.5 1186.3 981.8 1186.6 980 1186.8z"/><path fill="#be202e" d="M980.2 1186.7z"/><path opacity=".35" fill="#be202e" d="M980.2 1186.7z"/><linearGradient id="SVGID_10_" gradientUnits="userSpaceOnUse" x1="-5738.0635" y1="-2039.799" x2="-5094.3457" y2="-2039.799" gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)"><stop offset=".3233" style="stop-color:#9E2064"/><stop offset=".6302" style="stop-color:#C92037"/><stop offset=".7514" style="stop-color:#CD2335"/><stop offset="1" style="stop-color:#E97826"/></linearGradient><path fill="url(#SVGID_10_)" d="M980.2 1186.7z"/></svg></div></a><ul class=footer-link><li><a class=white href=http://www.apache.org>Foundation</a></li><li><a class=white href=http://www.apache.org/licenses/>License</a></li><li><a class=white href=https://www.apache.org/security/>Security</a></li><li><a class=white href=http://www.apache.org/events/current-event>Events</a></li><li><a class=white href=http://www.apache.org/foundation/sponsorship.html>Sponsorship</a></li><li><a class=white href=http://www.apache.org/foundation/thanks.html>Thanks</a></li><li><a class=white href=https://privacy.apache.org/policies/privacy-policy-public.html target=_blank>Privacy</a></li></ul></div></div><div class="col-6 text-white text-center container-center"><p>Copyright &copy; 2024 The Apache Software Foundation, Licensed under the <a class=white href=https://www.apache.org/licenses/LICENSE-2.0>Apache License Version 2.0</a></p><p>Apache and the Apache feather logo are trademarks of The Apache Software Foundation.</p></div><div class=col-1></div></div></div></footer></div><script src=https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js integrity=sha384-9/reFTGAW83EW2RDu2S0VKaIzap3H66lZH81PoYlFhbGU+6BZp6G7niu735Sk7lN crossorigin=anonymous></script>
<script src=https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/js/bootstrap.min.js integrity="sha512-UR25UO94eTnCVwjbXozyeVd6ZqpaAE9naiEUBK/A+QDbfSTQFhPGj5lOR6d8tsgbBk84Ggb5A3EkjsOgPRPcKA==" crossorigin=anonymous></script>
<script src=/js/tabpane-persist.js></script>
<script src=/js/main.min.aa9f4c5dae6a98b2c46277f4c56f1673a2b000d1756ce4ffae93784cab25e6d5.js integrity="sha256-qp9MXa5qmLLEYnf0xW8Wc6KwANF1bOT/rpN4TKsl5tU=" crossorigin=anonymous></script>
<script src=/js/prism.js></script></body></html>