このページは、2016年3月に書かれた英語のブログの抄訳です。最新の情報については、英語ページを参照してください。

エンタープライズグレードの IoT アプリケーションによくみられるアーキテクチャーのパターンに、Media-Gateway-Controller (MGC) があります。

MGC では、ネットワークのエッジでデータを生成するものとして複数のデバイス (センサー/エージェント/デバイス) があります。

このデータは、中央のコア(サーバー + データベース)に格納され、処理されます。

そして、この格納されたデータにアクセスして、ビジネスの分析を実行したり、ビジネスプロセスをトリガーするビジネスアプリケーションが作られます。

IoT アプリケーションにこのパターンを実装する利点は、データの格納と処理が中央のサーバーで行われる、デバイスよりもパワフルなコンピューターが利用できる、より強固なセキュリティが確保できる、そして、既存のビジネスプロセスに接続できるよう設計できる、ということでしょう。

しかし、IoT アプリケーションを実装する場合の共通の課題として以下のものがあります:

  • 高可用性を持ち、膨大なボリュームのデータをハンドリングできる中央のコアが必要,
  • コアとデバイス、特にリモートのロケーションとの信頼性の高いネットワーク接続が欠如,
  • デバイスレベルでのストレージとコンピューターパワーに制約がある

これらの課題を念頭に、SAP HANA Cloud Platform (現 SAP Cloud Platform ) では、2 つのキーとなるサービスを提供しています。

— IoT サービス と Remote Data Sync サービスです。

Rui’s blog series を参考に、Raspberry Pi と HANA Cloud Platform IoT サービスでの IoT シナリオのディプロイ方法を説明します。

このブログでは、HANA Cloud Platform Remote Data Sync サービスについて説明します。

 

Table of Contents

Remote Data Sync とは何か?

2015年6月18日のリリースノートを見ると、HANA Cloud Platform における Mobile Link サービスの新しい名前が Remote data Sync サービスであるとわかります。

簡単に言うと、Mobile Link とは、セッションベースの同期テクノロジーで、リモートの SQL Anywhere や Ultra Light のデータベースと、統合データベースを同期するために設計されたものです。

Mobile Link 同期は、2つのパートでできています。

リモートの SQL Anywhere のインスタンスと接続する Mobile Link クライアントと、統合データベースと接続する Mobile Link サーバーです。

このクライアント – サーバーのコンビネーションが、データベースのデータの同期を維持します。

以下の図で、同期がどのように機能するのか示します。

 

