データの管理
2種類のデータ管理
PersoniumではユーザのデータをElasticsearchとファイルシステムで管理している。
Elasticsearch上のデータはOData、ファイルシステム上のデータはWebDAVのインターフェースに従っている。
OData (Open Data Protocol)
Webアプリにおいてデータのアクセス方法を標準化したプロトコル。
WebAPIの標準的なHTTPリクエストでJSONやXMLデータをレスポンスとして返す。
OData公式 : http://www.odata.org/WebDAV (Web-based Distributed Authoring and Versioning)
HTTP1.1を拡張したWebサーバ上のファイル管理を目的としたプロトコル。
純粋なHTTP拡張の為Proxy環境下などでも問題なく利用が可能。
HTTP標準に加え、PROPFINDなどいくつかのメソッドが追加されている。
WebDAV公式 : https://web.archive.org/web/20120626092812/http://webdav.org/
各オブジェクトデータの管理
Personiumの各オブジェクトの管理を示す。
分類 | オブジェクト | インターフェース種別 |
---|---|---|
ユニット制御オブジェクト | Cell | OData |
Cell制御オブジェクト | Role Account Box ExtCell Relation ExtRole SentMessage ReceivedMessage Rule | OData |
Boxリソーススキーマ | ODataServiceCollection WebDAVServiceCollection EngineServiceCollection StreamCollection | WebDAV |
Boxリソース ファイル | ファイル サービスコレクションソース | WebDAV |
Boxリソース OData | EntityType AssociationEnd ComplexType Property ComplexTypeProperty Entity | OData |
アクセス制御設定 | ACL (Cell Level) ACL (Box Level) | WebDAV |
参考情報
例えばバックアップ目的などでCell内のデータを取得したい場合、PersoniumのAPIを実行することで可能。
Accountのパスワードは取得不可。
OData空間のデータ取得
該当するオブジェクトそれぞれの一覧取得APIを実行しデータを取得。
データ量が多い場合などはAPI実行時のクエリを活用し、複数回に分けて取得すると良い。
- $inlinecount : 検索結果の件数を取得する
- $top : 取得する件数を制限する
- $skip : 指定した数だけ検索結果をスキップして取得する
- $orderby : 検索結果をソートする
WebDAV空間のデータ取得
ACL (Cell Level)
Cellのプロパティ取得APIを実行する。
Boxリソース
コレクション設定取得APIをdepth=1で実行する。
コレクション設定取得APIで以下の情報が取得できる。
- Resource Path
- Resource Type (ODataServiceCollection, WebDAVServiceCollection, EngineServiceCollection, StreamCollection, ファイル)
- ACL
Resource TypeがWebDAVServiceCollection or EngineServiceCollectionの場合、その配下に対して再帰的にコレクション設定取得APIを実行し情報を取得する。
Resource Typeがファイルの場合、ファイル取得APIを実行しファイルを取得する。
取得したデータの投入
該当するオブジェクトの作成/登録APIを実行する。
複数データが存在する場合は再帰的に実行する。