Lƣu trữ theo cơ sở dữ liệu

Một phần của tài liệu NGHIÊN CỨU XÂY DỰNG THỬ NGHIỆM GIẢI PHÁP LƢU TRỮ BẢN ĐỒ TRỰC TUYẾN DẠNG TILED (Trang 41)

Trên đây là hai phƣơng pháp lƣu trữ trực tiếp các ảnh tiled trên hệ thống. Một cách khác để lƣu trữ các ảnh tiled có thể khắc phục đƣợc nhƣợc điểm của phƣơng pháp lƣu trữ theo tập tin riêng biệt là lƣu trữ các ảnh tiled trong một hệ quản trị cơ sở dữ liệu. Sears và n.n.k [5] đã chỉ ra rằng lƣu trữ các tệp nhị phân có kích thƣớc nhỏ hơn 256Kb trong hệ quản trị cơ sở dữ liệu Microsoft SQL Server với kiểu BLOB có lợi thế hơn về hiệu năng đọc/ghi so với lƣu trữ trực tiếp các tập tin này trên hệ thống tệp NTFS.Các ảnh tiled đƣợc coi nhƣ là các đối tƣợng nhị phân lớn (BLOB). Hầu hết các hệ thống cơ sở dữ liệu hiện đại đều cho phép các mảng dữ liệu nhị phân kích thƣớc lớn đƣợc lƣu trữ theo các cấu trúc cột. Sử dụng phƣơng pháp tiếp cận này chúng ta có thể xây dựng một bảng dữ liệu tiled

32

với một cột cho dữ liệu ảnh và các cột khác cho các thành phần địa chỉ của tiled: mức phóng, cột và hàng.

Hình 2.5: Cấu trúc bảng dữ liệu tiled đơn giản

Cách tiếp cận này hơi phức tạp hơn lƣu trữ dữ liệu đơn giản trong tập tin. Tuy nhiên, kể từ khi hệ thống cơ sở dữ liệu hiện đại sử dụng công nghệ tinh vi để phân trang lƣu trữ, cách tiếp cận này có thể có hiệu quả hơn. Ngoài ra, chúng ta có thể tạo các chỉ mục trên địa chỉ các cột. Việc này sẽ làm giảm thời gian tìm kiếm.

Có 2 cách chính để xây dựng các chỉ số:

- Danh sách các cặp địa chỉ tiled và vị trị tập tin. - Bảng tra cứu trực tiếp vị trí tập tin.

Phƣơng pháp đơn giản nhất là chỉ lƣu giữ các địa chỉ tiled, vị trí trong tập tin và kích thƣớc của ảnh dạng tiled trong một danh sách liên tục. Phƣơng thức này đƣợc chỉ ra trong hình 2.6. Các danh sách liên tục vẫn phải tìm kiếm cho mỗi truy vấn tiled.

33

Hình 2.6: Chỉ mục tiled được lưu trữ dưới dạng danh sách địa chỉ

Tuy nhiên, thông tin là một số bậc nhỏ hơn những tiled thực tế, do đó quét một tập tin chỉ mục riêng biệt cho mỗi truy vấn, trong khi vẫn không hiệu quả, phải nhanh hơn quét toàn bộ tập tin. Một biến thể tối ƣu hóa của phƣơng pháp này là sắp xếp dữ liệu trong các chỉ mục tiled. theo cách này, một tìm kiếm tuyến tính có thể đƣợc sử dụng để tăng tốc độ tìm kiếm danh sách chỉ mục.

Phƣơng pháp thứ hai là là tạo ra một bảng tra cứu trực tiếp vị trí các tập tin. Ví dụ nhƣ trong hình 2.7, tiled ở mức 3 có 8 cột và 4 hàng, vì vậy bảng tra cứu yêu cầu 32 bản ghi. Bảng này có thể đƣợc lƣu trữ trong một tập tin trong một hàng lớn hoặc cột lớn. Vị trí của bất kỳ bản ghi nào cũng có thể đƣợc tính toán trực tiếp. Chúng ta có thể lƣu giữ môt giá trị null trong các bảng tra cứu để chỉ ra rằng một tiled không tồn tại cho địa chỉ cụ thể.

