CKAN バックエンド

CKANBackend インタフェース

このクラスは、CKAN バックエンド実装が公開しなければならないメソッドを列挙します。この場合、次のものがあります :

void persist(String orgName, String pkgName, String resName, String records, boolean createEnabled) throws Exception;

指定されたリソースに関連付けられたデータストア内の単一のエンティティの属性(行モード)または属性の完全なリスト(列モード)に関する集約されたコンテキストデータを保持します。このリソースは、指定されたパッケージ/データセットに属します。このパッケージ/データセットは、最終的に特定の組織にも属します。このメソッドは、階層の一部(組織、パッケージ/データセット、リソース、およびデータストア)が欠落している場合は作成します。

CKANBackendImpl クラス

これは HttpBackend 抽象クラス(任意の Http 接続ベースのバックエンドに共通のロジックを提供する)を拡張し、上記の CKANBackend インターフェースを実装する CKAN の便利なバックエンドクラスです。

CKANBackendImpl 実際に CKAN API をラップします。

このバックエンドの実装では、Content-Type http ヘッダの application/json; charset=utf-8 値を使用して UTF-8 エンコーディングを強制する必要があります。

CKANCache クラス

このクラスは、すでに作成された組織、パッケージ/データセット、およびリソース(およびデータストア)に関する情報をキャッシュすることによって、NGSICKANSink のパフォーマンスを向上させるために使用されます。階層のある要素がキャッシュされていないときに、そのメソッドが CKAN API と直接対話できるため、CKANCacheHttpBackendインタフェースを実装します。

詳細には、これは、NGSICKANSinkCKANCache と組み合わされたときのワークフローです :

  1. NGSICKANSink は、永続性オペレーションに関係する階層の異なる要素がすでに作成されているかどうかを知るために、キャッシュ(メモリに格納され、より高速かつ効率的)にデータを格納します。以前はCKAN APIにアクセスしていました(これは多くの計算リソースを消費します)
  2. 要素がキャッシュされている場合、CKAN API に対して単一の upsert オペレーションが実行されます
  3. 要素がキャッシュされていない場合、情報を取得するためにCKANにクエリされます。要素が見つからなかった場合は、NGSICKANSinkに通知されます。要素が見つかった場合、それは将来のクエリのためにキャッシュされ、NGSICKANSink は、CKAN API に対してupsert オペレーションを実行します
  4. 要素がキャッシュまたは CKAN に見つからなかった場合、要素は NGSICKANSink により作成されます。そして、upsert オペレーションが行われます