データベース技術者によるブロックチェーンとデータベースについての覚書2022

# はじめに

ここでは、自分なりの視点で、2022年末時点でのブロックチェーンとデータベースについての覚書を整理してみたいと思います。

# Blockchain-based Database

まず、初めに、Wikipediaを見てみます。

https://en.wikipedia.org/wiki/Blockchain-based_database

まずは冒頭、

>The blockchain-based database is a combination of traditional database and distributed database where data is transacted and recorded via Database Interface(also known as Compute Interface) supported by multiple-layers of blockchains. The database itself is shared in the form of an encrypted/immutable ledger which makes the information open for everyone.

>ブロックチェーンベースのデータベースとは、従来のデータベースと分散型データベースとの組み合わせであり、そこでは、データは、ブロックチェーンの複数の層でサポートされているデータベース インターフェース(コンピュート インターフェースとも呼ばれる)を介して処理および記録されます。データベース自体は、暗号化されたイミュータブルな台帳の形で共有され、情報は全ての人に対して公開されます。

「従来のデータベースと分散型データベースとの組み合わせ」について、Wikipediaの続きの部分から見てみると...

> The idea behind the blockchain based database concept is to complement the functionality and features of SQL and NoSQL databases with blockchain properties: data immutability, integrity assurance, decentralized control, Byzantine fault tolerance and transaction traceability.

>ブロックチェーンベースのデータベースというコンセプトの背後にあるアイディアは、データの不変性、完全性保証、分散制御、ビザンチンフォールトトレランス、トランザクショントレーサビリティなどのブロックチェーンのプロパティを用いて、SQLおよびNoSQLデータベースの機能と機能を補完することです。

このようにあります。「従来のデータベースと分散型データベースとの組み合わせ」という表現は、元々「分散型データベース」という表現が、ブロックチェーン以外で成立していたことを度外視した表現なのかなと感じました。「分散型データベース」といえば、NoSQLを、それに対する「従来のデータベース」といえばRDB/SQLを想像してしまう筆者のような者には、なにやら訳の分からないキメラのようなものを連想させられましたが、これは、「従来の（SQL/RDBあるいはNoSQL）データベースと（ブロックチェーンという）分散型**テクノロジー**との組み合わせ」という意味で理解することができるかと思われます。


そこで、マーケットを見てみると、既存のデータベース（SQL/RDBあるいはNoSQL）をローカルデータベースとして利用し、ブロックチェーンを実現しているテクノロジーがいくつか存在しています。

# トップ７（のうち６つ）

そこで、ここでは以下のブログ記事に注目してみます。

https://blog.logrocket.com/top-7-blockchain-based-databases/

ここで紹介されているのは、以下の７つのデータベースです。

- BigchainDB
- Apache Cassandra
- ChainifyDB
- CovenantSQL
- Modex BCDB
- Postchain
- ProvenDB

BigchainDBは、MongoDB を利用したブロックチェーンベースのデータベースであり、アプリケーションに分散化されたブロックチェーンテクノロジーをアプリケーションから利用するために使うことができます。記事中にも、「世界で最も人気のあるブロックチェーン データベース」と書かれており、Googleの検索でも、上位に表示されています。

https://www.bigchaindb.com/

ChainifyDBは、BigchainDBは、MongoDBを利用しているのとは異なり、独自のデータベースを持たず、外部から提供されたデータベースを用いて、プロックチェーンレイヤーとの接続を行うところにあります。

https://www.chainifydb.com/

CovenantSQLは、分散型アプリを構築するためのインフラストラクチャを提供します。これは、いわばEthereumの位置付けと同等と捉えられます。CovenantSQLは、その名の通り、ブロックチェーンアプリケーション開発に、SQLサポートを提供します。

https://github.com/CovenantSQL/CovenantSQL

Modex BCDB は、複数のブロックチェーンフレームワークを使用できるという点に特徴があります。
現在、Hyperledger Sawtooth フレームワークが主に使用されており、他のフレームワークである Ethereum やHyperledger Fabric も使用できます。

https://www.modex.tech/modex-ledger-db

Postchain は、Ethereum や Hyperledger と同様のブロックチェーン フレームワークです。Postchain は、データを SQL データベースに保存します。また、Postchain のトランザクション ロジックは SQL コードで定義できます。

https://postchain-docs.readthedocs.io/en/latest/

ProvenDB はブロックチェーン対応のデータベース サービスです。内部的には、MongoDBが利用されています。

ここで、「ブロックチェーン対応のデータベース」とは何かといえば、いったんデータが入力されるとデータは不変であり、改ざんが防止されたデータベース、ということになるようです。財務記録、知的財産、法的文書、公的記録などの機密データを保存する目的で利用することができます。

