SlideShare a Scribd company logo
Qlik Replicateで
Amazon Kinesis Data Streamsを
ターゲットとして使用する
クリックテック・ジャパン株式会社
2
Qlik Replicateの概要
3
Qlik Replicateの「一般的な」アーキテクチャ
Qlik
Replicate
メインフレーム
ファイル
データウェアハウス
RDBMS
Hadoop
メインフレーム
ファイル
データウェアハウス
RDBMS
Hadoop
フルロード
CDC
フルロード
CDCを適用
バッチ バッチ
クラウド
クラウド
オンプレミス オンプレミス
永続ストア
• 多種多様なDB、DWH、ビッグデータプラットフォーム間でデータレプリケーション処理を簡単な操作で行うための製品
• エージェントレスでデータソースへの負荷や影響を最小限にしながら、高速に異種システム間でデータ転送を行える
4
ターゲットとしてのストリーミング環境 – Amazon Kinesisなど
Qlik
Replicate
メインフレーム
ファイル
データウェアハウス
RDBMS
Hadoop
フルロード
CDC
フルロードとCDCの
レコードデータを
送信 クラウド
クラウド
オンプレミス オンプレミス
永続ストア
• ターゲットとして、Amazon Kinesis Data Streamsなどのストリーミングアーキテクチャのシステムをサポート
• 実稼働データベースの更新をライブの変更データストリームに変換する、シンプルで汎用的なリアルタイムソリューション
5
Amazon Kinesis Data Streams
の概要
6
Amazon Kinesis Data Streamsのプロデュース&コンシューム
用語
 Producer - Kinesisクライアント。Stream(Shard)にデータレコードを送信
 Consumer – Kinesisクライアント。Stream(Shard)からデータレコードを受信
 Stream – ストリーム。複数のShardで構成も可能(1つのShardあたりの送受信の最大スループットが上限設定されている)
 Shard –データレコードを処理。永続化して一定期間保持
https://docs.aws.amazon.com/streams/latest/dev/key-concepts.html
7
Qlik ReplicateのターゲットとしてのAmazon Kinesis
 Qlik Replicate は、Amazon Kinesis Data Streams の Producer
 Kinesisに接続してデータレコードをStreamに送信
 各データレコードは、Full LoadとApply Changes(CDC)の「1行分のデータ」を表す(サイズには上限あり)
• データレコードの形式は、JSON(UTF-8)またはAvro
• データレコードとともに、PartitionKey(スキーマ名+テーブル名または主キーの値)も付加できる(オプション)
• 処理するShardを決めるキー
• データレコードは、Kinesis内ではBase64でエンコードされて処理される
 Full Load および CDC をサポート(ただしStore Changesモードはサポート無し)
8
Amazon Kinesis Data Streamsをセットアップする
 AWS マネジメントコンソールの「IAM」で必要に応じてユーザーを作成
• アクセスの種類で「プログラムによるアクセス」を有効
• アクセス許可の設定で、以下のKinesisのアクションへの許可をアタッチ、または単純に「既存のAmazonKinesisAnalyticsFullAccessポリシー」をアタッチ
• https://help.qlik.com/en-US/replicate/May2021/Content/Replicate/Main/Amazon%20Kinesis%20Streams/amazonkinesis_prereq.htm
• Streamのサーバーのデータ暗号化が必要なら、追加で上記のKMSのアクションも許可するポリシーをアタッチ
• ユーザーの認証情報で、アクセスキーIDとシークレットキーを作成しておく
 AWS マネジメントコンソールの「Amazon Kinesis」の「データストリーム」でStreamを予め作成
• Qlik Replicateが各データレコードの送信先として使用するStream(単一または複数個)を、必要なShard数(例:1)で作成
• Qlik Replicateがエラーの送信先として使用するStreamである attrep_apply_exceptions も作成
• もちろん、AWS コマンドラインインターフェイス(CLI)を使用してStreamを作成することも可能
• $>aws configure
• $>aws kinesis create-stream --stream-name <name> --shard-count 1
 AWS CLIなどでStreamにアクセスしてみる
