そもそも分散データベースってなに?
ブロックチェーンとの違いについて触れる前に、まずはデータベースと分散データベースについて学習しておきましょう。
データベースとは、デジタル情報(データ)を記録しておくための台帳のことです。
Webサービスを開発する場合、ユーザー情報やサービスとして提供するコンテンツの情報をデータベースに記録しておき、ユーザーの行動に合わせて表示させるなどの処理を行なっています。
PoLの場合、皆さんが読んでいるレッスン内の文章やイラストなどが、PoLのデータベースに記録されています。
仮想通貨の場合、取引情報をブロックチェーンに記録しているため、ブロックチェーンはデータベースの一種だといえるのです。
分散データベースもまたデータベースの一種であり、地理的に分散しているデータベースを意味します。
Webサービスを運用する際、一つのデータベースだけで情報を管理していることはほとんどありません。
なぜなら、操作ミスなどの人的障害や地震・雷などの災害によって、データベースが壊れてしまう可能性があるためです。
データベースが壊れてしまうとそこに保存していた情報が無くなってしまい、サービスを運用できなくなってしまいます。
そのため、地理的に分散させた複数のデータベースに情報を保存させておくのです。
Check your achievement
Click the “Tick” button
if you understand the lesson so far.
ブロックチェーンと分散データベースの違い
サーバに該当するものが存在しない
分散データベースを使用する通信方法は、クライアント-サーバ型と呼ばれています。
クライアントというのは、Webブラウザなどのことを意味します。
この通信方法では、Webブラウザとデータベースの間にサーバが存在し、全ての通信の順番をコントロールしています。
つまり、通信の流れとしては、クライアント⇆サーバ⇆データベースとなります。
一方、ブロックチェーンを使用する通信方法は、Peer−to−Peer型と呼ばれています。
Peer(ピア)というのは、クライアント−サーバ型におけるクライアントに該当し、ノードと呼ばれる場合もあります。
この通信方法では、サーバのような管理者が存在せず、ピア(ノード)同士が直接通信しています。
そのため、通信の順番はコンセンサスアルゴリズムによって決定されます。
また、ブロックチェーンはそのものがデータベースとしての役割も果たすだけでなく、ピアはブロックチェーンとしても機能します。
つまり、通信の流れとしては、ピア⇆ピア⇆ピアで完結するのです。
ゼロダウンタイムの実現
ブロックチェーンが実現した要素の一つに、ゼロダウンタイムというものがあります。
これはサーバダウンがゼロ、すなわち発生しないという概念です。
上図のように、インターネット通信においてサーバは非常に重要な役割を担っており、サーバがダウンすると一時的にWebサービスが提供できなくなってしまいます。
そのため、Webサービスの提供者は、分散データベースの構築だけでなく、サーバへの負荷分散などを莫大な費用をかけて構築しています。
ブロックチェーンを活用することで、莫大な費用削減だけでなく、ゼロダウンタイムによるサービス価値を向上させることができるのです。
台数を増やしても性能は向上しない
分散データベースの場合、データベースの台数を増やすことでシステムの性能を向上させることができます。
一方のブロックチェーンは、全てのピア(ノード)が完全に同じデータを保有しているため、このピアの数が増えたところで性能は向上しません。
ただし、ブロックチェーンにとって重要な非中央集権を実現するための分散性は高まります。
Check your achievement
Click the “Tick” button
if you understand the lesson so far.
ブロックチェーンと分散データベースは目的が異なる!?
そもそも論になりますが、分散データベースとブロックチェーンとでは使用用途が異なるため、本来は比べるべきものではないのです。
分散データベース
・負荷を分散させる
・災害に備えてデータを分散させる
・処理スピードを速くするために分散させる
ブロックチェーン
・処理権限を分散させる(恣意性を排除する)
・データの改ざんを限りなく低くするためにデータを分散させる
・時間やコストを削減するために分散させる
・あらゆる価値を取引するために分散させる
目的の異なるものを同じ評価軸で比較することはできませんし、それぞれ一長一短、目的によって使い分けるという観点が重要になってくるでしょう。
Check your achievement
Click the “Tick” button
if you understand the lesson so far.