Features:
-
Added regex support for Lucene
-
Added optional customization of Elasticsearch index settings (e.g. shard count or refresh interval)
-
Removed some internal uses of ThreadLocal and made remaining uses optional
-
Gave the exception thrown when a held lock expires a more descriptive name (ExpiredLockException) and message
Bugfixes:
-
Allowed index hostnames to be overwritten in a local configuration file
-
hasNot with undefined key
-
Using $timestamp in query constraints
-
Filtering out null-values in vertex-centric index queries
-
Queries now use deep Array equality when appropriate
-
Schema reads on Cassandra now use QUORUM regardless of read-consistency-level (schema writes were already done at QUROUM)
-
Removed obsolete precondition check causing spurious failures on some Contain.IN queries
<dependency>
<groupId>com.thinkaurelius.titan</groupId>
<artifactId>titan-core</artifactId>
<version>0.5.2</version>
</dependency>
Tested Compatibility:
-
Cassandra 2.0.8
-
HBase 0.94.25, 0.96.2-hadoop2, 0.98.8-hadoop2
-
BerkeleyJE 5.0.73
-
Elasticsearch 1.2.1
-
Lucene 4.8.1
-
Solr 4.8.1
-
Java 1.7 (partially compatible with Java 1.6)
Features:
-
Added query optimizer support for Contain.IN conditions with multiple values
-
Added Astyanax options controlling the host supplier and local datacenter
-
Added titan.hadoop.output.location option similar to the old Faunus 0.4 output.location option
-
Added titan.hadoop.mr.classpath-configurer to support replacing Titan’s builtin Hadoop DistributedCache and MapReduce job-jar behavior
-
Added log statements that dump the complete job sequence compiled by Titan-Hadoop prior to job execution and each again just prior to execution
-
Changed return type of HadoopPipeline.submit to an int signaling whether the job chain completed successfully (previously void)
-
Replaced schema-related IllegalArgumentExceptions with more specific SchemaViolationExceptions
-
Restored gremlin.sh’s optional groovy-bootstrap-script-path argument
Bugfixes:
-
Fixed Titan-Hadoop NullPointerException caused by reading Titan graph schema
-
Fixed Titan-Hadoop failing to set OutputFormat when executing a single job with one or more mapper(s) and no reducers on Hadoop 2
-
Changed Elasticsearch backend’s version check to log a warning instead of throwing an exception when downgrading the client to an ES runtime version older than that used to compile Titan
-
Made StandardTitanGraph’s JVM shutdown hook never attempt to remove itself to avoid potential IllegalStateException
-
Made the Cassandra daemon started by titan.sh interpret the paths to its data and logfiles relative to the directory containing titan.sh, not the working directory when the script was invoked
-
Added broader catch block around some ReflectiveConfigOptionLoader logic to prevent dependencies with class linkage errors from causing exceptions at startup
-
Eliminated an ExceptionInInitializerError that could be triggered when using TitanFactory’s shorthand argument syntax, e.g.
TitanFactory.open('berkeleyje:/tmp/scratch')
, right after JVM startup -
Reduced log level on some harmless messages set to an unintentionally high threshold in previous releases
<dependency>
<groupId>com.thinkaurelius.titan</groupId>
<artifactId>titan-core</artifactId>
<version>0.5.1</version>
</dependency>
Tested Compatibility:
-
Cassandra 2.0.8
-
HBase 0.94.21, 0.96.1.1-hadoop2, 0.98.3-hadoop2
-
BerkeleyJE 5.0.73
-
Elasticsearch 1.2.1
-
Lucene 4.8.1
-
Solr 4.8.1
-
Java 1.7 (partially compatible with Java 1.6)
Features:
-
Added an experimental Solr indexing adapter
-
Reimplemented incremental loading in Titan-Hadoop
-
Substantially expanded ES configuration options, including support for custom transports
-
Optimized ReflectiveConfigOptionLoader for quicker graph startup and added options to configure or disable it
-
Titan now warns when settings in its config file are overridden by the storage-hosted global configuration
-
Titan-Hadoop on Hadoop 2 now supports HBase’s DIGEST-MD5 auth token mechanism for running MR jobs against Kerberized HBase
Bugfixes:
-
Fixed a stack overflow involving stale graph elements
-
Fixed a regression that caused custom Cassandra read/write consistency level settings to be ignored (defaulting to QUORUM)
-
Fixed SSL in the cassandrathrift backend
-
Attempts to create a partitioned vertex label with cluster.partition=false are now detected during earlier schema definition instead of later during vertex creation
-
Made the Gremlin console explicitly call System.exit just prior to the main thread’s termination; this makes the shell more aggressive about terminating on quit/exit even if there are background non-daemon threads which haven’t been cleanly stopped
-
Fixed outdated config keys in GraphOfTheGodsFactory.create
-
Miscellaneous documentation bugfixes
<dependency>
<groupId>com.thinkaurelius.titan</groupId>
<artifactId>titan-core</artifactId>
<version>0.5.0</version>
</dependency>
Tested Compatibility:
-
Cassandra 2.0.8
-
HBase 0.94.21, 0.96.1.1-hadoop2, 0.98.3-hadoop2
-
BerkeleyJE 5.0.73
-
Elasticsearch 1.2.1
-
Lucene 4.8.1
-
Java 1.7 (partially compatible with Java 1.6)
Features:
-
Separating schema definitions from index building thus supporting index building after definition, global re-indexing, and multiple indexes for one schema element
-
Support for a transaction write-ahead log and transaction recovery process to detect and fix inconsistencies due to system failure
-
Global graph configuration system to coordinate graph-wide configuration options
-
Better consistency checking and completeness checking of configuration options
-
Support for transaction logging and a log processing framework to implement triggers and downstream system updates
-
Support for vertex labels
-
Better support for global graph partitioning through edge cut minimization
-
Support for vertex cut partitioning to enable graph partitioning on graphs with very skewed degree distributions
-
Support for multi-properties with SET cardinality
-
Support for indexing of multi-properties
-
Support for time-to-live (TTL) on edges and vertices
-
Dedicated serialization engine that can detect byte order requirements and chooses the most efficient serializer and only uses Kryo for backup where needed.
-
Support for Blueprints 2.5.0
-
Introduction of Decimal and Precision data types
-
Compressed string serialization by default
-
More efficient memory footprint of Titan transactions
-
More robust error handling and transation processing
-
Changed Titan’s data layout to support adjacency queries and faster edge queries
-
Consolidated time handling across the entire Titan codebase
-
Using faster hash functions and centralized hash function library
-
Using upsert methods for ES mutations to improve performance
-
Support for additional configuration options in Cassandra connector
-
Support for configuring the isolation level in BerkeleyDB
-
Removed FullDouble and FullFloat: Double and Float are now serialized as full precision floating points. Introduced Decimal and Precision with a fixed number of decimals and order preserving binary representation
-
Migrated Faunus to a new package in Titan named Titan/Hadoop
-
Isolated HadoopElement serialization into HadoopSerializer
-
All HadoopVertex and HadoopEdge construction leverages Hadoop Configuration for deserialization rules
-
Removed pathEnabled boolean from element serialization (now part of Configuration as trackPaths)
-
Added state tracking for loaded, new, and deleted elements/properties (in Configuration via trackState)
-
HadoopCompiler updates HadoopGraph configurations with global pipeline requirements
-
Removed HadoopVertex.reuse() in support of short-lived HadoopVertex objects
-
Updated ScriptInputFormat to use HadoopVertex.setId(long) to "reuse" vertices
-
PropertyMapMap now includes Edge.getLabel() in the returned property map (via _label)
-
Added TitanGraphOutputMapReduce@ to support Titan-specific features (e.g. multi-properties on vertices)
-
TitanGraphOutputMapReduce respects state tracking and get/create/delete in outputting TitanGraph
-
Added JUnit test support for executing local (non-pseudo-cluster) MapReduce jobs
-
Provided MapReduce-based integration testing between Titan and Titan/Hadoop
-
Provided MapReduce-based integration testing around HadoopPipeline
-
Added error handling for invalid RDF parameters
-
Added support for incremental edge loading with BlueprintsGraphOutputMapReduce
Bugfixes:
-
Fixed potential inconsistency issue in the locking protocol due to usage of non-key consistent storage transactions.
-
Fixed name collision in index backends
-
Fixed error in ES mutate logic
-
Support for Blueprints wrappers on Titan transactions
-
Fixed shutdown hook
-
Improved robustness of the id allocation process
-
Fixed data balance issues with Hbase
-
Changed serialization order for Date.class - the byte serialization now matches Comparable
-
Fixed a SideEffectMap bug around edge processing (only out edges were being processed)
-
See all GitHub issues associated with Milestone 0.5.0
Acknowledgements:
-
Joshua Shinavier significantly contributed to the TTL implementation
<dependency>
<groupId>com.thinkaurelius.titan</groupId>
<artifactId>titan-core</artifactId>
<version>0.4.4</version>
</dependency>
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)
Bugfixes:
Added 0.4.2 to compatible-version string (and 0.4.3)
<dependency>
<groupId>com.thinkaurelius.titan</groupId>
<artifactId>titan-core</artifactId>
<version>0.4.3</version>
</dependency>
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:
-
Can configure the serializer for strings to get better string compression. ONLY ENABLE THIS IF STRINGS ARE NOT USED AS SORT KEYS since the sort order is no longer guaranteed.
-
Added Blueprints RDF dependency
Bugfixes:
-
Use all hosts for establishing thrift connection to Cassandra
-
A number of bug fixes and improvements for the Cassandra adapter
-
A number of bug fixes and improvements for the HBase adapter
-
Fixed background pool thread size
-
Improved ID Allocation
<dependency>
<groupId>com.thinkaurelius.titan</groupId>
<artifactId>titan-core</artifactId>
<version>0.4.2</version>
</dependency>
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
<dependency>
<groupId>com.thinkaurelius.titan</groupId>
<artifactId>titan-core</artifactId>
<version>0.4.1</version>
</dependency>
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
<dependency>
<groupId>com.thinkaurelius.titan</groupId>
<artifactId>titan-core</artifactId>
<version>0.4.0</version>
</dependency>
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)
<dependency>
<groupId>com.thinkaurelius.titan</groupId>
<artifactId>titan-core</artifactId>
<version>0.3.2</version>
</dependency>
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.
<dependency>
<groupId>com.thinkaurelius.titan</groupId>
<artifactId>titan-core</artifactId>
<version>0.3.1</version>
</dependency>
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.
<dependency>
<groupId>com.thinkaurelius.titan</groupId>
<artifactId>titan-core</artifactId>
<version>0.3.0</version>
</dependency>
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
<dependency>
<groupId>com.thinkaurelius.titan</groupId>
<artifactId>titan-core</artifactId>
<version>0.2.1</version>
</dependency>
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)
<dependency>
<groupId>com.thinkaurelius.titan</groupId>
<artifactId>titan</artifactId>
<version>0.2.0</version>
</dependency>
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:
<dependency>
<groupId>com.thinkaurelius.titan</groupId>
<artifactId>titan</artifactId>
<version>0.1.0</version>
</dependency>
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: