While I normally blog about SQL Server or topics that closely relate to it in some way, I decided to make a small exception this time. Today, I will be writing about blockchain. Granted it’s not a huge jump outside my usual themes, as we’re still talking about database technology. So why I am writing about the blockchain, is it because it’s new and cool technology that everyone else is talking about? Admittedly that is part of, but I also wanted to have some of my thoughts and questions about the blockchain in an easy to find place.
First of all, let me start by saying that I am not a blockchain expert, however I have spoken (mostly I just listened) to people smarter than I am about this specific topic. Even though blockchain has become an extremely hot and hyped topic just recently, it has been around for several years already, and this means that there’s also lot of information to be found from the Internet.
What is the blockchain?
The most basic description for the blockchain seems to be that it is a shared, immutable digital ledger. For the sake of simplicity, I prefer to just call it a distributed database, which it is. In contrast to centralized databases, with blockchain, everyone has the copy of the data and it is regularly updated between the nodes in the blockchain. The nodes on the other hand are computers on a network that have a client that takes care of the transactions on the blockchain.
As for the data in the blockchain, as it is replicated to all participant nodes it also retains all the history of the data. This approach has a number of benefits, f.ex. you can achieve very high level of fault tolerance for the system. It also means that altering the records becomes nearly impossible, since everyone has a copy of it.
Blockchain is not build on completely new innovations, but it does excellent work on combining some of the existing and proven technologies. If we look at the individual components, with the blockchain we have P2P networking that is used for exchanging data between the participants. And for the security there is the public-key cryptography.
There’s more to the blockchains than this though, such as smart contracts etc., but lets keep this post simple for now.
When to use blockchain?
Besides the list of the common use cases, how do you determine when you should use blockchain and when you shouldn’t? Currently there is so much hype around this technology, that people are willing to build anything on top of the blockchain, just to say that they have done it.
I think we can all agree to the fact, that there is no single technology that is right for every purpose, and this goes also for the blockchain. Again, I’ve spoken with some smart people and from what they’re saying I’ve come up with a short (and not all that comprehensive) list of whys and why nots.
|Use if||Don’t use if|
|You need to manage contractual relationships||You have a need for millisecond fast transactions|
|You have multiple participants||You build something that involves only single organization|
|You are implementing complex business logic||You just need to find a replacement to your old databases|
|You have a solution where transactions need to be private||You’re thinking of building a messaging solution|
|You are looking to reduce costs||If you have high volume transactions with low value|
What else you need to consider?
Besides the list above, there are other things to keep in mind. A good example of this is the sensitive, personal data. Different countries likely have their own laws about how to handle such data, and for example in European Union we will have the General Data Protection Regulation coming in force next year.
One of the articles in the GDPR state, that the data subject has the right to ask that information regarding him or her needs to be removed, and this is something that cannot be done in a blockchain currently.
It should also be taken into account, that as data is never removed from the blockchain. This means that over the time, you might be accumulating quite a lot of records.
Conclusion and some extra reading
Personally I find the blockchain to be interesting technology, maybe not interesting enough for me to forget the relational databases in favor of it, but interesting nevertheless. There are also definitely some interesting solutions build on the blockchain technology already, as well as some interesting platforms to build applications on, such as the Ethereum and Hyperledger.
It will be interesting to see what sort of solutions will be build on this technology in the next few years, considering the amount of hype around it. Here’s some extra reading on the topic as well.