34

Hình 2.7: Bảng cho phóng to mức 3

Nếu bảng đƣợc lƣu trữ theo thứ tự sắp xếp hàng lớn, công thứ sau đƣợc sử dụng để tính toán vị trí trong mảng địa chỉ.

P=j * C +i

Trong đó:

i: chỉ mục cột

j: chỉ mục hàng

C: số cột

P: vị trí của bảng ghi tiled

Một điều bất lợi của cách tiếp cận này là hệ thống cơ sở dữ liệu có thể tốn kém về chi phí, cài đặt, vận hành và bảo trì. Cũng giống nhƣ cách tiếp cận hệ thống tin, cách tiếp cận này mang lại cho hệ thống rất nhiều chức năng không cần thiết.

Cơ sở dữ liệu này không thích hợp cho việc lƣu trữ các tiled bởi hiệu năng của nó. Tuy nhiên trong một vài trƣờng hợp nó có thể đƣợc sử dụng. Đầu tiên, một số hệ thống web thƣơng mại cung cấp cho ngƣời dùng quyền truy cập đọc/ghi cơ sở dữ liệu nhƣng không cho phép với tập tin hệ thống. Nếu buộc phải sử dụng chúng ta sẽ phải lƣu trữ các

35

tiled trong cơ sở dữ liệu. Thứ hai, nếu ứng dụng tiled yêu cầu chức năng quá phức tạp, chúng ta phải cần đến một cơ sở dữ liệu lớn.

36

CHƢƠNG 3 : THỰC NGHIỆM 3.1. Môi trƣờng thực nghiệm

Chƣơng trình thực nghiệm giải pháp lƣu trữ bản đồ trực tuyến dạng tiled đƣợc viết trên nền tảng java và chạy trên máy tính với cấu hình:

- Hệ điều hành: Windows 7 Professional x86 32bit(6.1, Build 7600) - Java Visual Machine: 1.6.0_31 (32 bits)

- DBMS: Postgresql 9.1

- Bộ xử lý: Intel(R) Core(TM)2Duo CPU T6600 @ 2.20GHz

- Ram: 3G DDR2 800Mhz

- Dung lƣợng ổ cứng: 250G

- Định dạng ổ cứng : NTFS và FAT32

Để đảm bảo thời gian thực thi trực quan cho mỗi lần thực nghiệm chƣơng trình chúng ta sẽ xóa bộ nhớ đệm của hệ thống.

3.2. Thực nghiệm hiệu năng ghi của các phƣơng pháp lƣu trữ

Nhƣ chƣơng trƣớc đã trình bày về ba phƣơng pháp để lƣu trữ các ảnh dạng tiled. Với mỗi phƣơng pháp chúng ta đã biết về một số thuận lợi và khó khăn của mỗi phƣơng pháp. Trong phần này chúng ta sẽ thử nghiêm hiệu năng ghi của mỗi phƣơng pháp đã đƣợc đề cập.

Chúng ta sẽ ghi một số lƣợng lớn ảnh tiled có kích thƣớc vào ổ đĩa theo ba cách khác nhau: lƣu trữ theo các tập tin riêng biệt, lƣu trữ trong một tập tin đơn nhất, và lƣu trữ trong cơ sở dữ liệu; và so sánh hiệu năng của các phƣơng pháp. Trong mỗi phần kiểm tra chúng ta sẽ thực nghiệm ghi các ảnh tiled nhƣ bảng dƣới cho mỗi level. Mỗi ảnh tiled có thể chứa dung lƣợng tới 80Kb. Chúng ta sẽ lấy một ảnh tiled làm dữ liệu đầu vào cho thử nghiệm.

37

Bảng 3.1: Số lượng ảnh tiled cho thực nghiệm

Số hàng cột Số lƣợng tiled 1x1 1 10x10 100 20x20 400 50x50 2500 60x60 3600 70x70 4900 100x100 10000 120x120 14400 130x130 16900 150x150 22500 170x170 28900 200x200 40000

3.2.1. Cài đặt thực nghiệm hiệu năng ghi

3.2.1.1. Lưu trữ theo các tập tin riêng biệt

