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 回答