하나가 아닌 여러 파일 지오 데이터베이스를 사용하는 ArcGIS Engine의 성능은 무엇입니까?


11

ArcGIS Engine 응용 프로그램에 대한 데이터를 구성하는 가장 좋은 방법을 결정하려고합니다. 특히 맵 표시 및 쿼리 속도에 관심이 있습니다. 현재 테마를 기반으로 모든 데이터를 별도의 파일 지오 데이터베이스로 분리했습니다. 따라서 Transportation.gdb, Utilities.gdb 등이 있습니다. 데이터를 테마를 기반으로 구성 할 필요는 없으며 모든 파일을 하나의 파일 지오 데이터베이스에 배치하는 것을 고려하고 있습니다.

나는 내 자신의 테스트를 할 것입니다, 그러나 나는 지역 사회에 질문을 던지고 싶었습니다.

일반적으로 하나의 파일 지오 데이터베이스를 여러 개의 (약 7 개) 작은 것을 사용하는 것보다 더 빠른가요? 다른 장단점에도 관심이 있습니다.

참고 : 소프트웨어 및 모든 데이터는 고객의 로컬 컴퓨터에 있습니다. 웹이나 네트워크를 통해 제공되는 데이터가 없으며 데이터의 양이 상당히 적습니다 (대략 100,000 개의 기능).

답변:


5

나는 다른 길로 가고 실제로 아니오 라고 말하려고합니다. 아니요,이 특정 사용 사례에 대해 GeoDatabases를 분리하는 것은 좋은 성능 개선이 아닙니다 .

DB 연결과 관련된 비용이 있다는 것을 기억해야합니다. GeoDatabase의 경우 모든 관련 메타 데이터 테이블을로드합니다. 따라서 데이터를 여러 GDB로 분리 할 때마다이 테이블의 여러 버전 (각 DB마다 하나씩)을 열어야하므로 비용이 증가하고 있습니다. 다른 DB를 쿼리하기위한 멀티플렉싱은 일반적으로 무효화되는 캐시가있는 I / O를 의미 할 수도 있습니다.

그럼에도 불구하고 여러 DB 더 나은 경우가 있습니다. 예를 들어. 700MB 인 개인 gdb (filegdb가 아님)와 두 조각의 350MB 인 경우를 고려하십시오. MS Jet 드라이버 (.mdb 파일과 상호 작용하는 데 사용되는 것)는 500MB보다 작은 파일 을 메모리 매핑 하므로 시스템에 충분한 메모리가 있으면 디스크의 모든 I / O와 비교하여 메모리의 DB와 완전히 상호 작용하게됩니다. 훨씬 더 빠릅니다. 700MB 파일은 메모리 매핑되지 않습니다.

이 경우를 방정식에서 제외하면 별도의 db를 수행하는 것이 의미가 없습니다. 레이어를 반복하는 ArcMap은 각 레이어를 순차적으로 쿼리하므로 병렬 처리가 발생하지 않습니다.

대신 FileGDB 색인을 다시 작성하는 것이 좋습니다.

그렇습니다. SSD는 확실히 도움이 될 것입니다.


1
오. <500mb .mdb의 메모리 매핑은 흥미 롭습니다. 개인 gdb는 arcgis에 필요한 고통스러운 추가-복사 및 삭제 프로세스 대신 ms-access에서 필드의 순서를 변경하고 이름을 바꾸는 것 외에는 좋지 않다고 기록했습니다. 어쩌면 지금은 때때로 그것들을 사용해야 할 또 다른 이유가 있습니다. 디스크 크기에 500MB의 티핑 포인트 파일이 있습니까? (예를 들어, jpeg는 디스크에서 30kb 일 수 있지만 열려있을 때 수 MB의 램을 소비합니다)
matt wilkie

1
내가 기억하는 한, 이것은 ESRI가 아닌 Jet 엔진 자체의 동작이었습니다. 또한 500MB보다 약간 작습니다. 파일 크기와 메모리에 대한 좋은 질문입니다. 나는 그것이 파일 크기라고 생각 -하지만 난 당신과 함께 정직하게, 정확하게 기억하지 않는다
라기 Yaser Burhum

4

