1

クエリ/レポート作成を容易にするために、ログ エントリを保存するためのさまざまなオプションを検討しています。
現在、私はデータを解析して検索するスクリプトを作成していますが、データの需要がますます高まっているため、ログ データをデータベースに入れる価値がありつつあります。

{"timestamp":"2012-04-24 12:34:56.789", "Msg":"OK"ログ エントリは、 (簡略化された例)のようなキーと値のペアで構成されます。
最終的には、ログ形式がたとえば に拡張されると確信しています{"timestamp":"2012-04-24 12:34:56.789", "Msg":"OK", "Hostname":"Bubba"。これは、「スキーマ」または「ドキュメント定義」を変更する必要があることを意味します。また、当店はWindows+.NETショップです。

したがって、主に NoSQL エンジンを探していたところ、RavenDB が .NET から使用するのに魅力的であることがわかりました。
ただし、それや他の NoSQL データベースが異種レコードをどのように処理するかについての情報を見つけるのに苦労しています。
あなたの意見では、何が適切でしょうか?

4

1 に答える 1

3

RavenDB を使用すると、さまざまな種類のドキュメントを保存するだけで、スキーマの「変更」を処理できます。実際には「スキーマフリー」であるため、そこにあるフィールドのみにインデックスを付けるインデックスを作成できます。追加情報については、このブログ投稿を参照してください。移行について話していますが、ここでも同じことが当てはまります。

また、ここでは動的フィールドオプションが役立ちます。したがって、任意のプロパティを持つドキュメントが与えられます:

public class LogEntry
{
    public string Id { get; set; }
    public List<Attribute> Attributes { get; set; }
}

public class Attribute
{
    public string Name { get; set; }
    public string Value { get; set; }
}

次のようなクエリを記述できます。

var logs = session.Advanced.LuceneQuery<LogEntry>("LogEntry/ByAttribute")
    .WhereEquals("Msg", "OK")
    .ToList();
于 2012-04-24T20:19:52.780 に答える