2016-08-29 3 views
0

전 세계의 호텔을 대표하는 디스크에 ~ 500 개의 json 파일이 있습니다. 각 파일은 약 30mbs이고 모든 객체는 동일한 구조를 가지고 있습니다.디스크의 json 파일에서 객체에 액세스

내 스프링 서버의 특정 지점에서 단일 호텔에 대한 정보를 얻으려면 code (json 개체 안에 있음)을 통해 가정 해 봅시다.

데이터는 읽기 전용이지만 여분의 json 파일이나 델타 변경 사항과 같은 특정 시간에 호텔 제공 업체의 업데이트를받을 수 있습니다.

이제는 json 파일을 관계형 데이터베이스로 마이그레이션하고 싶지 않으므로 원하는 솔루션을 찾으려고 최선을 다하고 있습니다. JSON 파일에서 바로 조회하는 것은 나 데이터 처리의 적은 두통을 생각했기 때문에

내가 Apache Drill을 시도, 내가 드릴을 사용하여 디렉토리 쿼리, 같은했다 :

SELECT * FROM dfs.'C:\hotels\' WHERE code='1b3474';

을하지만이 분명하지 않는 것 호텔을 가져 오는 데 약 10 초 정도 걸리므로 나에게 가장 효율적인 방법입니다.

지금은 Couch DB을 시도했지만 아직 학습 중입니다. 모든 호텔을 단일 문서로 마이그레이션해야합니까 (나에게 약간의 의미가 있습니까?). 아니면 각 호텔을 문서로 간주해야합니까?

나는 무엇을 원하는지 달성하기위한 좋은 해결책이 무엇인지에 대한 포인터를 찾고 있습니다. 그래서 여기에 의견을 말하십시오.

+1

이것은 매우 모호한 질문입니다. CouchDB에 대해 알고 싶은 것이 있습니까? 일반적으로 문서는 자체 포함되어 있으므로 각 호텔을 문서로 시작할 것입니다. –

+0

Dominic을 지키고 있습니다. 각 호텔은 문서로 저장해야합니다. 쿼리에보다 효율적이고 유용 할 것입니다. –

+0

@DominicBarnes CouchDB에 호텔을 가져 왔습니다 (원래 호텔 json 구조는 변경되지 않음). 호텔 당 문서. 호텔을 검색하는 적절한 방법은 무엇입니까? 호텔 코드를 기반으로하는 뷰를 생성해야합니까? 실례지만 내 무지와 감사. – prettyvoid

답변

0

여기서 중요한 문제는 json 파일에 연관된 색인이없고 Drill이 색인을 작성하지 않는다는 것입니다. 따라서 SELECT * FROM dfs.'C:\hotels\' WHERE code='1b3474';과 같은 쿼리를 수행 할 때마다 Drill은 각 json 파일을 읽고 각 파일의 모든 데이터를 구문 분석하고 처리 할 수 ​​밖에 없습니다. 파일 및 데이터가 많을수록이 쿼리에 걸리는 시간이 길어집니다. 이와 같은 조회를 자주해야하는 경우 드릴을 사용하지 않는 것이 좋습니다. 일부 대안은 다음과 같습니다

  • 당신이 코드 컬럼에 구축 된 인덱스가 관계형 데이터베이스.
  • 키 값 저장소 코드이 핵심입니다.