실제로 그것은 일반적으로 다른 방법입니다. 작은 데이터베이스는 더 빨리 쿼리합니다. 지하실의 큰 더미에 모든 것을 개별 파일 캐비닛으로 분류하지 않고 던지면 물건을 더 빨리 찾을 수 있는지 묻는 것과 같습니다. 개별 데이터베이스가있는 경우, 처음부터 무시할 수있는 6 개의 파일 캐비닛이있는 것과 같으며 살펴볼 필요가 없습니다. 물론 이것은 어떤 데이터베이스를 쿼리해야하는지 알고 있다고 가정합니다. 어쨌든 모든 데이터베이스를 살펴 봐야 할 경우 하나의 큰 데이터베이스가 실제로 더 빠를 수 있습니다 (데이터 세트 전체를 최적화 할 수 있기 때문에).


3

한 번에 GIS에 적합하지 않은 장치에서 ArcReader와 비슷한 설정을했고 GIS 서버에 안정적인 네트워크 연결을 유지하는 것이 운이 좋았습니다 ( 우리는 무선이 아닌 불안정한 유선 연결을 말하고 있습니다 ... ).

나는 일반적으로 "테마"와 업데이트 빈도 에 의해 파괴 된 수많은 데이터베이스를 가졌다 . 나는 매일, 매월, 매년 또는 3 년마다 (항공 / 평면 업데이트 일정) 파산했습니다. 그것들이 robocopy를 통해 업데이트되었으므로 불필요한 장치를 이러한 장치로 옮기고 싶지 않았습니다.

강력한 지오 데이터베이스 복제 기능이 없거나 배포 할 파일 지오 데이터베이스를 수신하는 환경에있는 경우 이러한 방식으로 데이터 스토리지를 분리하여 관리하기가 더 쉬울 수 있습니다.

성능 질문에 대답하기 위해 : 데이터 저장소를 별도의 파일 지오 데이터베이스로 분리하여 속도가 떨어지는 것을 결코 알지 못했습니다. 그렇다고해서 존재하지 않았다는 의미는 아니지만 인간이 인식 할 수 없었습니다. 이러한 구성에는 하나의 하드 디스크에 모든 파일 지오 데이터베이스가 있다는 점에 주목할 필요가 있습니다. SCSI / SSD 장치에 분산되어 있으면 성능이 향상 될 수 있습니다.


2

한 번에 각각 다른 지역을 다루는 ArcGIS Server WebADF 웹 응용 프로그램이 약 5 개 있었지만 모두 공통 데이터 세트를 공유했습니다. 살인자는 앱이 모두 역동적 이었으므로 (캐시 된 것은 없음) 우리는 수십만 (실제로는 미국 전체의 수백만)에이를 수있는 유정과 가스정을 보유하고있었습니다. 전체 데이터 세트에서 쿼리를 수행하는 것은 고통 스러웠습니다. 실제로는 일반적으로 시간 초과입니다. 각 영역에 대한 데이터를 잘라내어 별도의 데이터 저장소에 저장하면 성능과 고객 만족도가 높아졌습니다. 당신과 마찬가지로, 우리는 파일 지오 데이터베이스를 서버의 HDD에 저장하여 ALOT에 도움을주었습니다. 매일 밤마다 각 파일 지오 데이터베이스에 데이터를 잘라내는 자동화 된 프로세스가있었습니다.

정확히 대답은 아니지만, 당신이 생각하는 것과 비슷한 종류의 사례 연구가 더 있습니다. 처리 할 동적 기능이 너무 많지 않았다면 그렇게하지 않았을 수도 있습니다. 때로는 평범하지 않은 일을해야 할 때가 있습니다.


답변 해주셔서 감사합니다. 그것은 내 상황과 일치하지 않지만 비슷한 상황을 가진 다른 사람들에게는 좋은 통찰력입니다. 모든 데이터가 소프트웨어와 함께 고객의 로컬 컴퓨터에있을 것이라고 언급하지 못했습니다. 인터넷을 통해 데이터가 제공되지 않습니다 (그렇지 않으면 소프트웨어 업데이트를 설치해야하는 경우). 또한 작업중 인 데이터의 양은 작업중 인 양의 작은 부분입니다.
Tanner

4
웹을 통해 서비스를 제공한다고 생각하지는 않았지만 FGDB를 네트워크 공유에 배치해도 파이프를 통한 데이터 전송 속도가 느려질 수 있습니다. 거대한 데이터 세트로 작업하지 않는다면 별도의 FGDB가 당신에게 많은 도움이 될 것이라고 생각하지 않습니다. 가치보다 더 고통 스러울 수 있습니다.
채드 쿠퍼
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.