As the volume of everyday data is growing, it is critical to find a database suitable for storing it. When we want to store a large amount of records about real-time transactions or events we need to consider solutions for time-series data. I have done some research and found out that there are some solutions designed to store time-series data: InfluxDB, TimescaleDB, Graphite… Well, here I would like to introduce Cassandra for time-series data.
There are a lot of rants about Cassandra and I’m not going to repeat all of them! I’d better answer the question: why is it useful…
SolrCloud is an extension for Solr and through Java API it lets you not only add/update/delete documents in collections, but also create collection, and also manage schema and configuration for concrete collection.
To start extension locally it’s enough to switch on cloud mode and accept all prompts:
solr -e cloud
By default, it will create two nodes: on 8983 and 7574 ports, and also Zookeeper on the port 9983
To create SolrCloudClient, it needs to define zkHost and zkChRoot:
String zkHost = "localhost:9983";
List<String> zkHosts = Collections.singletonList(zkHost);
Optional<String> zkChRoot = Optional.of("/");
CloudSolrClient cloudSolrClient = new CloudSolrClient.Builder(zkHosts, zkChRoot)
There are a lot of articles that scream about the advantages of Cassandra, and I really love this database. As I would like you to love it too. For this, you should know about all the pitfalls you can meet on your journey! I aggregated the main points here. Let’s quickly look at the list of features don’t exist in Cassandra and probably you will miss them:
Nowadays, microservice architecture is very popular. Suppose you want to add new functionality or features to your services. If you have the time and hardware to invest in the maintenance of the infrastructure for a self-isolated microservice, then you have some steps to take. Even if this is not the first microservice in your system, there is still a lot of work to be done.
It’s better to plan these tasks in advance, otherwise you might block DEV and QA teams! So, don’t make these steps a low priority; take care of your development process at the start!
Didn’t you think about how many challenges in software engineering could be solved by using only three design components in your system?
→ Just imagine: you have an online shop where you receive updates in real-time about goods, you need to handle these events, store information about goods in the database, and make this information searchable.
→ Or suppose that you support a payment system and have real-time events that you need to store, and then you want to be able to search through them.
→ Or maybe you have an ads platform, you have to handle them in real-time…