「データ指向アプリケーションデザイン」第3部 用語集


## 第10章

### ビルディングブロック(building blocks)

構成要素

### イレージャコーディング(Erasure Coding)

> Erasure Coding（発音はイレイシャーコーディングが近いようです。以下ECと略します）はレプリケーションと並ぶ冗長化の手法です。レプリケーションと比較すると少ない冗長性で同等かそれ以上の耐障害性を提供します。Google File Systemの後継であるColossus, WAS（Window Azure Storage）, Ceph, QFSなどでも採用されています。

> ECでは元のファイルから複数のデータブロックとパリティブロックを生成します。あるデータブロックが消失しても、残りの正常なデータブロックとパリティブロックから元データを復元できます。データブロックからパリティブロックを作成することをエンコード、パリティブロックを使ってデータブロックを復元することをデコードと言います。ECの標準的な符号化であるリード・ソロモン符号（Reed-Solomon Coding）は、数学の補間多項式を応用したアルゴリズムを利用しています。

https://techblog.yahoo.co.jp/infrastructure/hdfs_erasure_coding/

### ストレージアプライアンス

> Storage appliance, provides storage functionality for multiple attached systems using the transparent local storage area networks paradigm

ストレージアプライアンス。透過的なローカルストレージエリアネットワークパラダイムを使用して、複数の接続されたシステムにストレージ機能を提供します

https://en.wikipedia.org/wiki/Appliance

### コールバック関数(Callback function)

> 他の関数に引数として渡す関数のこと

https://qiita.com/pocket8137/items/df5afba90b51e90587a5

### プリエンプション(preemption)

> プリエンプション（英: preemption）は、マルチタスクのコンピュータシステムが実行中のタスクを一時的に中断する動作であり、基本的にそのタスク自体の協力は不要で、後でそのタスクを再実行するという意味も含む。このような動作をコンテキストスイッチと呼ぶ。通常、保護されたタスクか、システムの一部であるプリエンプティブスケジューラが行う。それらは、システム内の他のタスクに割り込み、後でそれらタスクを再開させることができる。「プリエンプト」とは「先取りする、差し替える」の意。

https://ja.wikipedia.org/wiki/プリエンプション

### ブロードキャストハッシュ結合(Broadcast Hash Join)

> A broadcast hash join pushes one of the RDDs (the smaller one) to each of the worker nodes. Then it does a map-side combine with each partition of the larger RDD. If one of your RDDs can fit in memory or can be made to fit in memory it is always beneficial to do a broadcast hash join, since it doesn’t require a shuffle.

https://www.oreilly.com/library/view/high-performance-spark/9781491943199/ch04.html

> ブロードキャストとは、放送（する）という意味の英単語で、通信・ネットワークの分野ではネットワークに参加するすべての機器に同時に信号やデータを送信することを意味する。

http://e-words.jp/w/ブロードキャスト.html

## 第11章

### イベントソーシング(Event Sourcing)

> ・イベントソーシングはアプリケーション開発における概念
> ・ステートソーシングが対立概念
> ・イベントを中心としたデータの取り扱いを示す

https://blog.framinal.life/entry/2019/08/12/213359

## 第12章

### ラムダアーキテクチャ

> 　同氏は、“3V”の増加に対応できる構造の代表例として「ラムダアーキテクチャ」を挙げた。これは、バッチ処理で大量のデータを分析する「バッチレイヤー」、いま起きていることをリアルタイム処理で分析する「スピードレイヤー」、そして処理結果を提供する「サービスレイヤー」――の3層でデータを処理する構造で、拡張性と保守性の高さが特徴だという。

> 　「ラムダアーキテクチャは、バッチレイヤーに生データを常に保管し、サービスレイヤーでは加工結果のみを表示することで、障害が発生した場合でも再計算が可能になるメリットもある。これに近づく構造にすることが、“3V”に対応しうる処理能力を手に入れる上で重要だ」（永田氏）

https://www.itmedia.co.jp/news/articles/1910/10/news001.html

### 差分データフロー(Differential Dataflow)

https://github.com/timelydataflow/differential-dataflow/blob/master/differentialdataflow.pdf

### オブザーバーパターン(Observer Pattern)

> Observer パターン（オブザーバ・パターン）とは、プログラム内のオブジェクトのイベント( 事象 )を他のオブジェクトへ通知する処理で使われるデザインパターンの一種。
> 通知するオブジェクト側が、通知されるオブジェクト側に観察（英: observe）される形になる事から、こう呼ばれる。
> 出版-購読型モデルとも呼ばれる。暗黙的呼び出しの原則と関係が深い。
> 分散イベント処理システムの実装にも使われる。言語によっては、このパターンで扱われる問題は言語が持つイベント処理構文で処理される。

https://ja.wikipedia.org/wiki/Observer_パターン

### 導出データセット



### MPPデータベース(Massively Parallel Processing DataBase)