Chúng ta sẽ viết mỗi ảnh tiled vào một tập tin riêng biệt dựa theo vị trí của tiled đó (mức - hàng - cột) của tiled đó và lấy ra thời gian ghi các tiled vào các tập tin.

38

Hình 3.1: Cài đặt ghi tiled theo các tập tin riêng biệt

3.2.1.2. Lưu trữ trong một tập tin

Chúng ta sẽ viết tất cả các tiled vào một tập tin duy nhất cho mỗi mức độ phóng. Các dữ liệu về ảnh tiled của một mức sẽ đƣợc lƣu trữ trong tập tin “.tiles“ còn thông tin về hàng và vị trí của dữ liệu ảnh tiled sẽ đƣợc lƣu trữ trong tập tin “.rowindex“ và tập tin “.tileindex“. Nhƣ vậy số tập tin sẽ chỉ là: số mức * 3.

39

Để ghi dữ liệu chúng ta sẽ ghi vào cuối của tập tin “.tiles“ và sau đó cập nhật lại địa chỉ tham chiếu trong tập tin “.rowindex“ và “.tileindex“.

Hình 3.3: Cài đặt ghi theo định dạng riêng

3.2.1.3. Lưu trữ trong cơ sở dữ liệu

Với đặc trƣng là các ảnh phục vụ cho bản đồ nên chúng ta sẽ sử dụng cơ sở dữ liệu postgresql để lƣu trữ.

Với mỗi mức chúng ta sẽ tạo một bảng “level“ với các trƣờng: id, col, row, level, image để lƣu trữ dữ liệu ảnh tiled. Các ảnh tiled ở các mức sẽ đƣợc lƣu trữ trong các bảng “level*“ với “*“ là mức phóng tƣơng ứng với tiled đó.

40

Hình 3.4: Cài đặt lưu trữ theo cơ sở dữ liệu

3.2.2. Kết quả thực nghiệm

Từ việc chạy thực nghiệm các phƣơng pháp ta thu đƣợc kết quả nhƣ trong bảng 4.2

Bảng 3.2: Thời gian ghi ảnh tiled theo các phương pháp tính theo ms

Số hàng cột Số lƣợng tiled WriteMultiiFile (ms) writeSingleFile (ms) Write database (ms) 1x1 1 146 184 423 10x10 100 274 50 2835

41 20x20 400 738 141 9048 50x50 2500 2769 887 53195 60x60 3600 6234 1665 45920 70x70 4900 12552 13612 55438 100x100 10000 31556 24324 113266 120x120 14400 31912 31273 179067 130x130 16900 40162 47418 178363 150x150 22500 82759 63159 236920 170x170 28900 91406 95497 317919 200x200 40000 132070 117714 485521

Từ bảng này chúng ta có thể thấy phƣơng pháp lƣu trữ các tiled trong một tập tin lớn duy nhất mang lại hiệu suất lớn nhất. Viết các tiled trong các tập tin riêng biệt với số lƣợng tiled ít thì hiệu suất tƣơng đƣơng với lƣu trữ trong tập tin lớn. Tuy nhiên với lƣợng ảnh tiled lớn thì hiệu suất thấp hơn phƣơng pháp lƣu trữ trong một tập tin lớn. Lƣu trữ các ảnh tiled trong cơ sở dữ liệu có thời gian ghi chậm hơn hẳn so với hai phƣơng pháp còn lại. Hình 3.5 vẽ ra đồ thị kết quả thực nghiệm ghi ảnh tiled theo các phƣơng pháp. Thời gian viết cho mỗi phƣơng pháp là khá phù hợp.

42

Hình 3.5: Đồ thị thời gian ghi các tiled

3.3. Thực nghiệm hiệu năng đọc của các phƣơng pháp lƣu trữ

3.3.1. Cài đặt kiểm thử

Đối với kiểm thử hiệu năng đọc của các giải pháp lƣu trữ chúng ta sẽ lấy kết quả của thử nghiệm ghi tiled. Dữ liệu về các tiled đã đƣợc thử nghiệm trƣớc ghi lại, chúng ta sẽ lấy đó là dữ liệu đầu vào cho thử nghiệm hiệu năng đọc của các phƣơng pháp lƣu trữ.

