2012-04-24 3 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 엔진을 찾고 있었고 .NET에서 RavenDB를 사용하는 것이 매력적이었습니다.
그러나 다른 데이터베이스와 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(); 
관련 문제