Dữ liệu không gian là dữ liệu mô tả các đối tƣợng trong không gian vào hệ thống máy tính, dữ liệu này bao gồm các dạng: điểm, đƣờng, vùng. Ví dụ nhƣ các
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
đối tƣợng trong không gian nhƣ: đƣờng phố, sông ngòi, các vùng miền, các điểm ATM, quán café… đƣợc lƣu trữ trên hệ thống máy tính với các lớp dữ liệu tƣơng ứng. Từ các lớp dữ liệu đó, ngƣời dùng có thể thực hiện các thao tác với dữ liệu nhƣ: hiển thị bản đồ, tìm đƣờng, tìm điểm tiện ích, tính diện tích vùng/miền…
Trong một hệ thống LBS dữ liệu không gian có thể coi là nền tảng cho các chức năng khác hoạt động, dữ liệu không gian là phần dữ liệu phức tạp, chiếm nhiều bộ nhớ nhất trong hệ thống LBS.
2.2.2. Dữ liệu vị trí và thông tin người dùng
LBS là hệ thống dựa trên vị trí của ngƣời dùng, vì vậy dữ liệu về vị trí và các thông tin của ngƣời dùng là dữ liệu đƣợc thao tác nhiều nhất, vị trí ngƣời dùng đƣợc các thiết bị GPS gửi lên máy chủ sử dụng mạng 3G/GPRS, các thông tin về vị trí ngƣời dùng gửi lên đƣợc lƣu trữ vào cơ sở dữ liệu để theo dõi và thực hiện các truy vấn khi cần. Ví dụ trong hệ thống quản lý xe taxi, thông tin của mỗi xe sẽ đƣợc gửi lên trung tâm giám sau một khoảng thời gian nhất định, ngƣời điều hành có thể theo dõi hoạt động của các xe nhƣ thế nào dựa vào vị trí và thông tin các xe gửi lên, từ đó có thể quản lý đƣợc tất cả các xe của hãng, dữ liệu vị trí và thông tin của mỗi xe sẽ đƣợc lƣu vào cơ sở dữ liệu để phục vụ các truy vấn khi cần thiết nhƣ: tạo báo cáo, xem vết (hành trình) của mỗi xe trong một khoảng thời gian xác định…
Với các vấn đề về lƣu trữ dữ liệu trong hệ thống LBS đặt ra nhƣ vậy, học viên lựa trọn giải pháp sử dụng hệ quản trị cơ sở dữ liệu PostgreSQL với phần mở rộng PostGIS để lƣu trữ dữ liệu không gian cũng nhƣ lƣu trữ dữ liệu vị trí và thông tin của ngƣời sử dụng.
2.3. Hệ quản trị cơ sở dữ liệu không gian
2.3.1. PostgreSQL
PostgreSQL là hệ quản trị cơ sở dữ liệu đƣợc viết theo hƣớng mã nguồn mở và rất mạnh mẽ. Hệ quản trị cơ sở dữ liệu này đã có hơn 15 năm phát triển, đồng thời kiến trúc đã đƣợc kiểm chứng và tạo đƣợc lòng tin với ngƣời sử dụng về độ tin cậy, tính toàn vẹn dữ liệu, và tính đúng đắn. PostgreSQL có thể chạy trên tất cả các
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
hệ điều hành, bao gồm cả Linux, UNIX (AIX, BSD, HP-UX, SGI IRIX, Mac OS X, Solaris, Tru64), và Windows. Do nó hoàn toàn tuân thủ ACID, có hỗ trợ đầy đủ các foreign keys, joins, views, triggers, và stored procedures (trên nhiều ngôn ngữ). Hệ quản trị này còn bao gồm các kiểu dữ liệu SQL: 2008 nhƣ INTEGER,
NUMBER, BOOLEAN, CHAR, VARCHAR, DATE INTERVAL,
và TIMESTAMPs. PostgreSQL cũng hỗ trợ lƣu trữ các đối tƣợng có kiểu dữ liệu nhị phân lớn, bao gồm cả hình ảnh, âm thanh, hoặc video. Hệ quản trị cơ sở dữ liệu này đƣợc sử dụng thông qua giao diện của các ngôn ngữ C / C + +, Java,. Net, Perl, Python, Ruby, Tcl, ODBC…
Là một hệ quản trị cơ sở dữ liệu mạnh, PostgreSQL có các tính năng phức tạp nhƣ kiểm soát truy cập đồng thời nhiều phiên bản (MVCC), khôi phục dữ liệu tại từng thời điểm (Recovery), quản lý dung lƣợng bảng (tablespaces), sao chép không đồng bộ, giao dịch lồng nhau (savepoints), sao lƣu trực tuyến hoặc nội bộ, truy vấn phức tạp và tối ƣu hóa, và viết trƣớc các khai báo để quản lý và gỡ lỗi. PostgreSQL hỗ trợ bộ ký tự quốc tế, hỗ trợ bảng mã nhiều byte, Unicode, và cho phép định dạng, sắp xếp và phân loại ký tự văn bản (chữ hoa, thƣờng). PostgreSQL còn đƣợc biết đến với khả năng mở rộng để nâng cao cả về số lƣợng dữ liệu quản lý và số lƣợng ngƣời dùng truy cập đồng thời. Đã từng có những hệ thống PostgreSQL hoạt động trong môi trƣờng thực tế thực hiện quản lý vƣợt quá 4 terabyte dữ liệu. Sau đây là một số thong tin giới hạn khả năng của PostgreSQL [19].
So sánh PostgreSQL với một số hệ cơ sở quản trị dữ liệu khác
Việc so sánh hệ quản trị PostgreSQL với một số hệ quản trị cơ sở dữ liệu khác giúp chúng ta có cái nhìn tổng quan về ƣu, nhƣợc điểm của hệ quản trị postgreSQL. Thông tin đƣợc đƣa ra so sánh nhƣ : hệ điều hành hỗ trợ, các tính năng cơ bản, hỗ trợ bảng và khung nhìn, chức năng đính chỉ mục, và các đối tƣợng khác.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
Windows Mac OS X Linux BSD UNIX z/OS[#fn_1|1]
My SQL Có Có Có Có Có Có thể
Oracle Có Có Có Không Có Có
PostgreSQL Có Có Có Có Có Có thể
Các tính năng cơ bản
ACID Rerential
Intergrity Transactions Unicode
MySQL Phụ thuộc[#fn_3|3] Phụ thuộc[#fn_3|3] Phụ thuộc[#fn_3|3] Có/UTF-8(3- byte)&UCS-2 Oracle Có Có Có Có PostgrSQL Có Có Có Có/UTF-8(4- byte) Hỗ trợ và khung nhìn Bảng tạm Khung nhìn cụ thể MySQL Có Tƣơng tự[#fn_6|6] Oracle Có Có PostgreSQL Có Tƣơng tự[#fn_7|7]
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn Chỉ mục Cây R-/Cây R+ Hàm băm Biểu thức (lập trình) Chỉ mục từng phần Chỉ mục đảo Bitmap GiST MySQL SQL 5.0MySAM,BD B, bảng InnoDB Chỉ có bảng HEAP
Không Không Không Không Không Oracle Chỉ có ở EE Bảng gộp Có Không Có Có Không Postgre SQL Có Có Có Có Có [[#fn_1 0|10]] Có Có Các đối tƣợng khác
Domain Cursor Trigger Hàm[[#fn_11|11]] Thủ
tục[[#fn_11|11]] External routine MySQL Không Có Có Có Có Có Oracle Có Có Có Có Có Có PostgreSQL Có Có Có Có Có Có
Tóm lại: Giữa 3 hệ quản trị cơ sở dữ liệu MySQL, Oracle và PostgreSQL thì thấy rằng, hệ quản trị cơ sở dữ liệu PostgreSQL rất mạnh, nó hoạt động đƣợc trên hầu hết các hệ điều hành, hỗ trợ rất nhiều tính năng cơ bản, và hỗ trợ rất nhiều kiểu đánh chỉ mục. Ngày nay, PostgreSQL là một trong những hệ quản trị cơ sở lớn nhất hiện có. Với những tính năng đƣợc chỉ ra dƣới đây, chúng ta có cái nhìn tổng quan về PostgreSQL :
Trong quan hệ đối tƣợng PostgreSQL, mọi bảng định nghĩa nhƣ một lớp. PostgreSQL thực thi kế thừa giữa các bảng, hàm và toán tử là đa hình.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
Cú pháp chuẩn của PostgreSQL tuân thủ theo chuẩn của SQL92 và nhiều tính năng của SQL99.
PostgreSQL cung cấp nhiều kiểu dữ liệu. Bên cạnh kiểu dữ liệu numeric, string thông thƣờng, nó còn cung cấp kiểu dữ liệu geometry, boolean và kiểu dữ liệu đƣợc thiết kết đặc biệt để dùng cho các địa chỉ mạng.
Khả năng mở rộng là một trong những tính năng của PostgreSQL đó là nó có thể đƣợc mở rộng. Nếu với những gì mà PostgreSQL cung cấp, có thể thêm vào PostgreSQL. kiểu dữ liệu mới, hàm và toán tử mới và các thủ tục mới…
Một số điểm của PostgreSQL mà ta có thể kể đến nhƣ:
- Hoạt động đƣợc trên nhiều hệ điều hành nhƣ: Linux, UNIX (AIX, BSD, HP- UX, SGI IRIX, Mac OS X, Solaris, Tru64), and Windows
- Lƣu trữ (dạng nhị phân) các đối tƣợng có dữ liệu lớn nhƣ hình ảnh, âm thanh, hoặc video.
- Hỗ trợ các ngôn ngữ nhƣ C/C++, Java, .Net, Perl, Python, Ruby, Tcl, ODBC - Có sự thống nhất giữa những ngƣời phát triển (tái dụng những kỹ năng và
các thƣ viện đã có)
- Có hầu hết các truy vấn SQL với các kiểu dữ liệu nhƣ INTEGER, NUMERIC, BOOLEAN, CHAR, VARCHAR, DATE, INTERVAL, và TIMESTAMP
- Tạo index giúp quá trình truy vấn đạt hiệu quả cao hơn
- Hỗ trợ các chức năng tìm kiếm tổng quát hóa có thể “gắn” các chỉ mục vào giúp quá trình tìm kiếm đƣợc thực hiện trên phạm vi rộng hơn nhƣ: compound, unique, partial, and functional indexes.
- Có thể tạo mới kiểu dữ liệu, các hàm, các thủ tục (procedure)…
PostgreSQL không quy định những hạn chế trong việc sử dụng mã nguồn của phần mềm nên có thể đƣợc dùng, sửa đổi và phổ biến bởi mọi ngƣời cho bất kỳ mục đích nào.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
Giới hạn Giá trị
Dung lƣợng tối đa của sơ sở dữ liệu Không giới hạn
Dung tối đa một bảng 32 TB
Dung lƣợng tối đa của cột 1,6 TB Dung lƣợng tối đa của trƣờng 1 GB
Hàng tối đa mỗi bảng Không giới hạn
Số cột tối đa của mỗi bảng 250 -1600 tùy thuộc vào loại cột Chỉ số tối đa của mỗi bảng Không giới hạn
2.3.2. PostGIS
PostGIS là 1 phần mở rộng của hệ quản trị CSDL PostgreSQL đƣợc cung cấp miễn phí cho phép CSDL quản lý các đối tƣợng GIS. Trên thực tế, PostGIS là một hợp phần quản lý thông tin không gian của PostgreSQL, nó cho phép quản trị CSDL không gian dùng trong hệ thống thông tin địa lý (GIS), giống nhƣ SDE của ESRI hoặc Oracle’s Spatial extension. PostGIS hỗ trợ cho OpenGIS vì "tính năng kỹ thuật SQL đơn giản" và đã đƣợc chứng nhận phù hợp với “Kiểu và Chức năng" của OpendGIS.
Đặc điểm của PostGIS :
Do PostGIS đƣợc sử dụng nhƣ một CSDL không gian, nên nó bao gồm tất cả các đặc điểm của CSDL không gian. Ngoài ra, nó còn có những đặc trƣng nhƣ :
Các kiểu dữ hình học nhƣ Point, Linestring, Polygon, Multipoint, multilinestring, Multipolygons và Geometrycollection. Các kiểu dữ liệu hình học này đƣợc lƣu trữ nhƣ những đối tƣợng hình học.
Các toán tử không gian cho phép xác định các phép đo không gian địa lý nhƣ tính diện tích, tính khoảng cách, tính độ dài, và tính chu vi.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
Nhóm hàm điều khiển
AddGeometryColumn(): thêm một cột hình học vào bảng đã tồn tại. DropGeometryColumn(): loại bỏmột cột hình học từ bảng không gian.
DropGeometryTable(): loại bỏ bảng và tất cảnhững gì tham chiếu trong cột hình học.
Nhóm hàm khởi tạo hình học
ST_GeometryFromText(): trả về giá trị đƣợc chỉ định ST_Geometry từ hiển thị WKT.
ST_AsText(): trả về hiển thị dạng WKT của hình. Nhóm hàm xác định mối quan hệ không gian
ST_Equals(): trả về True nếu đƣa ra những hình coi là “bằng nhau trong không gian”.
ST_Disjoint(): trả về True nếu các hình “không giao nhau trong không gian” nếu chúng không chia sẻ bất cứ khoảng không gian nào cho nhau, hay là tách biệt hẳn với nhau.
ST_Intersects(): trả về True nếu các hình gọi là “giao nhau trong không gian” và trả về False nếu chúng không có bất cứ điểm nào giao nhau.
ST_Touches(): trả về True nếu các hình có ít nhất 1 điểm chung, nhƣng bên trong của chúng lại không giao nhau.
ST_Overlaps(): trả về True nếu các hình có khoảng không gian chia sẻ, có cùng chiều, nhƣng chúng không hoàn toàn bịchứa bởi hình khác.
ST_Crosses(): trả về True nếu đối tƣợng hình học thu đƣợc có chiều nhỏhơn chiều lớn nhất của 2 đối tƣợng hình học ban đầu.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
ST_Contains(): trả về True khi và chỉ khi không có điểm nào của B nằm bên ngoài A, và ít nhất 1 điểm bên trong B nằm bên trong A.
ST_Distance(): trả về khoảng cách giữa 2 điểm, giữa điểm và đƣờng trong không gian 2D. Đơn vị mặc định là “meter”.
ST_Length(): trả về diện tích của hình nếu nó là POLYGON hoặc MULTIPOLYGON. Đơn vị mặc định là m2.
ST_Area(): trả về độ dài 2d của hình nếu chúng là LINESTRING hoặc MULTILINESTRING. Đơn vị mặc định của độ dài là “meter”.
ST_Perimeter(): trả về chu vi của hình nếu nó có dạng Polygon hoặc Multipolygon. Đơn vị mặc định là meter.
Nhóm hàm đƣa ra đối tƣợng hình mới
ST_Intersection(): trả về một hình, hiển thịphần chung giữa hình A và hình B. Nếu hình A và hình B không có bất kỳ điểm chung thì trảvề đối tƣợng hình rỗng.
ST_Difference(): chức năng của hàm ST_Difference là trả về một hình hiển thị phần của hình A mà không giao với hình B.
ST_Union(): trả về một hình hiển thị hợp của các hình.
ST_SymDifference(): trả về một hình hiển thị phần của hình A và hình B không giao nhau.
PostGIS cung cấp việc đánh chỉ mục không gian tốc độ cao sử dụng GisT hoặc R-tree. Công cụ đánh chỉ mục không gian mà PostGIS hỗ trợ làm tăng tốc cho truy vấn không gian đặc biệt là trên bảng dữ liệu lớn.
Chỉ mục hỗ trợ chọn lọc, cung cấp việc thực hiện truy vấn bản đồ pha trộn truy vấn không gian hoặc truy vấn không có không gian
PostGIS là một dự án mã nguồn mở về CSDL không gian đang đƣợc nghiên cứu và phát triển bởi Refractions Research. PostGIS đƣợc phát hành theo GNU
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
General Public License (phát hành miễn phí bản quyền sử dụng và phát triển). Refractions Research tiếp tục phát triển PostGIS, bổ sung các công cụ giao diện với ngƣời dùng, hỗ trợ các topology cơ bản, chuẩn hóa dữ liệu, chuyển đổi tọa độ, lập trình API và nhiều hơn nữa. Trong tƣơng lai của dự án sẽ phát triển hỗ trợ topo đầy đủ, hỗ trợ raster, tính toán mạng lƣới và định tuyến, xây dựng bề mặt ba chiều, các đƣờng cong (curves), uốn khúc (splines) và các tính năng khác [18].
Hình 2.12: Vị trí của PostGIS trong PostgreSQL
Ưu điểm của PostGIS:
- PostGIS - một CSDL không gian có những ƣu điểm để xử lý các thông tin về hình dạng không gian nhƣ trả lời các truy vấn về những đối tƣợng ở gần một vị trí nào đó, những đối tƣợng nằm trong phạm vi hoặc ở vùng phụ cận của một đối tƣợng khác, phạm vi của một vùng nơi mà có một hoạt động nào đó đang xảy ra là gì, những đối tƣợng nào nằm bên trong một đối tƣợng khác.
- PostGIS có khả năng lƣu trữ và thao tác với dữ liệu rất tốt. Nó cung cấp những khả năng xử lý thông tin địa lý bên trong một môi trƣờng cơ sở dữ liệu. Những hàm SQL bao gồm buffer, intersection, within, distance…Những hàm này lấy dữ liệu hình học từ các cột trong bảng PostGIS và trả về những hình học mới hoặc những thông tin khác. Ví dụ nhƣ hàm distance sẽ tính toán khoảng cách giữa các đặc điểm (feature) không gian, và hàm sẽ trả về một hình mới là một đa giác đƣợc làm vùng đệm tại một khoảng cách nào đó từ feature nguồn.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
- PostGIS cho phép dễ dàng khi kết nối dữ liệu không gian với dữ liệu phi không gian trong một môi trƣờng dữ liệu không gian và cung cấp đầy đủ sức mạnh của ngôn ngữ truy vấn cấu trúc (SQL) để thực hiện những phân tích khác chẳng hạn nhƣ tính chi phí trung bình cho một vùng địa lý?, ...
- PostGIS còn hỗ trợ thêm GiST-based and R-Tree spatial indexes, đây là điểm riêng biệt nhất của PostGIS so với các hệ quản trị CSDL khác giúp PostGIS dễ dàng quản lý, lƣu trữ, khai thác và tìm kiếm thông tin không gian.
2.3.3. Vấn đề bảo mật dữ liệu
Phần mềm nguồn mở là phần mềm có thể kiểm tra đƣợc mã nguồn để tìm và sửa chữa các vấn đề về bảo mật, ngƣời dùng có khả năng thay đổi, sửa mã nguồn để thêm các tính năng bảo mật mà họ muốn, tuy nhiên khả năng thay đổi, chỉnh sửa mã nguồn cũng có thể là mục tiêu để tấn công, bất kỳ lỗ hổng nào chƣa đƣợc vá trong hệ thống cũng có thể là mục tiêu tấn công của các hacker.
Hiện nay, phần mềm mã nguồn mở đƣợc sử dụng khá phổ biến, các vấn đề về bảo mật đƣợc cộng đồng ngƣời sử dụng đông đảo theo dõi và vá lỗi, vì vậy, phần