「[[.NET 開発基盤部会 Wiki>http://dotnetdevelopmentinfrastructure.osscons.jp]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。
-[[戻る>DX設計のポイント]]([[IoT]]、[[ビッグデータ]]、[[BI / AI]])
--データ・パイプライン
--[[ハブ&メッセージ・サービス]]
--[[IoTシステムの共通的なアーキテクチャ>https://techinfoofmicrosofttech.osscons.jp/index.php?Microsoft%20Azure%20IoT#u9e76988]]
*目次 [#j869ced5]
#contents
*概要 [#y45c263c]
[[データからの知識発見>ビッグデータ#h8ee584d]]を行うための実装。
-データ・パイプライン...まさに配管。
-良く、DX([[IoT]]、[[ビッグデータ]]、[[AI>人工知能(AI)]])のコンテキストで語られる方
**v1 [#dea3cb9f]
取り敢えず書いてみた、最初の版。
#ref(無題.png,left,nowrap,イメージ,75%)
**v2 [#h4dcbf07]
[[Databricks>https://techinfoofmicrosofttech.osscons.jp/index.php?Azure%20Databricks]]のセミナーに影響を受けた結果を反映。
#ref(無題2.png,left,nowrap,イメージ,75%)
DXは=[[IoT]], [[ビッグデータ]]([[分散処理]]), [[AI>人工知能(AI)]]じゃねーよ。~
みたいな話があったりしましたが、まぁ、ワリと、~
=[[IoT]], [[ビッグデータ]]([[分散処理]]), [[AI>人工知能(AI)]]になってしまってます♨。~
-DXを体系的に説明する説明会向けコンテンツ。 - OSSコンソーシアム~
https://www.osscons.jp/joo6fh11o-537/
まぁ、技術マッピング中に含まれているから良いのでは?と。
**v3 [#n675af2a]
-[[Microsoft Azure IoTの参照アーキテクチャ>https://techinfoofmicrosofttech.osscons.jp/index.php?Microsoft%20Azure%20IoT]]を参考にブレークダウン。
-Path(Hot、Warm、Cold)によって、構成が変わってくる。
#ref(無題3.png,left,nowrap,イメージ,60%)
***Path(Hot、Warm、Cold) [#y0764175]
-Hot
--リアルタイム性の高い処理
---デバイスから直接、MQTTブローカに送信する。
---MQTTブローカ経由で[[ストリーミング型>#j851dde3]]に繋げる。~
・.NET for Apache Spark - MQTT Streaming • 3rd man~
https://3rdman.de/2019/08/dotnet-for-apache-spark-mqtt-streaming/~
・Spark Structured Streaming MQTT~
https://bahir.apache.org/docs/spark/current/spark-sql-streaming-mqtt/~
--認証は
---MQTTブローカ経由で行う。
---認証方式は[[コチラ>https://techinfoofmicrosofttech.osscons.jp/index.php?IoT%E9%96%A2%E9%80%A3%E3%81%AE%E9%80%9A%E4%BF%A1%E3%83%97%E3%83%AD%E3%83%88%E3%82%B3%E3%83%AB#u865d25c]]を参照。
-Warm
--[[Hot>#y0764175]]と[[Cold>#yaffd718]]の中間
---デバイス → [[エッジ>IoT Edge Computing]]から[[FaaS]]/[[CaaS>Open PaaS#x1222986]]などにデータを送信する。
---[[FaaS]]/[[CaaS>Open PaaS#x1222986]]から[[NoSQL]]などにデータを蓄積する。
---データを、適宜、[[ストリーミング型>#j851dde3]]、[[バルク型分散処理>#na5ce80f]]が取り出して実行する。
--認証は
---デバイス → [[エッジ>IoT Edge Computing]]間で認証。
---[[エッジ>IoT Edge Computing]] → [[FaaS]]/[[CaaS>Open PaaS#x1222986]]間で認証。
-Cold
--より長い間隔 (毎時または毎日) のバッチ処理
---デバイス → [[エッジ>IoT Edge Computing]]と、データを集約して、ストレージにアップロード。
---アップロードしたデータを、適宜、[[バルク型分散処理>#na5ce80f]]が取り出して実行する。
--認証は
---デバイス → [[エッジ>IoT Edge Computing]]間で認証。
---[[エッジ>IoT Edge Computing]] → ストレージ間で認証。
***[[認証について。>IoTデバイスの認証]] [#p3d2cb6e]
***監視 → 制御へ。 [#ve8c5098]
-[[効果の段階>IoT#j2e6b7e2]]の監視 → 制御の段階の進化を検討する。
-エッジ(や認証基盤)から、デバイスへの通信方法を検討する。
*詳細 [#dd909439]
**データ収集(データ転送) [#va54b85c]
***バルク型(bulk) [#na5ce80f]
[[分散(バッチ)処理>分散処理#o97a1890]]
***ストリーミング型(streaming) [#j851dde3]
[[ストリーム処理>分散処理#m55c61c3]]
**[[データレイク>#r2df6859]] → [[データマート>#bd1160ae]] [#o2e72d99]
-複雑化した[[ETLプロセス>EAI/ETL#eed58b6f]]に追加された概念。
-単なるストレージで、
--前述の[[データ収集(データ転送)>#va54b85c]]の後、
--[[分散(バッチ)処理>分散処理#o97a1890]]で、[[データマート>#bd1160ae]]に切り出される。
***[[データマート>ビジネス インテリジェンス(BI)#la758647]] [#bd1160ae]
***[[データレイク>ビジネス インテリジェンス(BI)#w2d56f91]] [#r2df6859]
**ワークフロー管理ツール [#t0d27b60]
前述の、[[データレイク → データマート>#o2e72d99]]の処理をワークフロー化する。
***データ集約プロセス [#t2d94342]
-データ検索
-データ加工
***可視化プロセス [#a8c1e7d0]
-データ可視化
**エンジニア、アナリスト [#d3d4e3ad]
***データ エンジニア [#d93e40d6]
データの設計や統合、クレンジングの仕組み、カタログの整備。
***データベース エンジニア [#d93e40d6]
データ基盤のインフラ・アーキテクチャを設計し、安定して運用する。
***データ アナリスト [#za051a89]
データから価値ある情報を引き出す。
*参考 [#e3070f48]
**Qiita [#q52e9281]
-分散ストリーム処理エンジンあれこれ~
https://qiita.com/takanorig/items/aaa4f116d1564ec20dd3
-急成長する《現場》の、データエンジニアというお仕事。~
https://qiita.com/e-a-st/items/42c03c61e4003c3b3ee5
**[[NoSQLプロダクトのタイプ>NoSQL#rf480bb4]] [#c0ac8f8b]
ビッグデータ界隈のシステムにおいて、
-事例の理解には、先ず、ココの理解が重要になりそう。
-「"こう言う業務"だから、"こう言うプロダクト"が選定されているのか。」的な。
--データの利用目的によってデータストアを使い分けることが多い。
--これは、データベースの種類によって得意不得意があるため。
---RDB:構造化されたデータをビジネス要件に矛盾なく永続化する
---[[DWH>#w72798e4]]:大規模なデータの蓄積・分析、大規模なユースケースには不向き。
---[[NoSQL]]:[[Volume & Velocity>NoSQL#mfacfc80]]、[[Variety>NoSQL#h5276ccd]]に対応しているが、複雑なクエリやソートなどが苦手。
***[[DWH>ビジネス インテリジェンス(BI)#f38a28c0]]とは異なる。 [#w72798e4]
[[DWH>ビジネス インテリジェンス(BI)#f38a28c0]]は、業務データを長期的に蓄積し管理したもの(なので、バッチ的アーキテクチャである)。
***[[NoSQL]]はイベント駆動型である。 [#xb7334c2]
[[NoSQL]]は、業務データではなく、様々なデータソースから発生するデータを対象にする。
**[[スタック&コラボレーション]]的例 [#w8f6875a]
***[[NiFi>Apache NiFi]], [[Kafka>Apache Kafka]], [[Storm>Apache Storm]] [#tb21f673]
-[[HDFハンズオン 0: NiFi, Kafka, Stormを組み合わせて利用する>Apache NiFi#y8d62984]]
-Qiita
--Apache Kafka/Storm連携を試してみる~
https://qiita.com/ttsubo/items/4521cd31ce061dc6529f
--Nifi + Kafka + Strom を用いたデータ処理ハンズオン
---(1) Nifiの基礎部分~
https://qiita.com/ryojsb/items/f03267f5899277e421f8
---(2) Kafkaへのメッセージ送信~
https://qiita.com/ryojsb/items/a7a667240d572640e205
***[[Elastic Stack>Elasticsearch#r521f91b]] [#oe167ad0]
[[Elastic Stack>#oe167ad0]]は、1つの完成された事例的。
***[[Databricksのレイクハウス>https://techinfoofmicrosofttech.osscons.jp/index.php?Azure%20Databricks#j83930a1]] [#k41dde1e]
[[Apache Spark]]を使用し、
-[[NoSQL>#xb7334c2]]的なイベント駆動処理から
-バッチ処理による[[DWH>#w72798e4]]作成
までをこなす。