https://compliancevault.readme.io/docs

# 残りの一つ（Cassandra）

トップ７中、BigchainDBに続く２番目に登場していながら、Cassandraは、その他のデータベースとは全く異なる視点から選ばれています。いわく「Cassandra には、独自のブロックチェーンベースの DB となる多くの注目すべき機能があります。」実際、Cassandra自体は、ブロックチェーンの機能を提供するわけでもなければ、逆に内部的にブロックチェーンのテクノロジーを活用しているわけでもありません。


そこで、「Cassandra」と「Blockchain」をキーワードに情報収集をしてみると、以下のようなE-BookがDataStax社から発行されていることに気がつきました(DataStax社はApache Cassandraのエンタープライズ向けディストリビューションとサポートを提供しています)。

https://www.datastax.com/jp/resources/ebook/distributed-data-for-decentralized-finance

この資料から一部引用します。なるほど、Blockchainへ直接、書き込みながら、「Exportor」を使って、検証済みのトランザクションをCassandraへ入力することで、読み込みのリクエストを肩代わりさせる、という構成が提案されているのが分かります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/176567/12f19331-3e79-5ed0-34f8-29b28cdb9c33.png)

なお、上記の図で、Astra DBとあるのは、DataStaxが提供するCassandraのマネージドサービスです。
そこで、Astra DBでの、ブロックチェーン利用について、さらに情報を求めてみたところ、以下のブログが見つかりました。

https://www.datastax.com/jp/blog/blockchain-data-without-the-pain?utm_campaign=FY21Q1_Global_accelerate_BSAcodepen&utm_source=BSAcodepen&utm_medium=display&utm_offer=events%2Faccelerate

ブログの内容自体には踏み込みませんが、そこからAstra DBの公式ドキュメントとして、クィックスタートとして、サンプルアプリが紹介されていました。

https://docs.datastax.com/en/astra-serverless/docs/block/quickstart.html

ここでは、それらの画面イメージを紹介したいと思います。

こちらは、NFTの情報を表示するWEBアプリです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/176567/15ef383e-5a8b-e812-85ca-51d5486dadd6.png)

また、こちらはイーサリアムのトランザクション情報を表示するWEBアプリです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/176567/d258a212-adb7-8fc7-f04a-ba1fe8dbe384.png)

# 最後に

本稿については、ここで筆を置きたいと思います。

ブロックチェーンというテーマに対して、データベース技術者として、今何に注目しておくべきか、という観点から、概観を整理しました。後は、より具体的な目的に対して、どこに注目すべきか、という方向性のようなものが、朧げにでも伝わったようでしたら、幸いです。自分としては、ブロックチェーンとデータベースとの関係についてウォッチしながら、また機会を見て、情報発信できればと思っています。

ここまで、お付き合いいただき、ありがとうございました。

# 補足：Astra Block (2023/2/9追記）

2022年末にBlockchain Adventカレンダーに参加した際には、Cassandraとブロックチェーンとの関わりについては、特に実装の面で実現しているものとしては、サンプルプログラムのレベルで触れることができたのみでした。

米国時間の昨日2023年2月8日に下記の発表が行われたことをきっかけとして、追記したいと思います。

https://www.datastax.com/blog/introducing-astra-block

以下は、冒頭部分からの意訳です。

>DataStax Astra Blockを使用して、リアルタイムの Ethereum ブロックチェーン データを Web3 アプリにストリーミングできるようになりました。Astra DB は、ブロックチェーン アプリケーションに最適な DBaaS です。Astraは、全世界規模の大量データを、低レイテンシ、高スループットで利用できるだけでなく、任意のクラウドを選択できる従量課金性のサーバーレスアーキテクチャを要しています。

以下は、Astra BlockのDataStax製品ページです。

https://www.datastax.com/products/astra-block

## 参考情報

その他、DataStaxから、以下のような各種情報が発信されています。

### Web3: What is It?

https://www.datastax.com/guides/what-is-web3

### Web2 vs. Web3: Explained

https://www.datastax.com/guides/web2-vs-web3-explained

### What is Web3, Blockchain, NFTs. 

https://www.datastax.com/guides/web2-vs-web3-explained


### What is Ethereum?

https://www.datastax.com/guides/what-is-ethereum

### What is Blockchain technology?

https://www.datastax.com/guides/what-is-blockchain-technology

### What is Web3.js?

https://www.datastax.com/guides/what-is-web3js


### Why Web3 Needs Real Time Data

https://thenewstack.io/why-web3-needs-a-real-time-data-layer-now-more-than-ever/

## サンプルアプリコード

紹介したサンプルアプリのコードは、以下から参照できます。

### Block Explorer

https://github.com/datastax/block-explorer