[ソース: http://wiki.scn.sap.com/wiki/display/SQLANY/MobiLink]

Remote Data Sync (RDSync) サービスは、HANA Cloud Platform 側でMobile Link サーバーとして機能します。

この同期テクノロジーのメリットは、ローカルのコンピューターにデータを格納し、統合データベースとの同期をトリガー、またはスケジューリングすることができることです。

これは、IoT のユースケースにおいて、ローカルのコンピューター機器がいつもクラウドに対して接続性を保てない場合の随時接続のシナリオを実現します。

このブログでは、SQL Anywhere、RDSync サービスの設定と、シンプルな Hello World のユースケースにおける同期の設定方法について解説します。

この例では、お客様のローカルシステムをリモートのコンピューター機器として設定し、HANA Cloud Platform アカウントの HANA と同期させます。

現在 RDSync サービスは、本番アカウントでのみ利用可能です。トライアルアカウントでの利用はできません。

HANA Cloud Platform の本番アカウントへのアクセスを得るには、こちらをクリックしてください。

事前要件

  1. HANA Cloud Platform の本番アカウント
  2. そのアカウントに設定された HANA インスタンス
  3. そのアカウントに Remote Data Sync サービスを有効化
  4. SAP SQL Anywhere version 16 をローカルシステムにインストール
    1. 本番開発用の SAP SQL Anywhere データベースのライセンス.
    2. 無償のDeveloper Edition ライセンスのリンク : https://www.sap.com/cmp/syb/crm-xu15-int-sqldevft/index.html.
  5. HANA Cloud Platform SDK for Java EE 6 Web Profile をここからダウンロード: SAP Development Tools for Eclipse. ローカルシステムにzipファイルを解凍。最新のバージョンをダウンロードして利用することを推奨します。

ステップ 1 と 2 は、Eclipse ベースの開発ツール、または Web IDE を使用して行うことができます。

ここでは、Eclipseを使用したアプローチを紹介しますが、お客様のお好み次第です。

HANA Cloud Platform 開発用に Eclipse ベースの開発ツールをインストールしていない場合には、ここに記載されているステップに従って行うことができます。

SAP Development Tools for Eclipse

 

ステップ 1: 同期のためのデータベースユーザーを作成する

備考 : このステップを完了するには、Database Administration のパーミッションが必要です。 このドキュメントのステップに従って、このユーザーを作成するか、またはあなたのデータベース管理者にコンタクトしてください。

Eclipse を開いて「SAP HANA Administration Console perspective」にスイッチしてください。システムビューで、新しいクラウドシステムを追加します。

クラウドシステムへのログインに使用されているユーザーは、HANA データベース上に新しいデータベースユーザーを作成するのに必要な権限を持っている必要があります。

「Security」->「Users」ノードを拡大します。「MOBILINK」名で新しいユーザーを作成し、パスワードを提供します。

変更を保存します。

備考: 好きな名前をつけることができます。ここでは「MOBILINK」を使用します。

このステップで問題に遭遇した場合には、SAP HANA Cloud ドキュメントを読んだください。

 

ステップ 2: HANA に Hello World テーブルを作成する

Eclipse Systems のビューで、新しく作成したデータベースユーザー — MOBILINK — でクラウドシステムを再度追加します。

備考:

HANA Cloud Platform アカウントと同じアカウントユーザーを使用する必要があります。パスワードも同じにします。

カタログノードを拡大して、スキーマやテーブル, etc. のビューを見ます。

クラウドシステムの SQL コンソールをオープンします。

以下の SQL を使用して、Hello World のテーブルを作成します。

CREATE TABLE HELLO_WORLD ( PKEY BIGINT NOT NULL, FIRST_NAME VARCHAR (10) DEFAULT‘’ NOT NULL, LAST_NAME VARCHAR (10) DEFAULT‘’ NOT NULL, PRIMARY KEY ( PKEY ) );
commit;

この文を実行したら、システムビューをリフレシュしてテーブルが作成されているかチェックします。

この例では、デフォルトスキーマにテーブルを作成しました。そのため以下のステップでスキーマ名については述べません。

異なるスキーマを使用している場合には、それに合わせてスクリプトを変更してください。

そのままのステップで進み、追加のスパイスは基本となる同期が稼働した後にすることを推奨します。

 

ステップ 3: Mobile Link サーバーアプリケーションをディプロイする

Mobile Link サーバーは、コンソールコマンドを使用して、HANA Cloud Platform アクアント上に java アプリケーションとしてディプロイされます。

このサービスは、サーバーがスタートに失敗しないよう、prerequisite として有効にする必要があります。

コマンドプロンプトを開いて、一つずつこれらのコマンドを実行します。

必要であれば、プロキシーホストとパスワードをこれらのコマンドを実行する前に設定します。

 

重要事項: プロキシーやパスワードのようなこれら設定は、コマンドプロンプトの現在のセッションに限られます。コマンドプロンプトを閉じると、セットコマンドを再度実行しなければなりません。

set HTTP_PROXY_HOST=
set HTTP_PROXY_PORT=
set HTTPS_PROXY_HOST=
set HTTPS_PROXY_PORT=
set HTTP_NON_PROXY_HOSTS="localhost"
set NO_PROXY=localhost
set HTTP_PROXY=
set HTTPS_PROXY=















ホスト名、ユーザー名、アカウント名、パスワードなどのパラメーターを正確に設定します。

これらのパラメーターを設定することで、それぞれのコマンドのパラメーターをタイプしなければならないという問題を避けることができます。

set hcppass=
set dbpass=
set hcpaccount=
set hcpuser=
set dbuser=MOBILINK
set hcphost=
set hanainstancename=















コマンドプロンプトの中で、HANA Cloud Platform の SDK を解凍したフォルダーにスイッチします。

SDK が C:\ ドライブにあれば、C:\neo-javaee6-wp-sdk-\tools にスイッチします。これらのコマンドを実行して、Mobile Link サーバーをディプロイしてスタートします。

neo.bat deploy -h %hcphost% -a %hcpaccount% -b mobilinkserver -u %hcpuser% -s EMPTY_SITE --runtime mobilink --ev ML_ARGS="-zf -v" -p %hcppass%
neo.bat bind-db -h %hcphost% -a %hcpaccount% -b mobilinkserver -u %hcpuser% -i %hanainstancename% --db-user %dbuser% --db-password %dbpass% -p %hcppass%
neo.bat start -h %hcphost% -a %hcpaccount% -b mobilinkserver -u %hcpuser% -p %hcppass%















これで、あなたの Mobile Link サーバーアプリケーションは、ディプロイされスタートできます。

HANA Cloud Platform アカウントの cockpit を開き、Java アプリケーションへナビゲートします。アプリケーションがスタートするのを待ちます。

備考 : Mobile Link サーバーが正しく設定されスタートされれば、ML_ で始まる複数のテーブルが HANA システム内にできていることが確認できます。

これらが確認できない場合、適切にアプリケーションがスタートしているかチェックしてください。していない場合、アプリケーションを再度 ディプロイ しスタートしてください。

 

ステップ 4: HANA に同期スクリプトを作成する

あたなのクラウドシステムの SQL コンソールで、以下のプロシージャーを実行します。

RDSync サーバーがスタートするときにこれらのプロシージャーが、作成されます。

call ml_add_table_script('v1','HELLO_WORLD','upload_insert','');
call ml_add_table_script('v1','HELLO_WORLD','upload_insert', 'insert into HELLO_WORLD (PKEY, FIRST_NAME, LAST_NAME) values ({ml r.pkey}, {ml r.first_name}, {ml r.last_name})');
call ml_add_user ('TEST_USER', '','');
commit;














これらの文を見ると、INSERT INTO SQL 文があることに気づくと思います。

ここでは、HELLO_WORLD テーブルからのカラムを{ml r.pkey} などいくつかの変数にマップしました。

これらのスクリプトを書くことは面倒に見えるかもしれませんが、同期の設定においては大きなパワーとなります。

何を行っているかというと、基本的には RDSync に対してリモートデータベースのどのカラムからのデータが統合データベースのどのカムに行くのかを宣言していることになります。

ここでは、リモートデータベースから統合データベースへのアップロードを実装するため、コールする必要があるのは、‘upload_insert’ プロシージャーのみです。

ダウンロードも、双方向の伝送も、同様のスクリプトが必要です。

ステップ 5: リモートの同期を設定する

本番の設定では、すべてのリモートデータベースにアクセスできるリモートシステムに対して行う必要があります。

ここでは、自分のローカルシステムをリモートのデータベースとして扱い、同じシステムにこのセットアップを行います。

ステップ 1から 6は Developing Client-Initiated Synchronization のマニュアルに記載されているとおりに従ってください。

ステップ 2 はオプショナルです。

マニュアルのステップ 7 では、Upload-only の同期タイプを選択します。

これらのステップは、マニュアルには記載がありませんが、これらを行わないと同期がエラーを返すことを発見しました。

  1. Sybase Central で、同期プロファイルをダブルクリック
  2. hello_world_sync_profileを選択し、コンテキストメニューからプロパティを選択
  3. Extended Options タブへ.
  4. ScriptVersion ブロパティ値をv1 に設定
  5. Ok を選択

ステップ 6: 同期が機能しているかチェック!

HANA システムの SQL コンソールを開いて、「Select * from HELLO_WORLD」を実行します。

これで、HELLO_WORLD テーブルにデータが同期できているのかわかります。リモートデータベースに行を挿入した(ステップ 4)ことが確認できなければ、すべてのステップに正しく従ったかどうかチェックしてください。

備考 : 同期プロファイル後リモートデータベースのテーブルに挿入される行はすべて、統合データベースにコピーするために記録されています。

事前に存在するコンテンツは、コピーされません (私は、トライアンドエラーを何度か繰り返した後にこれを発見しました)。

基本的なアプロードのみの同期に追加して、双方向の同期も実装することが可能です。

ある一定の時間の間隔での自動同期や、盲目的なコピーでなく、任意のロジックに基づいた同期を設定することもできます。

 

===

 

SAP SQL Anywhere に関する詳細情報は、SAP SQL Anywhere Communityページ<英語> を参照してください。

 

上記のコミュニティーに掲載されている技術情報は、順次SQL Anywhere 日本語コミュニティに掲載しています。

 

SQL Anywhere に関してはまずはこちらをご参照ください。無期限でご利用いただける無償の Developers Edition もこちらからダウンロードが可能です。

 

SQL Anywhere に関して技術的な質問のある方はコミュニティに登録し、
「+ Actions」から「Ask a Question」機能をご利用ください。

Language には「Japanese」、
Primary Tag には「SQL Anywhere」、
Additional tag には「SAP SQL Anywhere」、
User Tagに「sql anywhere japanese question」

を選択してください。

不具合につきましては、サポート契約者様専用の問い合わせ方法にてお問い合わせください。

 

======================
ご購入に関するお問い合わせ

こちらよりお問い合わせください。

To report this post you need to login first.

Be the first to leave a comment

You must be Logged on to comment or reply to a post.

Leave a Reply