IoT(Internet of Things) システムでは、各種センサーから、秒以下の周期で取得された、大量の時系列データを取り扱います。このようなデータを保持するシステムとして、時系列データベースは求められています。そこで、時系列データベースの GridDB について、まとめました。
OSSデータベース調査 NoSQLデータベース編の中で、GridDB を扱っていますが、可用性、拡張性、セキュリティなど掘り下げて、以下のようにまとめました。
GridDB
スケールアウト型分散データベース GridDB は、IoTやビッグデータに適した、「IoT指向のデータモデル」「高い性能」「高い拡張性」「高い信頼性と可用性」を特長とする、膨大な時系列データを効率よく蓄積し、高い性能をスケーラブルに発揮できるデータベースです。
基本情報
項目 | 内容 |
---|---|
URL |
https://www.toshiba-sol.co.jp/pro/griddb/index_j.htm https://griddb.net |
データモデル | GridDB独自のキーコンテナ型(RDBのテーブルに似た概念)でデータを保持します。コンテナには、コレクションコンテナと時系列コンテナの2種類があります。 |
動作環境 |
CPU:x86_64 メモリ:32GB 以上 ストレージ:100GB 以上 OS: Red Hat Enterprise Linux 7.6/7.7/7.8/7.9/8.1/8.2/8.3 (64bit版) CentOS 7.6/7.7/7.8/7.9/8.1/8.2/8.3 (64bit版) 参照 : 動作環境 |
実装言語 | C++ |
ライセンス |
Community Edition: サーバは AGPLライセンス Javaクライアントとオプショナル・コマンドは Apache License version 2.0 参照 : https://github.com/griddb/griddb_nosql Enterprise Edition: パーペチュアルライセンス(永続使用可)、サブスクリプションライセンス(契約期間使用可)の2種類があります。 参照 : GridDB 製品ラインアップ |
開発元 | 東芝デジタルソリューションズ |
開発体制 | OSS版 Contributorは6名。 GridDB Contributor License Agreement を締結する必要があります。 |
国内サポート体制 | 国内では東芝デジタルソリューションズがサポート |
その他 | 国産フルスクラッチのOSSデータベース |
機能情報
項目 | 内容 |
---|---|
対応プログラム言語 | C/C++、Java、Go、Python、Ruby、Perl、JavaScript (Node.js)、PHP 参照 : https://github.com/griddb |
クエリ言語 | TQL(SQLのサブセット) NoSQLインターフェース(Native API) NewSQLインタフェース(SQL)、JDBC/ODBCおよびHTTP/REST APIをサポート |
データ圧縮 | 時系列コンテナは、誤差あり間引き圧縮(HI)と誤差なし間引き圧縮(SS)の2種類でデータを圧縮して保持することが可能です。圧縮オプションの指定は時系列コンテナ作成時に指定します。 参照 : GridDB機能リファレンス 6.4.1 圧縮機能 メモリ上のデータをデータベースファイル(チェックポイントファイル)に書き出す際に、GridDBの書き出し単位のブロック毎に圧縮操作を行うことで、データベースファイルが圧縮されます。 参照 : GridDB機能リファレンス 6.11 データベース圧縮/解放機能 |
データ自動集計 | 未サポート |
期限解放機能 | 設定した保持期間を超えたロウデータを、検索や削除などの操作対象から外して参照不可とした後、DBから物理的に削除する期限解放機能があります。期限解放にはロウ期限解放とパーティション期限解放の2種類があります。 また、コールドデータとなったロウの削除方法は、自動削除、または、アーカイブ保存後に自動削除のいずれかを選択できます。 参照 : GridDB機能リファレンス 6.4.3 期限解放機能 |
時系列分析関数 | 集計演算関数は、重み付きで平均を求めるTIME_AVGがあります。 選択関数は、TIME_NEXT、TIME_NEXT_ONLY、TIME_PREV、TIME_PREV_ONLYがあります。 補間演算関数は、TIME_INTERPOLATED、TIME_SAMPLINGがあります。 参照 : GridDB機能リファレンス 6.4.2 TQLの演算機能 |
インデックス | ツリー索引、ハッシュ索引、空間索引が使用可能です。 時系列コンテナはハッシュ索引、空間索引を使用できません。 また、時系列のロウキー(TIMESTAMP型)の索引は自動で付与されます。 参照 : GridDB機能リファレンス 5.1.3 主キー |
トランザクション | GridDBでは、コンテナ単位でのトランザクションをサポートしています。 しかし、複数コンテナを参照するトランザクションではAtomicity (原子性)が保障されません。 参照 : GridDB機能リファレンス 6.6 トランザクション機能 |
ストアドプロシジャ | 未サポート |
トリガー | コンテナのロウデータへの操作 (追加/更新もしくは削除) が行われた際に、自動的に通知するトリガーをサポートしています。 通知方法は、Java Messaging Service(JMS)、REST の 2種類があります。 通知内容は指定されたカラムのデータのみです。 参照 : GridDB機能リファレンス 6.9 トリガ機能 |
dockerコンテナ | dockerhubでGridDBのDocker Containerイメージが公開されています。 https://hub.docker.com/r/griddb |
性能拡張 | 自律データ再配置技術によってクラスタへのノードの追加・削除の自律管理による運用の容易化が可能である。 |
高可用性 | クラスタを構成する複数のノード間では、ユーザが設定したレプリケーション数に従って、パーティション単位にデータのレプリカが作成されます。 コンテナに更新があると多重化されたパーティションのうち、オーナノード(レプリカのマスタを持つノード)が更新されます。その後オーナノードから更新内容がバックアップノードに反映されます。 レプリケーション方法は非同期と準同期の2種類のレプリケーションを提供されています。 クラスタ構成で運用している際にノード障害が発生した場合、クライアントAPI内で自動的にバックアップノードに接続し直し処理を継続するクライアントフェイルオーバー機能が動作します。 参照 : GridDB機能リファレンス 6.7 レプリケーション機能 |
運用 | Enterprise Editionでは、クラスタを構成する全ノードに対して順次行うことで、サービスを継続しながら、クラスタ全体としてのバックアップが行えます。また、統合運用管理GUI(gs_admin)が提供されています。 参照 : GridDB 運用ツールリファレンス |
出来ないこと | 複数コンテナを用いたトランザクション処理ができません。 |
セキュリティ
項目 | 内容 |
---|---|
通信暗号化 | クライアントとクラスタ間の通信は、SSL/TLSv1.2/TLSv1.3に対応しています。 |
DB格納領域の暗号化 | なし |
認証機能 | ユーザ定義ファイルでユーザとパスワードを格納してユーザ認証で使用しています。パスワードは登録の際に暗号化されます。ユーザは、管理ユーザと一般ユーザの2種類があり、利用できる機能に違いがあります。 また、外部認証としてLDAP認証にも対応しています。 |
権限管理 | 管理ユーザがデータベース単位で一般ユーザに付与します。 |
DB監査 | 未サポート |
参照 : GridDB 運用ツールリファレンス 4.7 ユーザ管理
まとめ
GridDBは、時系列データに特化した、期限解放機能や高可用性などが特に強いです。しかも OSS版でもこれらの機能が使えるのは大きいです。他の時系列データベースと違って、国内サポート体制が整っています。
掲載内容は、(株)東芝 デジタルイノベーションテクノロジーセンター及びソフトウェア技術センターの見解です。コメント等は広くご意見を頂ければ幸いです。
また、記述について誤りがあったり、気になることがあれば、編集リクエストやコメントでフィードバックしていただけると助かります。