Upgrade to Pro — share decks privately, control downloads, hide ads and more …

【ハンズオンセミナー】NoSQL/SQLデュアルインタフェースを備えたIoT向けデータベースG...

GridDB
October 22, 2021

【ハンズオンセミナー】NoSQL/SQLデュアルインタフェースを備えたIoT向けデータベースGridDB ~ GridDB CE 4.6のテーブルパーティショニングを使ってみましょう ~

オープンソースカンファレンス2021 Fall セミナープログラム
2021年10月22日(金) 16:00 〜 16:45
セッション概要

GridDBはIoT向けの日本発の膨大なリアルタイムのセンシングデータを活用するIoTシステムをターゲットにデザインしたオープンソース・データベースです。
本セミナーでは、今年リリースされたGridDB CE(Community Edition) 4.6を使ってテーブルパーティショニングについてご紹介します。また、ハンズオンで、利用イメージを実感していただきます。
GridDBを既にお使いの方も、GridDBの使用を検討されている方も、是非ご参加ください!!

※ 聴講だけでなく、ハンズオンに参加する場合は、事前にDocker toolboxもしくはDocker DesktopでDockerが使える環境を準備願います。
野々村 克彦
(東芝デジタルソリューションズ株式会社)
セッション情報

担当: 東芝デジタルソリューションズ株式会社
レベル: 入門編
対象者: オープンソース活動および興味がある方、GitHubでの開発に興味のある方、DBに興味のある方
前提知識: 特になし
カテゴリー: データベース/ビッグデータ/IoT

GridDB

October 22, 2021
Tweet

More Decks by GridDB

Other Decks in Technology

