【问题标题】:Which nosql database for heterogeneous records?哪个nosql数据库用于异构记录?
【发布时间】:2012-04-24 18:59:03
【问题描述】:

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

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

【问题讨论】:

    标签: database nosql ravendb log-analysis


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2012-04-18
      • 2023-03-08
      • 2011-04-18
      • 1970-01-01
      • 2013-03-30
      • 2014-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多