2009-07-21 4 views
4

저희 회사는 많은 양의 실험실 센서 데이터를 보관하는 파일 형식을 잠시보고 있습니다. 그들은 계측을 실행할 때마다 파일을 생성하여 추세를 위해 데이터베이스에 저장하고 사용합니다. 계층 적 형식은 데이터를 "그룹화"할 수 있으므로 선호됩니다. 데이터를 데이터베이스에 저장하기 전에 중간 파일 형식입니다. 우리의 개발 환경으로 인해 이것은 우선 순위 목록입니다 :계층 적 .Net 파일 형식?

1) .Net 호환. API는 웹 서비스 및 클라이언트 응용 프로그램에서 사용됩니다. 우리는 고객의 환경을 제어 할 수 없으므로 pure.Net 솔루션이 가장 좋습니다.

2) 읽기 속도. 우리의 읽기는 순차적이 아니라 무작위입니다. 더 빠를수록 좋습니다. 우리가 C# 개발 샵이 아니라면 속도는 # 1이라고 말할 것입니다.

3) 파일 크기. 파일 자체가 크면 좋은 압축률 (86 % 이상)이 바람직합니다.

4) 읽기의 메모리 풋 프린트. 데이터의 양 때문에 단순히 읽을 수는 없습니다. 각 센서에는 시간/값 쌍이 있습니다. 이것은 4 백만 쌍이 넘는 의지를 창출 할 수 있습니다. 이로 인해 XML이 제거되었습니다.

우리는 현재 HDF5을보고 있으며 .NET 서비스 분야에서는 API가 끔찍하게 부족하고 웹 서비스를 수행 할 수 없지만 크기/속도를 찾고 있습니다. 나는 또한 JSON을 보았고 유망 해 보였지만 데이터 조각을 다시 읽으려고 시도하지 않았습니다. 필자는 웹을 검색했지만 필요한 파일 형식을 많이 찾지 못했습니다. 어떤 도움을 주셔서 감사합니다.

답변

1

당신은 같은 B- 트리 데이터베이스가 필요합니다 또한 SQLite는 볼

컴팩트

는 SQL 서버 http://sqlite.phxsoftware.com/

당신은 SQL 부분 구글 생략 할 수있는 경우 CTree는, ISAM의 더

죄송합니다 ctree를 들어이 아니라 새로운 ACCT

+0

감사합니다. 개념 증명을 시도하고 작동 원리를 살펴 보겠습니다. 확실히 유망 해 보입니다. – mcauthorn

+1

모든 초기 테스트 및 데모에서 HDF5와 마찬가지로 읽기 및 쓰기 속도가 빠르며 압축도되지 않지만 (10 % 적음) 압축하여 재생하면 동일한 데이터를 더 작은 파일 크기로 가져올 수있었습니다 . 추천 해 주셔서 감사합니다. – mcauthorn

0

필자는 특수한 읽기 요구 사항이 모든 형식에서 문제가 될 것이라고 생각합니다.이 경우 독자적인 파서를 구현해야합니다.

0

이진 트리/균형 트리 형식이 그리 많은 노력이 아니라면 Newick Format에 저장할 수 있습니다. JSON과 같은 키/값 쌍 형식을 지원할 수도 있습니다.

JSON보다 더 가볍지는 않지만 "{}"은 (")로 바뀝니다.

((너구리 베어) ((sea_lion 씰) ((원숭이, 고양이) 족제비)), 개);

분명히 이진 트리이므로 쿼리가 매우 빠르지 만 JSON 개체의 사전보다 빠르지 만 걱정할 링크 스타일 스타일의 계층 구조는 없습니다.

나는,하지만 나는 그것을 위해 모든 .NET API를 찾을 수 없습니다 두려워 단지 자바와 C

1

나는 당신이 경우, 데이터베이스의 테이블에서이 정보를 저장하는 더 나을 것 같아요 SQL Server를 사용하면 VARBINARY가 작업을 수행해야합니다.

최상위 노드에 대해 null 일 수있는 [부모] 필드를 포함하여 테이블을 계층 적으로 만들 수 있습니다.

조회 값 (파일의 ID)을 색인화하면 임의 액세스가 빠릅니다. 압축이 필요한 경우 GZip 클래스를 사용하여 데이터베이스에 고정하기 전에 원시 바이트 []를 포맷 할 수 있습니다. 조인 등을

1) 미친 쿼리를 실행하여이 정보에 대한 데이터베이스를 사용

당신에게 능력을 제공합니다 2) 서로 다른 키 값을 사용하여 더 빠르게 조회 할 수 있도록 여러 열의 색인을 생성 할 수 있습니다. 3) .Net에는 여러 개의 API가 있습니다. 4) 속도에 영향을주지 않으면 압축을 추가 할 수 있습니다. 5) 데이터를 백업해야합니다. 손가락으로 쉬십시오

이 조언이 도움이됩니까?

+0

우리가 데이터베이스에 저장 않는 기원전 그래서 저를 두지 않을되고, 더 링크 싶지만 우리는 중간 t으로 뭔가가 필요 정보를 담고 있어야한다. 우리는 센서 -> DB에서 갈 수는 없습니다. 그것은 센서 -> 파일 -> 데이터베이스 간다. 내가 DB에 직접 가고 싶다고 말할 때 나를 믿어 라. – mcauthorn

+0

센서를 임시 파일에 쓰고 VARBINARY 열에로드 할 수 있습니다. 속도가 만족 스럽다면 일반적으로 모든 상황에서 데이터베이스를 사용하려고합니다. 유지 관리를 위해 관리하기가 쉽습니다. – jonathanpeppers