사용자 지정 로그 파일을 분석하는 방법을 찾고 있습니다.몇 GBs 데이터의 구문 분석 및 분석
저는 LINQ와 C# .NET을 사용하여 구현했습니다. 500MB 크기의 로그 파일에서만 작동합니다.
로그 파일의 각 행
는 MetricsList가 채워집니다List<Metrics> MetricsList = new List<Metrics>();
public class Metrics
{
public DateTime Date { get; set; }
public string Metrics1 { get; set; }
public string Metrics2 { get; set; }
:
:
public string Metrics9 { get; set; }
}
처럼 보이는 객체에서 이루어집니다. 유용한 분석을 제공하기 위해 MetricsList에서 다양한 LINQ 쿼리가 실행됩니다. 메트릭 개체에는 300 바이트가 필요합니다. 500MB 로그 파일에는 약 4 백만 줄의 메모리가있어 MetricsList의 크기만으로도 1GB 이상의 프로그램 메모리를 소비합니다.
내 요구 사항은 크기가 최대 2GB 인 파일을 구문 분석하고 분석하여 4GB의 메모리를 사용하는 것처럼 보입니다.
Windows, Microsoft 기술 및 모든 오픈 소스 라이브러리를 사용하는 더 나은 방법이나 대안.
데이터를 스트리밍해야 할 가능성이 높습니다. 한 번에 하나의 메트릭 (또는 메트릭 덩어리)을 읽은 다음 메모리에서 삭제하고 다음으로 이동하십시오. –
라인을 어떻게 읽으십니까? 'Streamreader' 또는'File.ReadLines'를 사용하여 모두 대신 하나의 라인을 읽을 수 있습니다 (foo.File.ReadAllLines'). 또한 ['MemoryMappedFile'-class] (http://msdn.microsoft.com/en-us/library/system.io.memorymappedfiles.memorymappedfile.aspx)를 살펴보십시오. _Memory-mapped 파일은 메모리를 동시에 관리 할 수 있고 프로그래머가 탐색 할 필요없이 파일에 대한 완전 무작위 액세스를 허용하기 때문에 매우 큰 파일로 작업 할 수있게합니다. 메모리 매핑 된 파일은 여러 프로세스간에 공유 할 수도 있습니다. –
"Windows 및 Microsoft 기술 사용에 제한이 있습니다"라는 이유 때문에 제한 사항이 나타나는 이유는 무엇입니까? 다른 기술은 무엇입니까? –