-
Notifications
You must be signed in to change notification settings - Fork 16
/
Copy pathlimitations.html
36 lines (36 loc) · 12.2 KB
/
limitations.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Chapter 16. Technical Limitations</title><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="JanusGraph Documentation"><link rel="up" href="basics.html" title="Part II. JanusGraph Basics"><link rel="prev" href="common-questions.html" title="Chapter 15. Common Questions"><link rel="next" href="storage-backends.html" title="Part III. Storage Backends"><script xmlns:d="http://docbook.org/ns/docbook" type="text/javascript" src="js/jquery/jquery-1.11.0.js"></script><script xmlns:d="http://docbook.org/ns/docbook" type="text/javascript" src="js/jquery/jquery-migrate-1.2.1.min.js"></script><link xmlns:d="http://docbook.org/ns/docbook" rel="stylesheet" id="inline-blob-janusgraph-docs-specific" href="css/docs.css" type="text/css" media="all"><link xmlns:d="http://docbook.org/ns/docbook" rel="apple-touch-icon" type="image/png" href="images/janusgraph-logomark.png"><script xmlns:d="http://docbook.org/ns/docbook" type="text/javascript">
WebFontConfig = {
google: {
families: [
"Lato:400,400italic,700,700italic:latin,greek-ext,cyrillic,latin-ext,greek,cyrillic-ext,vietnamese",
"Open+Sans:400,400italic,700,700italic:latin,greek-ext,cyrillic,latin-ext,greek,cyrillic-ext,vietnamese",
"Antic+Slab:400,400italic,700,700italic:latin,greek-ext,cyrillic,latin-ext,greek,cyrillic-ext,vietnamese"
]
}
};
(function() {
var wf = document.createElement('script');
wf.src = ('https:' == document.location.protocol ? 'https' : 'http') +
'://ajax.googleapis.com/ajax/libs/webfont/1/webfont.js';
wf.type = 'text/javascript';
wf.async = 'true';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(wf, s);
})();
</script></head><body xmlns:d="http://docbook.org/ns/docbook" bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div id="wrapper"><div class="header-wrapper"><header id="header"><ul class="header-list"><li class="header-item"><a href="http://janusgraph.org"><img src="images/janusgraph-logo.png" alt="JanusGraph" class="normal_logo"></a></li><li class="header-item-right"><a href="https://github.com/JanusGraph/janusgraph/releases">Download JanusGraph</a></li><li class="header-item-right dropdown"><a href="https://docs.janusgraph.org/latest/doc-versions.html">Other Doc Versions</a><div class="dropdown-content"><a href="https://docs.janusgraph.org/latest/index.html">Latest</a><a href="https://docs.janusgraph.org/0.3.0/index.html">Version 0.3.0</a><a href="https://docs.janusgraph.org/0.2.2/index.html">Version 0.2.2</a><a href="https://docs.janusgraph.org/0.2.1/index.html">Version 0.2.1</a><a href="https://docs.janusgraph.org/0.2.0/index.html">Version 0.2.0</a><a href="https://docs.janusgraph.org/0.1.1/index.html">Version 0.1.1</a><a href="https://docs.janusgraph.org/0.1.0/index.html">Version 0.1.0</a></div></li><li class="header-item-right"><a href="index.html">Documentation (0.2.2)</a></li></ul></header></div><div id="main" class="clearfix width-100"><div class="breadcrumbs"><span class="breadcrumb-link"><a href="index.html">JanusGraph Documentation</a></span> > <span class="breadcrumb-link"><a href="basics.html">JanusGraph Basics</a></span> > <span class="breadcrumb-node">Technical Limitations</span></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a name="limitations"></a>Chapter 16. Technical Limitations</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="limitations.html#_design_limitations">16.1. Design Limitations</a></span></dt><dd><dl><dt><span class="section"><a href="limitations.html#_size_limitation">16.1.1. Size Limitation</a></span></dt><dt><span class="section"><a href="limitations.html#_datatype_definitions">16.1.2. DataType Definitions</a></span></dt><dt><span class="section"><a href="limitations.html#_edge_retrievals_are_o_log_k">16.1.3. Edge Retrievals are O(log(k))</a></span></dt><dt><span class="section"><a href="limitations.html#_type_definitions_cannot_be_changed">16.1.4. Type Definitions cannot be changed</a></span></dt><dt><span class="section"><a href="limitations.html#_reserved_keywords">16.1.5. Reserved Keywords</a></span></dt></dl></dd><dt><span class="section"><a href="limitations.html#_temporary_limitations">16.2. Temporary Limitations</a></span></dt><dd><dl><dt><span class="section"><a href="limitations.html#_limited_mixed_index_support">16.2.1. Limited Mixed Index Support</a></span></dt><dt><span class="section"><a href="limitations.html#_batch_loading_speed">16.2.2. Batch Loading Speed</a></span></dt></dl></dd></dl></div><p>There are various limitations and "gotchas" that one should be aware
of when using JanusGraph. Some of these limitations are necessary design
choices and others are issues that will be rectified as JanusGraph
development continues. Finally, the last section provides solutions to
common issues.</p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="_design_limitations"></a>16.1. Design Limitations</h2></div></div></div><p>These limitations reflect long-term tradeoffs design tradeoffs which
are either difficult or impractical to change. These limitations are
unlikely to be removed in the near future.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="_size_limitation"></a>16.1.1. Size Limitation</h3></div></div></div><p>JanusGraph can store up to a quintillion edges (2^60) and half as many vertices. That limitation is imposed by JanusGraph’s id scheme.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="_datatype_definitions"></a>16.1.2. DataType Definitions</h3></div></div></div><p>When declaring the data type of a property key using <code class="literal">dataType(Class)</code> JanusGraph will enforce that all properties for that key have the declared type, unless that type is <code class="literal">Object.class</code>. This is an equality type check, meaning that sub-classes will not be allowed. For instance, one cannot declare the data type to be <code class="literal">Number.class</code> and use <code class="literal">Integer</code> or <code class="literal">Long</code>. For efficiency reasons, the type needs to match exactly. Hence, use <code class="literal">Object.class</code> as the data type for type flexibility. In all other cases, declare the actual data type to benefit from increased performance and type safety.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="_edge_retrievals_are_o_log_k"></a>16.1.3. Edge Retrievals are O(log(k))</h3></div></div></div><p>Retrieving an edge by id, e.g <code class="literal">tx.getEdge(edge.getId())</code>, is not a constant time operation because it requires an index call on one of its adjacent vertices. Hence, the cost of retrieving an individual edge by its id is <code class="literal">O(log(k))</code> where <code class="literal">k</code> is the number of incident edges on the adjacent vertex. JanusGraph will attempt to pick the adjacent vertex with the smaller degree.</p><p>This also applies to index retrievals for edges via a standard or external index.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="_type_definitions_cannot_be_changed"></a>16.1.4. Type Definitions cannot be changed</h3></div></div></div><p>The definition of an edge label, property key, or vertex label cannot be changed once it has been committed to the graph. However, a type can be renamed and new types can be created at runtime to accommodate an evolving schema.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="_reserved_keywords"></a>16.1.5. Reserved Keywords</h3></div></div></div><p>There are certain keywords that JanusGraph uses internally for types that cannot be used otherwise. These types include vertex labels, edge labels, and property keys. The following are keywords that cannot be used:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">vertex</li><li class="listitem">element</li><li class="listitem">edge</li><li class="listitem">property</li><li class="listitem">label</li><li class="listitem">key</li></ul></div><p>For example, if you attempt to create a vertex with the label of <code class="literal">property</code>, you will receive an exception regarding protected system types.</p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="_temporary_limitations"></a>16.2. Temporary Limitations</h2></div></div></div><p>These are limitations in JanusGraph’s current implementation. These
limitations could reasonably be removed in upcoming versions of JanusGraph.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="_limited_mixed_index_support"></a>16.2.1. Limited Mixed Index Support</h3></div></div></div><p>Mixed indexes only support a subset of the data types that JanusGraph supports. See <a class="link" href="search-predicates.html#mixeddatatypes" title="22.5. Data Type Support">Mixed Index Data Types</a> for a current listing. Also, mixed indexes do not currently support property keys with SET or LIST cardinality.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="_batch_loading_speed"></a>16.2.2. Batch Loading Speed</h3></div></div></div><p>JanusGraph provides a batch loading mode that can be enabled through the <a class="link" href="config-ref.html" title="Chapter 14. Configuration Reference">graph configuration</a>. However, this batch mode only facilitates faster loading into the storage backend, it does not use storage backend specific batch loading techniques that prepare the data in memory for disk storage. As such, batch loading in JanusGraph is currently slower than batch loading modes provided by single machine databases. <a class="xref" href="bulk-loading.html" title="Chapter 33. Bulk Loading">Chapter 33, <i>Bulk Loading</i></a> contains information on speeding up batch loading in JanusGraph.</p><p>Another limitation related to batch loading is the failure to load millions of edges into a single vertex at once or in a short time of period. Such <span class="strong"><strong>supernode loading</strong></span> can fail for some storage backends. This limitation also applies to dense index entries.</p></div></div></div></div><div class="clearer"></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="common-questions.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="basics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="storage-backends.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 15. Common Questions </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Part III. Storage Backends</td></tr></table></div><div class="footer-wrapper"><footer id="footer"><div class="copyright">
Copyright © 2017 JanusGraph Authors. All rights reserved.<br>
The Linux Foundation has registered trademarks and uses trademarks. For a list of<br>
trademarks of The Linux Foundation, please see our <a href="https://www.linuxfoundation.org/trademark-usage">Trademark Usage</a> page.<br>
Cassandra, Groovy, HBase, Hadoop, Lucene, Solr, and TinkerPop are trademarks of the Apache Software Foundation.<br>
Berkeley DB and Berkeley DB Java Edition are trademarks of Oracle.<br>
Documentation generated with <a href="http://www.methods.co.nz/asciidoc/">AsciiDoc</a>, <a href="http://asciidoctor.org/">AsciiDoctor</a>, <a href="http://docbook.sourceforge.net/">DocBook</a>, and <a href="http://saxon.sourceforge.net/">Saxon</a>.
</div></footer></div></div></body></html>