Với thử nghiệm này tôi sẽ tạo ra danh sách các tiled: 1; 100; 1000; 2000; 5000; 10000; 15000; 20000; 25000; 30000; 40000; 60000 tiled và đọc chúng. Thời gian đọc các tiled sẽ đƣợc dùng để so sánh dữa các phƣơng pháp.

Mã cài đặt kiểm thử hiệu năng đọc của các phƣơng pháp lƣu trữ đƣợc chỉ ra ở hình 3.6, 3.7 và 3.8. 0 50000 100000 150000 200000 250000 300000 350000 1 100 400 2500 3600 4900 100001440016900225002890040000 T h ời gian gh i Số lượng tile writeMultiFile writeSingleFile writeDatabase

43

Hình 3.6: Cài đặt kiểm thử hiệu năng đọc theo phương pháp lưu trữ trong tập tin riêng biệt

44

Hình 3.8: Cài đặt đọc tiled từ cơ sở dữ liệu

3.3.2. Kết quả thực nghiệm

Từ việc chạy thực nghiệm ta thu đƣợc kết quả nhƣ trong bảng 4.3 về thời gian đọc các tiled của các phƣơng pháp lƣu trữ.

Bảng 3.3: Thời gian đọc tiled của các phương thức lưu trữ

Số lƣợng tiled readMultiFile (ms) readDatabase (ms) read SingleFile (ms) 1 28 312 30 100 519 514 519 1000 5294 3964 4122

45 2000 7023 7598 7115 5000 16441 21435 16012 10000 27261 44929 25260 15000 28710 67487 28123 20000 32481 93461 31915 25000 33088 124006 32546 30000 33774 167872 33745 40000 183455 217768 165765 60000 337710 355880 295435

Từ bảng dữ liệu này chúng ta có đồ thị về thời gian đọc các tiled nhƣ hình 3.9:

Hình 3.9: Thời gian đọc tiled của các phương pháp lưu trữ

0 50000 100000 150000 200000 250000 300000 350000 400000 Th ời gian đ ọc (ms) Số lƣợng tile readMultiFile readDatabase read SingleFile

46

Từ đồ thị chúng ta có thể thấy với số lƣơng tiled ít thì thời gian đọc của các phƣơng pháp tƣơng đƣơng nhau, không chênh lệch quá nhiều. Khi số lƣợng tiled tăng thì thời gian đọc tiled tăng rất nhanh. Chúng ta có thể thấy khi số lƣợng tiled cần đọc tăng lên khoảng 40,000 thì thời gian đọc của phƣơng thức lƣu trữ trong các tập tin riêng biệt tăng lên rất nhanh.

Từ đây chúng ta cũng có thể thấy phƣơng thức lƣu trữ trong một tập tin lớn vẫn là phƣơng thức đtôi lại hiệu quả nhất.

3.4. Kết luận

Trong chƣơng này tôi đã thực nghiệm kết quả với cả 3 phƣơng thức lƣu trữ. Phƣơng pháp thứ nhất là lƣu trữ trong các tập tin riêng biệt, phƣơng pháp thứ hai là lƣu trữ theo định dạng riêng với các ảnh tiled đƣợc lƣu trong một tập tin lớn, phƣơng pháp thứ ba là lƣu trữ trong cơ sở dữ liệu. Các kết quả thực nghiệm đều cho thấy phƣơng pháp lƣu trữ theo định dạng riêng tuy khó khăn hơn về cài đặt so với hai phƣơng pháp còn lại, tuy nhiên nó lại mang lại một hiệu suất cao hơn. Phƣơng thức lƣu trữ trong cơ sở dữ liệu mang lại một hiệu suất khá ổn định: khi mà số lƣợng tiled tăng lên thì thời gian đọc các tiled tăng lên tuyến tính.

47

KẾT LUẬN

Trong khóa luận này tôi đã trình bày về các giải pháp để lƣu trữ ảnh tiled phục vụ cho việc xây dựng bản đồ trực tuyến dạng tiled. Công việc đã thực hiện là một phần quan trọng trong mô hình bản đồ trực tuyến dạng tiled. Các dữ liệu ảnh tiled có thể đƣợc dùng để phục vụ cho một số ứng dụng bản đồ. Đồng thời tôi đã kết quả thực nghiệm về các phƣơng pháp lƣu trữ và lựa chọn phƣơng pháp lƣu trữ có hiệu năng tốt và có khả năng mở rộng.

