2014-04-09 2 views
2

저는 SQL 배경에서 오는 놈입니다. 사전에 SQL 문을 용서해주십시오.Couchdb 키 쌍 구조

현재 상당히 많은 양의 데이터를 저장해야하는 새로운 클라이언트 프로젝트에서 작업하고 있지만 Couchdb에서이 작업을 수행하는 가장 좋은 방법은 무엇인지 모르겠습니다.

직원 차량 추적 용입니다. VIN (Vehicle Identification Number), GPSLat, GPSLong, DateTimeStamp를 저장해야합니다.

VIN은 결코 바뀌지 않지만 GPS 데이터와 관련이 있습니다.

SQL 구조에서는 VIN 테이블과 데이터의 다른 관계형 테이블이 매우 간단합니다.

Couchdb 키 쌍에서는 VIN을 반복해서 저장하는 것이 좋습니다. 아니면 VIN을 키 쌍으로 만들고 GPS 데이터를 어떤 방식으로 저장합니까? 그렇다면 어떻게 GPS 데이터를 키 쌍으로 보관해야합니까?

키 쌍 저장에 대해 전문가에게 미리 감사드립니다.

답변

1

두 가지 방법으로 모두 수행 할 수 있습니다. Couchdb는 linked documents을 지원합니다. 문서를 한 번 작성하여 다른 문서에서 참조한 다음 을 사용하여 orignal 문서와 링크 된 문서의 내용을 모두 볼 수있는보기를 작성할 수 있습니다.

그러나 매우 작은 데이터 (json 필드 하나)가 있기 때문에 vin ID를 나머지 차량 세부 정보가 포함 된 문서에 연결해야하므로 문서 자체 내에 필드를 저장하는 것이 좋습니다.

링크 된 문서 전략은 부모 문서에서 자식 문서로 검색하려는 많은 필드가있는 경우에 유용합니다.

1

데이터에 액세스하는 방법에 따라 달라질 것이라고 생각합니다.

정기적으로 모든 링크 된 데이터에 액세스하지만 업데이트가 자주 발생하지 않으면 문서를 수정할 수 있습니다. 그러나 동일한 문서를 계속 업데이트 할 때마다 매번 검색해야하므로 문서가 상당히 커질 수 있으므로 느려질 수 있습니다.

아마 각 타임 스탬프에 대한 문서를 저장할 것입니다. 매우 빠른 액세스를 위해 이것을 사용할 수 있습니다. 그래서 만약 당신이 당신의 전망이 목록을 지원할 수 있습니다

[ {vin as key}, {datestamp}] 

당신은보기로 startkey/endkey 매개 변수를 사용하여 주어진 자동차 등록/날짜에 대한 모든 항목을 말할 매우 빠르게 액세스 할 수있을 것입니다. 마찬가지로 vin을 사용하여 최대 날짜 스탬프에 대한보기를 가질 수 있습니다.

1

데이터를 검색하는 방법과 관련하여 저장소에 가장 적합한 방법이라고 생각합니다.

위의 답변을 바탕으로 매번 VIN을 저장하는 것이 가장 좋은 것처럼 들립니다.

일단 데이터가 삽입되면 다시 업데이트되지 않습니다.는 SQL 관점에서

, 내 가장 일반적인 쿼리가 같은 것 : datetimestamp DESC에 의해 emp_vehicledata ORDER FROM SELECT *를

그래서 난을 통해 갈 필요가 없습니다 것입니다 (가끔 날짜 사이에있을 수 있습니다) 문서가 업데이트 기록을 수정하여 특정 날짜 집합을 얻으면 VIN이있는 모든 새 항목이 모든 항목에 가장 적합 해 보입니다.

Couchdb 스토리지를 올바르게 이해하고 있습니까? 다시 한 번 감사드립니다

+1

나는 그렇게 생각합니다. 두 가지 유형의 데이터가 있습니다. type1은 vehicledata이고 type2는 위치 데이터입니다. - vin이 포함되어 있습니다. 그때 당신은 정말로 vin에 의한 데이터를 원한다면 [vin, timestamp] (SQL 등가물이 WHERE 절이있는 경우 사용) 또는 [timestamp [, vin]]을 사용하는 뷰를 가질 수 있습니다. 나는 거의 링크 된 목록의 이점을 보지 못했지만, 차량에 키를 설정하여 직접 vin을 알고있는 문서에 액세스 할 수 있거나 두 번째보기를 가질 수 있습니다. 차량. – Hans