3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

PGSpiderの調査

Last updated at Posted at 2019-12-13

エッジコンピューティングによって高性能化したエッジ機器にデータが格納されるようになると、クラウドサービスにデータを集めないでエッジ機器のデータを直接検索したいとニーズが生まれてきました。そして、IoT(Internet of Things) システムでは広域に分散されたエッジ機器のデータ群を高速に検索するために、マルチデータベースにアクセスできる分散SQLエンジンが求められています。そこで、私達が開発している大規模分散SQLエンジンの PGSpider についてまとめました。
動作環境やライセンスなど基本情報から、対応プログラム言語、可用性、拡張性など機能情報やセキュリティまで掘り下げて、以下のようにまとめました。

PGSpider

PGSpiderは、分散配置された複数のデータソースをそれぞれ子ノードとして接続して、データを横断的に検索するための SQL エンジンです。さらに子ノードに PGSpider を接続し、中間ノード化することで木構造の広域かつ大規模な分散環境を構築して、データ検索の高速化を実現しています。具体的には、分散されたテーブルを1つの仮想的なテーブルとして扱えるマルチテナント機能、異なるデータソースに同じようにアクセスする機能、データ検索の高速化を実現するためのパラレルクエリと効果的なプッシュダウンが特徴です。
PGSpiderは、OSSの RDBMSである PostgreSQLをベースに開発しました。

参照 : 東芝レビュー74巻1号 R&D最前線 「エッジコンピューティングに対応した大規模分散データの高速検索フレームワーク PGSpider」
PGConf.ASIA 2019 - PGSpider High Performance Cluster Engine
FOSDEM PGDay 2020 - PGSpider High-performance SQL cluster engine

基本情報

項目            内容
URL https://github.com/pgspider
データモデル リレーショナルデータ・モデル
動作環境 CPU:x86系、IA64、ARM
メモリ:512MB以上(Shared Bufferの4倍の物理メモリが必要)
ストレージ :
OS:Linux系
Software : ビルドするために最低限、Cコンパイラ以外にmake, tar, gzip, zlib, Readlineが必要
参照 : Supported Platforms
実装言語 主にC言語で開発
ライセンス MITライセンスで公開予定
主なバージョン 2020-01-30 : Version 1.0をリリース
開発元 東芝 ソフトウェア技術センター
開発体制 参照 : https://github.com/orgs/pgspider/people[PGSpider people]
活動状況 関係するFDWを公開していますが、本体は2020年1月に公開予定です。
国内サポート体制 東芝 ソフトウェア技術センターがサポート予定
その他 PostgreSQLとして RDBMS を利用も可能です。

機能情報

項目            内容
対応プログラム言語 C/C++、pyhton、.NET、Go、Perl、JavaScript、.NET、TCL
また、ODBC、JDBC ドライバを利用可能なプログラム言語であればアクセス可能です
参照 : PostgreSQL Documentation : H.1. Client Interfaces
アクセス可能なDB PostgreSQL、Oracle、MySQL、Infomix、Firebird、SQLite、Sybase、MS SQL Server、MonetDB、HBase、Cassandra、ClickHouse、CouchDB、GridDB、InfluxDB、Kafka、Kyoto Tycoon、MongoDB、Neo4j、Quasar、Redis、RethinkDB、Riak、WhiteDB、CSV、JSON、Parquet、XML、LDAP、DynamoDB、Elastic Search
参照 : PostgreSQL Wiki : Foreign data wrappers
クエリ言語 SQL
マルチテナント 各ノードで同じテーブル名があれば、1つのテーブルとして扱うマルチテナント機能がある。また、ノード列でどのノードから取得したレコードかを知ることができます。
インデックス なし
トランザクション 単一子ノードであれば、PostgreSQLのトランザクションをサポートします。アイソレーション・レベルはRead uncommitted、Read committed、Repeatable read、Serializableがある。デフォルトは Read Committed。これはMVCCで実装されています。
ストアドプロシジャ PostgreSQLのストアドプロシージャ、ストアドファンクションをサポートします。
dockerコンテナ 2020/3にリリース予定
性能拡張 PGSpiderでは、スループットを向上させたい場合、pgpool-IIというクラスタ管理ツールを組み合わせることで、スケールアウト・クラスタリングを実現します。大量のノードが存在し、レイテンシを向上させたい場合、PGSpiderで木構造で構築することでクエリ処理を分割させることが可能です。
参照 : Pgpool Wiki
高可用性 PGSpiderでは、PostgreSQLの各種レプリケーション機能を利用します。
参照 : PostgreSQL Documentation : Chapter 26. High Availability, Load Balancing, and Replication
また、子ノードとのネットワーク接続が遮断された時の接続リカバリー機能を追加したことで可用性も向上しさせています。
運用 PGSpiderでは、カタログ情報などのバックアップ/リストアでPostgreSQLバックアップ/リストア機能(pg_basebackup, pg_dump, pg_restore)を利用します。オフラインバックアップはDBを停止して、ファイルシステムバックアップを実施します。
参照 : [PostgreSQL Documentation : Chapter 25. Backup and Restore]
出来ないこと 複数ノードでのトランザクション処理が出来ません

セキュリティ

項目            内容
通信暗号化 SSLでクライアントとDBサーバ間の通信を暗号化しています
DB格納領域の暗号化 透過的暗号化でDB格納領域を暗号化することが可能です
認証機能 証明書、trust/reject、scram-sha-256、md5、ident/peer、LDAPなど、さまざまなクライアント認証方法が利用可能です。
権限管理 DBオブジェクトに操作権限をロールまたはユーザに付与することで権限管理ができます
DB監査 監査ログ機能有(pgaudit)

参照 : PostgreSQLのセキュリティを極める

まとめ

PGSpider は、PostgreSQLをベースとしていることで、分散検索以外のデータベース機能、ツールが豊富です。分散検索もマルチテナント機能をサポートしていること、時系列データベースに対応していることは強みだと考えます。また、高可用性、運用面、セキュリティ対応も見逃せないポイントです。

掲載内容は、(株)東芝 デジタルイノベーションテクノロジーセンター及びソフトウェア技術センターの見解です。コメント等は広くご意見を頂ければ幸いです。
また、記述について誤りがあったり、気になることがあれば、編集リクエストやコメントでフィードバックしていただけると助かります。

私達と PGSpider を一緒に開発したいという方は こちらこちら をご覧下さい。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?