哪个nosql数据库用于异构记录?

时间:2012-04-24 18:59:04

标签: database nosql ravendb log-analysis

我正在寻找存储日志条目的不同选项,以便于查询/报告 目前我编写的脚本可以解析和查找数据,但数据的需求越来越多,因此将日志数据放入数据库变得越来越有价值。

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

1 个答案:

答案 0 :(得分:3)

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

dynamic fields选项也可以帮助您。所以给定具有任意属性的doc:

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