Transcript

  1. © 2021 Toshiba Digital Solutions Corporation 東芝デジタルソリューションズ株式会社 GridDBコミュニティ版担当 野々村 克彦

    2021.10.22 NoSQL/SQLデュアルインターフェースを備えた IoT向けデータベースGridDB ~ GridDB CE 4.6のテーブルパーティショニングを 使ってみましょう ~
  2. 2 © 2021 Toshiba Digital Solutions Corporation Contents IoT向けデータベースGridDBの概要 SQLインターフェース(ハンズオン)

    OSS活動 まとめ 01 02 03 04 https://github.com/knonomura/griddb-docker/blob/master/README_ja.md
  3. 4 © 2021 Toshiba Digital Solutions Corporation IoT向けデータベースGridDB • 日本発のビッグデータ/IoT向け

    データベース • V1.0製品化(2013年)、OSS化 (2016年)、V4.6CE(2021年2月) • 社会インフラ、製造業を中心に、高 い信頼性・可用性が求められるシス テムに適用されている 電力系統制御 PV監視制御 BEMS HEMS 上下水道 交通 医療 MEMORY HDD Scale Out GridDB
  4. 5 © 2021 Toshiba Digital Solutions Corporation IoTデータの特長 ミリ秒オーダーで 高頻度に発生

    24H365D 絶え間なく発生 大量データが 単調増加 発生直後から リアルタイム参照 データ一貫性 の保証 APL ログ Web サイト Web・SNS ログ CRM/ERP センサー 異常検出 見える化 各種集計 時間 デ | タ 量 データベース 時系列データ 収集 蓄積 読み出し・ 分析
  5. 6 © 2021 Toshiba Digital Solutions Corporation データベースへの要求 ミリ秒オーダーで 高頻度に発生

    24H365D 絶え間なく発生 大量データが 単調増加 発生直後から リアルタイム参照 データ一貫性 の保証 APL ログ Web サイト Web・SNS ログ CRM/ERP センサー 異常検出 見える化 各種集計 時間 デ | タ 量 データベース 時系列データ 収集 蓄積 読み出し・ 分析 高い処理能力 High Performance 高い信頼性 High Reliability 高い拡張性 High Scalability IoT指向 IoT Oriented 高い処理能力 High Performance
  6. 7 © 2021 Toshiba Digital Solutions Corporation GridDBの特長 IoT指向の データモデル

    高い信頼性と 可用性 • データの複製をノード間で自動的に実行 • ノード障害があってもフェールオーバによりサービス継続 • 数秒から数十秒の切替え時間 高い拡張性 • 少ないノード台数で初期投資を抑制 • 負荷や容量の増大に合わせたノード増設が可能 • 自律データ再配置により、高いスケーラビリティを実現 高い処理能力 NoSQL+SQL • メモリを主、ストレージを従としたハイブリッド型インメモリDB • メモリやディスクの排他処理や同期待ちを極力排除 • SQLにおける分散並列処理 • データモデルはキー・コンテナ。コンテナ内でのデータ一貫性を保証 • 時系列データ管理する特別な機能 • 過去データをコールド保存する長期アーカイブ機能
  7. 8 © 2021 Toshiba Digital Solutions Corporation NoSQLとSQLのデュアルインターフェイス GridDB クラスタ

    DB ノード DB ノード DB ノード キー・バリュー型インターフェイス SQLインターフェイス 他DB BI ETL 他システム NoSQL(キー・バリュー型)インターフェイス • 高可用、高スループット指向のKVS • キーコンテナに対するCRUD • Java/C/Python/Node.JS/Go API SQLインターフェイス • 分散並列SQLデータベース • 巨大テーブルに対するテーブルパーティショニング • ジョインなど複数テーブルに対するSQL • JDBC/ODBCドライバー
  8. 9 © 2021 Toshiba Digital Solutions Corporation GridDB SQL •

    データ定義言語(DDL):CREATE(DROP) DATABASE/USER/TABLE/INDEX/VIEW • データ制御言語(DCL):GRANT/REVOKE/SET PASSWORD • データ操作言語(DML):SELECT/INSERT/UPDATE/DELETE • 句 – FROM/GROUP BY/HAVING/ORDER BY/WHERE/LIMIT/OFFSET – JOIN • 内部結合 [NATURAL] [INNER] JOIN • 左外部結合 [NATURAL] LEFT [OUTER] JOIN • クロス結合 [NATURAL] CROSS JOIN – UNION/INTERSECT/EXCEPT • 演算子、関数、CASEなど
  9. 10 © 2021 Toshiba Digital Solutions Corporation テーブルパーティショニングとSQLにおける分散並列処理 NoSQL(KVS) SQL

    処理 エンジン DBノード Task a Task a Task a Task a Task a Task a クライアント SQL 結果セット 大規模 テーブル 分割格納 Task b Task c Task b データ並列化 タスク並列化 パイプライン並列化
  10. 11 © 2021 Toshiba Digital Solutions Corporation SQL性能 • TPC-H(Transaction

    Processing Performance Council) • SQLのスケールアウト効果
  11. 12 © 2021 Toshiba Digital Solutions Corporation 主な適用事例 • 社会インフラ、製造業を中心に、高い信頼性・可用性が求められるシステムに適用

    ・フランス リヨン 太陽光発電 監視・診断システム 発電量の遠隔監視、発電パネルの性能劣化を診断 ・電力会社 低圧託送業務システム スマートメータから収集される電力使用量を集計し、需要量と発電量のバランスを調整 ・HDD製造会社 品質管理システム 製造装置のセンサーデータを長期に渡って蓄積・分析し、品質分析・改善に適用 ・半導体製造ライン 履歴管理システム 製造履歴や品質履歴、材料データなどを横串で分析し、製品の品質管理やトレーサビリティに利用 ・半導体製造ライン 異常検知システム 製造ラインのセンサーデータをリアルタイムにAIで分析し、製造ラインの異常を検知 ・デンソー ファクトリー IoT 工場のDigitalTwinを実現し、生産性向上 ・DENSO International Americaの次世代の車両管理システム 車両の各種センサーデータを用いる車両管理システムのPoC ....
  12. 13 © 2021 Toshiba Digital Solutions Corporation テーブルパーティショニング • データ登録数が多い巨大なテーブルのデータを分散配置することで、プロセッサの並列

    実行を可能とし、巨大テーブルのアクセスを高速化するための機能 • Pros. – 分割されたテーブルを並列処理。大規模なデータかつ並列化しやすいSQLでは効果大。 – 分割によるメモリアクセスが局所化する場合はI/O量削減。ランダムにアクセスするインデックス • Cons. – 分割されたテーブルをまとめる処理は低速化。少量テーブルに対するJoinやScanなど – 分割されたテーブル間でコミットできない
  13. 14 © 2021 Toshiba Digital Solutions Corporation • ハッシュパーティショニング 

    選択基準:散らすべきキーにランダム性が高く、キーの間に処理上の関連性が無い 場合 • インターバルパーティショニング  選択基準:散らすべきキーの数値的な範囲で散らしたい場合 • インターバルハッシュパーティショニング  選択基準:インターバルパーティショニングでは力不足の場合 -- ハッシュ CREATE TABLE a3 (code INT, ts TIMESTAMP, dest STRING NOT NULL) PARTITION BY HASH(dest) PARTITIONS 10 -- インターバル CREATE TABLE a1 (code INT, ts TIMESTAMP NOT NULL, dest STRING) PARTITION BY RANGE(ts) EVERY(1,DAY) -- インターバルハッシュ CREATE TABLE a4 (code INT NOT NULL, ts TIMESTAMP, dest STRING) PARTITION BY RANGE(ts) EVERY(1,DAY) SUBPARTITION BY HASH(dest) SUBPARTITIONS 2
  14. 16 © 2021 Toshiba Digital Solutions Corporation 今回のハンズオン内容 ①Java環境によるSQLインターフェースの利用 –

    SQLWorkbench/J (https://www.sql-workbench.eu/) • Java環境&JDBCドライバ経由で動くSQL実行ツール ※特定の国の政府機関は利用できない制限があるが、日本は利用制限に含まれていない ②Python環境によるSQLインタフェースの利用 – JayDeBeApi (https://github.com/baztian/jaydebeapi) • Python標準のデータベースAPIの仕様であるDB-API(PEP 249)の1実装 – https://www.python.org/dev/peps/pep-0249/ ③WebAPIによるSQLインタフェースの利用 – GridDB WebAPI ※SQLはSELECT文のみ GridDB Server SQLWorkBench/J JayDeBeApi GridDB JDBC Driver GridDB WebAPI SQL
  15. 17 © 2021 Toshiba Digital Solutions Corporation 主な流れ 1. GridDBサーバのインストール&起動

    2. 実行環境のインストール&起動 3. GridDBサーバへの接続 4. SQL実行 1. テーブルの作成 2. データの登録 3. 検索
  16. 18 © 2021 Toshiba Digital Solutions Corporation GridDB JDBCの接続方法 •

    Jarファイル: – gridstore-jdbc.jar • ドライバクラス: – com.toshiba.mwcloud.gs.sql.Driver • 接続時のURL: (マルチキャスト方式でクラスタ内のノードに自動接続の場合) – jdbc:gs://(multicastAddress):(portNo)/(clusterName) [/(databaseName)] (マルチキャスト方式でノード指定の場合) – jdbc:gs://(nodeAddress):(portNo)/(clusterName) [/(databaseName)] ※GridDB JDBCドライバ説明書 https://github.com/griddb/docs- ja/blob/master/manuals/GridDB_JDBC_Driver_UserGuide/toc.md ※GridDB SQLリファレンス https://github.com/griddb/docs- ja/blob/master/manuals/GridDB_SQL_Reference/toc.md ※NoSQLインターフェースとの違い: ・デフォルトのportNo:41999(SQL), 31999(NoSQL)
  17. 19 © 2021 Toshiba Digital Solutions Corporation SQL(テーブルの作成) id type

    floor room_no date id alertLevel detail コレクションテーブル インターバルハッシュパーティション: 分割幅30日、サブパーティション数6 パーティション解放:60日 コレクションテーブル 装置 センサデータ CREATE TABLE sensorTable ( date TIMESTAMP, -- 時刻 id INTEGER, -- 装置ID value DOUBLE, -- センサ値 PRIMARY KEY(date, id) ) WITH ( expiration_type='PARTITION', expiration_time=60, expiration_time_unit='DAY' ) PARTITION BY RANGE (date) EVERY (30, DAY); SUBPARTITION BY HASH(id) SUBPARTITIONS 6; CREATE TABLE equipTable ( id INTEGER PRIMARY KEY, -- 装置ID type STRING, -- 装置タイプ floor INTEGER, -- 設置階 room_no INTEGER -- 設置ルームNo );
  18. 20 © 2021 Toshiba Digital Solutions Corporation SQL(データの登録) 装置 センサデータ

    INSERT INTO sensorTable VALUES(TIMESTAMP(‘2021-11-01T10:30:00Z’), 2, 18.5); INSERT INTO sensorTable VALUES(TIMESTAMP('2021-11-01T10:30:00Z'), 3, 20.0); 。。。 INSERT INTO equipTable VALUES(1, 'CAMERA', 1, 1); INSERT INTO equipTable VALUES(2, ‘THERMO', 1, 1); INSERT INTO equipTable VALUES(3, 'THERMO', 4, 3); INSERT INTO equipTable VALUES(4, 'THERMO', 6, 2); INSERT INTO equipTable VALUES(5, 'WATT', 1, 1); INSERT INTO equipTable VALUES(6, 'WATT', 6, 1); id type floor room_no 1 CAMERA 1 1 2 THERMO 1 1 。。。 date id value 2021-11- 01T10:30:00Z 2 18.5 2021-11- 01T10:30:00Z 3 20.0 。。。
  19. 21 © 2021 Toshiba Digital Solutions Corporation SQL(検索) SELECT equipTable.id,

    type, floor, room_no, min FROM equipTable JOIN (SELECT id, MIN(value) AS min FROM sensorTable WHERE date >= TIMESTAMP('2021-11-01T12:00:00Z') AND date < TIMESTAMP('2021-11-01T18:00:00Z') GROUP BY id) t ON equipTable.id = t.id AND min >= 20.0; • 全件 • JOIN、GROUP BY • ORDE BY CASE SELECT * FROM equipTable; SELECT * FROM sensorTable; SELECT * FROM equipTable WHERE floor >= 3 ORDER BY CASE type WHEN 'CAMERA' THEN 1 WHEN ‘THERMO' THEN 2 WHEN 'WATT' THEN 3 WHEN ‘WIFI THEN 4 ELSE 5 END;
  20. 23 © 2021 Toshiba Digital Solutions Corporation GridDBのオープンソース化 griddb github

    検索 https://github.com/griddb/ • GridDBをGitHub上にソース公開(2016/2) https://github.com/griddb/griddb • 目的 – ビッグデータ技術の普及促進 • 多くの人に知ってもらいたい、使ってみてもらいたい。 • いろんなニーズをつかみたい。 – 他のオープンソースソフトウェア、システムとの連携強化 • ライセンス – サーバはAGPL-3.0 – 各種開発言語のクライアント、OSSとのコネクタはApache-2.0
  21. 24 © 2021 Toshiba Digital Solutions Corporation 主なOSS活動 ① GridDB本体の機能強化

    ② 主要OSSとの連携強化 ③ APIの拡充 ④ GitHub以外のサイトからの情報発信 – パッケージ – デベロッパーズサイト(WP、ブログなど)・・・フィックスターズ社 – SNS・・・フィックスターズ社 ⑤ 主要OSSリポジトリへのコントリビュート ⑥ プラットフォームの拡充 ⑦ その他 – OSCなどカンファレンス参加 – ハンズオン無料セミナー・・・(株)アイ・ティ・イノベーション
  22. 25 © 2021 Toshiba Digital Solutions Corporation Javaクライアント JDBCドライバ OSS活動の全体イメージ

    GridDB V4.6 CE(Community Edition) Cクライアント Hadoop MapReduce コネクタ YCSB コネクタ Spark コネクタ 収集 可視化 分散処理 分析 Webアプリ 性能測定 Kafka コネクタ ②主要OSSとの連携強化 ⑤主要OSSリポジトリへのコントリビュート GitHub AI/機械学習 ①GridDB本体の機能強化 WebAPI Python/Node.JS/Go/PHP/Ruby/Perlクライアント Fluentd/Grafana/Redash プラグイン ③APIの拡充 ④GitHub以外のサイトからの情報発信 PyPI/npm/Maven/Packagist/… … ⑥プラットフォームの拡充 CentOS+ Ubuntu、openSUSE Windows、MacOS Docker https://github.com/griddb/
  23. 26 © 2021 Toshiba Digital Solutions Corporation 最近の主な活動(2021年) 2021年 •

    2月 V4.6CEのソース公開 CLI (Command Line Interface)のソース公開 • 3月 Node API (node-addon-api版)のソース公開 • 5月 Node API (Node.JS V16対応) • 7月 Redash Plugin (SQL対応) • 8月 V4.6.1CEのソース公開 Node API (バッチ処理対応) • 9月 Pythonクライアント (Python3.9対応)
  24. 27 © 2021 Toshiba Digital Solutions Corporation デベロッパーズサイト • アプリケーション開発者向けのサイト

    • 様々なコンテンツを公開 – ホワイトペーパ – ブログ など https://griddb.net/ griddb net 検索
  25. 28 © 2021 Toshiba Digital Solutions Corporation ツイッター griddb jp

    検索 https://twitter.com/griddb_jp • GridDBに関するリリース、イベント、 などをお知らせします。 (日本国内向け)
  26. 30 © 2021 Toshiba Digital Solutions Corporation まとめ • GridDBはビッグデータ・IoT向けのデータベースです。

    • 最新版V4.6CEのテーブルパーティショニングとオープンソース活動をご紹介しました。 • 今後も様々な拡張、拡充を進めて参ります。 GridDBのオープンソース版(GridDB CE)を是非とも使ってみてください。 https://github.com/griddb/ ※本資料に掲載の製品名、サービス名には、各社の登録商標または商標が含まれています。
  27. 31 © 2021 Toshiba Digital Solutions Corporation ご参考:GridDBに関する情報 • GridDB

    GitHubサイト – https://github.com/griddb/griddb/ • GridDB デベロッパーズサイト – https://griddb.net/ • Twitter: GridDB (日本) – https://twitter.com/griddb_jp • Twitter: GridDB Community – https://twitter.com/GridDBCommunity • Facebook: GridDB Community – https://www.facebook.com/griddbcommunity/ • Wiki – https://ja.wikipedia.org/wiki/GridDB • GridDB お問い合わせ – OSS版のプログラミング関連:Stackoverflow(https://ja.stackoverflow.com/search?q=griddb)もしくはGitHub サイトの各リポジトリのIssueをご利用ください プログラミング関連以外:[email protected]もしくは[email protected]をご利用ください griddb net 検索 griddb jp 検索 griddb github 検索