2012-04-24 35 views
1

我正在寻找用于存储日志条目以便于查询/报告的不同选项。
目前我编写解析和查找数据的脚本,但数据的需求越来越大,因此将日志数据放入数据库变得越来越值得。哪个nosql数据库用于异构记录?

日志条目由键值对组成,如{"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数据库如何处理异构记录的信息。
你认为什么适合你?

回答

3

使用RavenDB,您可以只存储不同类型的文档,并且它将能够处理模式中的“更改”。因为它实际上是“无模式的”,所以你可以编写只索引那些字段的索引。有关更多信息,请参见this blog post。它正在谈论迁移,但这同样适用于此。

此外dynamic fields选项将帮助你在这里。所以定文档与任意属性:

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();