Hiệu suất của ArcGIS Engine sử dụng nhiều cơ sở dữ liệu địa lý tệp trái ngược với một?


11

Tôi đang cố gắng quyết định cách tốt nhất để sắp xếp dữ liệu của mình cho ứng dụng ArcGIS Engine. Tôi đặc biệt quan tâm đến hiển thị bản đồ và tốc độ truy vấn. Hiện tại tôi có tất cả dữ liệu của mình được phân tách thành các cơ sở dữ liệu địa lý tệp riêng biệt dựa trên chủ đề. Vì vậy, tôi có Transport.gdb, Utility.gdb, v.v. Dữ liệu không nhất thiết phải được tổ chức dựa trên các chủ đề và tôi đang xem xét đưa tất cả vào một cơ sở dữ liệu địa lý.

Tôi sẽ làm bài kiểm tra của riêng mình, nhưng tôi muốn ném câu hỏi ra cộng đồng.

Nói chung, việc sử dụng một tệp cơ sở dữ liệu địa lý nhanh hơn so với sử dụng nhiều (khoảng 7) tệp nhỏ hơn? Tôi cũng quan tâm đến bất kỳ ưu / nhược điểm nào khác.

LƯU Ý: phần mềm và tất cả dữ liệu sẽ có trên máy cục bộ của khách hàng. Không có dữ liệu được phục vụ trên web hoặc qua mạng và lượng dữ liệu khá nhỏ (khoảng 100.000 tính năng).

Câu trả lời:


5

Tôi sẽ đi theo một cách khác và thực sự nói rằng không, đó không phải là một cải tiến hiệu suất tốt để phân tách Cơ sở dữ liệu GeoDat cho trường hợp sử dụng cụ thể này mà bạn đã mô tả .

Bạn phải nhớ rằng có một chi phí liên quan đến kết nối với DB. Trong trường hợp của GeoDatabase, nó đang tải tất cả các bảng siêu dữ liệu liên quan. Vì vậy, bất cứ khi nào bạn tách dữ liệu của mình thành nhiều GDB, bạn sẽ tăng chi phí đó, vì bây giờ bạn phải mở nhiều phiên bản của các bảng này (một phiên bản cho mỗi DB). Ghép kênh để truy vấn các DB khác nhau thường cũng có thể có nghĩa là i / o với bộ đệm bị vô hiệu.

Tuy nhiên, có một vài trường hợp khi có nhiều DB có thể hoạt động tốt hơn. Ví dụ. Hãy xem xét trường hợp của một gdb cá nhân (không phải filegdb) là 700MB so với hai là 350MB một mảnh. Trình điều khiển MS Jet (được sử dụng để tương tác với các tệp .mdb) sẽ lưu các tệp bản đồ bộ nhớ nhỏ hơn 500MB - vì vậy nếu máy có đủ bộ nhớ, bạn sẽ tương tác với DB đầy đủ trong bộ nhớ so với bất kỳ ổ đĩa nào. Nhanh hơn nhiều. Tệp 700 MB sẽ không được ánh xạ bộ nhớ.

Lấy trường hợp này ra khỏi phương trình, sau đó không có nghĩa gì khi thực hiện các dbs riêng biệt. ArcMap, vì nó đang lặp qua các lớp, sẽ truy vấn từng lớp một cách tuần tự, do đó bạn không có bất kỳ sự song song nào đang diễn ra.

Thay vào đó, bạn nên xây dựng lại các Chỉ mục FileGDB của mình.

Và vâng, một ổ SSD chắc chắn sẽ giúp ích.


1
Oh. Ánh xạ bộ nhớ của <500mb .mdb rất thú vị. Tôi đã viết ra các gdb cá nhân là không tốt cho bất cứ điều gì ngoài việc sắp xếp lại và đặt tên lại các trường trong truy cập ms thay vì quá trình thêm một bản sao và xóa cần thiết trong arcgis. Có lẽ bây giờ tôi có một lý do khác để sử dụng chúng theo thời gian. Là tập tin điểm tới 500mb trên kích thước đĩa hoặc cái gì khác? (ví dụ: một jpeg có thể là 30kb trên đĩa nhưng vẫn tiêu thụ nhiều megabyte ram khi mở).
matt wilkie

1
Theo tôi nhớ, đây là hành vi từ chính động cơ Jet chứ không phải ESRI được kích hoạt. Ngoài ra, nó hơi nhỏ hơn 500MB. Câu hỏi hay về kích thước tập tin so với bộ nhớ. Tôi nghĩ rằng đó là kích thước tệp - nhưng tôi không nhớ chính xác, thành thật với bạn
Ragi Yaser Burhum

4

