ホーム » 第4回 データスペースの一番簡単なアーキテクチャ(高水準アーキテクチャ)

第4回 データスペースの一番簡単なアーキテクチャ(高水準アーキテクチャ)

データスペースってどんな仕組みで実装できるのか?まず最初は、単純なデータ交換を技術的に考えましょう。社会的なことはややこしいので、ここは技術だけにします。

単純化します。コンピュータ上で2つのEntitiesが通信する方法は基本的に2種類しかありません。メッセージパッシング(Message Passing)と共有記憶(Shared Memory)です。メッセージ送るか変数共有するしかないわけです。通常は、共有記憶の方が抽象度が高くて扱いやすく、メッセージパッシングの方が抽象度が低くて使うのはめんちゃい。単一マシン上でも分散環境でも、抽象的にはこれと同じです。

ちょっとマクロにして考えて、データスペースをメールのようなメッセージ交換を基本モデルにしてアーキテクチャ作る方法もありそうですが、なんか使いにくそう。やっぱり、データ交換/共有する者同士が、共有するストレージがあって、そこに状態保存されている方が、わかりやすい。というか、ファイルのような静的なデータの交換と、ある程度リアルタイム性がある動的なデータ交換は、モデルが違います。基本的に共有メモリは更新通知が常に問題になるので、静的データ交換の有効、メッセージパッシング(Pub-Subもその一種)は、動的データ交換の時に有効と言ってもよいかも。

今のデータスペースは、静的データが交換/共有の中心であることは確かです。するとデータスペースも基本的なモデルは共有メモリ型かなと。すると簡単で、登場するEntityは3つ。

  1. データ交換したい主体(Stakeholders)
  2. データが格納される主体間で共有する何らかの「場」(Memory)…”Space” (?)というか、”Pool” (?)とかでもよいか
  3. 交換されるデータ(Data)

で、Stakeholderは MemoryにデータをPut()してGet()できればOK。つまり、APIはPut()とGet()が最低限あればよいでしょと。もうちょっと必要なら、CRUDになってきてCreate(), Read(), Update(), Delete()でよいでしょと。このMemoryをどうつくるかは、実装方法の話。RDBで作ってもよいし、P2Pで作ってもよいし、Federated Architectureしてもよい。

ただ、Dataspaceは単なるデータ共有空間ではないので、データ主権が一番大事と。それをこのモデル上でいうと、Update()やDelete()は、基本的にCreate()したStakeholderだけが発行できる。Read()できるStakeholderはCreate()したStakeholderが指定できる。自分のデータは自分だけが管理できる。

まあ、これがデータ主権ですな。一応、このモデルでデータ主権を数学的に定義できます、、と。

もちろんこんな簡単な仕組みでデータスペースが実装できませんが、ただ、これ以上詳しくすると、あのアーキテクチャは合ってけど、このアーキテクチャは違う、とか、違うところが出てきてしまう気がします。なので、データスペースの定義の日本語を数学的に表現すると、こんなあたりの抽象度でしかない感じ。これをデータスペースの高抽象度アーキテクチャです。

実際、現存するDataspaceのシステムをみていると、CRUDで見られるようなAPIの対称性がないのが、汚くて個人的には嫌いなところです。P2PのIPFSなどみると、こんなところがきれいなんですね。

Dataspaceのシステムは、Read()のところばかりが肥大化していて、Create()やUpdate(), Delete()とした管理部分は、抽象化せずに、なんか管理用のGUI App作ってUser Friendlyにやればよい、で終わってますね。つまり、Read()とそれ以外の操作のI/Fの抽象レベルが全然違っている。対称性とか直交性とか、そういう美意識が感じられない。そのあたりのデザインは、色々言いたいことがあります。

特に、自分が学生の時の研究テーマが分散共有メモリ(Distributed Shared Memory)なので、分散環境上にデータ共有空間を仮想的に構築することでした。データスペースにおける仮想化技術の原点のような研究です。当時、有名なものにGelernter先生のLinda言語におけるTupleSpace(1986)[1] などの仕事があり、そんなものに触れていた身としては、どうしても今の欧州系Dataspaceのシステムアーキテクチャは、根本的に趣味じゃないんですよね…とか、青臭い技術理想論も言ってる場合でもないですが。

 

あとは、ここにAccess ControlやUsage ControlとかのData Governanceをalgorithmで実装したくなるわけですが、それはまた次回。

[1] David Gelernter. 1985. Generative communication in Linda. ACM Trans. Program. Lang. Syst. 7, 1 (Jan. 1985), 80–112. DOI:https://doi.org/10.1145/2363.2433

アクセス

住所
東京都文京区本郷7-3-1
東京大学大学院情報学環
ダイワユビキタス学術研究館