0

最初の警告: 私はドキュメント データベースにまったく慣れていないので、すべての「理解」はドキュメントとブログの投稿から得たものであり、これが私の最初の実践的な作業です。

私は次のことを達成したい:

  1. さまざまな種類のドキュメントを保存し、ドキュメントに関するいくつかのメタデータを管理します。
  2. 次の方法でデータベースにクエリを実行します。
    • メタデータ
    • メタデータとドキュメントの属性
    • 特定のドキュメント タイプのメタデータ
  3. ドキュメント全体をロードせずにメタデータを更新します。

私の理解では、ここには 2 つのオプションがあります。

ドキュメントと一緒にメタデータを保存します。

public class Metadata
{
    public DateTime ValidFrom { get; set;}
    public DateTime? ValidTo { get; set;}
}

public class DocumentWithMetadata<T>
{
    public T Document { get; set;}
    public Metadata Metadata { get; set;}
}

メタデータ属性を含むインデックスを作成しLiveProjections、ドキュメント全体を読み込まずにドキュメントのメタデータを読み込むために使用します。メタデータの更新には、PATCH を使用します。ドキュメントによると..."is considered to be an expert feature and generally should not be used as a general purpose solution. If you have reached a scenario where you are considering using this, you might want to recheck your data model and see if it can be optimized to prevent usage of the Patching API"

もう 1 つのオプションは、メタデータをスタンドアロン ドキュメントとして保存することです。

public class Metadata
{
    public DateTime ValidFrom { get; set;}
    public DateTime? ValidTo { get; set;}
}

public class DocumentWithMetadata<T>
{
    public T Document { get; set;}
    public string MetadataId { get; set;}
}

このアプローチでは、この機能を使用してRelated Document Indexing、メタデータ属性をドキュメントのインデックスに「持ち上げる」ことができます。

タイプT1Raven のドキュメントが というコレクションを作成する場合、すべてのメタデータが 1 つのコレクションにある場合、T1 ドキュメントのメタデータのみDocumentWithMetadataOfT1を照会するにはどうすればよいでしょうか?

ドキュメント タイプ プロパティをメタデータに追加したり、関係を反転したりするなど、他のいくつかのアプローチを考えましたが、それらはすべてハックのようです。

もっと良い方法があるに違いない..かどうか?

4

1 に答える 1

1

あなたが実際にやろうとしていることは非常に混乱しています。主な理由は、Raven には既にドキュメントとメタデータの独自の概念があり、何らかの理由で独自の概念を導入しているためです。

ValidFromメタデータに追加しているフィールドとフィールドに基づいて、ValidToある種のバイテンポラル有効性または「履歴テーブル」を試みていると思います。これは実際には既に行われているため、それが目的の場合は、私のTemporal Versioning Bundleを使用してください。

于 2013-09-27T16:10:26.373 に答える