Zipkin includes a StorageComponent, used to store and query spans and dependency links. This is used by the server and those making custom servers, collectors, or span reporters. For this reason, storage components have minimal dependencies; many run on Java 7.
Ex.
// this won't create network connections storage = CassandraStorage.builder() .contactPoints("my-cassandra-host").build(); // but this will trace = storage.spanStore().getTrace(traceId); // clean up any sessions, etc storage.close();
The InMemoryStorage component is packaged in zipkin's core library. It is not persistent, nor viable for realistic work loads. Its purpose is for testing, for example starting a server on your laptop without any database needed.
The JDBCStorage component currently is only tested with MySQL 5.6-7. It is designed to be easy to understand, and get started with. However, it has known performance issues at larger scales. For example, queries will eventually take seconds to return if you put a lot of data into it.
The CassandraStorage component is tested against Cassandra 2.2+. It is designed for larger scales of data. For example, it has manually implemented indexes to make querying larger data more performant.
The ElasticsearchStorage component is tested against Elasticsearch 2.3. It is designed for larger scales of data, and works on json directly. The Elasticsearch component is the newest option.