Titan: Distributed Graph Database
http://titan.thinkaurelius.com
[[images/titan-globe.png|width=100px]]
```xml
com.thinkaurelius.titan
titan-core
0.4.2
```
Tested Compatibility:
- Cassandra 1.2.2
- HBase 0.94.12
- BerkeleyJE 5.0.73
- Elasticsearch 0.90.5
- Lucene 4.4.0
- Persistit 3.3.0
- Java 1.7+ (partially compatible with Java 1.6)
Features:
- Finer-grained Thrift connection pooling that gracefully handles failure to close result iterators
- Optionally silently ignore unrecognized fields on index queries instead of throwing an exception
- Configurable Astyanax RetryBackoffStrategy
- Allow comparison of heterogeneous numeric types
- Added Codahale-Metrics coverage for query, locker, and get-vertex-by-id activity
Bugfixes:
- Deleting edges with multiple properties
- Deleting edges labeled with a reverse-ordered sort key
- Avoid NullPointerException during graph shutdown when running without a Backend threadpool
- Shell portability improvement and shutdown race condition fix in titan.sh
```xml
com.thinkaurelius.titan
titan-core
0.4.1
```
Tested Compatibility:
- Cassandra 1.2.2
- HBase 0.94.12
- BerkeleyJE 5.0.73
- Elasticsearch 0.90.5
- Lucene 4.4.0
- Persistit 3.3.0
- Java 1.7+ (partially compatible with Java 1.6)
Features:
- Property pre-fetching to speed up multiple property lookups per vertex. Configurable through
fast-property
option. - Shortened HBase column-family names to reduce the HBase storage footprint. This feature is disabled by default for backwards-compatibility. Enable it via
storage.short-cf-names
- Metrics per Transaction: Gathering measurements on the transaction level and group them by transaction template name configurable through
graph.buildTransaction().setMetricsPrefix(String)
- Metrics Ganglia and Graphite support
- Improvements to the internal memory structures and algorithms of a Titan transaction which lead to much improved traversal times (a lot of credit goes to Pavel for these optimizations!!)
- Added database level cache for lower latency query answering against warm data. Enable via
cache.db-cache
. Learn more about [[Database Cache]]. - Better caching implementation for relations (RelationCache) to provide faster de-serialization performance
- Addition of a new query optimizer that can significantly speed up a subset of traversals
- Support for reverse ordering in vertex centric queries by defining: makeLabel(..).sortKey(..).sortOrder(Order.DESC).make()
- Support for index configuration parameters passed into KeyMaker.indexed(String,Class,Parameter…) to change the default indexing behavior of an indexing backend.
- Support for TEXT and STRING mapping of strings in both Lucene and ElasticSearch configurable as a parameter. Learn more about [[Full Text and String Search]]
- Refactored Text.REGEX/PREFIX to Text.CONTAINS_REGEX/CONTAINS_PREFIX to accurately reflect their semantics. Added Text.REGEX/PREFIX for full string matching. See [[Indexing Backend Overview]]
- Added support for scaling the id allocation to hundreds of parallel Titan instances through additional configuration options. See [[Bulk Loading]].
Bugfixes:
- Fixed multiQuery() for specific has() conditions. Added support for multiQuery(Collection).
- Fixed limit adjustment issue for unconstraint IN/OUT queries
- Fixed packaging issues
- Fixed cache misses due to wrong limit interpretation
```xml
com.thinkaurelius.titan
titan-core
0.4.0
```
Tested Compatibility:
- Cassandra 1.2.2
- HBase 0.94.7
- BerkeleyJE 5.0.73
- Elasticsearch 0.90.5
- Lucene 4.4.0
- Persistit 3.3.0
- Hazelcast 3.0.2
- Java 1.7+ (partially compatible with Java 1.6)
Features:
- Initial Fulgora (alpha) release: Added CacheStore interface and adapter as well as a specific implementation based on the Hazelcast distributed data grid
- Configurable LRU transaction cache for all data loaded into a transaction which allows rolling transactions without memory exceptions
- MultiQuery which allows combining multiple queries into one request to speed up deep traversals by orders of magnitude against remote backends
- Completely refactored query optimization and execution framework which makes query answering faster
- GraphQuery optimizer combines multiple indexing backends to determine the result set most efficiently
- Support for ordering in GraphQuery
- Persistit storage adapter for local graph storage
- Metrics integration for monitoring
- Support for regular expressions in GraphQuery
- Refactoring and improvement of the locking protocol
- Renaming of type definition methods to reduce the confusion surrounding this topic (see UPGRADE for more detail)
- Re-implemented scanning operations in storage backends to make getVertices() and getEdges() more efficient and functionally correct
- Added performance test suite and automatic benchmark execution framework
- Refactored attribute handling and made it explicit
- Transactions are configurable by the user
- Titan interprets relative paths in configuration files relative to the directory containing said configuration file (instead of the directory from which e.g. Gremlin was invoked)
- Attribute Handling has been refactored and extended to allow custom converters and data type checkers
Bugfixes:
- Cassandra compression
- Resolution of elements across transaction boundaries
- Tokenization of strings for full text search
- Explicit mapping of elasticsearch elements
- Changed index format to ensure uniqueness
- Correct limit behavior for queries
- Fixed incorrect query caching behavior
- Correct string serialization
- Correct handling of hybrid GraphQuery
- Better handling of data degradation issues
Check the issue tracker for a full list of fixed issues.
Special Thanks to:
- Blake Eggleston (bdeggleston)
- Erick Tryzelaar (erickt)
- Zach Kinstner (zachkinstner)
- jkschneider
- gwhitehawk
- mamccr
- akeffalas
```xml
com.thinkaurelius.titan
titan-core
0.3.2
```
Tested Compatibility:
- Cassandra 1.2.2
- HBase 0.94.1
- BerkeleyJE 5.0.73
- Elasticsearch 0.90.0
- Lucene 4.1.0
- Java 1.6+
Features:
- Support for multiple standard index conditions in queries
Bugfixes:
- Fixed potential transaction leak when using thread-bound transactions
- Let vertex.removeProperty(…) kill multivalued properties as the javadoc says
- Avoided two spurious cases of “timestamp mismatch” exception
- Removed unchecked cast in AbstractElement.equals(…)
- Adjusted default Astyanax exponential backoff settings to avoid integer overflow against a dead peer
- Fixed Astyanax config regression that caused node discovery and connection pool type to be ignored
- Fixed double-checked locking on StandardVertex’s added relations
Check the issue tracker for a full list of fixed issues.
```xml
com.thinkaurelius.titan
titan-core
0.3.1
```
Tested Compatibility:
- Cassandra 1.2.2
- HBase 0.94.1
- BerkeleyJE 5.0.73
- Elasticsearch 0.90.0
- Lucene 4.1.0
- Java 1.6+
Features:
- Improved in-transaction index handling for equality matches
- Support for Lucene 4 throughout
- Storage backend compression enabled by default where applicable
- Removed RexsterTitanClient since all the functionality has been rolled into RexsterClient
- Automatic type-casting of most primitive types and Geoshape where possible
- Refactored to using immutable data structures for storage backend communication
- Re-implemented InMemory storage backend for better performance
Bugfixes:
- Launching multiple Titan servers in one cluster with RF>1
- Updated and improved the Astyanax adapter for Cassandra
- Improved robustness of ID allocation
- Vertex iteration in embedded Cassandra with BoP
- Updated Titan server scripts and configuration files
- Fixed issues around automatic transaction migration of vertices and edges
- Fixed BerkeleyJE concurrency clean-up issue
- Cleaned up and trimmed storage backend interfaces
- Fixed ghost vertex issue when iterating over vertices
- Fixed datatype conversion issues
Check the issue tracker for a full list of fixed issues.
```xml
com.thinkaurelius.titan
titan-core
0.3.0
```
Tested Compatibility:
- Cassandra 1.2.2
- HBase 0.94
- BerkeleyJE 5.0.73
Features:
- Geo, numeric range, and full-text indexing supporting multiple index backends
- Edge Indexing
- Refactoring of Titan-core for enhanced performance due to selective de-serialization
- New query optimizer for vertex-centric and graph queries
- Vertex centric query caching for selective queries
- InMemoryGraph implementation
- IdGraph support
- Relaxed transactional scope requirement for vertices
- Edge no longer extends Vertex
- Updated to Kryo 2
Bugfixes:
- Cassandra Thrift Max-Message-Size issue
- JMX settings for Titan Server
- Out-unique edges
- Modified state in global graph operations
- see issue tracker for a full list
```xml
com.thinkaurelius.titan
titan-core
0.2.1
```
Tested Compatibility:
- Cassandra 1.2.0
- HBase 0.94
- BerkeleyJE 5.0.58
Features:
- Refactored POM into multi-module project
- Support for global vertex (g.V) and edge (g.E) iteration for cassandra and hbase backends
- Compatible with Cassandra 1.2.0 for all three storage adapters: embedded, thrift, astyanax
- Improved HBase adapter:
- Automatic Master launch for testing
- Refactored batch mutation and reading
- Optimized HBase operations
- Updated to Blueprints 2.3.0
- Better integration with Rexster Rexpro
- Automatic directory creation for local storage backends
- Internal Titan version handling and compatibility checks
- Added additional performance tests
Bugfixes:
- Resolved issues around Java 1.7
- Shutdown error in astyanax adapter
- Made thrift frame and message size configurable for cassandra adapters
- see issue tracker for a full list
Special Thanks to:
- Pavel Yaskevich (xedin)
```xml
com.thinkaurelius.titan
titan
0.2.0
```
Tested Compatibility:
- Cassandra 1.1.3 & 1.1.4
- HBase 0.94.1
- BerkeleyDB 5.0.58
- TinkerPop (Blueprints, Gremlin, Rexster) 2.2.0
- This version is incompatible with the previous version of Titan. Please follow the [[Upgrade Instructions]] to switch to the new version.
Features:
- Embedded Cassandra: Titan can be embedded with Cassandra, that means, Titan starts a Cassandra node in the same JVM and uses efficient in process communication to store and retrieve data.
- [[Titan Server]]: Titan comes with a light-weight Gremlin query server.
- Streamlined configuration settings. Please review the new configuration options if you are upgrading from an older version of Titan.
- Many small performance improvements throughout the code. Please review the issue tracker and the commit log for more details.
Bugfixes:
- Fixed edge sorting bug which caused edges to be returned in a random order even when a vertex centric index was defined.
- Fixed id allocation bug that causes Titan to read the entire row during id allocation which can lead to id allocation failures.
- Completely refactored diskstorage package for better code quality and performance.
- Fixed edge caching bug for composite primary keys on edges.
- Fixed a number of smaller bugs. Please review the issue tracker and the commit log for more details.
Special Thanks to:
```xml
com.thinkaurelius.titan
titan
0.1.0
```
Tested Compatibility:
- Cassandra 1.1.3 & 1.1.4
- HBase 0.94.1
- BerkeleyDB 5.0.58
Features:
- The focus of the initial Titan release was on building a stable and robust graph database as well as incorporating community feature suggestions and feedback from early adopters of Titan.
Bugfixes:
- Fixed concurrency and synchronization issues
Special Thanks to: