'use case for bigchaindb - How is bigchaindb decentralized?
I am new to bigchaindb and i have a question. In case a single company wants to store data as asset on bigchaindb and share it with other companies, what advantages would they get from bigchaindb over mongodb?
Decentralization — Since the company in question would be owning all the bigchaindb nodes, the system would not be decentralized.
Immutability — They can implement that using code.
Transferring assets — This can also be done via using mongo db and code.
Solution 1:[1]
BigchainDB's advantage is decentralization. If a single company owns all nodes, you might as well use a single server, there's not much of a difference (unless you want independence of multiple locations within the organization). You should only use BigchainDB - or blockchain in general for that matter - if you're dealing with multiple semi-trusted participants who are trying to write to a shared database while ensuring there transparency, auditability and integrity.
So in your use case (a single organization storing all data to share with others): no, there is no clear advantage to using BigchainDB over a custom MongoDB implementation.
Edit: I just saw that this question was answered by Troy McConaghy (creator of BigchainDB) on Medium. Since his answers differs slightly, I'll include it here:
Decentralization isn’t an all-or-nothing property, it’s a continuum. Even if a single company runs all the nodes, they can have each one operated by a different employee, in a different business unit, in a different country, for example.
There are two general approaches to adding immutability to MongoDB using code. One is to try and do it in the application layer. The problem with that is that the MongoDB database is one logical database, so anyone who manages to gain admin-like privileges on one node can change or delete records across the entire database: there is a single point of failure, making its “decentralization” dubious. (In BigchainDB, each node has an independent MongoDB database, so corrupting one doesn’t affect the others.) The other way would be to fork MongoDB to make it so it can’t change or delete existing records. Go ahead, it will take hundreds of coder hours to do that and in the end all you have is something similar to Datomic or HBase. Why not just use one of those instead? Of course, those still have the central admin problem, so you’d probably want to fork…
Yes, almost any database can be used to track and manage asset transfers. You would have to add that thing where only the true owner of an asset can make the transfer happen (by providing a valid cryptographic signature), but that’s totally doable in the application-level code (or maybe in the database’s internal scripting language). It all takes time and BigchainDB has that out of the box.
Solution 2:[2]
This is not decentralized:
"RethinkDB has an “admin” user which can’t be deleted and which can make big changes to the database, such as dropping a table. Right now, that’s a big security vulnerability"
Source: https://bigchaindb.readthedocs.io/projects/server/en/v0.5.1/topic-guides/decentralized.html
If your cryptocoin project runs on BigChainDB and someday the government doesn't like cryptocoins, it can force the companies supporting BigChainDB to erase all your data from BigChainDB.
If some project is backed by a company and this company is controlled by government rules, this project is not decentralized. Period!
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | |
Solution 2 | Silvio Guedes |