• $>aws kinesis list-streams
• $>aws kinesis list-shards --stream-name <name>
• $>aws kinesis get-shard-iterator --stream-name <name> --shard-id <shardId> --shard-iterator-type TRIM_HORIZON
• $>aws kinesis get-records --shard-iterator ...
9
Qlik ReplicateからAmazon Kinesis
そしてQlik Senseへ
10
ターゲットのデータソースとしてKinesisを設定
 Access Details – Kinesisのリージョンやアクセスするユーザーのキーを指定
• AWS(IAM)のユーザーには、必要なアクションなどへの許可を有効にしておく
 送信するデータレコード内のDataのFormatを設定
 送信先のStreamを設定
• 単一のStream か 1テーブルごとに1つのStream(’schema.tablename’形式)
• 送信先Shard振り分け用の PartitionKey の有無
• PartitionKeyを使う場合の値(主キー値 か ’schema+tablename’形式)
• 処理中のエラーは、attrep_apply_exceptionsというStreamに送信される
 データレコード内のData(Base64デコード後)の構造を示すメタデータを付けるか否か
• 付ける場合はそれを送信するStreamを指定
 テーブルのTransformationで以下の名前のカラムを追加して、Stream、PartitionKeyの
値をそれぞれオーバーライド設定可能(Shardの指定は無し)
• $stream、$key
 Advancedオプションとして、Webプロキシサーバーの指定も可能
11
サポートされない機能(制限)
• https://help.qlik.com/en-
US/replicate/May2021/Content/Replicate/Main/Amazon%20Kinesis%20Streams/limitations_amazonkinesis.htm
• 無制限サイズのLOBは非サポート。ソーステーブルからLOBカラムをレプリケートする場合は「Allow unlimited LOB size」オプションは選択しない
• 「Batch optimized apply」モードはサポートされない。このモードが設定されている場合、タスクは自動的に「Transactional apply」モードに切り
替わり、警告を出力
• 「Store Changes」モードには対応しない
• KinesisのStream名として使用できる文字は英字 (大文字と小文字)、数字、アンダースコア、ハイフン、ピリオドのみ
• ソーステーブルの名前にサポートされない文字が含まれる場合、タスクを開始する前に名前を修正するか「Global Transformation」を定義する必要あり
• カラム名は、[A-Za-z_](アルファベットまたはアンダースコア)で始まり、[A-Za-z0-9_](アルファベット、数字またはアンダースコア)が続く必要あり
• ソースのカラム名がこのルールに従っていない場合は、「transformation」を使用してカラム名を変更する必要あり
• Apply Changesの「Ignore ALTER」設定は、ソースデータタイプの変更やテーブル名の変更には対応しない
• 「Target Table Preparation」の「Drop and Create table」オプションはサポートされない
• 「Target Table Preparation」の「Truncate before loading」オプションはサポートされない
• 「DDL History」および「Change Data Partitioning Control Table」はサポートされない
• DDL変更(テーブルの削除または名前の変更)はサポートされない
12
送受信されるデータレコード – DataがJSONの例(Base64)
 データレコード内のDataの値はBase64でエンコードされた状態で送受信される
タスク
MySQLKinesis
Streamに送信され、aws kinesis get-records --shard-iterator …コマンドで受信して表示したデータレコードの例
・・・
• MySQLのsales.employeesテーブルのEmployeeID、LastName、FirstNameの3つのカラムだけを処理
• Full Loadした後、MySQLクライアントで何かの行を更新(UPDATE)した場合
• PartitionKeyは’schema+tablename’形式
13
送受信されるデータレコード – DataがJSONの例(Base64)
operationの値は
 REFRESH - Full Load
 UPDATE, DELETE, INSERT - Apply Changes(CDC)
タスク
MySQLKinesis
受信したデータレコード内のDataの値(Base64エンコード)を試しにデコードしてみた例
・・・
• データレコード内のDataの値はBase64でエンコードされた状態で送受信される
• プロデューサやコンシューマで使用するKinesisクライアントライブラリでBase64のエンコード・デコードを処理してくれることが多い
• AWS CLIのget-recordsコマンドはKinesisから受信したデータレコードをそのまま出力
14
KinesisのStreamをコンシュームするクライアントの例 - その1
 Pythonを利用して、KinesisのStreamを受信し続ける
