저는 현재 다른 프로그래머가 데이터를 파일로 구성하는 방법에 대해 매우 궁금합니다. 누구나 파일 구조를 만드는 최상의 방법에 대한 좋은 기사 나 책을 추천 할 수 있습니까?사용자 지정 파일 구조에 대한 유용한 정보
예를 들어 어떤 용도로든 자신 만의 소프트웨어를 만든 경우 저장된 데이터를 일반 텍스트로두고 일련 번호를 지정하고 XML로 인코딩하고 왜이 작업을 수행합니까?
내가 간과 한 비밀이 있습니까?
저는 현재 다른 프로그래머가 데이터를 파일로 구성하는 방법에 대해 매우 궁금합니다. 누구나 파일 구조를 만드는 최상의 방법에 대한 좋은 기사 나 책을 추천 할 수 있습니까?사용자 지정 파일 구조에 대한 유용한 정보
예를 들어 어떤 용도로든 자신 만의 소프트웨어를 만든 경우 저장된 데이터를 일반 텍스트로두고 일련 번호를 지정하고 XML로 인코딩하고 왜이 작업을 수행합니까?
내가 간과 한 비밀이 있습니까?
일반적으로 최소한 가장 먼저 할 일은 가장 간단 할 것입니다. 예를 들어 대부분의 구성 파일이 공백으로 구분 된 필드이거나 다른 문자로 구분 된 필드 (GCOS 필드에 공백을 포함 할 수 있으므로 ":"구분 기호를 사용하는/etc/passwd와 같은 필드)를 고려하십시오.
데이터가 더 많은 구조를 필요로한다면 "쉽게 사용할 수있는 도구는 무엇입니까?" Python과 Ruby에는 JSON과 YAML이 있습니다.
XML은 기본적으로 많은 XML 기반 자료가 있거나 브라우저에서 표시 가능한 양식으로 XML을 변형하려는 경우에 기본적으로 유용합니다. 그렇지 않으면 일반적으로 코드 크기, 복잡성이 매우 높습니다.
어떤 형식을 선택하든 관계없이 버전 번호를 저장해야한다는 점에 유의해야합니다 (일부 변경 사항을 도입해야 할 것입니다).
형식은 응용 프로그램과 데이터의 양에 크게 의존합니다. 일부 응용 프로그램의 경우 XML이 적절하며 다른 응용 프로그램의 경우 고정 크기 구조체가 이진 파일에 저장되어있는 것이 좋습니다. (와 고정 된 크기의 구조를 저장 - (분리)
나는 예를 들어, 상황에 따라 여러 가지 형식을 사용 동적 인 크기의 랜덤 액세스는 요소에 대한 별도의 오프셋 배열을 유지하지 않으면 어려워집니다. 성능 및 공간 효율성 (대부분의 데이터베이스는 왜 바이너리 형식으로 데이터를 저장 하는가)이 장점이지만 인간과 함께 작업하는 것은 그리 좋지 않습니다. 엔디안을 기억하십시오.
당신은 고유 한 요구 사항이 없다면,있는 뭔가를 사용하는 다른 방식으로 데이터를 사용할 수 있습니다 성숙한 라이브러리가 이미 있으므로 파싱 코드를 직접 작성할 필요가 없습니다. 사람들이 말한 것처럼 XML/JSON 등을 의미합니다.
좋은 다른 하나는 Google의 프로토콜 버퍼 (http://code.google.com/p/protobuf)입니다. 여기서 공통 메시지 정의를 작성하고 프로토콜 버퍼 컴파일러는 데이터를 작성, 직렬화 및 비 직렬화하기위한 객체를 생성합니다. 일반적으로 형식은 바이너리이지만 TextFormat 클래스를 사용하여 JSON 형식의 일반 텍스트도 작성할 수 있습니다. protobufs의 좋은 점은 버전 코드가 생성된다는 것입니다. 파일 형식의 버전 2에서는 필드를 .proto 정의 파일에 추가하기 만하면됩니다. 새 버전은 이전 파일 형식을 읽을 수 있으며 새 필드를 비워 둡니다. protobufs가 설계된 것은 아니지만, 사용자 정의 메시지를위한 쉽고 효율적인 이진 파일 형식을 만들고 코드가 생성됩니다.
또한 Apache 인큐베이터의 Facebook Thrift도 참조하십시오.
몇 년이 지났기 때문에 나는 그저 궁금한 것이 아닌 이상 텍스트를 더 좋아한다는 것을 알게되었습니다. CPU가 충분히 빠르므로 우리는 충분히 빨리 해독 할 수 있습니다.
분명히 큰 파일 안에 작은 정보 조각을 자주 업데이트해야 할 때 이것은 선택 사항이 아니지만 대부분 데이터베이스를 설명합니다.
이 두 가지 옵션 중 하나가 아닌 다른 것을 사용하게하려면이 시점에서 비정상적인 상황이 발생합니다.
+1 for XML. 약간의 오버 헤드가 있지만 파싱, 읽기 및 디버그가 쉽습니다. 스키마를 사용하고 있다면 엄격 할 수 있습니다. XSLT로 변환하기 쉽고 휴대가 간편합니다. (유선 또는 pendrive에서 :)
이것은 실제로 특정 상황에 따라 다릅니다. 다양한 질문에 대한 답변에 대한 귀하의 선택을 고려해야합니다.
데이터 자체의 성격이 영향을 미칩니다. 플랫 목록 구조입니까? 나무입니까? 주기적인 그래프입니까? 고정 너비 또는 가변 너비의 레코드입니까?
이 질문에 대한 대답을 알았 으면 가능한 한 간단하게 옵션 중에서 선택하십시오. 종종 인기있는 옵션 (XML, CSV, YAML)이 사용자의 용도에 맞습니다. 그렇지 않다면 자신 만의 형식과 자신의 글쓰기 및 읽기 절차를 개발해야합니다.
너무 많은 가능성이 있지만 가장 실용적인는 XML을 수있다
여전히입니다. 나는 미래가 당신의 데이터 구조를 수반 할 것이라고 생각한다. 예를 들어 새로운 필드가 데이터에 추가되는 경우 파일 형식을 쉽게 확장 할 수 있는지 확인하십시오. –