> Simply put, an MPP database is a type of database or data warehouse where the data and processing power are split up among several different nodes (servers), with one leader node and one or many compute nodes. In MPP, the leader (you) would be called the leader node – you’re the telling all the other people what to do and sorting the final tally. The library employees, your helpers, would be called compute nodes – they’re dealing with all the data, running the queries and counting up the words. MPP databases can scale horizontally by adding more compute resources (nodes), rather than having to worry about upgrading to more and more expensive individual servers (scaling vertically). Adding more nodes to a cluster allows the data and processing to be spread across more machines, which means the query will be completed sooner.

簡単に言うと、MPPデータベースは、データベースとデータウェアハウスの一種であり、データと処理能力は、1つのリーダーノードと1つまたは複数の計算ノードを持ついくつかの異なるノード（サーバー）に分割されます。 MPPでは、リーダー（あなた）はリーダーノードと呼ばれます。あなたは他のすべての人々に何をすべきかを伝え、最終的な集計をソートします。ヘルパーである図書館の従業員は、計算ノードと呼ばれます–彼らはすべてのデータを処理し、クエリを実行し、単語を数え上げます。 MPPデータベースは、より高価な個別サーバーへのアップグレード（垂直方向のスケーリング）を心配する必要がなく、コンピューティングリソース（ノード）を追加することで水平方向にスケーリングできます。クラスタにノードを追加すると、データと処理をより多くのマシンに分散できるようになります。つまり、クエリはより早く完了します。

https://www.flydata.com/blog/introduction-to-massively-parallel-processing/

### スヌープ(snoop)

> Snoop software is a command line packet analyzer included in the Solaris Operating System created by Sun Microsystems. Its source code is now available through the OpenSolaris project.

Snoopソフトウェアは、Sun Microsystemsが作成したSolarisオペレーティングシステムに含まれているコマンドラインパケットアナライザーです。そのソースコードは、OpenSolarisプロジェクトから入手できます。

https://en.wikipedia.org/wiki/Snoop_(software)

### XAトランザクション

> XAトランザクションとは、分散トランザクション（複数のRDBMSにおいてアトミックな処理を行う）のための規格であり、二相コミットを利用したロジックを実装しているのが特徴的である。二相コミットでは、COMMITの処理を分割して、PREPAREフェーズとCOMMITフェーズに分けている。PREPAREフェーズのトランザクションは、データベースサーバがクラッシュしても残っており、エラーハンドリング時には必要に応じてCOMMITまたはROLLBACKをすればいいわけである。

> XAトランザクションは単体でも利用することができるが、分散トランザクションとしてトランザクションマネージャを通じて利用するのが一般的である。（二相コミットを自分で実装するのは極めて面倒である。）J2EEを利用した開発であれば、JTA（Java Transaction API）を利用することができる。

http://nippondanji.blogspot.com/2009/02/blog-post_23.html

### ロウハンマー(rowhammer)

> ロウハンマー (row hammer, rowhammer) は、ダイナミックRAM (DRAM) に起きる意図的でない副作用で、複数のメモリセルから電荷が漏れ出し、メモリセル間で電気的な相互作用が起きるために、元のメモリアドレスで指定されていない近くの行の内容が漏れだす可能性があるという現象（行間干渉）である。このようなメモリセル間の分離の回避は近年のDRAMのメモリセルの密度の高さに起因しており、同じ行を何回もすばやく有効にするよう特別に細工されたメモリアクセスパターンによって引き起こされることがある。

https://ja.wikipedia.org/wiki/ロウハンマー

### マークルツリー(Merkle trees)

> マークルツリーは、公開鍵暗号の開発者の一人であるラルフ・マークルによって1979年に発明されました。マークルツリーとは、ファイルのような大きなデータを要約した結果を格納するツリー構造の一種です。主に大きなデータの要約と検証を行う際に使用されます。その計算にはハッシュ関数が利用されていることから、ハッシュ木とも呼ばれています。

https://gaiax-blockchain.com/merkle-tree

### データブローカー(data brokers)

> 消費者の生データを所有し、それらのデータを基にビジネスを展開する企業のことを、特にアメリカを中心にデータブローカーと呼ぶ。日本では名簿屋として知られており、2014年7月に発覚したベネッセコーポレーションの大規模個人情報が名簿屋に流出したことで、日本でのデータブローカーの実態に関心が高まった。ただし、アメリカでは日本の名簿屋とは異なり、年商約11億ドルのAcxiom社を始め複数の巨大企業が存在しており、多くの消費者にも知られている企業が多い。事業内容も、マーケティング目的だけでなく、不正検知のためのリスク軽減ビジネス等を提供し、金融機関の本人確認に用いられているなど、社会において欠かせない事業の一つとして位置づけられている。しかしながら、アメリカにおいても日本同様、これらデータブローカーが消費者の個人情報などを、消費者が認識していない形で利用する事例がでてきている点が現在問題視されている。アメリカ連邦取引委員会は、データブローカーのビジネス実態の透明性を向上するよう提言し、現在、アメリカ議会において透明性を高める仕組みの導入を義務づける法案が提出され、審議されているところである。

https://imidas.jp/genre/detail/A-124-0476.html