3

トリプルストアに何百万ものエンティティリソースが格納されており、(sparql)クエリはそれらの数百(または数千)を返す可能性があります(結果は、エンティティのサムネイル画像を表示する必要があるピボットビューアなどでさらに狭くなります) 。

さて、この主題に関するほとんどの回答は、リソース画像を指すトリプルストア(例:foaf:Image)内にuri参照を持つトリプルストアの外に画像を保存することを提案しています。

それらをトリプルストア内に保存すると、バックエンドストアへの1つのsparqlクエリ(エンティティとそのサムネイル画像のフェッチ)でパフォーマンスが向上すると思います。

一方、トリプルストアの外部に画像が保存されている場合、画像を取得するには多くのクエリを実行する必要があります。

そのような場合を処理するためのベストプラクティスは何でしょうか?(エンティティリソースの他のバイナリデータプロパティに適用される場合があります)。

4

1 に答える 1

3

この場合の最善の策は、画像を別々に保存することです。ほとんどのトリプル ストアには最適化された BLOB ストレージがなく、データベースにバイナリ データを含めると、すべてのクエリのパフォーマンスが低下する可能性があります。

単一のクエリでいくつかのリクエストのすべての画像を取得することはまだ可能です - おそらく、私が推測するリクエストに依存しますが、それ可能です。私がお勧めするのは、画像への URL 参照が Apache などによって提供されることです。そうすれば、クライアントに URL を直接フィードでき、最適な方法で取得できます。これは、ブラウザが画像を使用する Web ページを取得するようなものだと考えてください。画像は HTML の一部ではなく、個別に取得します。

必要に応じて、画像のアップロードを処理できます。リクエストを分割し、画像のメタデータをトリプルストアに配置し、画像の実際のビットを Apache がホストするディレクトリに配置します。

これにより、キャッシュやその他の標準的な HTTP レベルのインフラストラクチャを設定して、画像をできるだけ迅速かつ簡単に提供できるようになり、最終的に最高レベルのパフォーマンスが得られると思います.

于 2013-02-06T13:26:31.517 に答える