enebularのデータストア機能を試してみた

# はじめに

enebularのクラウド実行環境でSteinと似た機能(オレオレStein)を実行しています。

https://qiita.com/kitazaki/items/6e9f9d776a9d971b270f

https://kitazaki.github.io/node-red-execution-environment/

### フロー

![スクリーンショット 2023-12-10 13.36.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/b3e7d3c5-6d45-d81b-6b0b-78d38474c84a.png)

## クラウド実行環境の利用制限

クラウド実行環境は利用に制限があります。

https://docs.enebular.com/ja/executionenvironment/overview

![スクリーンショット 2023-12-10 16.39.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/d0ce0673-84d1-d889-2357-066e32bc0957.png)

フリープランの場合、毎分実行してもHTTPリクエスト回数の上限以内(60 * 24* 30 = 43,200 < 50,000)ですが、フローの実行時間の合計を24時間以内にする必要があり、現在は4分毎の実行で利用上限以内に収まっています。

![スクリーンショット 2023-12-10 13.38.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/b5c5fef9-18a4-8646-829d-68eb1e5ae8f2.png)

ところどころにヒゲがあるのはクラウド実行に失敗した場合、次回以降の実行になるため、前回の実行からの経過時間を表しています。

![スクリーンショット 2023-12-10 18.41.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/73b870e8-4896-b687-57fe-6e9bf870f9fd.png)

# データストア機能

SteinはGoogleスプレッドシートにデータを永続化させていますが、enebularでもデータストア機能がリリースされ、enebularの中でデータを永続化することができるようになりました。


## (うれしい気づき)プロジェクト作成時にプライベートノードが自動で追加されるようになった

以前はプロジェクトを作成した後にクラウド実行環境用のプライベートノードを手動で追加する必要がありましたが、現在はプロジェクト作成時にデフォルトで追加されるようになりました。
データストア用のプライベートノードも追加されます。

![スクリーンショット 2023-12-10 13.39.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/efdccd3a-a96a-2be6-7c8f-5d601ca5cfc1.png)

フローエディタのパレットに表示されるデータストア用のノードです。

![スクリーンショット 2023-12-10 16.50.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/5345845a-2af4-1ff1-a82d-e318f5828534.png)

## データストア機能の利用制限

データストア機能もクラウド実行環境と同様に利用に制限があります。

https://docs.enebular.com/ja/datastore/overview

![スクリーンショット 2023-12-10 16.39.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/d8e5359a-f30f-1e52-14d9-4a38aec1dbb0.png)

## Stein(Googleスプレッドシート)からの置き換え検討

現在は4分毎に実行しているので、フリープランの場合は上限を超えてしまい(12 * 24 * 30 = 10,800 > 10,000)、Googleスプレッドシートからの置き換えは難しいです。

## テーブルの作成

データストアを使用する場合、最初にテーブルを作成します。

今回はInfoMotionで使用しないため、カスタム設定を選択しました。

![スクリーンショット 2023-12-10 13.42.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/2bdd1422-7743-cf82-469d-31f6e24956df.png)

メインキー名を入力して、作成ボタンを押します。

![スクリーンショット 2023-12-10 20.08.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/a995ec0b-f174-5a8d-9ef0-62fd4e84c419.png)

データ検索画面からデータストアの内容を確認・追加・削除・更新できます。

![スクリーンショット 2023-12-10 20.11.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/d15f1258-8bf8-5bad-b881-122db3b49576.png)

## クラウド実行環境からデータストアへ書き込み

サンプルフローです。

![スクリーンショット 2023-12-10 17.37.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/38019da4-fd0c-f59c-560d-61607a68340a.png)

## データストアのデータを取得・更新する

サンプルフローです。

![スクリーンショット 2023-12-10 17.37.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/2e75cc47-e086-4c96-ff6f-3d760bd99aa2.png)

## バックアップ・リストア

データストアの設定メニューにバックアップ・リストアの機能があります。

![スクリーンショット 2023-12-10 20.25.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/4c5b4533-2a2b-6f23-f90d-5377df6b890e.png)

バックアップボタンを押すと、バックアップファイルのリンクがメールで送られてきます。

![スクリーンショット 2023-12-10 20.26.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/dd42e440-07e3-df06-8bbe-18749a2280c9.png)

メール本文のリンクをクリックするとzipファイルがダウンロードされます。

![スクリーンショット 2023-12-10 20.28.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/88752e58-2982-eeb2-290b-adcd1a1bf9c4.png)

zipファイルを解凍すると、json.bakファイルが出力されます。

![スクリーンショット 2023-12-10 20.28.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/51e554c1-54e0-5974-945c-77c84f6be328.png)

中身を確認するとbase64で符号化されています。

```bash
$ cat table-20231210-20231210142420-1.json.bak 
W3sibGFiZWwiOiIyIiwidGltZXN0YW1wIjoxNzAyMTg1NTgwNTQxfSx7ImxhYmVsIjoiMSIsInRpbWVzdGFtcCI6MTcwMjE4NTM5OTI1NX0seyJsYWJlbCI6IjMiLCJ0aW1lc3RhbXAiOjE3MDIxODU3MjUxMDF9LHsibGFiZWwiOiJ0ZXN0IiwidGltZXN0YW1wIjoxNzAyMTg1NjUyMzM3fV0=
```

base64でデコードするとjsonデータを確認できます。(macOSのターミナルで確認)

```bash
$ cat table-20231210-20231210142420-1.json.bak | base64 -D
[{"label":"2","timestamp":1702185580541},{"label":"1","timestamp":1702185399255},{"label":"3","timestamp":1702185725101},{"label":"test","timestamp":1702185652337}]
```

リストアは管理画面でjson.bakファイルをドラッグ＆ドロップするだけです。

![スクリーンショット 2023-12-10 20.32.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/c160b1c0-b1fb-624a-d139-7d668be01548.png)

## Firefoxだとテーブル表示が崩れる(Chromeは問題なし)

enebularの管理画面でデータストアのデータ検索画面で、Firefoxの場合、テーブル表示が崩れてしまうので、Chromeを使用します。(サポートへ問い合わせ中)

(Firefoxの場合)
![スクリーンショット 2023-12-10 16.47.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/515bd1cb-3c10-9fc7-85eb-5e97f77fdd68.png)

(Chromeの場合)
![スクリーンショット 2023-12-10 17.25.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/7b410a59-e8d2-d6ee-647c-a7421ebda486.png)