SlideShare a Scribd company logo
1 of 44
Download to read offline
© 2018 Toshiba Digital Solutions Corporation
東芝デジタルソリューションズ株式会社
野々村 克彦
2018.10.27
日本発オープンソース!!
スケールアウト型データベース GridDB入門
~ GitHubからダウンロードして使ってみましょう ~
プロフィール
名前:野々村 克彦
所属:東芝デジタルソリューションズ(株)ソフトウェア&AIテクノロ
ジーセンタ- 知識・メディア処理技術開発部
2011年 スケールアウト型DB GridDBの開発メンバ
2015年 GridDBのオープンソースPJ開始
現在 GridDBコミュニティ版の開発・コミッター、海外展開の技術支援など。
GitHub歴 4年
ちなみに、出身高校は米子東(鳥取県)。日本発のRuby考案者である、
まつもとゆきひろ氏の2年後輩になるらしい。
2© 2018 Toshiba Digital Solutions Corporation
発表内容
1.スケールアウト型データベースGridDBの概要
– 特長、導入事例
2.GridDBの使い方
– クイックスタート (デモ)
– 運用コマンド操作、クライアント操作
– はまりやすいポイント、クラスタ構成やAWS/Azureでの利用
3.最近のOSS活動
4.まとめ
3© 2018 Toshiba Digital Solutions Corporation
GridDBとは
• 日本発のビッグデータ/IoT向けのスケールアウト型データベース
• 製品化(2013年)、基本機能をオープンソース化(2016年)
• 社会インフラを中心に、高い信頼性・可用性が求められるシステムで使われている
4© 2018 Toshiba Digital Solutions Corporation
GridDBの特長
• データモデルはキー・コンテナ。コンテナ内でのデータ一貫性を保証
• 時系列データ管理する特別な機能
IoT指向の
データモデル
• データの複製をノード間で自動的に実行
• ノード障害があってもフェールオーバによりサービス継続
• 数秒から数十秒の切り替え時間
高い信頼性と
可用性
• 少ないサーバ台数で初期投資を抑制
• 負荷や容量の増大に合わせたノード増設が可能
• 自律データ再配置により、高いスケーラビリティを実現
高いスケーラビリティ
• メモリを主、ストレージを従としたハイブリッド型インメモリDB
• メモリやディスクの排他処理や同期待ちを極力排除高性能
①キーコンテナ型
②自律データ再配置技術ADDA
High Performance
High Scalability
High Availability
5© 2018 Toshiba Digital Solutions Corporation
データモデル ①キーコンテナ型
データモデル
キーバリュー型 ワイドカラム型 ドキュメント型 グラフ型
NoSQLの例 Redis Cassandra MongoDB Neo4j
キー
バリュー
キー
カラム
バリュー
カラム
バリュー
キー
JSON
キー1
キー2
キー3
キーコンテナ型
GridDB
キー
C0 C1 C2 C3
Val Val Val Val
Val Val Val Val
Val Val Val Val
6© 2018 Toshiba Digital Solutions Corporation
• NoSQL型でよく採用されているキー・バリューを拡張
• 順序に関係無くレコードが格納されるコレクションコンテナ
• 時間順にレコードが格納される時系列コンテナ
時系列レコードを圧縮する機能や期限解放する機能
• コンテナ内でのデータ一貫性を保証
索引設定機能、SQLライクのクエリ(TQL)機能
データモデル ①キーコンテナ型
コレクション(Collection)
"siteA_equip"
id name specification
equip001 変圧器1 xxx変圧器
equip002 変圧器2 yyy変圧器
equip003 遮断機1 xxx遮断機
equip004 遮断機2 yyy遮断機
equip005 ケーブル1 zzzケーブル
... ... ...
時系列(TimeSeries)
"siteA_s012"
timestamp heat_rate temperature
4/28/20011 ... 78.3 47.9
4/28/20011 ... 82.9 63.4
... ... ...
5
10
15
20
17:30 21:30 1:30 5:30 9:30 13:30 17:30
7© 2018 Toshiba Digital Solutions Corporation
• 自律データ再配置技術(ADDA : Autonomous Data Distribution Algorithm)
• データを分散化するゆえにデータの一貫性が弱くなり、
一貫性やスケール性を求めるとパフォーマンスが落ちる、という大きな欠点を解決
DBクラスタ ②ADDA
管理ノード
DBノード DBノード DBノード
クライアント
仲介ノード
FSノード FSノード FSノード
DBノード
(マスタノード)
DBノード DBノード
クライアント
データ複製
データ配置
データ複製
データ配置
要求
要求
従来技術 GridDB
自律的なDBクラスタ技術 ADDA
DBノード
DBノード
DBノード
従来技術
※FS:ファイルシステム
8© 2018 Toshiba Digital Solutions Corporation
• マスタースレーブモデルの改良
– ノード間でマスタノードを自動選択。管理ノードがクラスタ内に存在せず、単一障害点を完全排除
• 自律データ再配置技術の開発
– (マスターノードが)ノード間アンバランス、レプリカ欠損を検知⇒バックグラウンドでデータ再配置
– 2種類のレプリカデータを使って高速同期、完了後切替え
具体的な挙動
クライアント
〈ノード間データ再配置〉 〈アクセス切替え〉〈負荷アンバランスの検知〉
DBノード DB更新ログ メモリブロック
負荷小
9© 2018 Toshiba Digital Solutions Corporation
高性能
Read 50% + Write 50%
約2.5倍
Read 95% + Write 5%
約8倍
※フィックスターズ社によるYCSBベンチマーク結果
NoSQLの代表的なベンチマーク https://github.com/brianfrankcooper/YCSB
• YCSB (Yahoo! Cloud Serving Benchmark)
10© 2018 Toshiba Digital Solutions Corporation
• 社会インフラを中心に、高い信頼性・可用性が求められるシステムに適用中
• 東芝IoTアーキテクチャー「SPINEX」の構成ソリューション
適用事例
・フランス リヨン 太陽光発電 監視・診断システム
発電量の遠隔監視、発電パネルの性能劣化を診断
・クラウドBEMS
ビルに設置された各種メータの情報の収集、蓄積、分析
・石巻スマートコミュニティ プロジェクト
地域全体のエネルギーのメータ情報の収集、蓄積、分析
・電力会社 低圧託送業務システム
スマートメータから収集される電力使用量を集計し、需要量と発電量のバランスを調整
・神戸製鋼所 産業用コンプレッサ稼働監視システム
グローバルに販売した産業用コンプレッサをクラウドを利用して稼働監視
・東芝機械 IoTプラットフォーム
工作機器、射出成形、ダイカストマシン、など膨大な製造データを管理
・デンソー Factory-IoT (IoTを活用したダントツ工場)
https://www.youtube.com/watch?v=9-yf-XN1Bgg&feature=youtu.be (ビデオ)
・DENSO International Americaの次世代の車両管理システム
https://griddb.net/ja/blog/griddb-automotive/
・クラウド型IoTソリューション
....
11© 2018 Toshiba Digital Solutions Corporation
GridDBの使い方
12© 2018 Toshiba Digital Solutions Corporation
クイックスタート(1/2)
「GridDB V4.0 CEのRPMによるインストール、1台構成でサンプル実行の例」
• 環境
– OS: CentOS 7.5 ※デモはWin7のノートPC上にVirtualBoxでVMを立てて、ゲストOSをCentOS 7.5とした。
1. インストール
$ wget https://github.com/griddb/griddb_nosql/releases/download/v4.0.0/griddb_nosql-4.0.0-1.linux.x86_64.rpm
$ rpm –ivh griddb_nosql-4.0.0-1.linux.x86_64.rpm
2. 設定
– ユーザ”gsadm”のパスワード設定
$ passwd gsadm
– ユーザ”gsadm”でログイン
$ su – gsadm
– GridDB管理ユーザ”admin”のパスワード設定
$ gs_passwd admin
– クラスタ名の設定
$ vi conf/gs_cluster.json
※環境変数 $GS_HOME, $GS_LOGが設定される
※OS上にユーザ”gsadm”が生成される
※”clusterName”:””の部分にクラスタ名を入力する
13© 2018 Toshiba Digital Solutions Corporation
3. ノードの起動、クラスタ構成
$ gs_startnode
$ gs_joincluster -c (クラスタ名) -u admin/(パスワード) –s (接続先IPアドレス)
4. サンプルプログラムの実行
$ export CLASSPATH=${CLASSPATH}:/usr/share/java/gridstore.jar
$ mkdir gsSample
$ cp /usr/griddb-X.X.X/docs/sample/program/Sample1.java gsSample/.
$ javac gsSample/Sample1.java
$ java gsSample/Sample1 239.0.0.1 31999 (クラスタ名) admin (パスワード)
 Person: name=name02 status=false count=2 lob=[65, 66, 67, 68, 69, 70, 71, 72, 73, 74]
