문제

내 응용 프로그램은 XML에서 다음과 같습니다.

<resource url="someurl">
   <term>
      <name>somename</name>
      <frequency>somenumber</frequency>
   </term>    
   ...
   ...
   ...
</resource>

이것이 제가이 "자원"을 저장하는 방법입니다. XML 파일 당 리소스. 필요에 따라 "자원 당"이라는 용어 "만큼. 문제는이 자원 중 약 2 백만을 생성해야한다는 것입니다. 나는 거의 500.000을 생성했으며 내 Mac은 그것에 대해별로 행복하지 않습니다. 그래서 내 질문은 :이 데이터를 어떻게 저장해야합니까?

  • 데이터베이스? 데이터의 구조가 고정되지 않았기 때문에 어려울 것입니다 ...
  • 일부 리소스를 더 큰 XML 파일로 병합할까요?
  • ...?

데이터가 생성되면 데이터를 변경할 필요가 없습니다. 지금은 해당 리소스 파일의 이름으로 특정 리소스에 액세스하고 있습니다.

모든 제안은 대단히 감사합니다!

도움이 되었습니까?

해결책

모든 데이터베이스가 관계형이 아닙니다. 예를 들어보십시오 MongoDB. 자원과 유사한 데이터를 JSON과 유사한 개체로 저장합니다.

쉘을 사용하는 예 :

$ mongo
> db.resources.save({url: "someurl", 
                     terms: [{name: "name1", frequency: 17.0},
                             {name: "name2", frequency: 42.0}]})
> db.resources.find()
{"_id" :  ObjectId( "4b00884b3a77b8b2fa3a8f77"), 
 "url" : "someurl" , 
 "terms" : [{"name" : "name1" , "frequency" : 17},
            {"name" : "name2" , "frequency" : 42}]}

다른 팁

데이터가 어떻게 구성 될 것인지 예측할 수 없다면 http://couchdb.apache.org/ 당신에게 흥미로울 수 있습니다. 스키마가없는 데이터베이스입니다.

어쨌든, XML은 아마도 큰 데이터를위한 최선의 선택이 아닐 수도 있습니다.

JSON 또는 YAML을 시도하는 것이 더 잘 작동합니까? 그들은 공간이 적고 구문 분석하기가 더 쉽습니다 (그러나 그 형식을 더 큰 규모로 사용하는 경험은 없습니다. 아마도 나는 틀 렸을 것입니다).

XML 파일 당 여러 리소스가 있어야하지만 동시에 모든 리소스를 가질 것으로 예상되는 경우에만 해설됩니다. 소수의 리소스 만 누구에게나 보내야한다면, 개별 XML을 계속 만들어보십시오.

이 상황에서도 큰 XML 파일을 유지하고 원래 데이터 세트에서 작은 파일을 작성할 수 있습니다.

SQLITE3과 같은 데이터베이스를 사용하면 SQL 구문을 사용하여 더 빠른 탐색 시간과 데이터 조작을 수행 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top