• AWS SDK for Python(Boto3) (https://github.com/boto/boto3)を利用。認証にはAWS CLIが生成する「~/.aws/credentials」を参照
 ソースのsales.employeesテーブルのFull LoadとApply Changes(CDC)のデータをCSVファイルに継続的に追記
• fulload.csv, changes.csv Qlik Replicate
RDBMS ファイル
15
KinesisのStreamをコンシュームするクライアントの例 - その1
 Qlik Sense(QlikView)でCSVファイルをロードする
• 通常のリロード
• Merge Onlyのリロード
Qlik Replicate
RDBMS ファイル
16
KinesisのStreamをコンシュームするクライアントの例 - その2
 Pythonを利用して、KinesisのStreamを受信し続ける
• AWS SDK for Python(Boto3) (https://github.com/boto/boto3)を利用。認証にはAWS CLIが生成する「~/.aws/credentials」を参照
 ソースのsales.employeesテーブルのFull LoadとApply Changes(CDC)のデータを継続的にMySQLのテーブルへINSERT(autocommit=true)
• fullloadテーブル、changesテーブル
• MySQLへのアクセスには、mysql-connector-pythonパッケージを利用
Qlik Replicate
RDBMS RDBMS
17
KinesisのStreamをコンシュームするクライアントの例 - その2
Qlik Replicate
RDBMS RDBMS
 Qlik Sense(QlikView)でテーブルをロードする
• 通常のリロード
• Merge Onlyのリロード
18
Tips: 送受信されるメッセージの構造
• 受信するレコードデータのメッセージのメタデータやスキーマなども利用可能
• 受信するコンシューマを実装する際に考慮が必要
• Replicate Envelopeとは?
https://help.qlik.com/en-
US/replicate/May2021/Content/Replicate/Main/Amazon%20Kinesis%20Streams/attunity_envelope_amazonkinesis.htm
• メッセージは、Replicate Envelopeと呼ばれるメッセージスキーマ用データによって包含されるエンドポイント設定もあり
• messageSchemaIdフィールド(null またはID文字列) - 別の場所で定義されたメッセージスキーマへの参照ID。コンシューマは、別途送信される
MetadataメッセージからIDを使って検索する必要あり
• messageSchemaフィールド(null または 文字列) - Avroメッセージ用のAvro JSON スキーマ
www.qlik.com/sap

More Related Content

PPTX
Qlik ReplicateでApache Kafkaをターゲットとして使用する
PPTX
Amazon RDS for SQL Serverのソースとしての利用
PPTX
MySQLのソース・ターゲットエンドポイントとしての利用
PPTX
Amazon Redshiftのターゲットエンドポイントとしての利用
PDF
TECHTALK 20200923 Qlik Sense+Qlik NPrinting でセルフサービスBIから定型帳票の配信までをカバー
PPTX
Microsoft Azure SQLデータベースのターゲットエンドポイントとしての利用
PPTX
Qlik TECH TALK 20210706 SAPデータ分析を加速するQlikのアクセレレーターパッケージご紹介
PPTX
Snowflake on Azureのターゲットエンドポイントとしての利用
Qlik ReplicateでApache Kafkaをターゲットとして使用する
Amazon RDS for SQL Serverのソースとしての利用
MySQLのソース・ターゲットエンドポイントとしての利用
Amazon Redshiftのターゲットエンドポイントとしての利用
TECHTALK 20200923 Qlik Sense+Qlik NPrinting でセルフサービスBIから定型帳票の配信までをカバー
Microsoft Azure SQLデータベースのターゲットエンドポイントとしての利用
Qlik TECH TALK 20210706 SAPデータ分析を加速するQlikのアクセレレーターパッケージご紹介
Snowflake on Azureのターゲットエンドポイントとしての利用

What's hot (20)

PPTX
Google Cloud Storageの ターゲットエンドポイント としての利用
PPTX
オンライン技術勉強会 20201216 QSEoWサーバー管理者向けトレーニング_2
PPTX
Qlik TechFest C-5 Qlikエンジンのサーバーサイド拡張(SSE)の 基礎から実装まで
PPTX
TECH TALK 2021-11-30 新しいハイブリッドアナリティクス「Qlik Forts」の紹介
PPTX
Microsoft Azure SQLマネージド インスタンスのソースとしての利用
PPTX
Salesforceのソースエンドポイントとしての利用
PPTX
SAP Application(DB)のソースエンドポイントとしての利用
PPTX
Azure Synapse Analyticsのターゲットエンドポイントとしての利用
PPTX
Oracleのソース・ターゲットエンドポイントとしての利用
PPTX
TECHTALK 20210218 Qlikデータ統合製品によるSAPデータのリアルタイムDWHの実現
PDF
TECHTALK 20201020 Qlik DataTransferによるクラウド版Qlik Senseへのデータ転送・更新の自動化
PPTX
IBM DB2 for zOSのソースエンドポイントとしての利用
PPTX
TECH TALK 2021/08/10 一歩進んだQlikアプリの開発~Qlik専用QVDファイルでシステムの効率アップ
PPTX
SAP Extractorのソースエンドポイントとしての利用
PPTX
スクリプト実行可能なサーバーサイド拡張(SSE)の実装例とその応用 - Node.js編
PPTX
TECH TALK 20210323 Qlik Sense のエンタープライズ展開 マルチノードサイトの実現方法
PPTX
Amazon EMRをターゲットエンドポイントとして使用する
PPTX
20210907 Qlik Tech Talk Snowflake with Qlik Best Practices
PPTX
SAP Applicationのソース・エンドポイントとしての利用
PPTX
Snowflake on AWSのターゲットエンドポイントとしての利用
Google Cloud Storageの ターゲットエンドポイント としての利用
オンライン技術勉強会 20201216 QSEoWサーバー管理者向けトレーニング_2
Qlik TechFest C-5 Qlikエンジンのサーバーサイド拡張(SSE)の 基礎から実装まで
TECH TALK 2021-11-30 新しいハイブリッドアナリティクス「Qlik Forts」の紹介
Microsoft Azure SQLマネージド インスタンスのソースとしての利用
Salesforceのソースエンドポイントとしての利用
SAP Application(DB)のソースエンドポイントとしての利用
Azure Synapse Analyticsのターゲットエンドポイントとしての利用
Oracleのソース・ターゲットエンドポイントとしての利用
TECHTALK 20210218 Qlikデータ統合製品によるSAPデータのリアルタイムDWHの実現
TECHTALK 20201020 Qlik DataTransferによるクラウド版Qlik Senseへのデータ転送・更新の自動化
IBM DB2 for zOSのソースエンドポイントとしての利用
TECH TALK 2021/08/10 一歩進んだQlikアプリの開発~Qlik専用QVDファイルでシステムの効率アップ
SAP Extractorのソースエンドポイントとしての利用
スクリプト実行可能なサーバーサイド拡張(SSE)の実装例とその応用 - Node.js編
TECH TALK 20210323 Qlik Sense のエンタープライズ展開 マルチノードサイトの実現方法
Amazon EMRをターゲットエンドポイントとして使用する
20210907 Qlik Tech Talk Snowflake with Qlik Best Practices
SAP Applicationのソース・エンドポイントとしての利用
Snowflake on AWSのターゲットエンドポイントとしての利用
Ad

Similar to Qlik ReplicateでAmazon Kinesis Data Streamsをターゲットとして使用する (20)

PDF
AWS Black Belt Online Seminar 2017 Amazon Kinesis
PDF
Amazon kinesisで広がるリアルタイムデータプロセッシングとその未来
PDF
Spark Streaming + Amazon Kinesis
PDF
jaws-ug kansai-special_kinesis_20150207
PDF
AWS Black Belt Online Seminar 2016 Amazon Kinesis
PDF
Amazon Kinesis Familyを活用したストリームデータ処理
PDF
Kinesis Analyticsの適用できない用途と、Kinesis Firehoseの苦労話
PDF
Amazon Kinesis Analytics によるストリーミングデータのリアルタイム分析
PDF
[AWS re:invent 2013 Report] Amazon Kinesis
PDF
Serverless analytics on aws
PDF
AWS Black Belt Tech シリーズ 2015 - Amazon Kinesis
PDF
Big DataとContainerとStream - AWSでのクラスタ構成とストリーム処理 -
PDF
20140620 dbts osaka_redshift_v1.0_slideshare
PDF
Kinesis3 notes
PDF
Pydata Amazon Kinesisのご紹介
PDF
Pydata Amazon Kinesisのご紹介
PPTX
Stream processing on AWS
PDF
Androidを中心に紐解くIoT
PDF
Amazon Kinesis はじめました。
PDF
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
AWS Black Belt Online Seminar 2017 Amazon Kinesis
Amazon kinesisで広がるリアルタイムデータプロセッシングとその未来
Spark Streaming + Amazon Kinesis
jaws-ug kansai-special_kinesis_20150207
AWS Black Belt Online Seminar 2016 Amazon Kinesis
Amazon Kinesis Familyを活用したストリームデータ処理
Kinesis Analyticsの適用できない用途と、Kinesis Firehoseの苦労話
Amazon Kinesis Analytics によるストリーミングデータのリアルタイム分析
[AWS re:invent 2013 Report] Amazon Kinesis
Serverless analytics on aws
AWS Black Belt Tech シリーズ 2015 - Amazon Kinesis
Big DataとContainerとStream - AWSでのクラスタ構成とストリーム処理 -
20140620 dbts osaka_redshift_v1.0_slideshare
Kinesis3 notes
Pydata Amazon Kinesisのご紹介
Pydata Amazon Kinesisのご紹介
Stream processing on AWS
Androidを中心に紐解くIoT
Amazon Kinesis はじめました。
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
Ad

More from QlikPresalesJapan (20)

PDF
Qlik TECH TALK セミナー:What's New In Qlik ~ 2025年7月リリース最新機能のご紹介
PPTX
【Qlik 医療データ活用勉強会】第50回 日本医療マネジメント学会参加報告、DPCデータの活用等
PPTX
20250729_TechTalk_QlikTalendCloud_データ品質とデータガバナンス
PDF
20250722_TECH TALK 事例発表 Qlikを活用したSAPデータ活用の事例紹介
PDF
20250722_TECH TALK 事例発表 データ活用で未来を拓く!AI/機械学習が導くビジネス変革事例
PPTX
Powering Performance: メルセデス・ベンツにおけるDatabricksとQlikのリアルなユースケース
PPTX
Qlik Cloud Analytics HTMLによるレポートテンプレートの作成方法
PPTX
Snowflakeでキーペア認証を行う ~ Talend Studio, Qlik Cloud, Qlik Replicate ~
PPTX
Qlikデータ統合・品質関連機能を完全おさらい! Qlik Talend Cloudの概要紹介
PPTX
Qlik TECH TALK セミナー:What's New In Qlik ~ 2025年6月リリース最新機能のご紹介 ~
PDF
Qlik Cloud Analyticsの機能を全部知ってますか? Qlik Cloud Analyticsの機能概要紹介
PDF
Qlik TECH TALK セミナー:What's New In Qlik ~ 2025年5月リリース最新機能のご紹介
PPTX
【Qlik 医療データ活用勉強会】DPC機能評価係数Ⅱ(2025年度)の内訳データの分析
PPTX
Qlik TECH TALK セミナー:Qlik Talend CloudのDatabricksデータ連携ベストプラクティス
PPTX
Qlik Talend CloudのSnowflakeデータ連携ベストプラクティス
PPTX
【無料ハンズオンセミナー】 20250513_Qlik Talend Cloud と Snowflake による最新のデータ統合と変換の実践.pptx
PPTX
Qlik TECH TALK セミナー:What's New In Qlik ~ 2025年4月リリース最新機能のご紹介 ~
PPTX
【Qlik 医療データ活用勉強会】令和5年度DPC「退院患者調査」データの活用(過年度と比較した二次医療圏の変化)
PPTX
2025-04-22 Qlik Tips QTC パイプラインのGitHub連携
PPTX
QlikTips: Qlik Cloud REST APIでユーザー登録(Node.js)
Qlik TECH TALK セミナー:What's New In Qlik ~ 2025年7月リリース最新機能のご紹介
【Qlik 医療データ活用勉強会】第50回 日本医療マネジメント学会参加報告、DPCデータの活用等
20250729_TechTalk_QlikTalendCloud_データ品質とデータガバナンス
20250722_TECH TALK 事例発表 Qlikを活用したSAPデータ活用の事例紹介
20250722_TECH TALK 事例発表 データ活用で未来を拓く!AI/機械学習が導くビジネス変革事例
Powering Performance: メルセデス・ベンツにおけるDatabricksとQlikのリアルなユースケース
Qlik Cloud Analytics HTMLによるレポートテンプレートの作成方法
Snowflakeでキーペア認証を行う ~ Talend Studio, Qlik Cloud, Qlik Replicate ~
Qlikデータ統合・品質関連機能を完全おさらい! Qlik Talend Cloudの概要紹介
Qlik TECH TALK セミナー:What's New In Qlik ~ 2025年6月リリース最新機能のご紹介 ~
Qlik Cloud Analyticsの機能を全部知ってますか? Qlik Cloud Analyticsの機能概要紹介
Qlik TECH TALK セミナー:What's New In Qlik ~ 2025年5月リリース最新機能のご紹介
【Qlik 医療データ活用勉強会】DPC機能評価係数Ⅱ(2025年度)の内訳データの分析
Qlik TECH TALK セミナー:Qlik Talend CloudのDatabricksデータ連携ベストプラクティス
Qlik Talend CloudのSnowflakeデータ連携ベストプラクティス
【無料ハンズオンセミナー】 20250513_Qlik Talend Cloud と Snowflake による最新のデータ統合と変換の実践.pptx
Qlik TECH TALK セミナー:What's New In Qlik ~ 2025年4月リリース最新機能のご紹介 ~
【Qlik 医療データ活用勉強会】令和5年度DPC「退院患者調査」データの活用(過年度と比較した二次医療圏の変化)
2025-04-22 Qlik Tips QTC パイプラインのGitHub連携
QlikTips: Qlik Cloud REST APIでユーザー登録(Node.js)

Qlik ReplicateでAmazon Kinesis Data Streamsをターゲットとして使用する

  • 1. Qlik Replicateで Amazon Kinesis Data Streamsを ターゲットとして使用する クリックテック・ジャパン株式会社
  • 3. 3 Qlik Replicateの「一般的な」アーキテクチャ Qlik Replicate メインフレーム ファイル データウェアハウス RDBMS Hadoop メインフレーム ファイル データウェアハウス RDBMS Hadoop フルロード CDC フルロード CDCを適用 バッチ バッチ クラウド クラウド オンプレミス オンプレミス 永続ストア • 多種多様なDB、DWH、ビッグデータプラットフォーム間でデータレプリケーション処理を簡単な操作で行うための製品 • エージェントレスでデータソースへの負荷や影響を最小限にしながら、高速に異種システム間でデータ転送を行える
  • 4. 4 ターゲットとしてのストリーミング環境 – Amazon Kinesisなど Qlik Replicate メインフレーム ファイル データウェアハウス RDBMS Hadoop フルロード CDC フルロードとCDCの レコードデータを 送信 クラウド クラウド オンプレミス オンプレミス 永続ストア • ターゲットとして、Amazon Kinesis Data Streamsなどのストリーミングアーキテクチャのシステムをサポート • 実稼働データベースの更新をライブの変更データストリームに変換する、シンプルで汎用的なリアルタイムソリューション
  • 5. 5 Amazon Kinesis Data Streams の概要
  • 6. 6 Amazon Kinesis Data Streamsのプロデュース&コンシューム 用語  Producer - Kinesisクライアント。Stream(Shard)にデータレコードを送信  Consumer – Kinesisクライアント。Stream(Shard)からデータレコードを受信  Stream – ストリーム。複数のShardで構成も可能(1つのShardあたりの送受信の最大スループットが上限設定されている)  Shard –データレコードを処理。永続化して一定期間保持 https://docs.aws.amazon.com/streams/latest/dev/key-concepts.html
  • 7. 7 Qlik ReplicateのターゲットとしてのAmazon Kinesis  Qlik Replicate は、Amazon Kinesis Data Streams の Producer  Kinesisに接続してデータレコードをStreamに送信  各データレコードは、Full LoadとApply Changes(CDC)の「1行分のデータ」を表す(サイズには上限あり) • データレコードの形式は、JSON(UTF-8)またはAvro • データレコードとともに、PartitionKey(スキーマ名+テーブル名または主キーの値)も付加できる(オプション) • 処理するShardを決めるキー • データレコードは、Kinesis内ではBase64でエンコードされて処理される  Full Load および CDC をサポート(ただしStore Changesモードはサポート無し)
  • 8. 8 Amazon Kinesis Data Streamsをセットアップする  AWS マネジメントコンソールの「IAM」で必要に応じてユーザーを作成 • アクセスの種類で「プログラムによるアクセス」を有効 • アクセス許可の設定で、以下のKinesisのアクションへの許可をアタッチ、または単純に「既存のAmazonKinesisAnalyticsFullAccessポリシー」をアタッチ • https://help.qlik.com/en-US/replicate/May2021/Content/Replicate/Main/Amazon%20Kinesis%20Streams/amazonkinesis_prereq.htm • Streamのサーバーのデータ暗号化が必要なら、追加で上記のKMSのアクションも許可するポリシーをアタッチ • ユーザーの認証情報で、アクセスキーIDとシークレットキーを作成しておく  AWS マネジメントコンソールの「Amazon Kinesis」の「データストリーム」でStreamを予め作成 • Qlik Replicateが各データレコードの送信先として使用するStream(単一または複数個)を、必要なShard数(例:1)で作成 • Qlik Replicateがエラーの送信先として使用するStreamである attrep_apply_exceptions も作成 • もちろん、AWS コマンドラインインターフェイス(CLI)を使用してStreamを作成することも可能 • $>aws configure • $>aws kinesis create-stream --stream-name <name> --shard-count 1  AWS CLIなどでStreamにアクセスしてみる • $>aws kinesis list-streams • $>aws kinesis list-shards --stream-name <name> • $>aws kinesis get-shard-iterator --stream-name <name> --shard-id <shardId> --shard-iterator-type TRIM_HORIZON • $>aws kinesis get-records --shard-iterator ...
  • 10. 10 ターゲットのデータソースとしてKinesisを設定  Access Details – Kinesisのリージョンやアクセスするユーザーのキーを指定 • AWS(IAM)のユーザーには、必要なアクションなどへの許可を有効にしておく  送信するデータレコード内のDataのFormatを設定  送信先のStreamを設定 • 単一のStream か 1テーブルごとに1つのStream(’schema.tablename’形式) • 送信先Shard振り分け用の PartitionKey の有無 • PartitionKeyを使う場合の値(主キー値 か ’schema+tablename’形式) • 処理中のエラーは、attrep_apply_exceptionsというStreamに送信される  データレコード内のData(Base64デコード後)の構造を示すメタデータを付けるか否か • 付ける場合はそれを送信するStreamを指定  テーブルのTransformationで以下の名前のカラムを追加して、Stream、PartitionKeyの 値をそれぞれオーバーライド設定可能(Shardの指定は無し) • $stream、$key  Advancedオプションとして、Webプロキシサーバーの指定も可能
  • 11. 11 サポートされない機能(制限) • https://help.qlik.com/en- US/replicate/May2021/Content/Replicate/Main/Amazon%20Kinesis%20Streams/limitations_amazonkinesis.htm • 無制限サイズのLOBは非サポート。ソーステーブルからLOBカラムをレプリケートする場合は「Allow unlimited LOB size」オプションは選択しない • 「Batch optimized apply」モードはサポートされない。このモードが設定されている場合、タスクは自動的に「Transactional apply」モードに切り 替わり、警告を出力 • 「Store Changes」モードには対応しない • KinesisのStream名として使用できる文字は英字 (大文字と小文字)、数字、アンダースコア、ハイフン、ピリオドのみ • ソーステーブルの名前にサポートされない文字が含まれる場合、タスクを開始する前に名前を修正するか「Global Transformation」を定義する必要あり • カラム名は、[A-Za-z_](アルファベットまたはアンダースコア)で始まり、[A-Za-z0-9_](アルファベット、数字またはアンダースコア)が続く必要あり • ソースのカラム名がこのルールに従っていない場合は、「transformation」を使用してカラム名を変更する必要あり • Apply Changesの「Ignore ALTER」設定は、ソースデータタイプの変更やテーブル名の変更には対応しない • 「Target Table Preparation」の「Drop and Create table」オプションはサポートされない • 「Target Table Preparation」の「Truncate before loading」オプションはサポートされない • 「DDL History」および「Change Data Partitioning Control Table」はサポートされない • DDL変更(テーブルの削除または名前の変更)はサポートされない
  • 12. 12 送受信されるデータレコード – DataがJSONの例(Base64)  データレコード内のDataの値はBase64でエンコードされた状態で送受信される タスク MySQLKinesis Streamに送信され、aws kinesis get-records --shard-iterator …コマンドで受信して表示したデータレコードの例 ・・・ • MySQLのsales.employeesテーブルのEmployeeID、LastName、FirstNameの3つのカラムだけを処理 • Full Loadした後、MySQLクライアントで何かの行を更新(UPDATE)した場合 • PartitionKeyは’schema+tablename’形式
  • 13. 13 送受信されるデータレコード – DataがJSONの例(Base64) operationの値は  REFRESH - Full Load  UPDATE, DELETE, INSERT - Apply Changes(CDC) タスク MySQLKinesis 受信したデータレコード内のDataの値(Base64エンコード)を試しにデコードしてみた例 ・・・ • データレコード内のDataの値はBase64でエンコードされた状態で送受信される • プロデューサやコンシューマで使用するKinesisクライアントライブラリでBase64のエンコード・デコードを処理してくれることが多い • AWS CLIのget-recordsコマンドはKinesisから受信したデータレコードをそのまま出力
  • 14. 14 KinesisのStreamをコンシュームするクライアントの例 - その1  Pythonを利用して、KinesisのStreamを受信し続ける • AWS SDK for Python(Boto3) (https://github.com/boto/boto3)を利用。認証にはAWS CLIが生成する「~/.aws/credentials」を参照  ソースのsales.employeesテーブルのFull LoadとApply Changes(CDC)のデータをCSVファイルに継続的に追記 • fulload.csv, changes.csv Qlik Replicate RDBMS ファイル
  • 15. 15 KinesisのStreamをコンシュームするクライアントの例 - その1  Qlik Sense(QlikView)でCSVファイルをロードする • 通常のリロード • Merge Onlyのリロード Qlik Replicate RDBMS ファイル
  • 16. 16 KinesisのStreamをコンシュームするクライアントの例 - その2  Pythonを利用して、KinesisのStreamを受信し続ける • AWS SDK for Python(Boto3) (https://github.com/boto/boto3)を利用。認証にはAWS CLIが生成する「~/.aws/credentials」を参照  ソースのsales.employeesテーブルのFull LoadとApply Changes(CDC)のデータを継続的にMySQLのテーブルへINSERT(autocommit=true) • fullloadテーブル、changesテーブル • MySQLへのアクセスには、mysql-connector-pythonパッケージを利用 Qlik Replicate RDBMS RDBMS
  • 17. 17 KinesisのStreamをコンシュームするクライアントの例 - その2 Qlik Replicate RDBMS RDBMS  Qlik Sense(QlikView)でテーブルをロードする • 通常のリロード • Merge Onlyのリロード
  • 18. 18 Tips: 送受信されるメッセージの構造 • 受信するレコードデータのメッセージのメタデータやスキーマなども利用可能 • 受信するコンシューマを実装する際に考慮が必要 • Replicate Envelopeとは? https://help.qlik.com/en- US/replicate/May2021/Content/Replicate/Main/Amazon%20Kinesis%20Streams/attunity_envelope_amazonkinesis.htm • メッセージは、Replicate Envelopeと呼ばれるメッセージスキーマ用データによって包含されるエンドポイント設定もあり • messageSchemaIdフィールド(null またはID文字列) - 別の場所で定義されたメッセージスキーマへの参照ID。コンシューマは、別途送信される MetadataメッセージからIDを使って検索する必要あり • messageSchemaフィールド(null または 文字列) - Avroメッセージ用のAvro JSON スキーマ