5. クラスタ停止、ノード停止
$ gs_stopcluster –u admin/(パスワード) –s (接続先IPアドレス)
$ gs_stopnode –u admin/(パスワード) –s (接続先IPアドレス)
※ 239,0,0,1 (31999)はマルチキャストで通信するためのIPアドレス (ポートNo)
クイックスタート(2/2)
14© 2018 Toshiba Digital Solutions Corporation
ディレクトリ構成
• 基本ディレクトリ
– 実行ファイル
• サーバモジュール (bin/gsserver)
• 運用コマンド (bin/gs_startnode, gs_joincluster, …)
– コンフィグファイル
• ノード定義ファイル (conf/gs_node.json)
• クラスタ定義ファイル (conf/gs_cluster.json)
– その他
• Javaクライアントライブラリ (gridstore.jar)
• データディレクトリ
– データベースファイル
• チェックポイントファイル (data/gs_cp_*.dat)
• DB更新ログファイル (data/gs_log_*.log)
– イベントログファイル (log/gridstore_*.log)
(インストールディレクトリ)
/usr/griddb-X.X.X/
3rd_party/
bin/
conf/
docs/
(gsadmのホームディレクトリ)
/var/lib/gridstore/
conf/
data/
log/
15© 2018 Toshiba Digital Solutions Corporation
{
"dataStore":{
"dbPath":"data",
"syncTempPath":"sync",
"storeMemoryLimit":"1024MB",
"storeWarmStart":false,
"concurrency":4,
"logWriteMode":1,
"persistencyMode":"NORMAL",
"affinityGroupSize":4
},
"checkpoint":{
"checkpointInterval":"60s",
"checkpointMemoryLimit":"1024MB",
"useParallelMode":false
},
"cluster":{
"servicePort":10010
},
"sync":{
"servicePort":10020
},
"system":{
"servicePort":10040,
コンフィグファイルの設定例(抜粋)
gs_node.json
{
"dataStore":{
"partitionNum":128,
"storeBlockSize":“64KB"
},
"cluster":{
"clusterName":“osc123",
"replicationNum":2,
"notificationAddress":"239.0.0.1",
"notificationPort":20000,
"notificationInterval":"5s",
"heartbeatInterval":"5s",
"loadbalanceCheckInterval":"180s"
},
"sync":{
"timeoutInterval":"30s"
},
"transaction":{
"notificationAddress":"239.0.0.1",
"notificationPort":31999,
"notificationInterval":"5s",
"replicationMode":0,
"replicationTimeoutInterval":"10s"
}
gs_cluster.json
16© 2018 Toshiba Digital Solutions Corporation
運用コマンドの操作手順
1. 起動(各ノードについて。起動するマシン上で実行)
– gs_startnode
2. クラスタ構成(各ノードについて。1台構成でも必要)
– gs_joincluster [-s 接続先IPアドレス:ポート] -n 構成ノード数 -c クラスタ名 -u ユーザ名/パスワード
3. アプリ実行
4. クラスタ停止(クラスタを構成している1ノードに対して)
– gs_stopcluster [-s 接続先IPアドレス:ポート] -u ユーザ名/パスワード
5. ノード停止(各ノードについて)
– gs_stopnode [-w [WAIT_TIME]][-s 接続先IPアドレス:ポート] [-f] -u ユーザ名/パスワード
※STAT取得(各ノードについて)
– gs_stat [-s 接続先IPアドレス:ポート] -u ユーザ名/パスワード
17© 2018 Toshiba Digital Solutions Corporation
$ gs_stat -u admin/admin
{
"cluster": {
"activeCount": 1,
"clusterName": “test",
"clusterStatus": "MASTER",
"designatedCount": 1,
"master": {
"address": "127.0.0.1",
"port": 10040
},
"nodeList": [
{
"address": "127.0.0.1",
"port": 10040
}
],
"nodeStatus": "ACTIVE",
"notificationMode": "MULTICAST",
"partitionStatus": "NORMAL",
"startupTime": "2018-10-10T12:04:45+0900",
},
"currentTime": "2018-10-10T12:05:23+0900",
"performance": {
"checkpointFileSize": 262144,
"checkpointMemory": 0,
"checkpointMemoryLimit": 1073741824,
"peakProcessMemory": 67137536,
"processMemory": 67137536,
…
"storeMemory": 0,
"storeMemoryLimit": 1073741824,
"storeTotalUse": 0,
"swapRead": 0,
"swapReadSize": 0,
"swapReadTime": 0,
"swapWrite": 0,
"swapWriteSize": 0,
"swapWriteTime": 0,
"totalReadOperation": 0,
"totalRowRead": 0,
"totalRowWrite": 0,
"totalWriteOperation": 0
},
"version": "4.0.0-33128 CE"
}
gs_stat出力例(抜粋)
18© 2018 Toshiba Digital Solutions Corporation
1. プロパティ設定(主に接続用)
2. コンテナの生成・取得
3. (A) データ登録
(B) 検索
クライアント操作の例
19© 2018 Toshiba Digital Solutions Corporation
クライアント操作の例:プロパティ設定 1. プロパティ設定(主に接続用)
2. コンテナの生成・取得
3. (A) データ登録
(B) 検索
マルチキャスト方式の場合:
マルチキャストで通信するためのIPアドレス、ポートNoを指定する。
// プロパティ設定
Properties props = new Properties();
props.setProperty(“notificationAddress”, args[0]); // マルチキャスト・アドレス
props.setProperty(“notificationPort”, args[1]);// マルチキャスト・ポートNo
props.setProperty(“clusterName”, args[2]); // クラスタ名
props.setProperty(“user”, args[3]); // ユーザ名
props.setProperty(“password”, args[4]); // パスワード
// GridStoreインスタンスの取得
GridStore store = GridStoreFactory.getInstance().getGridStore(props);
20© 2018 Toshiba Digital Solutions Corporation
クライアント操作の例:コンテナ生成、データ登録
// コレクションコンテナ生成
Collection<Long,Alert> alertCol
= store.putCollection(alertColName, Alert.class);
// 索引設定
alertCol.createIndex("timestamp");
alertCol.createIndex("level");
alertCol.setAutoCommit(false);
…
Alert alert = new Alert();
while ((nextLine = reader.readNext()) != null) {
…
alert.timestamp = new Date(datetime);
alert.sensorId = nextLine[2];
alert.level = Integer.valueOf(nextLine[3]);
alert.detail = nextLine[4];
// データ登録
alertCol.put(alert);
}
alertCol.commit();
// アラート情報
class Alert {
@RowKey Long id;
Date timestamp;
String sensorId;
int level;
String detail;
}
// ロウキーには@RowKeyを付ける
1. プロパティ設定(主に接続用)
2. コンテナの生成・取得
3. (A) データ登録
(B) 検索
A
21© 2018 Toshiba Digital Solutions Corporation
Collection<String,Alert> alertCol
= store.getCollection(alertColName, Alert.class); // コンテナ取得
…
// 24時間以内の重大アラート(level>3)を検索
String from = TimeStampUtil.format( TimeStampUtil.add(new Date(now), -24, TimeUnit.HOUR) );
Query<Alert> alertQuery
= alertCol.query(“select * where level > 3 and time > TIMESTAMP('" + from + "')" );// TQLによる検索
RowSet<Alert> alertRs = alertQuery.fetch();
while( alertRs.hasNext() ) {
// 重大アラート発生したセンサのデータが入っている時系列コンテナを取得
Alert alert = alertRs.next();
TimeSeries<Point> ts = store.getTimeSeries(alert.sensorId, Point.class); // 時系列コンテナ取得
// 直前の時系列データを検索
Date endDate = alert.timestamp;
Date startDate = TimeStampUtil.add(alert.timestamp, -10, TimeUnit.MINUTE);
RowSet<Point> rowSet = ts.query(startDate, endDate).fetch(); // 専用関数による範囲検索
while (rowSet.hasNext()) {
Point ret = rowSet.next();
クライアント操作の例:検索
24時間以内に発生した重大アラートについて直前の時系列データを検索
1. プロパティ設定(主に接続用)
2. コンテナの生成・取得
3. (A) データ登録
(B) 検索
A
B
※詳細は以下をご覧ください。
GridDB プログラミングチュートリアル:https://griddb.net/ja/docs/manuals/v3.1/GridDB_ProgrammingTutorial.html
ソース:https://github.com/griddb/griddb_nosql/tree/master/sample/tutorial/ja
22© 2018 Toshiba Digital Solutions Corporation
はまりやすいポイント
1. 起動できない
– 環境変数が未設定エラー。⇒ gsadmでログインしていない。
• gsadmのパスワードを設定した上でgsadmでログイン。環境変数が自動設定される。
• suコマンドでログインする場合、「$ su – gsadm」 のように「-」/「-l」オプションを付けること。
– 管理ユーザ(例:admin)のパスワードが設定されていない。
– gs_cluster.jsonファイルにクラスタ名が設定されていない。
– 「$ hostname -i」にてホスト名からIPアドレスが取得できない。
⇒ /etc/hostsファイルの設定を確認する。
2. 運用コマンド操作ができない
– プロキス変数が設定されている。⇒プロキシ側にアクセスしないようにする。
「(例)$ export no_proxy=10.0.2.15」
3. クライアント操作ができない
– ファイアウォールに通信用ポートNoを許可する。
「(例)$ firewall-cmd --zone=public --add-port=31999/udp」
23© 2018 Toshiba Digital Solutions Corporation
N台でクラスタを構成する場合
• コンフィグ
– gs_cluster.json, passwdファイルはクラスタ内の全ノードで共通の設定にする。
• 運用コマンド操作
– N台の各ノードについて、起動およびクラスタ構成などの操作を行う。
• 起動:リモートマシン操作ではsshを使う。
• クラスタ構成:クラスタ構成数を指定する (例:-n 3)。
– クラスタ停止はクラスタを構成している1ノードについて操作を行えばよい。
• クライアント操作
– 1台構成と同様。
gs_cluster.json/
password
gs_node.json
ノード1
運用コマンド操作
gs_cluster.json/
password
gs_node.json
ノード2
gs_cluster.json/
password
gs_node.json
ノード3
24© 2018 Toshiba Digital Solutions Corporation
• マルチキャスト方式以外の方法を使う
固定リスト方式の場合:全ノードのIPアドレス、通信用ポートNoを列挙する。
サーバ側の設定 (gs_cluster.json)
クライアント側の設定 (Javaプログラム)
AWS/Azureを使う場合
"cluster":{
"notificationMember": [
{ "cluster": {"address":"172.17.0.44", "port":10010}, "sync": {"address":"172.17.0.44", "port":10020},
"system": {"address":"172.17.0.44", "port":10040}, "transaction": {"address":"172.17.0.44", "port":10001} },
{ "cluster": {"address":"172.17.0.45", "port":10010}, "sync": {"address":"172.17.0.45", "port":10020},
"system": {"address":"172.17.0.45", "port":10040}, "transaction": {"address":"172.17.0.45", "port":10001} },
{ "cluster": {"address":"172.17.0.46", "port":10010}, "sync": {"address":"172.17.0.46", "port":10020},
"system": {"address":"172.17.0.46", "port":10040}, "transaction": {"address":"172.17.0.46", "port":10001} } ]
// プロパティ設定
Properties props = new Properties();
props.setProperty(“notificationMember”, “172.17.0.44:10001, 172.17.0.45:10001, 172.17.0.46:10001”);
// (アドレス1):(ポート1),(アドレス2):(ポート2),...形式
…
GridStore store = GridStoreFactory.getInstance().getGridStore(props);
25© 2018 Toshiba Digital Solutions Corporation
OSS活動
26© 2018 Toshiba Digital Solutions Corporation
GitHubサイト https://github.com/griddb/
• NoSQL機能、様々な開発言語のクライアント、
主要OSSとのコネクタをソース公開
https://github.com/griddb/griddb_nosqlなど
• 目的
– ビッグデータ技術の普及促進
• 多くの人に知ってもらいたい、使ってみてもらいたい。
• いろんなニーズをつかみたい。
– 他のオープンソースソフトウェア、システムとの連携強化
griddb github 検索
27© 2018 Toshiba Digital Solutions Corporation
最近のOSS活動
2018年
• 2月 GridDB Pythonクライアントのソース公開(GitHub)
• 3月 GridDB Goクライアントのソース公開(GitHub)
• 5月 GridDB V4.0 Community Editionのソース公開
(サーバ、Javaクライアント) (GitHub)
• 6月 GridDB Node.JSクライアントのソース公開(GitHub)
GridDB PHPクライアントのソース公開(GitHub)
• 7月 GridDB V4.0 CE Cクライアントのソース公開(GitHub)
• 8月 GridDB用Kafkaコネクタ・サンプルのソース公開(GitHub)
• 9月 GridDB Pythonクライアントのパッケージ公開(PyPI)
GridDB Node.JSクライアントのパッケージ公開(npm)
• 10月 GridDB Perlクライアントのソース公開(GitHub)
28© 2018 Toshiba Digital Solutions Corporation
GridDB V4.0 CE 追加機能
1. 大規模データ管理強化
– より少ないノード台数で柔軟に効率よく対応するための強化・改善を行いました。
2. 検索結果取得時の分割処理への対応
– バッファのサイズなどに収まるよう、内部で自動的に分割し処理することで、大量の検索結果が取得
可能になりました。
3. コンテナ名などの名前に使用できる文字の拡張
– 他のデータベースとの連携を容易にするためにコンテナ名などに使用できる文字を拡張しました。
4. データベースファイルのサイズ縮小機能
– データベースファイルのサイズ(実ディスク割当量)を縮小することが可能になりました。
5. Cクライアントのライセンス変更
– AGPL V3からApache V2に変更しました。
29© 2018 Toshiba Digital Solutions Corporation
公開状況
GridDB V4.0 CE(Community Edition)
Javaクライアント Cクライアント
Hadoop
MapReduce
コネクタ
YCSB
コネクタ
Spark
コネクタ
KairosDB
コネクタ
Python
クライアント
Node.JS
クライアント
収集 可視化 分散処理 Webアプリ分析性能測定
Go
クライアント
PHP
クライアント
Kafka
コネクタ
Ruby
クライアント
②各種クライアントの拡充①主要OSSとの連携強化
③GitHub以外のサイトからの情報発信
④主要OSSリポジトリへのコントリビュート(YCSBなど予定)
GitHub
(https://github.com/)
PyPI
(https://pypi.org/)
npm
(https://www.npmjs.com/)
30© 2018 Toshiba Digital Solutions Corporation
デベロッパーズサイト https://griddb.net/
• アプリケーション開発者向けのサイト
• 様々なコンテンツを公開
– ホワイトペーパ、ブログ
– マニュアル
– サンプルコード
など
• コミュニケーションの場(フォーラム)を提供
griddb net 検索
31© 2018 Toshiba Digital Solutions Corporation
最近のブログ
32© 2018 Toshiba Digital Solutions Corporation
ツイッター https://twitter.com/griddb_jp
griddb
• GridDBに関するリリース、
イベント、などをお知らせします。
(日本国内向け)
griddb_jp 検索
33© 2018 Toshiba Digital Solutions Corporation
まとめ
• GridDBはビッグデータ・IoT向けのスケールアウト型データベースです。
• 今回、GridDBの概要、使い方についてご説明いたしました。
• OSSサイト、デベロッパーズサイトなどで、GridDB機能強化やクライアント拡充、
主要OSSとの連携強化などの様々なOSS活動を実施しています。
● 本資料に掲載の製品名、サービス名には、各社の登録商標または商標が含まれています。
オープンソースのGridDBを是非とも使ってみてください。
34© 2018 Toshiba Digital Solutions Corporation
ご清聴ありがとうございました
35© 2018 Toshiba Digital Solutions Corporation
ご参考:GridDBに関する情報
• GridDB デベロッパーズサイト
– https://griddb.net/
• GridDB OSSサイト
– https://github.com/griddb/griddb_nosql/
• Twitter: GridDB (日本)
– https://twitter.com/griddb_jp
• Twitter: GridDB Community
– https://twitter.com/GridDBCommunity
• Facebook: GridDB Community
– https://www.facebook.com/griddbcommunity/
• GridDB お問い合わせ
– デベロッパーズサイトのフォーラム、OSSサイトのGitHubのIssue、
もしくはcontact@griddb.orgをご利用ください
36© 2018 Toshiba Digital Solutions Corporation
ご参考:デベロッパーズサイトの主なコンテンツ(ハウツーもの)
• AWS/Azure上で動かす方法
– 「GridDB Azureクラスタの構築」
– 「Fixed ListでGridDBを使う方法」
• Docker上で動かす方法
– 「Docker上でGridDBを実行する」
• Pappetによる設定方法
– 「Puppetを使用したGridDBの設定方法」
• 各種クライアント
– 「GridDB‘s C/Python/Ruby APIsを使ってみよう」
– 「GridDBのGo言語 Client入門」
– 「GridDB Node.jsクライアントを使ってみよう」
– 「GridDBのPHPクライアント入門」
• MapReduceコネクタ
– 「Hadoop MapReduce用のGridDBコネクタの使い方」
• Sparkコネクタ
– 「Apache SparkのためのGridDBコネクタ」
• YCSBコネクタ
– 「YCSB向けGridDBコネクタを使ってみよう」
※https://griddb.net/ja/blog/
37© 2018 Toshiba Digital Solutions Corporation
ご参考:デベロッパーズサイトの主なコンテンツ(ホワイトペーパなど)
ホワイトペーパ:
• GridDB®とは
• GridDB と Cassandra のパフォーマンスとスケーラビリティ – Microsoft Azure 環境における YCSB
パフォーマンス比較
• GridDBとInfluxDBのTimeSeriesベンチマーク比較
• GridDB Reliability and Robustness
など
ブログ:
• IoT産業におけるGridDB導入事例
• 自動車産業におけるGridDB導入事例
• 自律型データ配信アルゴルズム (ADDA)
• CAP 定理と GridDB
• Raspberry Piチュートリアル:KairosDBコネクタを介してGridDBに温度データを送信する
など
38© 2018 Toshiba Digital Solutions Corporation
付録:クライアント操作
1. プロパティ設定(主に接続用)
2. コンテナ生成・取得
3. (A) データ登録・取得
(B) 検索
39© 2018 Toshiba Digital Solutions Corporation
1.プロパティ設定
マルチキャスト方式の場合:マルチキャストで通信するためのIPアドレス、ポートNoを指定する。
// プロパティ設定
Properties props = new Properties();
props.setProperty(“notificationAddress”, args[0]); // マルチキャスト・アドレス
props.setProperty(“notificationPort”, args[1]);// マルチキャスト・ポートNo
props.setProperty(“clusterName”, args[2]); // クラスタ名
props.setProperty(“user”, args[3]); // ユーザ名
props.setProperty(“password”, args[4]); // パスワード
// GridStoreインスタンスの取得
GridStore store = GridStoreFactory.getInstance().getGridStore(props);
40© 2018 Toshiba Digital Solutions Corporation
2.コンテナ生成・取得(静的)
【時系列コンテナ】
// スキーマ定義
static class Point {
@RowKey Date timestamp; // ロウキーには@RowKeyをつける
boolean active;
double voltage;
}
// 時系列コンテナの作成
TimeSeries<Point> ts = store.putTimeSeries("point01", Point.class);
// 時系列コンテナの取得
TimeSeries<Point> ts = store.getTimeSeries("point01");
41© 2018 Toshiba Digital Solutions Corporation
2.コンテナ生成(動的)
【時系列コンテナ】
// コンテナ情報を作成
ContainerInfo info = new ContainerInfo();
info.setType(ContainerType.TIME_SERIES); // コンテナタイプを設定
info.setName(“point01”); // コンテナ名を設定
info.setColumnInfoList(Arrays.asList(
new ColumnInfo(“timestamp", GSType.TIMESTAMP),
new ColumnInfo(“active", GSType.BOOL),
new ColumnInfo(“voltage", GSType.DOUBLE)); // カラム情報(カラム名、カラムタイプ)を設定
info.setRowKeyAssigned(true); // ロウキーの有無を設定。有だと先頭カラムがロウキーとなる
// 時系列コンテナの作成
Container<Date, Row> container = store.putContainer(null, info, false);
// 時系列コンテナの取得
Container<Date, Row> container = store.getContainer(“point01”);
42© 2018 Toshiba Digital Solutions Corporation
3(A). データ登録・取得
【時系列コンテナ】
// Rowのデータを用意
Point point = new Point();
point.timestamp = TimestampUtils.current(); // 現在時刻を設定
point.active = false;
point.voltage = 100;
ts.put(point); // 登録
point = ts.get(point.timestamp); // 取得
43© 2018 Toshiba Digital Solutions Corporation
3(B). 検索
【時系列コンテナ】
// (A) コンテナ内のRowを検索
// 停止中にもかかわらず電圧が基準値以上の箇所を検索
Query<Point> query = ts.query(“select * from point01 where not active and voltage > 50");
RowSet<Point> rs = query.fetch();
// 検索したRowの取得
while (rs.hasNext()) {
Point hotPoint = rs.next();
Date hot = hotPoint.timestamp;
System.out.println("[Alert] " + TimestampUtils.format(hot) + " hot=" + hotPoint.voltage);
}
// (B) 平均値
// 基準値以上の箇所について10分前後の平均値を求める
Date start = TimestampUtils.add(hot, -10, TimeUnit.MINUTE);
Date end = TimestampUtils.add(hot, 10, TimeUnit.MINUTE);
AggregationResult avg = ts.query("select AVG(voltage) where timestamp > ” + start.timestamp + “ and
timestamp < “ + end.timestamp);
System.out.println(" avg=" + avg.getDouble());

More Related Content

What's hot

Elasticsearch勉強会#44 20210624
Elasticsearch勉強会#44 20210624Elasticsearch勉強会#44 20210624
Elasticsearch勉強会#44 20210624Tetsuya Sodo
 
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」ManaMurakami1
 
[Azure Antenna] クラウドで HPC ~ HPC on Azure ~
[Azure Antenna] クラウドで HPC ~ HPC on Azure ~[Azure Antenna] クラウドで HPC ~ HPC on Azure ~
[Azure Antenna] クラウドで HPC ~ HPC on Azure ~Shuichi Gojuki
 
Edge から Cloud, Beginner から Professional までサポートする Azure AI プラットフォーム
Edge から Cloud, Beginner から Professional までサポートする Azure AI プラットフォームEdge から Cloud, Beginner から Professional までサポートする Azure AI プラットフォーム
Edge から Cloud, Beginner から Professional までサポートする Azure AI プラットフォームIoTビジネス共創ラボ
 
OpenStackを使用したGPU仮想化IaaS環境 事例紹介
OpenStackを使用したGPU仮想化IaaS環境 事例紹介OpenStackを使用したGPU仮想化IaaS環境 事例紹介
OpenStackを使用したGPU仮想化IaaS環境 事例紹介VirtualTech Japan Inc.
 
[Cyber HPC Symposium 2019] Microsoft Azureによる、クラウド時代のハイパフォーマンスコンピューティング High...
[Cyber HPC Symposium 2019]  Microsoft Azureによる、クラウド時代のハイパフォーマンスコンピューティング High...[Cyber HPC Symposium 2019]  Microsoft Azureによる、クラウド時代のハイパフォーマンスコンピューティング High...
[Cyber HPC Symposium 2019] Microsoft Azureによる、クラウド時代のハイパフォーマンスコンピューティング High...Shuichi Gojuki
 
Packetbeatの基礎から、IoTデバイス異常検知への応用まで
Packetbeatの基礎から、IoTデバイス異常検知への応用までPacketbeatの基礎から、IoTデバイス異常検知への応用まで
Packetbeatの基礎から、IoTデバイス異常検知への応用までSatoyuki Tsukano
 
20190926_Try_RHEL8_NVMEoF_Beta
20190926_Try_RHEL8_NVMEoF_Beta20190926_Try_RHEL8_NVMEoF_Beta
20190926_Try_RHEL8_NVMEoF_BetaKohei KaiGai
 
ストリーミング視聴解析の基本とその応用 IPv4・IPv6デュアルソース
ストリーミング視聴解析の基本とその応用 IPv4・IPv6デュアルソースストリーミング視聴解析の基本とその応用 IPv4・IPv6デュアルソース
ストリーミング視聴解析の基本とその応用 IPv4・IPv6デュアルソースMasaaki Nabeshima
 
20160902 hyperscale #04
20160902 hyperscale #0420160902 hyperscale #04
20160902 hyperscale #04ManaMurakami1
 
OpenStackネットワーク実装の現状 と運用自動化開発の実際
OpenStackネットワーク実装の現状 と運用自動化開発の実際OpenStackネットワーク実装の現状 と運用自動化開発の実際
OpenStackネットワーク実装の現状 と運用自動化開発の実際Shohei Yoshimoto
 
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2tamtam180
 
通信と放送の融合を考えるBoF 5
通信と放送の融合を考えるBoF 5通信と放送の融合を考えるBoF 5
通信と放送の融合を考えるBoF 5Masaaki Nabeshima
 
データ可視化勉強会
データ可視化勉強会データ可視化勉強会
データ可視化勉強会Daichi Morifuji
 
クラウドではじめるリアルタイムデータ分析 #seccamp
クラウドではじめるリアルタイムデータ分析 #seccampクラウドではじめるリアルタイムデータ分析 #seccamp
クラウドではじめるリアルタイムデータ分析 #seccampMasahiro NAKAYAMA
 
GPU on OpenStack - GPUインターナルクラウドのベストプラクティス - OpenStack最新情報セミナー 2017年7月
GPU on OpenStack - GPUインターナルクラウドのベストプラクティス - OpenStack最新情報セミナー 2017年7月GPU on OpenStack - GPUインターナルクラウドのベストプラクティス - OpenStack最新情報セミナー 2017年7月
GPU on OpenStack - GPUインターナルクラウドのベストプラクティス - OpenStack最新情報セミナー 2017年7月VirtualTech Japan Inc.
 
FPGAによる大規模データ処理の高速化
FPGAによる大規模データ処理の高速化FPGAによる大規模データ処理の高速化
FPGAによる大規模データ処理の高速化Kazunori Sato
 
Kibanaでsysstatを可視化する
Kibanaでsysstatを可視化するKibanaでsysstatを可視化する
Kibanaでsysstatを可視化するKensuke Maeda
 

What's hot (20)

Elasticsearch勉強会#44 20210624
Elasticsearch勉強会#44 20210624Elasticsearch勉強会#44 20210624
Elasticsearch勉強会#44 20210624
 
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」
 
20170518 eureka dli
20170518 eureka dli20170518 eureka dli
20170518 eureka dli
 
[Azure Antenna] クラウドで HPC ~ HPC on Azure ~
[Azure Antenna] クラウドで HPC ~ HPC on Azure ~[Azure Antenna] クラウドで HPC ~ HPC on Azure ~
[Azure Antenna] クラウドで HPC ~ HPC on Azure ~
 
Edge から Cloud, Beginner から Professional までサポートする Azure AI プラットフォーム
Edge から Cloud, Beginner から Professional までサポートする Azure AI プラットフォームEdge から Cloud, Beginner から Professional までサポートする Azure AI プラットフォーム
Edge から Cloud, Beginner から Professional までサポートする Azure AI プラットフォーム
 
OpenStackを使用したGPU仮想化IaaS環境 事例紹介
OpenStackを使用したGPU仮想化IaaS環境 事例紹介OpenStackを使用したGPU仮想化IaaS環境 事例紹介
OpenStackを使用したGPU仮想化IaaS環境 事例紹介
 
[Cyber HPC Symposium 2019] Microsoft Azureによる、クラウド時代のハイパフォーマンスコンピューティング High...
[Cyber HPC Symposium 2019]  Microsoft Azureによる、クラウド時代のハイパフォーマンスコンピューティング High...[Cyber HPC Symposium 2019]  Microsoft Azureによる、クラウド時代のハイパフォーマンスコンピューティング High...
[Cyber HPC Symposium 2019] Microsoft Azureによる、クラウド時代のハイパフォーマンスコンピューティング High...
 
Packetbeatの基礎から、IoTデバイス異常検知への応用まで
Packetbeatの基礎から、IoTデバイス異常検知への応用までPacketbeatの基礎から、IoTデバイス異常検知への応用まで
Packetbeatの基礎から、IoTデバイス異常検知への応用まで
 
Jetson 活用による スタートアップ企業支援
Jetson 活用による スタートアップ企業支援Jetson 活用による スタートアップ企業支援
Jetson 活用による スタートアップ企業支援
 
20190926_Try_RHEL8_NVMEoF_Beta
20190926_Try_RHEL8_NVMEoF_Beta20190926_Try_RHEL8_NVMEoF_Beta
20190926_Try_RHEL8_NVMEoF_Beta
 
ストリーミング視聴解析の基本とその応用 IPv4・IPv6デュアルソース
ストリーミング視聴解析の基本とその応用 IPv4・IPv6デュアルソースストリーミング視聴解析の基本とその応用 IPv4・IPv6デュアルソース
ストリーミング視聴解析の基本とその応用 IPv4・IPv6デュアルソース
 
20160902 hyperscale #04
20160902 hyperscale #0420160902 hyperscale #04
20160902 hyperscale #04
 
OpenStackネットワーク実装の現状 と運用自動化開発の実際
OpenStackネットワーク実装の現状 と運用自動化開発の実際OpenStackネットワーク実装の現状 と運用自動化開発の実際
OpenStackネットワーク実装の現状 と運用自動化開発の実際
 
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
 
通信と放送の融合を考えるBoF 5
通信と放送の融合を考えるBoF 5通信と放送の融合を考えるBoF 5
通信と放送の融合を考えるBoF 5
 
データ可視化勉強会
データ可視化勉強会データ可視化勉強会
データ可視化勉強会
 
クラウドではじめるリアルタイムデータ分析 #seccamp
クラウドではじめるリアルタイムデータ分析 #seccampクラウドではじめるリアルタイムデータ分析 #seccamp
クラウドではじめるリアルタイムデータ分析 #seccamp
 
GPU on OpenStack - GPUインターナルクラウドのベストプラクティス - OpenStack最新情報セミナー 2017年7月
GPU on OpenStack - GPUインターナルクラウドのベストプラクティス - OpenStack最新情報セミナー 2017年7月GPU on OpenStack - GPUインターナルクラウドのベストプラクティス - OpenStack最新情報セミナー 2017年7月
GPU on OpenStack - GPUインターナルクラウドのベストプラクティス - OpenStack最新情報セミナー 2017年7月
 
FPGAによる大規模データ処理の高速化
FPGAによる大規模データ処理の高速化FPGAによる大規模データ処理の高速化
FPGAによる大規模データ処理の高速化
 
Kibanaでsysstatを可視化する
Kibanaでsysstatを可視化するKibanaでsysstatを可視化する
Kibanaでsysstatを可視化する
 

Similar to 日本発オープンソース!! スケールアウト型データベース GridDB入門 ~ GitHubからダウンロードして使ってみましょう ~

[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ by トレジャーデータ株式会社 斉藤太郎
[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ  by トレジャーデータ株式会社 斉藤太郎[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ  by トレジャーデータ株式会社 斉藤太郎
[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ by トレジャーデータ株式会社 斉藤太郎Insight Technology, Inc.
 
オープンソースのIoT向けスケールアウト型データベース GridDB 〜性能ベンチマーク結果とOSSを利用したビッグデータ分析環境〜
オープンソースのIoT向けスケールアウト型データベース GridDB 〜性能ベンチマーク結果とOSSを利用したビッグデータ分析環境〜オープンソースのIoT向けスケールアウト型データベース GridDB 〜性能ベンチマーク結果とOSSを利用したビッグデータ分析環境〜
オープンソースのIoT向けスケールアウト型データベース GridDB 〜性能ベンチマーク結果とOSSを利用したビッグデータ分析環境〜griddb
 
【ハンズオンセミナー】NoSQL/SQLデュアルインタフェースを備えたIoT向けデータベースGridDB ~ GridDB CE 4.6のテーブルパーティ...
【ハンズオンセミナー】NoSQL/SQLデュアルインタフェースを備えたIoT向けデータベースGridDB ~ GridDB CE 4.6のテーブルパーティ...【ハンズオンセミナー】NoSQL/SQLデュアルインタフェースを備えたIoT向けデータベースGridDB ~ GridDB CE 4.6のテーブルパーティ...
【ハンズオンセミナー】NoSQL/SQLデュアルインタフェースを備えたIoT向けデータベースGridDB ~ GridDB CE 4.6のテーブルパーティ...griddb
 
WebDB Forum 2012 基調講演資料
WebDB Forum 2012 基調講演資料WebDB Forum 2012 基調講演資料
WebDB Forum 2012 基調講演資料Recruit Technologies
 
NoSQL/SQLデュアルインターフェースを備えた IoT向けデータベースGridDB - 強化された時系列データ管理・検索機能について -
NoSQL/SQLデュアルインターフェースを備えた IoT向けデータベースGridDB - 強化された時系列データ管理・検索機能について -NoSQL/SQLデュアルインターフェースを備えた IoT向けデータベースGridDB - 強化された時系列データ管理・検索機能について -
NoSQL/SQLデュアルインターフェースを備えた IoT向けデータベースGridDB - 強化された時系列データ管理・検索機能について -griddb
 
ビッグデータ活用支援フォーラム
ビッグデータ活用支援フォーラムビッグデータ活用支援フォーラム
ビッグデータ活用支援フォーラムRecruit Technologies
 
04 citynet awsセミナー_クラウドでビックデータのスモールスタート
04 citynet awsセミナー_クラウドでビックデータのスモールスタート04 citynet awsセミナー_クラウドでビックデータのスモールスタート
04 citynet awsセミナー_クラウドでビックデータのスモールスタート充博 大崎
 
クラウドでビックデータのスモールスタート
クラウドでビックデータのスモールスタートクラウドでビックデータのスモールスタート
クラウドでビックデータのスモールスタートYukihito Kataoka
 
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 TokyoPrestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 TokyoTreasure Data, Inc.
 
Gmo media.inc 第9回西日本ossの普及を考える会
Gmo media.inc 第9回西日本ossの普及を考える会Gmo media.inc 第9回西日本ossの普及を考える会
Gmo media.inc 第9回西日本ossの普及を考える会Dai Utsui
 
マイクロサービス時代の生存戦略 with HashiCorp
マイクロサービス時代の生存戦略 with HashiCorpマイクロサービス時代の生存戦略 with HashiCorp
マイクロサービス時代の生存戦略 with HashiCorpMasahito Zembutsu
 
Windows 365 Enterprise に触れてみよう
Windows 365 Enterprise に触れてみようWindows 365 Enterprise に触れてみよう
Windows 365 Enterprise に触れてみようYutaro Tamai
 
データホテル・フルマネージドホスティング サービスを支えるOSSと、活用事例
データホテル・フルマネージドホスティング サービスを支えるOSSと、活用事例データホテル・フルマネージドホスティング サービスを支えるOSSと、活用事例
データホテル・フルマネージドホスティング サービスを支えるOSSと、活用事例NHN テコラス株式会社
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とToru Takahashi
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とToru Takahashi
 
20191115-PGconf.Japan
20191115-PGconf.Japan20191115-PGconf.Japan
20191115-PGconf.JapanKohei KaiGai
 
ビッグIoTデータに対応したデータベース GridDB
ビッグIoTデータに対応したデータベース GridDBビッグIoTデータに対応したデータベース GridDB
ビッグIoTデータに対応したデータベース GridDBgriddb
 
red-hat-forum-2017-openshift-baremetal-deployment
red-hat-forum-2017-openshift-baremetal-deploymentred-hat-forum-2017-openshift-baremetal-deployment
red-hat-forum-2017-openshift-baremetal-deploymentTetsuya Sodo
 
オープンソースのビッグデータ・IoT向け スケールアウト型データベースGridDBとPython連携 〜GridDBとPythonと私〜
オープンソースのビッグデータ・IoT向け スケールアウト型データベースGridDBとPython連携 〜GridDBとPythonと私〜オープンソースのビッグデータ・IoT向け スケールアウト型データベースGridDBとPython連携 〜GridDBとPythonと私〜
オープンソースのビッグデータ・IoT向け スケールアウト型データベースGridDBとPython連携 〜GridDBとPythonと私〜griddb
 
ビッグデータ&データマネジメント展
ビッグデータ&データマネジメント展ビッグデータ&データマネジメント展
ビッグデータ&データマネジメント展Recruit Technologies
 

Similar to 日本発オープンソース!! スケールアウト型データベース GridDB入門 ~ GitHubからダウンロードして使ってみましょう ~ (20)

[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ by トレジャーデータ株式会社 斉藤太郎
[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ  by トレジャーデータ株式会社 斉藤太郎[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ  by トレジャーデータ株式会社 斉藤太郎
[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ by トレジャーデータ株式会社 斉藤太郎
 
オープンソースのIoT向けスケールアウト型データベース GridDB 〜性能ベンチマーク結果とOSSを利用したビッグデータ分析環境〜
オープンソースのIoT向けスケールアウト型データベース GridDB 〜性能ベンチマーク結果とOSSを利用したビッグデータ分析環境〜オープンソースのIoT向けスケールアウト型データベース GridDB 〜性能ベンチマーク結果とOSSを利用したビッグデータ分析環境〜
オープンソースのIoT向けスケールアウト型データベース GridDB 〜性能ベンチマーク結果とOSSを利用したビッグデータ分析環境〜
 
【ハンズオンセミナー】NoSQL/SQLデュアルインタフェースを備えたIoT向けデータベースGridDB ~ GridDB CE 4.6のテーブルパーティ...
【ハンズオンセミナー】NoSQL/SQLデュアルインタフェースを備えたIoT向けデータベースGridDB ~ GridDB CE 4.6のテーブルパーティ...【ハンズオンセミナー】NoSQL/SQLデュアルインタフェースを備えたIoT向けデータベースGridDB ~ GridDB CE 4.6のテーブルパーティ...
【ハンズオンセミナー】NoSQL/SQLデュアルインタフェースを備えたIoT向けデータベースGridDB ~ GridDB CE 4.6のテーブルパーティ...
 
WebDB Forum 2012 基調講演資料
WebDB Forum 2012 基調講演資料WebDB Forum 2012 基調講演資料
WebDB Forum 2012 基調講演資料
 
NoSQL/SQLデュアルインターフェースを備えた IoT向けデータベースGridDB - 強化された時系列データ管理・検索機能について -
NoSQL/SQLデュアルインターフェースを備えた IoT向けデータベースGridDB - 強化された時系列データ管理・検索機能について -NoSQL/SQLデュアルインターフェースを備えた IoT向けデータベースGridDB - 強化された時系列データ管理・検索機能について -
NoSQL/SQLデュアルインターフェースを備えた IoT向けデータベースGridDB - 強化された時系列データ管理・検索機能について -
 
ビッグデータ活用支援フォーラム
ビッグデータ活用支援フォーラムビッグデータ活用支援フォーラム
ビッグデータ活用支援フォーラム
 
04 citynet awsセミナー_クラウドでビックデータのスモールスタート
04 citynet awsセミナー_クラウドでビックデータのスモールスタート04 citynet awsセミナー_クラウドでビックデータのスモールスタート
04 citynet awsセミナー_クラウドでビックデータのスモールスタート
 
クラウドでビックデータのスモールスタート
クラウドでビックデータのスモールスタートクラウドでビックデータのスモールスタート
クラウドでビックデータのスモールスタート
 
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 TokyoPrestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
 
Gmo media.inc 第9回西日本ossの普及を考える会
Gmo media.inc 第9回西日本ossの普及を考える会Gmo media.inc 第9回西日本ossの普及を考える会
Gmo media.inc 第9回西日本ossの普及を考える会
 
マイクロサービス時代の生存戦略 with HashiCorp
マイクロサービス時代の生存戦略 with HashiCorpマイクロサービス時代の生存戦略 with HashiCorp
マイクロサービス時代の生存戦略 with HashiCorp
 
Windows 365 Enterprise に触れてみよう
Windows 365 Enterprise に触れてみようWindows 365 Enterprise に触れてみよう
Windows 365 Enterprise に触れてみよう
 
データホテル・フルマネージドホスティング サービスを支えるOSSと、活用事例
データホテル・フルマネージドホスティング サービスを支えるOSSと、活用事例データホテル・フルマネージドホスティング サービスを支えるOSSと、活用事例
データホテル・フルマネージドホスティング サービスを支えるOSSと、活用事例
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
 
20191115-PGconf.Japan
20191115-PGconf.Japan20191115-PGconf.Japan
20191115-PGconf.Japan
 
ビッグIoTデータに対応したデータベース GridDB
ビッグIoTデータに対応したデータベース GridDBビッグIoTデータに対応したデータベース GridDB
ビッグIoTデータに対応したデータベース GridDB
 
red-hat-forum-2017-openshift-baremetal-deployment
red-hat-forum-2017-openshift-baremetal-deploymentred-hat-forum-2017-openshift-baremetal-deployment
red-hat-forum-2017-openshift-baremetal-deployment
 
オープンソースのビッグデータ・IoT向け スケールアウト型データベースGridDBとPython連携 〜GridDBとPythonと私〜
オープンソースのビッグデータ・IoT向け スケールアウト型データベースGridDBとPython連携 〜GridDBとPythonと私〜オープンソースのビッグデータ・IoT向け スケールアウト型データベースGridDBとPython連携 〜GridDBとPythonと私〜
オープンソースのビッグデータ・IoT向け スケールアウト型データベースGridDBとPython連携 〜GridDBとPythonと私〜
 
ビッグデータ&データマネジメント展
ビッグデータ&データマネジメント展ビッグデータ&データマネジメント展
ビッグデータ&データマネジメント展
 

More from griddb

ビッグデータ・IoTシステム向け高速スケールアウト型データベース GridDB - 従来のデータベースでは不可能だったビッグデータのリアルタイム分析が可...
ビッグデータ・IoTシステム向け高速スケールアウト型データベース GridDB  - 従来のデータベースでは不可能だったビッグデータのリアルタイム分析が可...ビッグデータ・IoTシステム向け高速スケールアウト型データベース GridDB  - 従来のデータベースでは不可能だったビッグデータのリアルタイム分析が可...
ビッグデータ・IoTシステム向け高速スケールアウト型データベース GridDB - 従来のデータベースでは不可能だったビッグデータのリアルタイム分析が可...griddb
 
東芝のデータ処理技術基盤のご紹介(ポスター)
東芝のデータ処理技術基盤のご紹介(ポスター)東芝のデータ処理技術基盤のご紹介(ポスター)
東芝のデータ処理技術基盤のご紹介(ポスター)griddb
 
NoSQL/SQLデュアルインターフェースを備えた IoT向けデータベースGridDB ~ クラウドでGridDBを使ってみましょう ~
NoSQL/SQLデュアルインターフェースを備えた IoT向けデータベースGridDB ~ クラウドでGridDBを使ってみましょう ~NoSQL/SQLデュアルインターフェースを備えた IoT向けデータベースGridDB ~ クラウドでGridDBを使ってみましょう ~
NoSQL/SQLデュアルインターフェースを備えた IoT向けデータベースGridDB ~ クラウドでGridDBを使ってみましょう ~griddb
 
IoT指向のクラウドデータベースサービスGridDB Cloud ~その特徴とデータ連携の方法~
IoT指向のクラウドデータベースサービスGridDB Cloud ~その特徴とデータ連携の方法~IoT指向のクラウドデータベースサービスGridDB Cloud ~その特徴とデータ連携の方法~
IoT指向のクラウドデータベースサービスGridDB Cloud ~その特徴とデータ連携の方法~griddb
 
ペタバイト級でも扱えるGridDBのアーキテクチャ Deep Dive
ペタバイト級でも扱えるGridDBのアーキテクチャ Deep Diveペタバイト級でも扱えるGridDBのアーキテクチャ Deep Dive
ペタバイト級でも扱えるGridDBのアーキテクチャ Deep Divegriddb
 
日本発のオープンソース・データベース GridDB
日本発のオープンソース・データベース GridDB日本発のオープンソース・データベース GridDB
日本発のオープンソース・データベース GridDBgriddb
 
NoSQL/SQLデュアルインタフェースを備えたIoT向けデータベースGridDB ~コマンドライン・インターフェース(CLI)を使ってみましょう~
NoSQL/SQLデュアルインタフェースを備えたIoT向けデータベースGridDB ~コマンドライン・インターフェース(CLI)を使ってみましょう~NoSQL/SQLデュアルインタフェースを備えたIoT向けデータベースGridDB ~コマンドライン・インターフェース(CLI)を使ってみましょう~
NoSQL/SQLデュアルインタフェースを備えたIoT向けデータベースGridDB ~コマンドライン・インターフェース(CLI)を使ってみましょう~griddb
 
多様性時代のDB選択
多様性時代のDB選択多様性時代のDB選択
多様性時代のDB選択griddb
 
遂に登場! GridDBからデータベースサービス GridDB Cloud ~その設計思想と運用の原則
遂に登場! GridDBからデータベースサービス GridDB Cloud ~その設計思想と運用の原則遂に登場! GridDBからデータベースサービス GridDB Cloud ~その設計思想と運用の原則
遂に登場! GridDBからデータベースサービス GridDB Cloud ~その設計思想と運用の原則griddb
 
アーキテクチャを一新したIoT/ビッグデータ向けデータベースGridDB
アーキテクチャを一新したIoT/ビッグデータ向けデータベースGridDBアーキテクチャを一新したIoT/ビッグデータ向けデータベースGridDB
アーキテクチャを一新したIoT/ビッグデータ向けデータベースGridDBgriddb
 
NoSQL/SQLデュアルインターフェースを備えた IoT向けデータベースGridDB ~ GridDB CE 4.6のテーブルパーティショニングを 使っ...
NoSQL/SQLデュアルインターフェースを備えた IoT向けデータベースGridDB ~ GridDB CE 4.6のテーブルパーティショニングを 使っ...NoSQL/SQLデュアルインターフェースを備えた IoT向けデータベースGridDB ~ GridDB CE 4.6のテーブルパーティショニングを 使っ...
NoSQL/SQLデュアルインターフェースを備えた IoT向けデータベースGridDB ~ GridDB CE 4.6のテーブルパーティショニングを 使っ...griddb
 
ビッグデータやIoTシステムを支えるデータベース 『GridDB』
ビッグデータやIoTシステムを支えるデータベース 『GridDB』ビッグデータやIoTシステムを支えるデータベース 『GridDB』
ビッグデータやIoTシステムを支えるデータベース 『GridDB』griddb
 
データを事業に活かすために必要なデータ基盤とは
データを事業に活かすために必要なデータ基盤とはデータを事業に活かすために必要なデータ基盤とは
データを事業に活かすために必要なデータ基盤とはgriddb
 
GridDB: A Distributed SQL time series database for IoT and Big Data
GridDB: A Distributed SQL time series database for IoT and Big DataGridDB: A Distributed SQL time series database for IoT and Big Data
GridDB: A Distributed SQL time series database for IoT and Big Datagriddb
 
オープンソースデータベース GridDB ~ なぜ いま、データベースを開発したのか?その理由とGridDBの概要紹介 ~
オープンソースデータベース GridDB ~ なぜ いま、データベースを開発したのか?その理由とGridDBの概要紹介 ~オープンソースデータベース GridDB ~ なぜ いま、データベースを開発したのか?その理由とGridDBの概要紹介 ~
オープンソースデータベース GridDB ~ なぜ いま、データベースを開発したのか?その理由とGridDBの概要紹介 ~griddb
 
多様性時代のDB選択
多様性時代のDB選択多様性時代のDB選択
多様性時代のDB選択griddb
 
【GridDB入門】 IoT、そしてサイバー・フィジカル・システムを支える オープンソースデータベース GridDB ~ こだわりの理由と実現方法のポイント
【GridDB入門】 IoT、そしてサイバー・フィジカル・システムを支える オープンソースデータベース GridDB ~ こだわりの理由と実現方法のポイント【GridDB入門】 IoT、そしてサイバー・フィジカル・システムを支える オープンソースデータベース GridDB ~ こだわりの理由と実現方法のポイント
【GridDB入門】 IoT、そしてサイバー・フィジカル・システムを支える オープンソースデータベース GridDB ~ こだわりの理由と実現方法のポイントgriddb
 
オープンソースデータベース GridDBとそのオープンコミュニティ活動
オープンソースデータベース GridDBとそのオープンコミュニティ活動オープンソースデータベース GridDBとそのオープンコミュニティ活動
オープンソースデータベース GridDBとそのオープンコミュニティ活動griddb
 
GridDBを使用する理由…IoTビッグデータ システムを支える分散スケールアウト型NoSQL/SQLハイブリットデータベースGridDB
GridDBを使用する理由…IoTビッグデータ システムを支える分散スケールアウト型NoSQL/SQLハイブリットデータベースGridDBGridDBを使用する理由…IoTビッグデータ システムを支える分散スケールアウト型NoSQL/SQLハイブリットデータベースGridDB
GridDBを使用する理由…IoTビッグデータ システムを支える分散スケールアウト型NoSQL/SQLハイブリットデータベースGridDBgriddb
 
IoT時代を迎えて、あなたのシステムは今までのDBで充分ですか?~ GridDBとその適用事例紹介 ~
IoT時代を迎えて、あなたのシステムは今までのDBで充分ですか?~ GridDBとその適用事例紹介 ~ IoT時代を迎えて、あなたのシステムは今までのDBで充分ですか?~ GridDBとその適用事例紹介 ~
IoT時代を迎えて、あなたのシステムは今までのDBで充分ですか?~ GridDBとその適用事例紹介 ~ griddb
 

More from griddb (20)

ビッグデータ・IoTシステム向け高速スケールアウト型データベース GridDB - 従来のデータベースでは不可能だったビッグデータのリアルタイム分析が可...
ビッグデータ・IoTシステム向け高速スケールアウト型データベース GridDB  - 従来のデータベースでは不可能だったビッグデータのリアルタイム分析が可...ビッグデータ・IoTシステム向け高速スケールアウト型データベース GridDB  - 従来のデータベースでは不可能だったビッグデータのリアルタイム分析が可...
ビッグデータ・IoTシステム向け高速スケールアウト型データベース GridDB - 従来のデータベースでは不可能だったビッグデータのリアルタイム分析が可...
 
東芝のデータ処理技術基盤のご紹介(ポスター)
東芝のデータ処理技術基盤のご紹介(ポスター)東芝のデータ処理技術基盤のご紹介(ポスター)
東芝のデータ処理技術基盤のご紹介(ポスター)
 
NoSQL/SQLデュアルインターフェースを備えた IoT向けデータベースGridDB ~ クラウドでGridDBを使ってみましょう ~
NoSQL/SQLデュアルインターフェースを備えた IoT向けデータベースGridDB ~ クラウドでGridDBを使ってみましょう ~NoSQL/SQLデュアルインターフェースを備えた IoT向けデータベースGridDB ~ クラウドでGridDBを使ってみましょう ~
NoSQL/SQLデュアルインターフェースを備えた IoT向けデータベースGridDB ~ クラウドでGridDBを使ってみましょう ~
 
IoT指向のクラウドデータベースサービスGridDB Cloud ~その特徴とデータ連携の方法~
IoT指向のクラウドデータベースサービスGridDB Cloud ~その特徴とデータ連携の方法~IoT指向のクラウドデータベースサービスGridDB Cloud ~その特徴とデータ連携の方法~
IoT指向のクラウドデータベースサービスGridDB Cloud ~その特徴とデータ連携の方法~
 
ペタバイト級でも扱えるGridDBのアーキテクチャ Deep Dive
ペタバイト級でも扱えるGridDBのアーキテクチャ Deep Diveペタバイト級でも扱えるGridDBのアーキテクチャ Deep Dive
ペタバイト級でも扱えるGridDBのアーキテクチャ Deep Dive
 
日本発のオープンソース・データベース GridDB
日本発のオープンソース・データベース GridDB日本発のオープンソース・データベース GridDB
日本発のオープンソース・データベース GridDB
 
NoSQL/SQLデュアルインタフェースを備えたIoT向けデータベースGridDB ~コマンドライン・インターフェース(CLI)を使ってみましょう~
NoSQL/SQLデュアルインタフェースを備えたIoT向けデータベースGridDB ~コマンドライン・インターフェース(CLI)を使ってみましょう~NoSQL/SQLデュアルインタフェースを備えたIoT向けデータベースGridDB ~コマンドライン・インターフェース(CLI)を使ってみましょう~
NoSQL/SQLデュアルインタフェースを備えたIoT向けデータベースGridDB ~コマンドライン・インターフェース(CLI)を使ってみましょう~
 
多様性時代のDB選択
多様性時代のDB選択多様性時代のDB選択
多様性時代のDB選択
 
遂に登場! GridDBからデータベースサービス GridDB Cloud ~その設計思想と運用の原則
遂に登場! GridDBからデータベースサービス GridDB Cloud ~その設計思想と運用の原則遂に登場! GridDBからデータベースサービス GridDB Cloud ~その設計思想と運用の原則
遂に登場! GridDBからデータベースサービス GridDB Cloud ~その設計思想と運用の原則
 
アーキテクチャを一新したIoT/ビッグデータ向けデータベースGridDB
アーキテクチャを一新したIoT/ビッグデータ向けデータベースGridDBアーキテクチャを一新したIoT/ビッグデータ向けデータベースGridDB
アーキテクチャを一新したIoT/ビッグデータ向けデータベースGridDB
 
NoSQL/SQLデュアルインターフェースを備えた IoT向けデータベースGridDB ~ GridDB CE 4.6のテーブルパーティショニングを 使っ...
NoSQL/SQLデュアルインターフェースを備えた IoT向けデータベースGridDB ~ GridDB CE 4.6のテーブルパーティショニングを 使っ...NoSQL/SQLデュアルインターフェースを備えた IoT向けデータベースGridDB ~ GridDB CE 4.6のテーブルパーティショニングを 使っ...
NoSQL/SQLデュアルインターフェースを備えた IoT向けデータベースGridDB ~ GridDB CE 4.6のテーブルパーティショニングを 使っ...
 
ビッグデータやIoTシステムを支えるデータベース 『GridDB』
ビッグデータやIoTシステムを支えるデータベース 『GridDB』ビッグデータやIoTシステムを支えるデータベース 『GridDB』
ビッグデータやIoTシステムを支えるデータベース 『GridDB』
 
データを事業に活かすために必要なデータ基盤とは
データを事業に活かすために必要なデータ基盤とはデータを事業に活かすために必要なデータ基盤とは
データを事業に活かすために必要なデータ基盤とは
 
GridDB: A Distributed SQL time series database for IoT and Big Data
GridDB: A Distributed SQL time series database for IoT and Big DataGridDB: A Distributed SQL time series database for IoT and Big Data
GridDB: A Distributed SQL time series database for IoT and Big Data
 
オープンソースデータベース GridDB ~ なぜ いま、データベースを開発したのか?その理由とGridDBの概要紹介 ~
オープンソースデータベース GridDB ~ なぜ いま、データベースを開発したのか?その理由とGridDBの概要紹介 ~オープンソースデータベース GridDB ~ なぜ いま、データベースを開発したのか?その理由とGridDBの概要紹介 ~
オープンソースデータベース GridDB ~ なぜ いま、データベースを開発したのか?その理由とGridDBの概要紹介 ~
 
多様性時代のDB選択
多様性時代のDB選択多様性時代のDB選択
多様性時代のDB選択
 
【GridDB入門】 IoT、そしてサイバー・フィジカル・システムを支える オープンソースデータベース GridDB ~ こだわりの理由と実現方法のポイント
【GridDB入門】 IoT、そしてサイバー・フィジカル・システムを支える オープンソースデータベース GridDB ~ こだわりの理由と実現方法のポイント【GridDB入門】 IoT、そしてサイバー・フィジカル・システムを支える オープンソースデータベース GridDB ~ こだわりの理由と実現方法のポイント
【GridDB入門】 IoT、そしてサイバー・フィジカル・システムを支える オープンソースデータベース GridDB ~ こだわりの理由と実現方法のポイント
 
オープンソースデータベース GridDBとそのオープンコミュニティ活動
オープンソースデータベース GridDBとそのオープンコミュニティ活動オープンソースデータベース GridDBとそのオープンコミュニティ活動
オープンソースデータベース GridDBとそのオープンコミュニティ活動
 
GridDBを使用する理由…IoTビッグデータ システムを支える分散スケールアウト型NoSQL/SQLハイブリットデータベースGridDB
GridDBを使用する理由…IoTビッグデータ システムを支える分散スケールアウト型NoSQL/SQLハイブリットデータベースGridDBGridDBを使用する理由…IoTビッグデータ システムを支える分散スケールアウト型NoSQL/SQLハイブリットデータベースGridDB
GridDBを使用する理由…IoTビッグデータ システムを支える分散スケールアウト型NoSQL/SQLハイブリットデータベースGridDB
 
IoT時代を迎えて、あなたのシステムは今までのDBで充分ですか?~ GridDBとその適用事例紹介 ~
IoT時代を迎えて、あなたのシステムは今までのDBで充分ですか?~ GridDBとその適用事例紹介 ~ IoT時代を迎えて、あなたのシステムは今までのDBで充分ですか?~ GridDBとその適用事例紹介 ~
IoT時代を迎えて、あなたのシステムは今までのDBで充分ですか?~ GridDBとその適用事例紹介 ~
 

日本発オープンソース!! スケールアウト型データベース GridDB入門 ~ GitHubからダウンロードして使ってみましょう ~

  • 1. © 2018 Toshiba Digital Solutions Corporation 東芝デジタルソリューションズ株式会社 野々村 克彦 2018.10.27 日本発オープンソース!! スケールアウト型データベース GridDB入門 ~ GitHubからダウンロードして使ってみましょう ~
  • 2. プロフィール 名前:野々村 克彦 所属:東芝デジタルソリューションズ(株)ソフトウェア&AIテクノロ ジーセンタ- 知識・メディア処理技術開発部 2011年 スケールアウト型DB GridDBの開発メンバ 2015年 GridDBのオープンソースPJ開始 現在 GridDBコミュニティ版の開発・コミッター、海外展開の技術支援など。 GitHub歴 4年 ちなみに、出身高校は米子東(鳥取県)。日本発のRuby考案者である、 まつもとゆきひろ氏の2年後輩になるらしい。
  • 3. 2© 2018 Toshiba Digital Solutions Corporation 発表内容 1.スケールアウト型データベースGridDBの概要 – 特長、導入事例 2.GridDBの使い方 – クイックスタート (デモ) – 運用コマンド操作、クライアント操作 – はまりやすいポイント、クラスタ構成やAWS/Azureでの利用 3.最近のOSS活動 4.まとめ
  • 4. 3© 2018 Toshiba Digital Solutions Corporation GridDBとは • 日本発のビッグデータ/IoT向けのスケールアウト型データベース • 製品化(2013年)、基本機能をオープンソース化(2016年) • 社会インフラを中心に、高い信頼性・可用性が求められるシステムで使われている
  • 5. 4© 2018 Toshiba Digital Solutions Corporation GridDBの特長 • データモデルはキー・コンテナ。コンテナ内でのデータ一貫性を保証 • 時系列データ管理する特別な機能 IoT指向の データモデル • データの複製をノード間で自動的に実行 • ノード障害があってもフェールオーバによりサービス継続 • 数秒から数十秒の切り替え時間 高い信頼性と 可用性 • 少ないサーバ台数で初期投資を抑制 • 負荷や容量の増大に合わせたノード増設が可能 • 自律データ再配置により、高いスケーラビリティを実現 高いスケーラビリティ • メモリを主、ストレージを従としたハイブリッド型インメモリDB • メモリやディスクの排他処理や同期待ちを極力排除高性能 ①キーコンテナ型 ②自律データ再配置技術ADDA High Performance High Scalability High Availability
  • 6. 5© 2018 Toshiba Digital Solutions Corporation データモデル ①キーコンテナ型 データモデル キーバリュー型 ワイドカラム型 ドキュメント型 グラフ型 NoSQLの例 Redis Cassandra MongoDB Neo4j キー バリュー キー カラム バリュー カラム バリュー キー JSON キー1 キー2 キー3 キーコンテナ型 GridDB キー C0 C1 C2 C3 Val Val Val Val Val Val Val Val Val Val Val Val
  • 7. 6© 2018 Toshiba Digital Solutions Corporation • NoSQL型でよく採用されているキー・バリューを拡張 • 順序に関係無くレコードが格納されるコレクションコンテナ • 時間順にレコードが格納される時系列コンテナ 時系列レコードを圧縮する機能や期限解放する機能 • コンテナ内でのデータ一貫性を保証 索引設定機能、SQLライクのクエリ(TQL)機能 データモデル ①キーコンテナ型 コレクション(Collection) "siteA_equip" id name specification equip001 変圧器1 xxx変圧器 equip002 変圧器2 yyy変圧器 equip003 遮断機1 xxx遮断機 equip004 遮断機2 yyy遮断機 equip005 ケーブル1 zzzケーブル ... ... ... 時系列(TimeSeries) "siteA_s012" timestamp heat_rate temperature 4/28/20011 ... 78.3 47.9 4/28/20011 ... 82.9 63.4 ... ... ... 5 10 15 20 17:30 21:30 1:30 5:30 9:30 13:30 17:30
  • 8. 7© 2018 Toshiba Digital Solutions Corporation • 自律データ再配置技術(ADDA : Autonomous Data Distribution Algorithm) • データを分散化するゆえにデータの一貫性が弱くなり、 一貫性やスケール性を求めるとパフォーマンスが落ちる、という大きな欠点を解決 DBクラスタ ②ADDA 管理ノード DBノード DBノード DBノード クライアント 仲介ノード FSノード FSノード FSノード DBノード (マスタノード) DBノード DBノード クライアント データ複製 データ配置 データ複製 データ配置 要求 要求 従来技術 GridDB 自律的なDBクラスタ技術 ADDA DBノード DBノード DBノード 従来技術 ※FS:ファイルシステム
  • 9. 8© 2018 Toshiba Digital Solutions Corporation • マスタースレーブモデルの改良 – ノード間でマスタノードを自動選択。管理ノードがクラスタ内に存在せず、単一障害点を完全排除 • 自律データ再配置技術の開発 – (マスターノードが)ノード間アンバランス、レプリカ欠損を検知⇒バックグラウンドでデータ再配置 – 2種類のレプリカデータを使って高速同期、完了後切替え 具体的な挙動 クライアント 〈ノード間データ再配置〉 〈アクセス切替え〉〈負荷アンバランスの検知〉 DBノード DB更新ログ メモリブロック 負荷小
  • 10. 9© 2018 Toshiba Digital Solutions Corporation 高性能 Read 50% + Write 50% 約2.5倍 Read 95% + Write 5% 約8倍 ※フィックスターズ社によるYCSBベンチマーク結果 NoSQLの代表的なベンチマーク https://github.com/brianfrankcooper/YCSB • YCSB (Yahoo! Cloud Serving Benchmark)
  • 11. 10© 2018 Toshiba Digital Solutions Corporation • 社会インフラを中心に、高い信頼性・可用性が求められるシステムに適用中 • 東芝IoTアーキテクチャー「SPINEX」の構成ソリューション 適用事例 ・フランス リヨン 太陽光発電 監視・診断システム 発電量の遠隔監視、発電パネルの性能劣化を診断 ・クラウドBEMS ビルに設置された各種メータの情報の収集、蓄積、分析 ・石巻スマートコミュニティ プロジェクト 地域全体のエネルギーのメータ情報の収集、蓄積、分析 ・電力会社 低圧託送業務システム スマートメータから収集される電力使用量を集計し、需要量と発電量のバランスを調整 ・神戸製鋼所 産業用コンプレッサ稼働監視システム グローバルに販売した産業用コンプレッサをクラウドを利用して稼働監視 ・東芝機械 IoTプラットフォーム 工作機器、射出成形、ダイカストマシン、など膨大な製造データを管理 ・デンソー Factory-IoT (IoTを活用したダントツ工場) https://www.youtube.com/watch?v=9-yf-XN1Bgg&feature=youtu.be (ビデオ) ・DENSO International Americaの次世代の車両管理システム https://griddb.net/ja/blog/griddb-automotive/ ・クラウド型IoTソリューション ....
  • 12. 11© 2018 Toshiba Digital Solutions Corporation GridDBの使い方
  • 13. 12© 2018 Toshiba Digital Solutions Corporation クイックスタート(1/2) 「GridDB V4.0 CEのRPMによるインストール、1台構成でサンプル実行の例」 • 環境 – OS: CentOS 7.5 ※デモはWin7のノートPC上にVirtualBoxでVMを立てて、ゲストOSをCentOS 7.5とした。 1. インストール $ wget https://github.com/griddb/griddb_nosql/releases/download/v4.0.0/griddb_nosql-4.0.0-1.linux.x86_64.rpm $ rpm –ivh griddb_nosql-4.0.0-1.linux.x86_64.rpm 2. 設定 – ユーザ”gsadm”のパスワード設定 $ passwd gsadm – ユーザ”gsadm”でログイン $ su – gsadm – GridDB管理ユーザ”admin”のパスワード設定 $ gs_passwd admin – クラスタ名の設定 $ vi conf/gs_cluster.json ※環境変数 $GS_HOME, $GS_LOGが設定される ※OS上にユーザ”gsadm”が生成される ※”clusterName”:””の部分にクラスタ名を入力する
  • 14. 13© 2018 Toshiba Digital Solutions Corporation 3. ノードの起動、クラスタ構成 $ gs_startnode $ gs_joincluster -c (クラスタ名) -u admin/(パスワード) –s (接続先IPアドレス) 4. サンプルプログラムの実行 $ export CLASSPATH=${CLASSPATH}:/usr/share/java/gridstore.jar $ mkdir gsSample $ cp /usr/griddb-X.X.X/docs/sample/program/Sample1.java gsSample/. $ javac gsSample/Sample1.java $ java gsSample/Sample1 239.0.0.1 31999 (クラスタ名) admin (パスワード)  Person: name=name02 status=false count=2 lob=[65, 66, 67, 68, 69, 70, 71, 72, 73, 74] 5. クラスタ停止、ノード停止 $ gs_stopcluster –u admin/(パスワード) –s (接続先IPアドレス) $ gs_stopnode –u admin/(パスワード) –s (接続先IPアドレス) ※ 239,0,0,1 (31999)はマルチキャストで通信するためのIPアドレス (ポートNo) クイックスタート(2/2)
  • 15. 14© 2018 Toshiba Digital Solutions Corporation ディレクトリ構成 • 基本ディレクトリ – 実行ファイル • サーバモジュール (bin/gsserver) • 運用コマンド (bin/gs_startnode, gs_joincluster, …) – コンフィグファイル • ノード定義ファイル (conf/gs_node.json) • クラスタ定義ファイル (conf/gs_cluster.json) – その他 • Javaクライアントライブラリ (gridstore.jar) • データディレクトリ – データベースファイル • チェックポイントファイル (data/gs_cp_*.dat) • DB更新ログファイル (data/gs_log_*.log) – イベントログファイル (log/gridstore_*.log) (インストールディレクトリ) /usr/griddb-X.X.X/ 3rd_party/ bin/ conf/ docs/ (gsadmのホームディレクトリ) /var/lib/gridstore/ conf/ data/ log/
  • 16. 15© 2018 Toshiba Digital Solutions Corporation { "dataStore":{ "dbPath":"data", "syncTempPath":"sync", "storeMemoryLimit":"1024MB", "storeWarmStart":false, "concurrency":4, "logWriteMode":1, "persistencyMode":"NORMAL", "affinityGroupSize":4 }, "checkpoint":{ "checkpointInterval":"60s", "checkpointMemoryLimit":"1024MB", "useParallelMode":false }, "cluster":{ "servicePort":10010 }, "sync":{ "servicePort":10020 }, "system":{ "servicePort":10040, コンフィグファイルの設定例(抜粋) gs_node.json { "dataStore":{ "partitionNum":128, "storeBlockSize":“64KB" }, "cluster":{ "clusterName":“osc123", "replicationNum":2, "notificationAddress":"239.0.0.1", "notificationPort":20000, "notificationInterval":"5s", "heartbeatInterval":"5s", "loadbalanceCheckInterval":"180s" }, "sync":{ "timeoutInterval":"30s" }, "transaction":{ "notificationAddress":"239.0.0.1", "notificationPort":31999, "notificationInterval":"5s", "replicationMode":0, "replicationTimeoutInterval":"10s" } gs_cluster.json
  • 17. 16© 2018 Toshiba Digital Solutions Corporation 運用コマンドの操作手順 1. 起動(各ノードについて。起動するマシン上で実行) – gs_startnode 2. クラスタ構成(各ノードについて。1台構成でも必要) – gs_joincluster [-s 接続先IPアドレス:ポート] -n 構成ノード数 -c クラスタ名 -u ユーザ名/パスワード 3. アプリ実行 4. クラスタ停止(クラスタを構成している1ノードに対して) – gs_stopcluster [-s 接続先IPアドレス:ポート] -u ユーザ名/パスワード 5. ノード停止(各ノードについて) – gs_stopnode [-w [WAIT_TIME]][-s 接続先IPアドレス:ポート] [-f] -u ユーザ名/パスワード ※STAT取得(各ノードについて) – gs_stat [-s 接続先IPアドレス:ポート] -u ユーザ名/パスワード
  • 18. 17© 2018 Toshiba Digital Solutions Corporation $ gs_stat -u admin/admin { "cluster": { "activeCount": 1, "clusterName": “test", "clusterStatus": "MASTER", "designatedCount": 1, "master": { "address": "127.0.0.1", "port": 10040 }, "nodeList": [ { "address": "127.0.0.1", "port": 10040 } ], "nodeStatus": "ACTIVE", "notificationMode": "MULTICAST", "partitionStatus": "NORMAL", "startupTime": "2018-10-10T12:04:45+0900", }, "currentTime": "2018-10-10T12:05:23+0900", "performance": { "checkpointFileSize": 262144, "checkpointMemory": 0, "checkpointMemoryLimit": 1073741824, "peakProcessMemory": 67137536, "processMemory": 67137536, … "storeMemory": 0, "storeMemoryLimit": 1073741824, "storeTotalUse": 0, "swapRead": 0, "swapReadSize": 0, "swapReadTime": 0, "swapWrite": 0, "swapWriteSize": 0, "swapWriteTime": 0, "totalReadOperation": 0, "totalRowRead": 0, "totalRowWrite": 0, "totalWriteOperation": 0 }, "version": "4.0.0-33128 CE" } gs_stat出力例(抜粋)
  • 19. 18© 2018 Toshiba Digital Solutions Corporation 1. プロパティ設定(主に接続用) 2. コンテナの生成・取得 3. (A) データ登録 (B) 検索 クライアント操作の例
  • 20. 19© 2018 Toshiba Digital Solutions Corporation クライアント操作の例:プロパティ設定 1. プロパティ設定(主に接続用) 2. コンテナの生成・取得 3. (A) データ登録 (B) 検索 マルチキャスト方式の場合: マルチキャストで通信するためのIPアドレス、ポートNoを指定する。 // プロパティ設定 Properties props = new Properties(); props.setProperty(“notificationAddress”, args[0]); // マルチキャスト・アドレス props.setProperty(“notificationPort”, args[1]);// マルチキャスト・ポートNo props.setProperty(“clusterName”, args[2]); // クラスタ名 props.setProperty(“user”, args[3]); // ユーザ名 props.setProperty(“password”, args[4]); // パスワード // GridStoreインスタンスの取得 GridStore store = GridStoreFactory.getInstance().getGridStore(props);
  • 21. 20© 2018 Toshiba Digital Solutions Corporation クライアント操作の例:コンテナ生成、データ登録 // コレクションコンテナ生成 Collection<Long,Alert> alertCol = store.putCollection(alertColName, Alert.class); // 索引設定 alertCol.createIndex("timestamp"); alertCol.createIndex("level"); alertCol.setAutoCommit(false); … Alert alert = new Alert(); while ((nextLine = reader.readNext()) != null) { … alert.timestamp = new Date(datetime); alert.sensorId = nextLine[2]; alert.level = Integer.valueOf(nextLine[3]); alert.detail = nextLine[4]; // データ登録 alertCol.put(alert); } alertCol.commit(); // アラート情報 class Alert { @RowKey Long id; Date timestamp; String sensorId; int level; String detail; } // ロウキーには@RowKeyを付ける 1. プロパティ設定(主に接続用) 2. コンテナの生成・取得 3. (A) データ登録 (B) 検索 A
  • 22. 21© 2018 Toshiba Digital Solutions Corporation Collection<String,Alert> alertCol = store.getCollection(alertColName, Alert.class); // コンテナ取得 … // 24時間以内の重大アラート(level>3)を検索 String from = TimeStampUtil.format( TimeStampUtil.add(new Date(now), -24, TimeUnit.HOUR) ); Query<Alert> alertQuery = alertCol.query(“select * where level > 3 and time > TIMESTAMP('" + from + "')" );// TQLによる検索 RowSet<Alert> alertRs = alertQuery.fetch(); while( alertRs.hasNext() ) { // 重大アラート発生したセンサのデータが入っている時系列コンテナを取得 Alert alert = alertRs.next(); TimeSeries<Point> ts = store.getTimeSeries(alert.sensorId, Point.class); // 時系列コンテナ取得 // 直前の時系列データを検索 Date endDate = alert.timestamp; Date startDate = TimeStampUtil.add(alert.timestamp, -10, TimeUnit.MINUTE); RowSet<Point> rowSet = ts.query(startDate, endDate).fetch(); // 専用関数による範囲検索 while (rowSet.hasNext()) { Point ret = rowSet.next(); クライアント操作の例:検索 24時間以内に発生した重大アラートについて直前の時系列データを検索 1. プロパティ設定(主に接続用) 2. コンテナの生成・取得 3. (A) データ登録 (B) 検索 A B ※詳細は以下をご覧ください。 GridDB プログラミングチュートリアル:https://griddb.net/ja/docs/manuals/v3.1/GridDB_ProgrammingTutorial.html ソース:https://github.com/griddb/griddb_nosql/tree/master/sample/tutorial/ja
  • 23. 22© 2018 Toshiba Digital Solutions Corporation はまりやすいポイント 1. 起動できない – 環境変数が未設定エラー。⇒ gsadmでログインしていない。 • gsadmのパスワードを設定した上でgsadmでログイン。環境変数が自動設定される。 • suコマンドでログインする場合、「$ su – gsadm」 のように「-」/「-l」オプションを付けること。 – 管理ユーザ(例:admin)のパスワードが設定されていない。 – gs_cluster.jsonファイルにクラスタ名が設定されていない。 – 「$ hostname -i」にてホスト名からIPアドレスが取得できない。 ⇒ /etc/hostsファイルの設定を確認する。 2. 運用コマンド操作ができない – プロキス変数が設定されている。⇒プロキシ側にアクセスしないようにする。 「(例)$ export no_proxy=10.0.2.15」 3. クライアント操作ができない – ファイアウォールに通信用ポートNoを許可する。 「(例)$ firewall-cmd --zone=public --add-port=31999/udp」
  • 24. 23© 2018 Toshiba Digital Solutions Corporation N台でクラスタを構成する場合 • コンフィグ – gs_cluster.json, passwdファイルはクラスタ内の全ノードで共通の設定にする。 • 運用コマンド操作 – N台の各ノードについて、起動およびクラスタ構成などの操作を行う。 • 起動:リモートマシン操作ではsshを使う。 • クラスタ構成:クラスタ構成数を指定する (例:-n 3)。 – クラスタ停止はクラスタを構成している1ノードについて操作を行えばよい。 • クライアント操作 – 1台構成と同様。 gs_cluster.json/ password gs_node.json ノード1 運用コマンド操作 gs_cluster.json/ password gs_node.json ノード2 gs_cluster.json/ password gs_node.json ノード3
  • 25. 24© 2018 Toshiba Digital Solutions Corporation • マルチキャスト方式以外の方法を使う 固定リスト方式の場合:全ノードのIPアドレス、通信用ポートNoを列挙する。 サーバ側の設定 (gs_cluster.json) クライアント側の設定 (Javaプログラム) AWS/Azureを使う場合 "cluster":{ "notificationMember": [ { "cluster": {"address":"172.17.0.44", "port":10010}, "sync": {"address":"172.17.0.44", "port":10020}, "system": {"address":"172.17.0.44", "port":10040}, "transaction": {"address":"172.17.0.44", "port":10001} }, { "cluster": {"address":"172.17.0.45", "port":10010}, "sync": {"address":"172.17.0.45", "port":10020}, "system": {"address":"172.17.0.45", "port":10040}, "transaction": {"address":"172.17.0.45", "port":10001} }, { "cluster": {"address":"172.17.0.46", "port":10010}, "sync": {"address":"172.17.0.46", "port":10020}, "system": {"address":"172.17.0.46", "port":10040}, "transaction": {"address":"172.17.0.46", "port":10001} } ] // プロパティ設定 Properties props = new Properties(); props.setProperty(“notificationMember”, “172.17.0.44:10001, 172.17.0.45:10001, 172.17.0.46:10001”); // (アドレス1):(ポート1),(アドレス2):(ポート2),...形式 … GridStore store = GridStoreFactory.getInstance().getGridStore(props);
  • 26. 25© 2018 Toshiba Digital Solutions Corporation OSS活動
  • 27. 26© 2018 Toshiba Digital Solutions Corporation GitHubサイト https://github.com/griddb/ • NoSQL機能、様々な開発言語のクライアント、 主要OSSとのコネクタをソース公開 https://github.com/griddb/griddb_nosqlなど • 目的 – ビッグデータ技術の普及促進 • 多くの人に知ってもらいたい、使ってみてもらいたい。 • いろんなニーズをつかみたい。 – 他のオープンソースソフトウェア、システムとの連携強化 griddb github 検索
  • 28. 27© 2018 Toshiba Digital Solutions Corporation 最近のOSS活動 2018年 • 2月 GridDB Pythonクライアントのソース公開(GitHub) • 3月 GridDB Goクライアントのソース公開(GitHub) • 5月 GridDB V4.0 Community Editionのソース公開 (サーバ、Javaクライアント) (GitHub) • 6月 GridDB Node.JSクライアントのソース公開(GitHub) GridDB PHPクライアントのソース公開(GitHub) • 7月 GridDB V4.0 CE Cクライアントのソース公開(GitHub) • 8月 GridDB用Kafkaコネクタ・サンプルのソース公開(GitHub) • 9月 GridDB Pythonクライアントのパッケージ公開(PyPI) GridDB Node.JSクライアントのパッケージ公開(npm) • 10月 GridDB Perlクライアントのソース公開(GitHub)
  • 29. 28© 2018 Toshiba Digital Solutions Corporation GridDB V4.0 CE 追加機能 1. 大規模データ管理強化 – より少ないノード台数で柔軟に効率よく対応するための強化・改善を行いました。 2. 検索結果取得時の分割処理への対応 – バッファのサイズなどに収まるよう、内部で自動的に分割し処理することで、大量の検索結果が取得 可能になりました。 3. コンテナ名などの名前に使用できる文字の拡張 – 他のデータベースとの連携を容易にするためにコンテナ名などに使用できる文字を拡張しました。 4. データベースファイルのサイズ縮小機能 – データベースファイルのサイズ(実ディスク割当量)を縮小することが可能になりました。 5. Cクライアントのライセンス変更 – AGPL V3からApache V2に変更しました。
  • 30. 29© 2018 Toshiba Digital Solutions Corporation 公開状況 GridDB V4.0 CE(Community Edition) Javaクライアント Cクライアント Hadoop MapReduce コネクタ YCSB コネクタ Spark コネクタ KairosDB コネクタ Python クライアント Node.JS クライアント 収集 可視化 分散処理 Webアプリ分析性能測定 Go クライアント PHP クライアント Kafka コネクタ Ruby クライアント ②各種クライアントの拡充①主要OSSとの連携強化 ③GitHub以外のサイトからの情報発信 ④主要OSSリポジトリへのコントリビュート(YCSBなど予定) GitHub (https://github.com/) PyPI (https://pypi.org/) npm (https://www.npmjs.com/)
  • 31. 30© 2018 Toshiba Digital Solutions Corporation デベロッパーズサイト https://griddb.net/ • アプリケーション開発者向けのサイト • 様々なコンテンツを公開 – ホワイトペーパ、ブログ – マニュアル – サンプルコード など • コミュニケーションの場(フォーラム)を提供 griddb net 検索
  • 32. 31© 2018 Toshiba Digital Solutions Corporation 最近のブログ
  • 33. 32© 2018 Toshiba Digital Solutions Corporation ツイッター https://twitter.com/griddb_jp griddb • GridDBに関するリリース、 イベント、などをお知らせします。 (日本国内向け) griddb_jp 検索
  • 34. 33© 2018 Toshiba Digital Solutions Corporation まとめ • GridDBはビッグデータ・IoT向けのスケールアウト型データベースです。 • 今回、GridDBの概要、使い方についてご説明いたしました。 • OSSサイト、デベロッパーズサイトなどで、GridDB機能強化やクライアント拡充、 主要OSSとの連携強化などの様々なOSS活動を実施しています。 ● 本資料に掲載の製品名、サービス名には、各社の登録商標または商標が含まれています。 オープンソースのGridDBを是非とも使ってみてください。
  • 35. 34© 2018 Toshiba Digital Solutions Corporation ご清聴ありがとうございました
  • 36. 35© 2018 Toshiba Digital Solutions Corporation ご参考:GridDBに関する情報 • GridDB デベロッパーズサイト – https://griddb.net/ • GridDB OSSサイト – https://github.com/griddb/griddb_nosql/ • Twitter: GridDB (日本) – https://twitter.com/griddb_jp • Twitter: GridDB Community – https://twitter.com/GridDBCommunity • Facebook: GridDB Community – https://www.facebook.com/griddbcommunity/ • GridDB お問い合わせ – デベロッパーズサイトのフォーラム、OSSサイトのGitHubのIssue、 もしくはcontact@griddb.orgをご利用ください
  • 37. 36© 2018 Toshiba Digital Solutions Corporation ご参考:デベロッパーズサイトの主なコンテンツ(ハウツーもの) • AWS/Azure上で動かす方法 – 「GridDB Azureクラスタの構築」 – 「Fixed ListでGridDBを使う方法」 • Docker上で動かす方法 – 「Docker上でGridDBを実行する」 • Pappetによる設定方法 – 「Puppetを使用したGridDBの設定方法」 • 各種クライアント – 「GridDB‘s C/Python/Ruby APIsを使ってみよう」 – 「GridDBのGo言語 Client入門」 – 「GridDB Node.jsクライアントを使ってみよう」 – 「GridDBのPHPクライアント入門」 • MapReduceコネクタ – 「Hadoop MapReduce用のGridDBコネクタの使い方」 • Sparkコネクタ – 「Apache SparkのためのGridDBコネクタ」 • YCSBコネクタ – 「YCSB向けGridDBコネクタを使ってみよう」 ※https://griddb.net/ja/blog/
  • 38. 37© 2018 Toshiba Digital Solutions Corporation ご参考:デベロッパーズサイトの主なコンテンツ(ホワイトペーパなど) ホワイトペーパ: • GridDB®とは • GridDB と Cassandra のパフォーマンスとスケーラビリティ – Microsoft Azure 環境における YCSB パフォーマンス比較 • GridDBとInfluxDBのTimeSeriesベンチマーク比較 • GridDB Reliability and Robustness など ブログ: • IoT産業におけるGridDB導入事例 • 自動車産業におけるGridDB導入事例 • 自律型データ配信アルゴルズム (ADDA) • CAP 定理と GridDB • Raspberry Piチュートリアル:KairosDBコネクタを介してGridDBに温度データを送信する など
  • 39. 38© 2018 Toshiba Digital Solutions Corporation 付録:クライアント操作 1. プロパティ設定(主に接続用) 2. コンテナ生成・取得 3. (A) データ登録・取得 (B) 検索
  • 40. 39© 2018 Toshiba Digital Solutions Corporation 1.プロパティ設定 マルチキャスト方式の場合:マルチキャストで通信するためのIPアドレス、ポートNoを指定する。 // プロパティ設定 Properties props = new Properties(); props.setProperty(“notificationAddress”, args[0]); // マルチキャスト・アドレス props.setProperty(“notificationPort”, args[1]);// マルチキャスト・ポートNo props.setProperty(“clusterName”, args[2]); // クラスタ名 props.setProperty(“user”, args[3]); // ユーザ名 props.setProperty(“password”, args[4]); // パスワード // GridStoreインスタンスの取得 GridStore store = GridStoreFactory.getInstance().getGridStore(props);
  • 41. 40© 2018 Toshiba Digital Solutions Corporation 2.コンテナ生成・取得(静的) 【時系列コンテナ】 // スキーマ定義 static class Point { @RowKey Date timestamp; // ロウキーには@RowKeyをつける boolean active; double voltage; } // 時系列コンテナの作成 TimeSeries<Point> ts = store.putTimeSeries("point01", Point.class); // 時系列コンテナの取得 TimeSeries<Point> ts = store.getTimeSeries("point01");
  • 42. 41© 2018 Toshiba Digital Solutions Corporation 2.コンテナ生成(動的) 【時系列コンテナ】 // コンテナ情報を作成 ContainerInfo info = new ContainerInfo(); info.setType(ContainerType.TIME_SERIES); // コンテナタイプを設定 info.setName(“point01”); // コンテナ名を設定 info.setColumnInfoList(Arrays.asList( new ColumnInfo(“timestamp", GSType.TIMESTAMP), new ColumnInfo(“active", GSType.BOOL), new ColumnInfo(“voltage", GSType.DOUBLE)); // カラム情報(カラム名、カラムタイプ)を設定 info.setRowKeyAssigned(true); // ロウキーの有無を設定。有だと先頭カラムがロウキーとなる // 時系列コンテナの作成 Container<Date, Row> container = store.putContainer(null, info, false); // 時系列コンテナの取得 Container<Date, Row> container = store.getContainer(“point01”);
  • 43. 42© 2018 Toshiba Digital Solutions Corporation 3(A). データ登録・取得 【時系列コンテナ】 // Rowのデータを用意 Point point = new Point(); point.timestamp = TimestampUtils.current(); // 現在時刻を設定 point.active = false; point.voltage = 100; ts.put(point); // 登録 point = ts.get(point.timestamp); // 取得
  • 44. 43© 2018 Toshiba Digital Solutions Corporation 3(B). 検索 【時系列コンテナ】 // (A) コンテナ内のRowを検索 // 停止中にもかかわらず電圧が基準値以上の箇所を検索 Query<Point> query = ts.query(“select * from point01 where not active and voltage > 50"); RowSet<Point> rs = query.fetch(); // 検索したRowの取得 while (rs.hasNext()) { Point hotPoint = rs.next(); Date hot = hotPoint.timestamp; System.out.println("[Alert] " + TimestampUtils.format(hot) + " hot=" + hotPoint.voltage); } // (B) 平均値 // 基準値以上の箇所について10分前後の平均値を求める Date start = TimestampUtils.add(hot, -10, TimeUnit.MINUTE); Date end = TimestampUtils.add(hot, 10, TimeUnit.MINUTE); AggregationResult avg = ts.query("select AVG(voltage) where timestamp > ” + start.timestamp + “ and timestamp < “ + end.timestamp); System.out.println(" avg=" + avg.getDouble());