Với bộ dữ liệu đầu vào là ảnh tile với kích thƣớc 512x512 pixel và dung lƣợng 60KB; sử dụng hệ quản trị lƣu trữ là Postgresql 9.1 và thử nghiệm trên hệ điều hành windows 7. Tôi đã thử nghiệm phƣơng đọc/ghi các tiled theo các phƣơng thức đã trình bày với số lƣợng tile từ 1 đến 60.000 tiled. Kết quả cho thấy phƣơng với bộ dữ liệu đầu vào nhƣ trên thì phƣơng pháp lƣu trữ theo định dạng riêng đều thể hiện hiệu suất vƣợt trội trong việc đọc và ghi. Hiệu suất của lƣu trữ theo các tập tin riêng biệt cũng thể hiện một hiệu suất xấp xỉ còn phƣơng thức lƣu trữ trong cơ sở dữ liệu thì thời gian đọc/ghi đều lâu hơn hai phƣơng thức kia.

Hệ thống lƣu trữ đƣợc trình bày trong khóa luận đƣợc xây dựng ở mức vi mô nhằm mô phỏng về các phƣơng thức lƣu trữ để tìm đƣợc phƣơng thức lƣu trữ tốt nhất. Tuy nhiên vẫn còn một số vấn đề ảnh hƣởng tới khả năng lƣu trữ của hệ thống ảnh hƣởng tới khả năng lƣu trữ của các phƣơng pháp chƣa đƣợc nghiên cứu.

Trong tƣơng lai, tôi sẽ cố gắng xây dựng hoàn thiện thử nghiệm trên các môi trƣờng hệ thống khác nhau để xây dựng đƣợc một hệ thống tối ƣu phục vụ cho lƣu trữ bản đồ trực tuyến dạng tiled.

48

TÀI LIỆU THAM KHẢO Tiếng Việt

[1] Nguyễn Hải Châu, “Xây dựng công cụ thu thập và lưu trữ ảnh vệ tinh dạng tile có độ phân giải cao từ Internet“ Tạp chí Khoa học ĐHQGHN, Khoa học Tự nhiên và Công nghệ 27 (2011) 71-78

[2] Nguyễn Đức Phƣơng,“Các giải pháp bản đồ trực tuyến và ứng dụng”, Khóa luận tốt nghiệp đại học hệ chính quy, Đại học Công Nghệ, Đại học quốc gia Hà Nội, 2008, tr.12-15, 19-20.

[3] Trần Văn Toàn, “Tổng quan về Mapserver”, diễn đàn http://www.climategis. com, 2011.

Tiếng Anh

[4] John T.Sample, Elias Ioup, “Tiled-Based Geospatial Information Systems – principles and practies“, Springes, 2010.

[5] R. Sears, C. van Ingen, J. Gray, “To BLOB or Not To BLOB: Large Object

Storage in a Database or a Filesystem?“, Microsoft Research, 2006.

[6] E. Ioup, J. Sample, F. McCreedy, “Tiled Image Archival and Distribution

for Seafloor and Terrestrial Imagery“, NRL Review, 2009.

[7] Joan Masó, K.P., Julia, “N.: OpenGIS Web Map Tile Service Implementation

Standard. Open Geospatial Consortium Specification“, 2010.

Web [8] http://www.climategis.com/2012/03/mot-so-ung-dung-webgis.html [9] http://help.arcgis.com/en/webapi/javascript/gmaps/index.html [10] http://en.wikipedia.org/wiki/Tile_engine [11]http://alastaira.wordpress.com/2011/02/19/using-esri-base-map-tile-layers-in- bing-maps/

Một phần của tài liệu NGHIÊN CỨU XÂY DỰNG THỬ NGHIỆM GIẢI PHÁP LƢU TRỮ BẢN ĐỒ TRỰC TUYẾN DẠNG TILED (Trang 41)

Tải bản đầy đủ (PDF)

(58 trang)