<commit_before>Titan: Distributed Graph Database
"http://titan.thinkaurelius.com":http://titan.thinkaurelius.com

[[https://raw.github.com/thinkaurelius/titan/master/doc/images/titan-globe.png|width=100px]]

h2. Titan 0.y.z

h3. Version 0.4.2 (December 30, 2013)

```xml
<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

h3. Version 0.4.1 (November 24, 2013)

```xml
<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.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:*

* Property pre-fetching to speed up multiple property lookups per vertex. Configurable through "fast-property"
* 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()
* 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 (disabled by default)
* Better caching implementation for relations (RelationCache) to provide better 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
* Refactored Text.REGEX/PREFIX to Text.CONTAINS_REGEX/CONTAINS_PREFIX to accurately reflect their semantics. Added Text.REGEX/PREFIX for full string matching
* Added support for scaling the id allocation to hundreds of parallel Titan instances through additional configuration options
* Support for secure access to storage backend through username/password authentication in Cassandra

*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

h3. Version 0.4.0 (October 16, 2013)

```xml
<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:*

* <NAME> ("bdeggleston":https://github.com/bdeggleston)
* <NAME> ("erickt":https://github.com/erickt)
* <NAME> ("zachkinstner":https://github.com/zachkinstner)
* "jkschneider":https://github.com/jkschneider
* "gwhitehawk":https://github.com/gwhitehawk
* "mamccr":https://github.com/mamccr
* "akeffalas":https://github.com/akeffalas

h3. Version 0.3.1 (May 14, 2013)

```xml
<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<commit_msg>Copying backlogged changes from wiki to CHANGELOG<commit_after>Titan: Distributed Graph Database
"http://titan.thinkaurelius.com":http://titan.thinkaurelius.com

[[images/titan-globe.png|width=100px]]

h2. Titan 0.y.z

h3. Version 0.4.2 (December 30, 2013)

```xml
<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

h3. Version 0.4.1 (November 24, 2013)

```xml
<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

h3. Version 0.4.0 (October 16, 2013)

```xml
<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:*

* <NAME> ("bdeggleston":https://github.com/bdeggleston)
* <NAME> ("erickt":https://github.com/erickt)
* <NAME> ("zachkinstner":https://github.com/zachkinstner)
* "jkschneider":https://github.com/jkschneider
* "gwhitehawk":https://github.com/gwhitehawk
* "mamccr":https://github.com/mamccr
* "akeffalas":https://github.com/akeffalas

h3. Version 0.3.2 (July 29, 2013)

```xml
<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.

h3. Version 0.3.1 (May 14, 2013)

```xml
<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
{'fraction_non_alphanumeric': 0.07929573735769128, 'fraction_numerical': 0.02323272438443209, 'mean_word_length': 5.09233870967742, 'pattern_counts': {'":': 16, '<': 81, '<?xml version=': 0, '>': 81, 'https://': 15, 'lorem ipsum': 0, 'www.': 0, 'xml': 9}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3900549', 'n_tokens_mistral': 4501, 'n_tokens_neox': 4086, 'n_words': 1673}