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

【技術報告】東芝の時系列データ処理基盤技術(GridDB)ならびにデータ仮想化エンジン(PGSpider)

GridDB
March 01, 2024

 【技術報告】東芝の時系列データ処理基盤技術(GridDB)ならびにデータ仮想化エンジン(PGSpider)

第16回データ工学と情報マネジメントに関するフォーラム

(第22回日本データベース学会年次大会)

2024年2月28日(水)〜3月1日(金)(オンライン)
3月4日(月)〜3月5日(火)(オンサイト)

一般発表
Track 2: ビッグデータ基盤技術・セキュリティ・プライバシ
時系列データ処理
2024年3月1日(金) 10:00 〜 12:10 T2-B (オンライン(Zoom Events))

11:25 〜 11:50
[T2-B-7-05] 【技術報告】東芝の時系列データ処理基盤技術(GridDB)ならびにデータ仮想化エンジン(PGSpider)

GridDB

March 01, 2024
Tweet

More Decks by GridDB

Other Decks in Technology

Transcript

  1. © 2024 Toshiba Corporation DEIM2024技術報告 株式会社東芝 生産技術センター 浪岡 保男 株式会社東芝

    デジタルイノベーションテクノロジーセンター 服部 雅一、 相川 恵 東芝の 時系列データ処理基盤技術(GridDB) ならびに データ仮想化エンジン(PGSpider)
  2. 1 © 2024 Toshiba Corporation 「×デジタル」により新たな価値を創造 フィジカル モ ノ づ

    く り の 幅 広 い 知 見 ・ 実 績 サイバー IoT ・ AI分 野 で の 多 数 の デ ジ タ ル 技 術 ・ ソ リ ュ ー シ ョ ン さまざまな社会課題の解決へ
  3. © 2024 Toshiba Corporation (株)東芝 デジタルイノベーションテクノロジーセンター 技術開発室 シニアフェロー 服部雅一 [email protected]

    IoT/ビッグデータ向けデータベースGridDB ※ GridDBは、東芝デジタルソリューションズ株式会社の日本における登録商標です。
  4. 5 © 2024 Toshiba Corporation GridDBを自製化 GridDBの開発背景 • 社会インフラシステムにおけるIoTデータ管理 •

    システム規模の拡大 → RDB、NoSQLでは拡張性や信頼性に不安 電力系統制御 PV監視制御 BEMS HEMS 上下水道 交通 医療 MEMORY HDD Scale Out GridDB
  5. 6 © 2024 Toshiba Digital Solutions Corporation SQL(RDB)、NoSQL 補完関係にある 某NoSQL

    某NoSQL SQL(RDB) 問い合わせ言語 独自I/F 独自I/F SQL スキーマ言語 無い 無い SQL(DDL) データ一貫性 参照一貫性 テーブル内一貫性 緩やかな一貫性 or 参照一貫性 厳格な一貫性 1台あたりの性能 普通 一貫性を上げると低速 実績あるRDBは ある程度 高可用性 ノード分散による 冗長性有り ノード分散による 冗長性有り 別の仕掛けが必要 拡張性 スケールアウトする手段が不明 スケールアウト困難 特にオンラインスケールアウト スケールアップ
  6. 7 © 2024 Toshiba Digital Solutions Corporation GridDB NoSQL SQL(RDB)

    問い合わせ言語 SQL+独自I/F 独自I/F SQL スキーマ言語 SQL(DDL) 無い SQL(DDL) データ一貫性 参照一貫性 テーブル内一貫性 BASE理論 緩やかな一貫性 厳格な一貫性 1台あたりの性能 イベント駆動による 最大限の性能 SW次第 実績あるRDBは ある程度 高可用性 通常、高速の 2レプリケーション ノード分散による 冗長性有り 別の仕掛けが必要 拡張性 自律的な スケールアウト スケールアウト SW次第 スケールアップ GridDB テーブル間一貫性を除けば、全てをカバーする
  7. 8 © 2024 Toshiba Corporation DBの組み合わせにより実現 IoTシステム IoT System左側 データ収集

    データ蓄積 データ分析 データリンク デバイス センサー 外部 システム デバイス センサー 外部 システム ERP MES … … PLM Visibility Interface NoSQL storage SQL storage DWH レスポンス重視 スループット重視 ①ライセンスコストやインフラコストが上昇 ②システムが複雑化し保守も困難 ③サーバ障害に対する可用性に不安 ④データ量や負荷量の増大に対する不安 → コストや可用性などに懸念
  8. 9 © 2024 Toshiba Corporation GridDBだけでカバー IoTシステム IoT System左側 データ収集

    データ蓄積 データ分析 データリンク デバイス センサー 外部 システム デバイス センサー 外部 システム ERP MES … … PLM Visibility Interface db storage db storage db GridDB NoSQLインターフェイス SQLインターフェイス バッチ処理 ファストデータ処理
  9. 10 © 2024 Toshiba Corporation 稼働 ノンストップスケールアウトの挙動 〈ノード間データ再配置〉 〈アクセス先切替え〉 〈負荷アンバランスの検知〉

    DBノード 負荷小 更新ログ メモリブロック クライアント • (マスタノードが) ノード間の負荷アンバラン ス、レプリカ欠損を検知 • サービスは継続したまま • (該当ノード間で)バック グラウンドで高速データ再 配置 • サービスは継続したまま • クライアントとの協調でアク セス先を自動切換え 単一障害点(SPOF)を排除した、マスターノード無しクラスタ
  10. 11 © 2024 Toshiba Corporation NoSQL+SQLデュアルインターフェイス GridDB クラスタ DB ノード

    DB ノード DB ノード キー・バリュー型インターフェイス (Java/C/Python/Rubyドライバ) SQLインターフェイス (JDBC/ODBC) 他DB BI ETL 他システム SELECT sum(l_extendedprice) / 7.0 as avg_yearly FROM lineitem, part, ( SELECT l_partkey AS agg_partkey, 0.2 * avg(l_quantity) AS avg_quantity FROM lineitem GROUP BY l_partkey ) part_agg WHERE p_partkey = l_partkey AND agg_partkey = l_partkey AND p_brand = 'MFGR#2228' AND and p_container = 'SM CASE' AND l_quantity < avg_quantity LIMIT 1 LineitemContainer.put(lineitem) LineitemContainer.put(lineitem) LineitemContainer.put(lineitem) LineitemContainer.put(lineitem) …
  11. 12 © 2024 Toshiba Corporation クライアント 分散並列SQL処理によるスケールアウト効果 DBノード SQL NoSQL

    SCAN Executor SCAN Executor SCAN Executor SCAN Executor SCAN Executor SCAN Executor JOIN Executor JOIN Executor JOIN Executor AGGREGATE Executor AGGREGATE Executor AGGREGATE Executor UNION Executor CREATE TABLE A (num INT NOT NULL, id INT, ...) PARTITION BY HASH(num) PARTITIONS 3 SELECT A.num, SUM(A.id) FROM A, B WHERE A.num = B.num GROUP BY A.num パーティション並列化 (タスク)独立並列化 パイプライン並列化
  12. 13 © 2024 Toshiba Corporation 単体製品、クラウドサービス、Meister DigitalTwin基盤などを通してビジネス展開 ペタバイト級IoTデータを高速に処理するスケールアウト型データベース GridDB •

    2013年 GridDB(NoSQLのみ)上市 • 2015年 GridDB/NewSQL(SQLインターフェイス機能) • 2016年 OSS公開 • 2017年 SQL並列分散処理化 • 2019年 1ノードあたりペタバイト級のデータ管理に対応 • 2022年 アーキテクチャ刷新、クラウド対応強化 • 2011年 研究開発スタート • 2024年 SQLコストベース最適化、時系列機能強化 (「GridDB V5.5 エンタープライズ」で検索!)
  13. 15 © 2024 Toshiba Corporation データソース データ仮想化技術とは? データ仮想化(Data Virtualization)の特徴 企業内

    データ IoT データ Web サービス クラウド SaaS データベース エンタープライズ アプリケーション データ仮想化 変換 変換 変換 変換 アプリケーション レポート作成、BI、ポータル Web、モバイル データコンシューマ 共通インターフェイス (SQL etc.) 多様なデータ/アクセス手段を変換 データは、共通のデータモデルで表現 (仮想データレイヤ) データは必要な範囲へアクセス (コピーして集めない) 変換 変換 変換 データ利活用が容易 共通インタフェースによるアクセス 仮想データベース
  14. 16 © 2024 Toshiba Corporation データ仮想化エンジンPGSpider®の概要 共通インターフェイスで種類の異なるデータソースにアクセス可能 仮想データベース REST ODBC/JDBC

    ドライバ ODBC/JDBC PostgreSQL クライアントライブラリ C API Parquet 共通インターフェイス PGSpider共通I/Fを介し てデータソースにアクセス PostgreSQLをベースに開発しているため、 PostgreSQLの知識があれば容易に使用 でき、PostgreSQLのツールも利用可能 PGSpiderは(株)東芝の登録商標です。GridDBは東芝デジタルソリューションズ(株)の登録商標です。社名・商品名・サービス名などは、それぞれ各社が商標として使用している場合があります。 PostgreSQL® AWS S3® InfluxDB® MongoDB® PostgREST ® ®
  15. 17 © 2024 Toshiba Corporation データ仮想化エンジンPGSpiderの基本機能 PGSpider core PostgreSQL core

    PostgreSQL FDW InfluxDB FDW MongoDB FDW Parquet S3 FDW 仮想データベース データ検索の高速化 パラレル処理、プッシュダウン(WHERE条件・集約 関数・OrderBy・ジョイン・SQL関数) 多様なデータソースへのアクセス機能 アダプタ(Foreign Data Wrapper:FDW)により 差異を吸収 複数データソースの統合機能 複数のテーブルを仮想的なひとつのテーブルに 見せる(マルチテナントテーブル) GridDB FDW Parquet アクセスモジュール一覧 https://wiki.postgresql.org/wiki/Foreign_data_wrappers PostgreSQL® AWS S3 InfluxDB® MongoDB® ® ®
  16. 18 © 2024 Toshiba Corporation 複数データソースの統合機能:マルチテナントテーブル データが複数のデータソースに分散していても1つのテーブルでアクセス可能 従来 PGSpider適用 Step1)

    結果取得1:SELECT * FROM テーブルA Step2) 結果取得2:SELECT * FROM テーブルB Step3) 結果取得2:SELECT * FROM テーブルC Step4) 複数の結果をアプリケーションで結合 Step1) 結果取得:SELECT * FROM テーブルM SQL表現が簡素化 テーブル毎に並列実行され高速化 v3以降更新クエリにも対応 アプリケーション マルチテナントテーブル テーブルM テーブルA テーブルB テーブルC データソースC データソースB データソースA ®
  17. 19 © 2024 Toshiba Corporation PGSpiderの近況 最新のPostgreSQL16に対応し、新機能が利用可能 PostgreSQL® 2023年 2022年

    2021年 v14 v15 v2 v3 PostgreSQLのバージョンアップに対応(リベース)することで、 PostgreSQLの新機能がPGSpiderで利用可能 ・ データ投入の性能改善 ・ JSON処理対応の強化 ・ 双方向ロジカルレプリケーションなどに対応可能 PGSpiderはPostgreSQLの ソースコードを改変して実現 UPDATE, INSERT などの 更新対応 性能改善(SQL関数のプッシュダウン) 死活監視機能 v1 マルチテナント機能 ® v16 v4 軽微なバグ修正 など
  18. 20 © 2024 Toshiba Corporation データカタログツール連携 データ全容の把握を容易にするデータカタログの導入 企業内 データ IoT

    データ Web サービス クラウド SaaS データベース エンタープライズ アプリケーション データ仮想化 変換 変換 変換 変換 アプリケーション レポート作成、BI、ポータル Web、モバイル 共通インターフェイス (SQL etc.) 変換 変換 仮想データベース メタデータ データカタログ 管理インタフェース PGSpiderに直接アクセスしていては データの全容を把握することは難しい ・ どんなテーブルがあるのか ・ 何に使われているのか ・ このデータの諸元はどこか ・ etc. データカタログの導入により これらの問題を解決する
  19. 21 © 2024 Toshiba Corporation OpenMetadataは OSSのデータカタログツール ・ メタデータの収集と発見を支援 ・

    データコラボレーション ・ データ品質とプロファイリング などの機能を持つ 現在の最新バージョンは 1.3.0 GitHub Star数 3.7k、コミット数 344/月 と活発に開発が進んでいる 多くの種類のデータソースからメタデータを収集できるがPGSpiderには未対応 OpenMetadataはデータを収集するモジュールをカスタムコネクタとして追加可能 → PGSpider 用のカスタムコネクタを開発、PullRequestが承認され、 v1.1.1でリリース https://github.com/open-metadata/OpenMetadata/releases/tag/1.1.1-release OpenMetadata https://open-metadata.org/ https://github.com/open-metadata/OpenMetadata
  20. 23 © 2024 Toshiba Corporation OpenMetadata PGSpiderカスタムコネクタ ★PGSpiderのマルチテナントテーブルのメタデータと 外部のデータソースとの依存関係を収集 その他OpenMetadataへの貢献

    ・ ユーザビリティ向上 - メタデータ検索への日本語対応、UIの日本語化 ・ 不具合修正- SSL有効化時のLDAP認証における不具合を修正 PGSpiderカスタムコネクタ開発により、OpenMetadataのPGSpider対応を実現 OpenMetadataの機能を活用したデータ管理が可能になった
  21. 24 © 2024 Toshiba Corporation PGSpiderの情報 GitHubでソースコードを公開し、PostgreSQLのメジャーバージョンアップに追従 • PostgreSQL ベース

    • PostgreSQLの最新のバージョン16に対応 • PostgreSQLの機能はそのまま利用可能 • PGSpiderプロジェクト • https://github.com/pgspider • 各種アクセスモジュール • https://github.com/pgspider/データソース名_fdw • PostgreSQL互換 • 本アクセスモジュールは、PostgreSQLでも利用可能 • PGSpiderから利用した方が、強化されたプッシュダウン機能が利用可能 • PGSpider本体 • https://github.com/pgspider/pgspider • 上記アクセスモジュールの他に、PostgreSQL向けに一般公開されているアダプタ(FDW)も利用可能 • https://wiki.postgresql.org/wiki/Foreign_data_wrappers
  22. 25 © 2024 Toshiba Corporation • 東芝のデータ処理基盤技術への取り組み • GridDB:時系列データ処理基盤技術 IoT/ビッグデータ向けデータベース

    • 2024年度拡張機能:SQLコストベース最適化、時系列機能強化 • PGSpider:エンタープライズレベルのデータ仮想化 • データ仮想化エンジン(PGSpider)の現状 • データカタログツール連携 まとめ
  23. 27 © 2024 Toshiba Corporation ① 多様なデータソースへのアクセス機能 データソース接続モジュール(FDW)によりアプリからデータソースの差異を隠蔽 PGSpider core

    InfluxDB FDW GridDB FDW PostgreSQL FDW PostgreSQL core マルチテナントテーブルは、複数の外部テーブルのデータを統合(UNION ALL)した仮想テーブル PostgreSQL クライアントライブラリ GridDB クライアントライブラリ InfluxDB クライアントライブラリ Parquet S3 FDW AWS S3 MongoDB FDW MongoDB C Driver AWS SDK for C++ parquet ライブラリ a b c d a b c d a b c d a b c d a b c d a b c d マルチテナントテーブル SELECT * FROM tbl PostgreSQL® InfluxDB® MongoDB®
  24. 28 © 2024 Toshiba Corporation ① 多様なデータソースへのアクセス機能 データソース接続モジュール(FDW)によりアプリからデータソースの差異を隠蔽 PGSpider core

    InfluxDB FDW GridDB FDW PostgreSQL FDW PostgreSQL core 新たなFDW FDWは、データソース向けのクエリの構築、問い合わせ、結果取得およびデータ型の変換を行う PostgreSQL クライアントライブラリ GridDB クライアントライブラリ InfluxDB クライアントライブラリ 任意のライブラリ PGSpider向けに データを型変換 新たなFDW作成により任意の データソースとの連携が可能 アクセスモジュール一覧 https://wiki.postgresql.org/wiki/Foreign_data_wrappers MongoDB FDW MongoDB C Driver AWS SDK for C++ parquet ライブラリ Parquet S3 FDW PostgreSQL® SQL InfluxQL TQL データソース API Parquet API AWS S3 InfluxDB® MongoDB® データソース向けに データ・クエリを変更
  25. 29 © 2024 Toshiba Corporation PGSpider core PostgreSQL core ③

    データ検索の高速化:パラレル処理 複数のデータソースであっても、自動的に並列アクセスによる高速化が可能 FDWでの処理は、外部テーブルごとにスレッド化して並列に行う 子スレッド 子スレッド 子スレッド メインスレッド 複数のデータソース の統合処理 単一データソース の結果処理 子スレッド 子スレッド 子スレッド InfluxDB FDW PostgreSQL® Parquet AWS S3 GridDB FDW MongoDB FDW Parquet S3 FDW PostgreSQL FDW MongoDB® InfluxDB®
  26. 30 © 2024 Toshiba Corporation PGSpider core データソース FDW データソース

    FDW 仮想テーブル PostgreSQL core ターゲットリスト・WHERE条件・集約関数・JOIN・ORDER BYなどプッシュダウン ③ データ検索の高速化:プッシュダウン 異なるデータソースであっても、自動的に効率の良い適切なアクセス方法に変換 SELECT avg(col1) FROM tbl WHERE col2 <= 100; SELECT sum(col1), count(col1) FROM tbl WHERE col2 <= 100; 効率の良いデータソース向けのクエリを生成し、 なるべく必要なデータのみをデータソースから取得 sum=111 count=3 sum=22 count=2 1 10 100 2 20 200 sum=133 count=5 avg=26.6
  27. 31 © 2024 Toshiba Corporation ③ データ検索の高速化 SQL関数プッシュダウン • SQL関数をデータソース上で実行さ

    せることが可能 • データソース上でSQL関数を実行させて、 PGSpiderがその結果を取得 • データソース専用のSQL関数にも対 応 • PGSpider(PostgreSQL)上で計算できなくてもよ い PGSpider core PostgreSQL core PostgreSQL FDW InfluxDB FDW 仮想データベース MongoDB FDW Parquet S3 FDW GridDB FDW Parquet SELECT func(a) FROM tbl SELECT func(a) FROM tbl PostgreSQL® AWS S3 InfluxDB® MongoDB®