Trên thực tế, nó thường là cách khác; cơ sở dữ liệu nhỏ hơn truy vấn nhanh hơn. Nó giống như hỏi liệu bạn có thể tìm thấy công cụ nhanh hơn nếu bạn ném mọi thứ trong một đống lớn dưới tầng hầm thay vì sắp xếp nó vào tủ hồ sơ cá nhân. Khi bạn có cơ sở dữ liệu riêng lẻ, điều đó giống như có 6 tủ hồ sơ mà bạn có thể bỏ qua ngay từ đầu và không cần phải xem qua. Tất nhiên, điều này giả định rằng bạn biết cơ sở dữ liệu nào cần truy vấn - nếu bạn cần xem qua tất cả chúng, thì một cái lớn có thể thực sự nhanh hơn (vì nó có thể tối ưu hóa toàn bộ dữ liệu).


3

Có một lần, tôi đã có một thiết lập tương tự với ArcReader trên các thiết bị không phù hợp với GIS và may mắn duy trì kết nối mạng ổn định với máy chủ GIS ( chúng tôi đang nói về kết nối có dây không ổn định ... không phải là không dây ).

Tôi đã có rất nhiều cơ sở dữ liệu thường bị phá vỡ bởi "chủ đề" và tần suất cập nhật. Tôi đã chia chúng ra hàng ngày, hàng tháng, hàng năm hoặc ba năm một lần (đó là lịch cập nhật trên không / Planimetric). Vì chúng được cập nhật thông qua robocopy, tôi không muốn di chuyển bất kỳ dữ liệu nào không cần thiết lên các thiết bị này.

Nếu bạn đang ở trong một môi trường mà bạn không có khả năng sao chép cơ sở dữ liệu địa lý mạnh mẽ hoặc bạn chỉ đơn giản nhận được tệp cơ sở dữ liệu địa lý để phân phối, có thể dễ dàng quản lý hơn bằng cách phá vỡ bộ lưu trữ dữ liệu của bạn theo cách này.

Để trả lời câu hỏi về hiệu suất của bạn: Tôi không bao giờ nhận thấy bất kỳ sự giảm tốc độ nào bằng cách chia các cửa hàng dữ liệu của tôi thành các cơ sở dữ liệu địa lý tệp riêng biệt. Điều đó không có nghĩa là không có, nhưng nếu có, nó không thể nhận biết được. Điều đáng chú ý là các cấu hình này có tất cả các cơ sở dữ liệu địa lý tệp trên 1 đĩa cứng - bạn có thể đạt được hiệu suất nếu bạn trải đều trên các thiết bị SCSI / SSD.


2

Tôi đã từng có khoảng năm ứng dụng web WebGF của ArcGIS Server, mỗi ứng dụng bao phủ một khu vực địa lý khác nhau, nhưng tất cả chúng đều dùng chung các bộ dữ liệu. Kẻ giết người là các ứng dụng đều năng động (không có gì được lưu trong bộ nhớ cache) và chúng tôi có các giếng dầu khí trong đó có thể lên tới hàng trăm ngàn (thực tế là hàng triệu cho cả nước Mỹ). Thực hiện các truy vấn trên toàn bộ dữ liệu là đau đớn - thực sự chúng thường sẽ chỉ là thời gian chờ. Việc cắt dữ liệu ra cho từng khu vực và đưa nó vào một kho dữ liệu riêng biệt giúp duy trì hiệu suất của chúng tôi và khách hàng của chúng tôi hài lòng. Giống như bạn, chúng tôi cũng giữ các tệp cơ sở dữ liệu địa lý được lưu trữ trên ổ cứng trên máy chủ, điều này cũng giúp ALOT. Chúng tôi đã có một quy trình tự động cắt dữ liệu ra từng tệp cơ sở dữ liệu địa lý mỗi đêm.

Không chính xác là một câu trả lời, nhưng nhiều hơn một trường hợp nghiên cứu trong một cái gì đó tương tự như những gì bạn đang nghĩ về việc làm. Nếu chúng ta không có nhiều tính năng động để xử lý, chúng ta có thể đã không phải làm điều đó. Đôi khi làm những điều hơi khác thường là cần thiết.


Cảm ơn câu trả lời. Nó không hoàn toàn phù hợp với hoàn cảnh của tôi, nhưng đó là cái nhìn sâu sắc tốt cho những người khác có hoàn cảnh tương tự. Tôi không thể đề cập rằng tất cả dữ liệu sẽ có trên máy cục bộ của khách hàng, cùng với phần mềm. Không có dữ liệu nào được phục vụ qua internet (sau đó khi họ cần cài đặt các bản cập nhật cho phần mềm). Ngoài ra, lượng dữ liệu tôi đang làm việc là một phần rất nhỏ so với số lượng bạn đang làm việc.
Tanner

4
Tôi không nghĩ rằng bạn đang phục vụ qua web, nhưng ngay cả việc có FGDB trên chia sẻ mạng có thể làm mọi thứ chậm lại với dữ liệu đi qua các đường ống. Nếu bạn không làm việc với các bộ dữ liệu khổng lồ, tôi không nghĩ các FGDB riêng biệt sẽ giúp bạn tốt hơn nhiều - nó có thể gây đau đớn nhiều hơn là đáng giá.
Chad Cooper
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.