Đề tài Xây dựng hệ thống phần mềm thao tác, hiển thị thông tin địa lý trên môi trường mạng Internet

Tài liệu Đề tài Xây dựng hệ thống phần mềm thao tác, hiển thị thông tin địa lý trên môi trường mạng Internet: Mục lục MỞ ĐẦU Trong quá trình phát triển xã hội, con người đã phải vượt qua biết bao những khó khăn, thử thách. Một trong những khó khăn nhất đó là sự rộng lớn bao la của không gian, vũ trụ mà con người thì quá nhỏ bé. Nhưng những thách thức đó cũng không ngăn nổi ý chí tìm tòi, khám phá, những ước muốn vươn tới những chân trời xa xôi đầy bí Èn. Họ đã tìm ra những cách khác nhau để vượt qua những rào cản về khoảng cách địa lý. Đó là những chiếc la bàn để định hướng đi trên mặt đất cũng như trên đại dương mênh mông, những bản vẽ mô tả những địa thế đáng ghi nhớ, những nơi đã đi qua. Mặc dù rất đơn giản nhưng đó cũng là những công cụ hỗ trợ cho con người hình dung một cách trực quan về thế giới bên ngoài. Dần dần, khi kỹ thuật ngày một nâng cao, con người đã xây dựng nên cả một nghệ thuật mới, đó là nghệ thuật tạo lập bản đồ. Những bản đồ giấy có chất lượng cao đã đem lại những đóng góp rất thiết thực vào nhiều lĩnh vực khác nhau từ quân sự, hàng hải, kinh tế cho đến các lĩnh vực khí...

doc113 trang | Chia sẻ: hunglv | Lượt xem: 1124 | Lượt tải: 0download
Bạn đang xem trước 20 trang mẫu tài liệu Đề tài Xây dựng hệ thống phần mềm thao tác, hiển thị thông tin địa lý trên môi trường mạng Internet, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Mục lục MỞ ĐẦU Trong quá trình phát triển xã hội, con người đã phải vượt qua biết bao những khó khăn, thử thách. Một trong những khó khăn nhất đó là sự rộng lớn bao la của không gian, vũ trụ mà con người thì quá nhỏ bé. Nhưng những thách thức đó cũng không ngăn nổi ý chí tìm tòi, khám phá, những ước muốn vươn tới những chân trời xa xôi đầy bí Èn. Họ đã tìm ra những cách khác nhau để vượt qua những rào cản về khoảng cách địa lý. Đó là những chiếc la bàn để định hướng đi trên mặt đất cũng như trên đại dương mênh mông, những bản vẽ mô tả những địa thế đáng ghi nhớ, những nơi đã đi qua. Mặc dù rất đơn giản nhưng đó cũng là những công cụ hỗ trợ cho con người hình dung một cách trực quan về thế giới bên ngoài. Dần dần, khi kỹ thuật ngày một nâng cao, con người đã xây dựng nên cả một nghệ thuật mới, đó là nghệ thuật tạo lập bản đồ. Những bản đồ giấy có chất lượng cao đã đem lại những đóng góp rất thiết thực vào nhiều lĩnh vực khác nhau từ quân sự, hàng hải, kinh tế cho đến các lĩnh vực khí tượng, thủy văn, khai thác tài nguyên thiên nhiên, đất đai,… Đặc biệt, khi có sự phát triển của công nghệ hiện đại mà điển hình là sự xuất hiện của máy tính, người ta đã nghĩ đến việc số hoá bản đồ đưa vào trong máy tính. Các bản đồ số với độ chính xác cao kèm theo nó là rất nhiều các thông tin trợ giúp khác. Tất cả đã tạo nên một hướng nghiên cứu mới được gọi là GIS. GIS là một khái niệm về một hệ thống không chỉ cung cấp những thông tin địa lý mà còn là một phương tiện tìm kiếm, phân tích, trợ giúp quyết định rất hữu hiệu cho con người. Với sù ra đời của mạng Internet cho phép nối kết hàng triệu người trên hành tinh này chỉ trên một chiếc máy tính. Vậy thì tại sao chóng ta lại không đưa GIS vào Internet. Điều này sẽ là một thành công rất lớn góp phần đưa GIS đến tận tay người sử dụng. Đề tài “Xây dựng hệ thống GIS trên Internet” là một đề tài thực sự lớn và không đơn giản. Vì vậy trong giới hạn của đồ án tốt nghiệp, tôi chỉ lùa chọn một phần rất nhỏ nhưng đây cũng là một tiền đề quan trọng trong quá trình phát triển về sau. Đó là phần “Xây dựng hệ thống phần mềm thao tác, hiển thị thông tin địa lý trên môi trường mạng Internet” . Do khả năng kiến thức, trình độ còn hạn chế, việc thực hiện đồ án chắc chắn không tránh khỏi các sai sót. Tôi rất mong nhận được sự chỉ bảo, góp ý của thầy cô, bạn bè và của tất cả mọi người có quan tâm đến vấn đề này. Đó sẽ là sự động viên, giúp đỡ rất quý báu không chỉ trong việc hoàn thiện đề tài mà trong cả các công việc khác trong tương lai. PHầN I - Giới thiệu nội dung đề tài Néi dung : I. Giíi thiÖu néi dung ®Ò tµi II. Ph¹m vi vµ môc ®Ých cña ®Ò tµi III. Tæng quan vÒ hÖ thèng Internet - GIS I. Giới thiệu đề tài Phát triển từ những năm 1960 nhưng đến nay GIS đã khẳng định được vai trò quan trọng của mình trong nhiều lĩnh vực khác nhau, cùng với những ứng dụng thực tiễn có chất lượng cao và hiệu quả. Hiện nay, ở nhiều nước trên thế giới người ta đã chú trọng đến việc xây dựng những hệ thống GIS có quy mô lớn. Đã có nhiều công ty cùng với các sản phẩm nổi tiếng về GIS như công ty MapInfo (với sản phẩm MapInfo), công ty ESRI (với sản phẩm ArcInfo/ ArcView), công ty Berteley (với sản phầm MicroStation), hãng Intergraph (với nhiều sản phẩm kể cả Web)… Đây là các sản phẩm phần mềm mạnh được tích hợp nhiều chức năng khác nhau từ số hoá, lưu trữ bản đồ cho tới việc hiển thị, vẽ, … và các chức năng khác của GIS. Ở ViệtNam GIS vẫn còn khá mới mẻ nhưng cũng đã bắt đầu thu hót được sự quan tâm, chú ý của nhiều người, tổ chức khác nhau. Từ khi mạng Internet ra đời đã đánh dấu một bước phát triển vượt bậc của công nghệ thông tin. Các thông tin được chia sẻ trên mạng giê đây có thể đến được tới tất cả mọi người, không còn phân biệt về khoảng cách địa lý trên trái đất. Internet đã trở thành một trường học lớn và cũng là một thị trường rộng lớn. Việc đưa GIS lên Internet có thể đem lại một lợi Ých lớn cho người sử dụng và hứa hẹn nhiều tiềm năng. Đây cũng là xu hướng phát triển mang tính cạnh tranh của các nhà phát triển GIS. Nhiều công ty cung cấp các sản phẩm IMS (Internet Map Server) chuyên dụng và mang tính thương mại cao. Các sản phẩm này được thực hiện bởi những công ty có uy tín và có nhiều thâm niên trong lĩnh vực này nên chất lượng sản phẩm rất cao. Tuy nhiên, đa số các sản phẩm về WEB GIS đều có giá thành khá đắt, nhất là trong điều kiện nước ta hiện này thì để mua được một sản phẩm như vậy cũng là một khó khăn không nhỏ. Hơn nữa, với từng lĩnh vực chuyên môn lại có những bài toán GIS riêng và việc đáp ứng được tất cả các bài toán này cũng không phải dễ dàng. Vì vậy, cũng cho thấy một nhu cầu sử dụng GIS trên mạng Internet là rất lớn và việc xây dựng một hệ thống Internet-GIS cho phù hợp với hoàn cảnh nước ta hiện nay cũng rất cần thiết. Trong phạm vi của một đồ án tốt nghiệp chỉ thực hiện một phần của đề tài này đó là “Xây dựng hệ thống thao tác, hiển thị thông tin địa lý trên môi trường mạng Internet”. Tuy nhiên việc thực hiện đề tài trong giai đoạn đầu tiên chỉ có thể mang tính thử nghiệm và tìm kiếm giải pháp tối ưu. Việc hoàn thành toàn bộ đề tài cần mất nhiều thời gian và công sức cùng với sự tham gia xây dựng của nhiều người, đồng thời cũng phải có một sự hiểu biết sâu sắc về GIS và các lĩnh vực khác có liên quan như mạng máy tính, CSDL, … Trong khuôn khổ thời gian làm đồ án tốt nghiệp, đề tài chỉ thực hiện 2 phần chính là: Thực hiện giao tiếp với hệ quản trị CSDL Oracle qua OCI để query dữ liệu đồ hoạ đã được lưu trong CSDL Oracle. Thực hiện các chức năng cơ bản về bản đồ như hiển thị, xem và soản thảo các thông tin thuộc tính về bản đồ. Các chức năng khác như tạo mới, vẽ,… sẽ được xem như các chức năng mở rộng và định hướng phát triển về sau. Nội dung đồ án sẽ gồm các phần sau : Phần I : Giới thiệu nội dung đề tài Phần này giới thiệu một cách khái quát về toàn bộ nội dung thực hiện. Cung cấp cho người đọc một khái niệm ban đầu về toàn hệ thống cùng với mục đích và phạm vi thực hiện trong đồ án. Phần II : Cơ sở lý thuyết Trình bày về các lý thuyết chung làm cơ sở cho việc thực hiện đồ án. Trong đó người đọc có thể hiểu về các lĩnh vực và công nghệ có liên quan đến đồ án. Phần III : Phân tích và thiết kế hệ thống Phần này sẽ đi sâu vào việc phân tích hệ thống, xác định các giải pháp thực hiện sau đó sẽ là phần thiết kế tổng thể và thiết kế chi tiết. Phần IV : Cài đặt và thử nghiệm Xác định phương pháp cài đặt, các chỉ tiêu về phần cứng, phần mềm cho hệ thống. Sau đó là phần thử nghiệm hệ thống, chạy thử trên môi trường mạng. Phần V : Kết luận Thực hiện đánh giá về hệ thống, các kết quả đã thu được và những hạn chế cần phải khắc phục. Đồng thời cũng là phần tổng kết về quá trình thực hiện đồ án. II. Phạm vi và mục đích của đề tài Việc đưa GIS lên mạng Internet có nhiều khó khăn và phức tạp. Trước hết đó là thời gian truyền dữ liệu trên mạng có thể rất chậm khi lượng dữ liệu lớn. Điều này ảnh hưởng lớn tới tâm lý của người sử dụng. Thông thường một hệ thống thông tin địa lý thường phải xử lý một lượng lớn dữ liệu. Đó có thể là dữ liệu không gian hay dữ liệu thuộc tính vì vậy việc đảm bảo tốc độ xử lý nhanh là một vấn đề khó. Nếu dữ liệu truyền trên mạng là dữ liệu vector thì có ưu điểm là hệ thống hiển thị sẽ làm thao tác trực tiếp trên loại dữ liệu này một cách nhanh nhất và đây cũng là loại dữ liệu chứa đựng một lượng thông tin lớn. Nhưng nhược điểm của loại dữ liệu này đó là khối lượng dữ liệu có thể quá lớn. Lúc này việc truyền toàn bộ dữ liệu trên mạng sẽ trở thành một giải pháp không thực tế. Thêm vào đó kích thước của chương trình máy khách cũng tăng lên do phải viết thêm các modul thao tác với loại dữ liệu này. Thứ hai, hệ thống phải đảm bảo thực hiện với nhiều Client cùng một lúc. Điều này có thể dẫn đến tình trạng quá tải, tranh chấp tài nguyên,… Vì vậy, trước mắt để giải quyết các khó khăn này, dữ liệu truyền trên mạng sẽ là dữ liệu ảnh Raster. Nói chung đây là loại dữ liệu không có cấu trúc và nghèo thông tin nhưng có ưu điểm là kích thước có thể chấp nhận được và khá ổn định. Đồng thời tốc độ xử lý của server phải đủ nhanh và có khả năng đồng bộ hoá các tiến trình song song cho phép nhiều tiến trình thực hiện một cách tương tranh với nhau. Do có nhiều khó khăn như vậy nên phạm vi của đề tài chỉ thực hiện ở những phần sau : Xây dựng các modul chương trình thực hiện giao tiếp với CSDL Oracle. Dữ liệu GIS được chứa trong CSDL Oracle thông qua sản phẩm Oracle Spatial. Xây dùng một hệ thống hoạt động tin cậy và ổn định cho phép thực hiện các thao tác cơ bản về bản đồ như hiển thị bản đồ, các thao tác xem bản đồ như phóng to (zoom in), thu nhá (zoom out), dịch chuyển (pan), … và các chức năng hiển thị và cập nhật các dữ liệu thuộc tính của bản đồ. Xây dùng một giao diện Web mà có thể chạy đuợc trên các trình duyệt (Browser) thông dụng. Giao diện này có thể tuỳ biến được nhằm hỗ trợ cho những người thiết kế trang Web biến đổi cho phù hợp với các mục đích khác nhau như các chỉ tiêu về mỹ thuật, sở thích, … Xây dùng một cơ chế giao tiếp giữa Client và Server một cách hiệu quả dùa trên hạ tầng mạng sẵn có là Internet. Như vậy các mục đích chính của đề tài là : Cho phép người sử dụng có thể khai thác các thông tin địa lý trên môi trường Internet thông qua các trình duyệt Web thông mà không cần cài bất kỳ một phần mềm GIS chuyên dụng nào. Đáp ứng nhu cầu sử dụng GIS của nhiều người sử dụng và có thể chia sẻ dữ liệu GIS trên mạng. Có thể mở rộng cho phù hợp với điều kiện trong nước và đáp ứng được với từng bài toán chuyên môn cụ thể. III. Tổng quan về hệ thống Internet - GIS Internet - GIS là một hệ thống tập trung GIS tại một nhà cung cấp dịch vụ GIS, hướng tới các khác hàng là người sử dụng trên mạng Internet. Khách hàng có thể là những người am hiểu hoặc không am hiểu về GIS nhưng họ cần các thông tin địa lý để phục vụ cho các mục đích riêng. Để sử dụng được dịch vụ GIS trên Internet, người sử dụng chỉ cần một chiếc máy tính nối với Internet và một trình duyệt Web kết nối tới trang Web của nhà cung cấp. Ngoài ra, trên máy của người sử dụng cũng không cần bất cứ một chương trình GIS chuyên dụng nào, cùng với các yêu cầu về phần cứng cũng không cần phải quá mạnh. Tất cả các yêu cầu này sẽ được tập trung tại một máy chủ của nhà cung cấp. Khi truy nhập vào trang Web có chứa dịch vụ GIS, một chương trình tích hợp dưới dạng Client sẽ được nạp về và chạy trên máy của người sử dụng. Chương trình này sẽ tự động kết nối với một Gis-Server của nhà cung cấp. Chương trình có thể yêu cầu người sử dụng vào các thông tin kiểm tra quyền sử dụng của họ. Nếu tất cả đều hợp lệ, hệ thống sẽ sẵn sàng thực hiện các chức năng GIS mà người sử dụng yêu cầu. Hệ thống Internet-GIS thực hiện trong đồ án tốt nghiệp này gồm những phần sau : Một hoặc nhiều Oracle-Server sẽ quản lý các dữ liệu địa lý. Hệ quản trị CSDL Oracle cho phép tích hợp một số lượng rất lớn dữ liệu phục vụ những nhu cầu rất đa dạng của người sử dụng. IGIS-Server là một chương trình ứng dụng được viết bằng ngôn ngữ Visual C++ sẽ kết nối với các Oracle-Server và thực hiện các chức năng GIS. Chương trình này có khả năng kiểm tra quyền sử dụng, phân quyền truy nhập dịch vụ của các khách hàng vào CSDL địa lý. IGIS-Client là một chương trình Java Applet được tích hợp vào trong trang Web. Chương trình này sẽ được tải về máy của người sử dông , chạy và tự động giao tiếp với IGIS-Server để thực hiện các chức năng của hệ thống. Phần II - Cơ sở lý thuyết Néi dung : Ch­¬ng I – HÖ thèng th«ng tin ®Þa lý (GIS) Ch­¬ng II – HÖ qu¶n trÞ CSDL Oracle Ch­¬ng III – TruyÒn th«ng m¹ng m¸y tÝnh Ch­¬ng IV – KiÕn tróc Client/Server Ch­¬ng V – LËp tr×nh Socket vµ Multithreading Ch­¬ng VI – Ng«n ng÷ lËp tr×nh vµ c¸c c«ng nghÖ trªn Web Chương I – hệ thống thông tin địa lý (GIS) I. Khái niệm về GIS (Geographic Information Systems) GIS được xem như là một hệ thống cho phép khai thác, biểu diễn dữ liệu địa lý chuyển đổi thành các thông tin trợ giúp con người trong quá trình tạo lập quyết định. Trong suốt quá trình phát triển cũng đã có rất nhiều định nghĩa về GIS. Sau đây sẽ là một định nghĩa khá chính xác và đầy đủ : “GIS là mét hệ thống bao gồm các thiết bị phần cứng, phần mềm ứng dụng, dữ liệu và đội ngò nhân sự chuyên nghiệp, được thiết kế để thực hiện các thao tác thu thập, lưu trữ, cập nhật, biến đổi, phân tích và hiển thị các dữ liệu quy chiếu không gian từ thế giới thực một cách hiệu quả, phục vụ cho một mục đích xác định”. II. Các thành phần cơ bản của GIS Như vậy một hệ thống GIS được tạo nên từ nhiều thành phần khác nhau và việc xây dựng một hệ thống GIS sẽ đem lại rất nhiều lợi Ých thiết thực. Đây là một công cụ phân tích hữu hiệu, trợ giúp người sử dụng trong quá trình lên kế hoạch và tạo lập quyết định. Sau đây chúng ta sẽ xem xét cụ thể với từng thành phần của hệ thống GIS. II.1 Các thiết bị phần cứng Phần cứng của hệ thống GIS có thể bao gồm rất nhiều thiết bị khác nhau như các thiết bị nhập dữ liệu (Bàn số hoá, máy quét, …), máy vẽ, thiết bị hiển thị (màn hình máy tính,…), các thiết bị lưu trữ và bộ xử lý trung tâm. II.2 Phần mềm ứng dụng Phần mềm GIS được sử dụng với nhiều chức năng khác nhau và có thể phục vụ cho nhiều yêu cầu khác nhau như : Hiển thị dữ liệu (bản đồ, đồ thị, biểu đồ, các bảng,…). Quản lý cơ sở dữ liệu địa lý. Tương tác với người sử dụng. Phân tích dữ liệu. … II.3 Dữ liệu GIS Dữ liệu của hệ thống GIS là một trong những thành phần nền tảng của hệ thống và bao gồm hai thành phần dữ liệu chính là dữ liệu không gian và dữ liệu thuộc tính. Việc xây dựng và tổ chức quản lý dữ liệu được xem là một trong những bước cơ sở và tốn kém rất nhiều công sức. II.4 Đội ngò nhân sự Đội ngò nhân sự chính là nguồn gốc sức mạnh của một hệ thống GIS. Đây là đội ngò có trình độ chuyên môn cao đặc biệt là về lĩnh vực GIS. Cũng cần có một kế hoạch thường xuyên đào tạo nâng cao trình độ và sự hiểu biết về GIS. III. Các kiểu dữ liệu và các mô hình dữ liệu GIS III.1 Các kiểu dữ liệu cơ bản của GIS Dữ liệu GIS bao gồm 3 loại dữ liệu cơ bản là dữ liệu không gian (Spatial Data), dữ liệu thuộc tính hay dữ liệu dạng bảng (Tabular Data) và dữ liệu ảnh (Image Data). Sau đây sẽ đề cập chi tiết về 3 loại dữ liệu này. III.1.1 Dữ liệu không gian Dữ liệu không gian có thể xem như là một loại dữ liệu mô tả về các đối tượng trong thế giới thực xét trên quan điểm hình học hoặc vị trí địa lý. Một ví dụ đơn giản của loại dữ liệu này là bản đồ. Trong đó có những đối tượng hai chiều như điểm (point), đường (lines), đa giác (polygon),… mô tả các thực thể như thành phố, đường xá hay các đường ranh giới giữa các vùng hay quốc gia, lãnh thổ,... Xét trong không gian địa lý các thực thể này có một ví trí địa lý nhất định và sau khi đã được chiếu lên mặt phẳng trở thành các đối tượng hai chiều. Như vậy, dữ liệu không gian là loại dữ liệu về vị trí của các đối tượng không gian được đặt trong hệ thống toạ độ nhất định như toạ độ trái đất (kinh tuyến,vĩ tuyến hoặc chiều cao,chiều sâu) hay các hệ toạ độ khác. Dữ liệu không gian là một trong những thành phần quan trọng nhất của GIS, có thể ví như ‘trái tim’ của hệ GIS. Việc lưu trữ, tạo lập loại dữ liệu này cũng đòi hỏi nhiều chi phí và tốn kém. III.1.2 Dữ liệu thuộc tính Dữ liệu thuộc tính dùng để mô tả tính chất hay đặc điểm của các đối tượng không gian tương ứng.Ví dụ như một đường phố trong bản đồ có thể có các thuộc tính như: Tên đường Độ dài Độ rộng lớn nhất Độ rộng nhỏ nhất Độ rộng trung bình Nót bắt đầu Nót kết thúc … Dữ liệu này có thể biểu diễn dưới dạng bảng và được liến kết chặt chẽ với dữ liệu không gian. III.1.3 Dữ liệu ảnh Dữ liệu ảnh thường được sử dụng làm ảnh nền trong quá trình xây dựng bản đồ. Các ảnh này có thể là ảnh chụp từ vệ tinh, máy bay hay ảnh từ máy quét. III.2 Mô hình dữ liệu GIS Có hai mô hình dữ liệu chính được sử dụng trong GIS là mô hình dữ liệu raster và mô hình dữ liệu vector. III.2.1 Mô hình dữ liệu raster Mô hình dữ liệu raster biểu diễn các đặc trưng của vùng nghiên cứu dưới dạng lưới tế bào trong một không gian liên tục. Mỗi giá trị trong vùng nghiên cứu tương ứng với một tế bào. Mỗi líp (layer) biểu diễn một thuộc tính mặc dù các thuộc tính khác nhau có thể gắn với một tế bào. Đa số các phép phân tích thường kết hợp các líp lại và tạo ra một líp mới với các giá trị tế bào mới. Ưu điểm chính của mô hình này là đơn giản. Dữ liệu đầu vào có thể lấy ngay từ các ảnh vệ tinh hay các ảnh hàng không. Mô hình dữ liệu raster cho phép thực hiện các phép phân tích dữ liệu một cách dễ dàng hơn và đặc biệt thuận lợi cho các hệ GIS nhằm chủ yếu vào việc phân tích các biến đổi liên tục trên bề mặt trái đất để quản lý tài nguyên thiên nhiên và môi trường. Nhưng nhược điểm của mô hình này là phụ thuộc rất nhiều vào kích thước của các tế bào. Khi kích thước của các tế bào là lớn thì sẽ ảnh hưởng đến kết quả phân tích và độ chính xác của bản đồ. Nếu kích thước này quá nhỏ thì đòi hỏi một không gian lưu trữ lớn. Mặt khác với mô hình này, việc thiết lập các mạng lưới của các đặc trưng của bản đồ như đường xá, hệ thống thuỷ lợi, … sẽ gặp rất nhiều khó khăn. VÝ dô: m« h×nh d÷ liÖu raster Qua nghiên cứu thì mô hình dữ liệu raster định hướng chủ yếu vào phân tích (analysis), không định hướng cho cơ sở dữ liệu. III.2.2 Mô hình dữ liệu Vector Mô hình dữ liệu Vector dùa trên cơ sở các vector hay toạ độ của một điểm trong một hệ toạ độ nhất định. Điểm là một đơn vị cơ bản của dữ liệu Vector. Các điểm được nối với nhau bởi các đoạn thẳng hay các đường cong để tạo nên các đối tượng khác nhau như đối tượng đường(lines) hay vùng (area). Các đường thẳng biểu diễn các thực thể như đường phố, hệ thống thuỷ lợi,… được tạo thành bởi dẫy các cặp toạ độ. Các vùng biểu diễn các biên giới của các quốc gia, lãnh thổ hay giữa các quận huyện,… được xây dựng bởi các đa giác khép kín. Như vậy mô hình dữ liệu Vector sử dụng các thành phần điểm hay đoạn thẳng để nhận biết vị trí của thế giới thực. Cũng chính vì cách biểu diễn dữ liệu như vậy, nên mô hình dữ liệu Vector cho phép thực hiện được nhiều thao tác hơn so với mô hình dữ liệu raster. Trong đó có thể thực hiện việc đo diện tích, tính chu vi, đo khoảng cách thông qua các phép tính hình học trên toạ độ của các đối tượng một cách chính xác thay vì việc đếm các tế bào của mô hình raster. Có thể thực hiện các thao tác lùa chọn, thay đổi hay cập nhật lại một đối tượng địa lý bất kỳ một cách dễ dàng hơn. Thêm vào đó việc thực hiện một số thao tác khác như tìm đường đi ngắn nhất trong mạng lưới giao thông, hệ thống thuỷ lợi,… sẽ nhanh hơn rất nhiều. Tuy nhiên các thao tác khác như quá trình nạp chồng các líp sẽ có phần chậm hơn. Một đặc trưng quan trọng của mô hình dữ liệu Vector là định hướng tới hệ thống quản trị cơ sở dữ liệu. Dữ liệu Vector là loại dữ liệu có cấu trúc và có thể được lưu trữ rất tốt vào trong cơ sở dữ liệu (CSDL) dưới dạng bảng. Nhờ đó các ứng dụng có thể truy xuất dễ dàng và thực hiện các thao tác tìm kiếm , cập nhật, thêm bớt một cách hiệu quả nhờ vào các công cụ của hệ quản trị CSDL. Ngoài ra có thể thực hiện liên kết trực tiếp các thành phần dữ liệu đồ hoạ với các thuộc tính của chúng. Trong CSDL không gian, các thực thể của thế giới thực được biểu diễn dưới dạng số bằng một kiểu đối tượng không gian tương ứng. Dùa trên kích thước không gian của đối tượng mà US National Standard for Digital Cartographic Databases (DCDSTF, 1998) đã chuẩn hoá các loại đối tượng như sau : 0-D : Đối tượng có vị trí nhưng không có độ dài (Đối tượng điểm) 1-D : Đối tượng có độ dài (đường), được tạo từ hai hay nhiều đối tượng 0-D 2-D : Đối tượng có độ dài và độ rộng (vùng) , được bao quanh bởi Ýt nhất 3 đối tượng đoạn thẳng 3-D : Đối tượng có độ dài, độ rộng, chiều cao hay độ sâu (hình khối) được tạo nên từ Ýt nhất hai đối tượng 2-D Các đối tượng trong CSDL không gian là biểu diễn của các thực thể trong thế giới thực cùng với các thuộc tính của chúng. Một trong những sức mạnh của một hệ thống GIS là ở chỗ chúng trợ giúp việc tìm kiếm các thực thể trong một ngữ cảnh địa lý và khảo sát các quan hệ giữa chúng. Việc xây dựng các thực thể từ các đối tượng điểm hay đường thì phải thiết lập một cấu trúc topology tương ứng. Đó là quá trình xây dựng mối quan hệ giữa các điểm, các đoạn thẳng và các vùng đối tượng tạo ra các thực thể. Thực chất là xây dựng mối quan hệ không gian giữa các mối liên kết của các đối tượng trong một líp. Topology trợ giúp một cách thuận tiện cho các thao tác phân tích và tìm đường trong mạng lưới của các dữ liệu trong CSDL. IV. Các hệ toạ độ và hệ quy chiếu trong GIS IV.1 Hệ toạ độ Hệ toạ độ được được sử dụng để định vị và đo các đối tượng địa lý. Được chia làm hai loại : hệ toạ độ phẳng và hệ toạ độ cầu. IV.1.1 Hệ toạ độ phẳng – Cartesian : Đây là hệ toạ độ được xây dựng trên một mặt phẳng bao gồm : Gốc toạ độ Hai trục qua gốc x, y Toạ độ là cặp (x,y) Đơn vị đo cơ sở là mét (m) và các giá trị x,y thường là các số dương. Đo khoảng cách : Khoảng cách Euclid : Là khoảng cách được xác định theo đường thẳng từ điểm (x1,y1) tới điểm (x2,y2) : D2 = (x2-x1)2 + (y2-y1)2 Manhattan Metric : Là khoảng cách được đo theo các đoạn song song theo trục x và y Khoảng cách có barrier : Lóc này khoảng cách được xác định theo một cách riêng phụ thuộc vào các đối tượng ngăn cách. Ví dô : IV.1.2 Hệ toạ độ cầu (trái đất) Đây là hệ thống toạ độ cầu của trái đất, gốc toạ độ là tâm của quả đất. Kinh tuyến (Meridian) : là một đường cong giao giữa mặt phẳng đi qua hai trục bắc, nam với trái đất. Vĩ tuyến (Parallel of latitude): là một đường cong giao giữa mặt phẳng song song với mặt phẳng xích đạo với trái đất. Toạ độ được xác định bởi kinh độ và vĩ độ, đơn vị đo cơ sở là độ. Có hai phương pháp đo là : DMS (Degree-Minute-Second) hay độ-phút-giây hoặc DD(Decimal Degree) hay độ thập phân. Ví dô : 10030’00’’ tương đương với 10,50 Kinh độ (longitude) : Bắt đầu từ kinh tuyến gốc Greenwich , tăng dần từ 00 đến 1800 về phía đông (từ Anh qua châu Âu, châu Phi và châu á), giảm dần từ 00 đến –1800 về phía tây (từ Anh qua Mỹ). Vĩ độ (latitude) : Bắt đầu từ đường xích đạo, tăng dần từ 00 đến 900 lên bán cầu Bắc và giảm dần từ 00 đến –900 xuống bán cầu Nam. Đo khoảng cách : Khoảng cách giữa hai điểm theo hệ toạ độ kinh độ(l), vĩ độ (j) được tính như sau : D= R arccos(sin(j1)*sin(j2) + cos(j1)*cos(j2)*cos(l1 - l2)) IV.2 Các hệ quy chiếu Phép chiếu được dùng để biểu diễn các đối tượng địa lý trong không gian 3 chiều (hệ toạ độ cầu) thành không gian 2 chiều tức là mặt phẳng. Quá trình chuyển đổi này sẽ gây nên một số sai lệch gọi là sai số. Và người ta lùa chọn các phép chiếu sao cho sai số này là nhỏ nhất. Các loại phép chiếu được phân líp theo tính chất và phương pháp xây dựng chúng. Có 3 phương pháp chính để xây dựng phép chiếu là : mặt chiếu là hình trụ, hình nón và mặt phẳng. Sau đây là một số phép chiếu hay được sử dụng nhất ( được tổng kết bởi U.S Geological Survey Map 1-1096) : Mặt chiếu là mặt phẳng (Planes – Azimuthal) : Azimuthal Equidistant, Lambert Azimuthal Equal-Area, Orthorgraphie, Stereographic. Mặt chiếu là hình trụ (Cylinders) : Mecator, Oblique Mecator, Transverse Mecator, Modified Transvers Mecator. Mặt chiếu là hình nón (Cones) : Equidistant Conic, Lambert Conformal Conic, Albers Conic Equal-Area, American Polyconic, Bipolar Oblique Conic Conformal. Mặt chiếu giả hình trụ (Pseudo-Cylinders) : Sinusoidal, Eckert No.5. Mỗi phép chiếu có một đặc điểm riêng và không phải tất cả đều hoàn hảo. Sau đây là một phương pháp lùa chọn các phép chiếu : Đối với các vùng vĩ độ thấp : Chọn phép chiếu hình trụ (Cylindric) Đối với vùng vĩ độ trung bình : Chọn phép chiếu hình nón (Conic) Đối với các vùng cực : Chọn phép chiếu mặt phẳng (Plane-Azimuthal). V. Giới thiệu về bản đồ Bản đồ được xem như là một trong những sản phẩm của GIS. Dùa vào các công cụ của GIS có thể tạo ra rất nhiều loại bản đồ có các tỷ lệ khác nhau với độ chính xác cao. Bản đồ là một tập hợp các dữ liệu địa lý gồm hình ảnh và các thông tin khác liên quan. Bản đồ cho phép biểu diễn thông tin GIS một cách trực quan và dễ hiểu nhất. Các đối tượng địa lý được mô tả không chỉ bởi vị trí trong không gian mà còn bởi các thông tin về thuộc tính của chúng. Bản đồ trong GIS thường là sự kết hợp hay xếp chồng của nhiều líp (layer) lại với nhau theo một hệ toạ độ chung. Mỗi líp đặc trưng cho một tập các đối tượng địa lý có chung một số tính chất nào đó. Ví dụ một bản đồ thành phố gồm có 3 líp : líp thứ nhất mô tả ranh giới giữa các quận, các vùng khác nhau, líp thứ hai mô tả hệ thống giao thông, và líp thứ ba là tập các công trình xây dựng, hay trường học, bệnh viện … Ví dô sau minh hoạ một bản đồ các quốc gia bao gồm 5 líp : Sự phân líp của bản đồ tạo ra một sự đa dạng trong cách biểu diễn và tạo điều kiện quản lý dễ dàng hơn. Người sử dụng có thể xem và chỉnh sửa trên một líp của bản đồ mà không làm ảnh hưởng đến các líp khác. Thông tin lưu trữ trên bản đồ là rất phong phú dễ xem, dễ hiểu và dễ tìm kiếm. VI. Các phép phân tích dữ liệu trong GIS Phân tích dữ liệu trong GIS là một trong những chức năng rất mạnh của hệ thống GIS. Hệ thống GIS không tạo lập quyết định cho người sử dụng nhưng nhờ có những công cụ phân tích hiệu quả sẽ trợ giúp đắc lực trong quá trình ra quyết định của họ. Đối với dữ liệu GIS có 3 hình thức phân tích cơ bản đó là truy vấn dữ liệu thuộc tính, truy vấn không gian và các truy vấn kết hợp. Ngoài ra còn có các hình thái phân tích chuyên dụng khác như phân tích mạng, mô hình địa thế số, mô hình ô lưới,… VI.1 Truy vấn dữ liệu thuộc tính GIS có thể cung cấp nhiều phương pháp truy vấn dữ liệu thuộc tính khác nhau. Các phương pháp này có thể từ đơn giản cho tới rất tinh vi và phức tạp. Trong phương pháp tổ chức lưu trữ dữ liệu thuộc tính có thể lưu trữ tách rời với dữ liệu không gian (trong các tệp khác nhau) hoặc cũng có thể gắn liền với dữ liệu không gian. Một nhà cung cấp GIS tiêu biểu cho phép lưu trữ dữ liệu thuộc tính ở nhiều định dạng khác nhau tương ứng với nhiều hệ quản trị cơ sở dữ liệu (DBMS) khác nhau. Ví dụ như dữ liệu thuộc tính có thể lưu dưới dạng *.mdb của CSDL Access hay dưới dạng DB2,… Nhờ đó các DBMS có thể tự quản lý và phân tích loại dữ liệu này. Một phương pháp phân tích dữ liêu đơn giản của GIS như yêu cầu tìm kiếm và hiển thị dữ liệu không gian dùa trên cơ sở thuộc tính và ngược lại. Ví dụ, người sử dụng có thể chỉ vào một điểm trên bản đồ và yêu cầu GIS xác định các thuộc tính của chúng. Ngược lại, người sử dụng có thể định vị một bản ghi trong CSDL thuộc tính và yêu cầu GIS chỉ ra vùng tương ứng trên bản đồ. Ngoài ra, GIS còn có thể hỗ trợ nhiều truy vấn tinh vi và phức tạp hơn. Đó là việc xây dựng các câu hỏi truy vấn dùa trên các toán tử truy vấn. Các toán tử này có thể là ‘+,-,=,not,>,<,=,Between,is null, …’ Ví dụ như trong một bản đồ thành phố, người sử dụng có thể yêu cầu ‘tìm kiếm các trường học cách trung tâm thành phố không quá 5 km và có số học sinh tốt nghiệp trong năm hiện tại lớn hơn 90%’. Để thực hiện được các câu hỏi như vậy, đầu tiên GIS sẽ gửi tới DBMS câu hỏi tương ứng mà nó có thể tìm kiếm dữ liệu thuộc tính thoả mãn yêu cầu đã đặt ra. Sau đó GIS sẽ tìm kiếm trên dữ liệu không gian để xác định các đối tượng không gian có những thuộc tính này và đánh dấu chúng trên màn hình hiển thị. Ngược lại, người sử dụng có thể mô tả một khu vực trên bản đồ vùng và yêu cầu GIS xác định tất cả các bản ghi thuộc tính của tất cả những vùng bên trong khu vực. Khu vực này có thể là một vòng tròn, một hình chữ nhật, một đa giác hay một hình không tuân theo quy luật nào cả. Các toán tử logic được sử dụng để hạn chế sự tìm kiếm hoặc dùng để mô tả những thuộc tính cần phải thoả mãn. Kết quả có thể được sử dụng để tạo ra các báo cáo, các đồ thị hay biên tập hồ sơ bản đồ mới. VI.2 Truy vấn không gian Đây là phương pháp truy vấn dùa trên các quan hệ không gian của các đặc điểm của bản đồ. Để có thể thực hiện được điều này cần xây dựng các toán tử không gian. Các toán tử này sẽ xác định mối quan hệ đã tồn tại giữa các đặc tính của bản đồ. Sau đây sẽ minh hoạ các chức năng của một toán tử không gian. Các toán tử truy vấn không gian : Overlap Đè lên §Ì lªn Entirely_contains Chứa chọn Chøa chän Entirely_contained_by Chứa trọn bởi Chøa trän bëi Contains Chứa Chøa Contains_by Chứa bởi Chøa bëi Terminates_in Tận cùng TËn cïng Terminus_of Chứa điểm tận cùng Chøa ®iÓm tËn cïng Passes_through Vượt qua V­ît qua Passes_through_by Vượt qua bởi V­ît qua bëi On_boundary_of Trên đường biên Trªn ®­êng biªn Has_on_boundary Touches Chạm Ch¹m Meets Gặp GÆp Spatially_equal Giống nhau Gièng nhau Các toán tử khoảng cách : BetweenGiữa Gi÷a Within Bên trong Bªn trong Beyond Bên ngoài Bªn ngoµi Entirely_within Trọn vẹn bên trong Trän vÑn bªn trong Entirely_between Trọn vẹn ở giữa Trän vÑn ë gi÷a Entirely_beyond Trọn vẹn bên ngoài Trän vÑn bªn ngoµi VI.3 Truy vấn kết hợp Sau khi đã thực hiện các phép truy vấn và được kết quả là một tập truy vấn. GIS có thể kết hợp các tập truy vấn này theo các phương pháp logic khác nhau nhằm đạt được một mục đích mong muốn nào đó. Các truy vấn như thế liên quan đến Ýt nhất là hai tập truy vấn và có thể nhiều hơn nữa được gọi là truy vấn tập. Sau đây sẽ là các toán tử truy vấn điển hình. UNION (Phép Hợp) Sự kết hợp duy nhất của hai toán hạng Sù kÕt hîp duy nhÊt cña hai to¸n h¹ng INTERSECT (Phép Giao)Giữ lại những mục có trong cả hai toán hạng Gi÷ l¹i nh÷ng môc cã trong c¶ hai to¸n h¹ng MINUS ( Phép Trừ) Giữ lại các mục chỉ có trong toán hạng thứ nhất mà không có trong toán hạng thứ hai Gi÷ l¹i c¸c môc chØ cã trong to¸n h¹ng thø nhÊt mµ kh«ng cã trong to¸n h¹ng thø hai Ví dô, trong quy hoạch đô thị cần phát triển vùng đô thị theo hướng có nhiều thuận lợi nhất. Lúc này cần xây dựng các tập truy vấn có các điểm thuận lợi khác nhau như tập các vùng có diện tích đất đai rộng, tập các vùng nằm trên trục đường giao thông chính, tập các vùng có địa hình tương đối bằng phẳng,… Và giao của các tập này hay thực hiện phép INTERSECT sẽ chỉ ra các vùng thuộc các hướng có nhiều đặc điểm thuận lợi nhất. Trong GIS những vùng có cùng thuộc tính mà có thể kết hợp thành một vùng rộng hơn thường được gọi là vùng “hoà tan”. VI.4 Một số kiểu phân tích khác của GIS Ngoài các kiểu truy vấn mang tính chất cốt lõi, điển hình ở trên. GIS còn có một số chức năng phân tích bổ sung. Các chức năng này thường được tách thành các modul riêng mà người sử dụng có thể mua chúng nếu họ cần. Chúng bao gồm các phép phân tích mạng, các phép phân tích và mô hình địa lý số, các phép phân tích và biểu đồ cột (ô) vành đai. VI.4.1 Phép phân tích mạng Phép phân tích mạng được thực hiện dùa trên một mô hình mạng đã được xây dựng. Đây có thể xem là một giải pháp rất hữu Ých cho các tổ chức quản lý liên quan đến mạng như hệ thống vận tải, truyền thông,… Các doanh nghiệp sử dụng chúng để lập kế hoạch phân phối hàng hoá hay dự trù các vị trí sắp đặt cửa hàng, dịch vụ hay các chi nhánh công ty. Có 3 kiểu chính của phép phân tích mạng là : Sơ đồ mạng, đường dẫn mạng và phân bố mạng. Đường dẫn mạng cho phép xác định một đường dẫn đặc thù xuyên xuốt mạng hay đường dẫn tối ưu trong một mạng tuyến tính. Đường dẫn được chọn có thể dùa trên một vài tiêu chuẩn đã được cung cấp hay các tiêu chuẩn như “khoảng cách ngắn nhất”, “chi phí nhỏ nhất”,…Phép phân tích đường dẫn sẽ kiểm tra xác định những hạn chế của đường dẫn và ảnh hưởng của nó nhằm tránh các xung đột có thể xẩy ra. Phân bố mạng chỉ định những phần mạng theo những “trung tâm cung cấp” hoặc “các điểm cuối”. Ví dụ với các trường học với một số lượng học sinh đã định sẵn thì GIS có thể xác định được một khu vực dân cư mà trường học có thể phục vụ bằng phép thống kê về dân số đang trong độ tuổi đến trường và cơ chế phân khu (block by block). Hoặc với mạng lưới xe buýt mà điểm đến là các bến xe điện ngầm thì phép phân bố mạng sẽ cho phép xác định được tất cả các điểm trên mạng đường phố nội thành cách bến xe không quá 5 phót đi bộ. VI.4.2 Phân tích và lập kiểu điạ hình kỹ thuật số DTM (Digital Terrain Modeling and Analysis) Kiểu địa hình kỹ thuật số DTM thường sử dụng để thể hiện bề mặt trái đất. Có hai dạng cơ bản của số liệu DTM : mạng bất thường thể lưới tam giác không đều TIN (Triangulated Irregular Network) và kiểu số liệu dạng ô lưới. Các điểm số liệu DTM bao gồm toạ độ X,Y và cũng có thể cả cao độ của nó là Z. Nó cũng có thể được tạo ra từ các đường ba chiều hoặc hai chiều cùng với giá trị độ cao của chúng. Modul DTM của GIS cho phép người dùng soạn thảo và thao tác trên các kiểu số liệu. Việc này bao gồm cả việc soạn thảo các giá trị Z trong TIN hoặc kiểu mắt lưới hay bổ sung, xoá, dịch chuyển các điểm số liệu trong TIN. Chương trình có thể áp dụng các thao tác logic và thuật toán cho các mắt lưới DTM (so sánh, vi phân, cộng, trừ, nhân, chia) nhằm sửa chữa hay tạo mới. Kiểu DTM được tích hợp GIS hạt nhân sẽ cho phép tích hợp số liệu địa hình 3 chiều với số lượng GIS 2 chiều. Ví dụ các đặc điểm bản đồ 2 chiều có thể được mô tả trên bề mặt DTM 3 chiều. DTM được sử dụng trong rất nhiều ứng dụng khác nhau bao gồm cả lập bản đồ điạ hình, quy hoạch địa chính, xây dựng dân dụng và quản lý nguồn tài nguyên, môi trường. Chương II – Hệ quản trị CSDL Oracle Trong bất kỳ ứng dụng nào khi cần truy xuất hay xây dựng cơ sở dữ liệu thì đều cần đến một hệ quản trị CSDL (DBMS – Database Management System). DBMS cho phép thực hiện một cách linh hoạt và hiệu quả các ngôn ngữ của CSDL như DML (Data Manipulation language) hay DDL (Data Definition language). DBMS đóng một vai trò quan trọng trong việc quản lý một số lượng lớn dữ liệu và đáp ứng những đòi hỏi khác nhau về tính hiệu quả, an toàn, bảo mật, phân tán,… Một ứng dụng đơn lẻ có thể tự xây dựng một DBMS và tất nhiên điều này có ưu điểm là ứng dụng sẽ có tính độc lập cao, và đáp ứng được những mục đích riêng. Tuy nhiên cũng cần phải mất thời gian trong việc đầu tư xây dựng một DBMS và cũng cần phải có một đội ngò chuyên nghiệp thực hiện công việc này. Đồng thời nó cũng nảy sinh nhược điểm là tính mở của ứng dụng sẽ bị hạn chế, khả năng phối hợp, chia sẻ dữ liệu giữa các hệ thống khác nhau gặp nhiều khó khăn. Cũng chính vì vậy, yêu cầu về sử dụng một sản phẩm phần mềm DBMS chuyên dụng có thể giải quyết được những khó khăn này. Và hiện nay, trên thị trường cũng xuất hiện nhiều phần mềm DBMS khác nhau như Access, Foxpro, SQL Server của hãng Microsoft, Oracle, DB2, Sysbase, Informix,… đáp ứng nhu cầu đa dạng của người sử dụng. Tất cả các DBMS này đều có quy mô và phạm vi ứng dụng riêng nhưng nói chung đều đáp ứng được những yêu cầu đặc thù về CSDL. Tùy theo mục đích và nhu cầu của mỗi ứng dụng mà có thể chọn những DBMS khác nhau. Trong phần này sẽ trình bày về một hệ DBMS rất nổi tiếng, đó là hệ quản trị CSDL Oracle. Oracle là một trong những hệ DBMS rất mạnh và được phát triển trên nhiều nền phần cứng cũng như nhiều hệ điều hành khác nhau. Khả năng hỗ trợ trên mạng cũng như một cơ chế hoạt động tin cậy, hiệu quả cùng nhiều chức năng khác của Oracle đã làm cho sản phẩm này đạt được một thành công rực rỡ và được sử dụng rất rộng rãi. Chương này không thể nói hết về Oracle nhưng sẽ cung cấp những khái niệm cơ bản cũng như kiến trúc và sự quản lý dữ liệu của Oracle đặc biệt là sản phẩm Oracle Spatial. Các ứng dụng GIS có thể sử dụng Oracle Spatial để xây dựng CSDL không gian, tích hợp cùng với các thành phần dữ liệu khác. Điều này mang lại rất nhiều ý nghĩa trong việc tổ chức quản lý dữ liệu cũng như trao đổi dữ liệu trong một môi trường xử lý phân tán và hướng tới những ứng dụng Web. I. Giới thiệu về Oracle Oracle là một bộ các công cụ phần mềm được cung cấp bởi công ty Oracle. Các công cụ này bao gồm các sản phẩm phần mềm cùng với các chương trình ứng dụng được dành cho người sử dụng cuối. Oracle không chỉ cung cấp một hệ quản trị CSDL mềm dẻo mà còn bao gồm rất nhiều các phương tiện khác. Đó là : Cơ sở dữ liệu : Oracle Server, RDB, Express OLAP Công cô CASE: Môi trường thiết kế CSDL (Designer 2000), CASE Công cụ phát triển : Developer 2000 (Developer Form , Report,…) Sản phẩm WWW: Web Server, PowerBrowser Các ứng dụng: Oracle Financial, Oracle Manufacturing. Hệ quản trị CSDL Oracle có tính an toàn, bảo mật cao, tính nhất quán và toàn vẹn dữ liệu, cho phép các user truy nhập tới CSDL phân tán như một khối thống nhất, hỗ trợ xử lý song song,... Vì vậy nó được đánh giá là một trong những sản phẩm ưu việt nhất hiện nay . II. Kiến trúc và quản lý dữ liệu của hệ quản trị CSDL Oracle Để có thể thiết kế và xây dựng CSDL được tốt trước hết chúng ta cần phải hiểu được kiến trúc cơ bản cũng như sự quản lý CSDL của Oracle. II.1 Cấu trúc CSDL Oracle Mét CSDL Oracle bao gồm hai phần là cấu tróc logic và cấu trúc vật lý. Sù phân chia này đảm bảo sự lưu trữ vật lý của dữ liệu không làm ảnh hưởng đến các truy nhập trên cấu trúc logic của dữ liệu. II.1.1 Cấu trúc CSDL vật lý Cấu trúc vật lý được xác định bởi các tệp (file) xây dựng nên CSDL, chóng bao gồm 3 loại file là : mét hoặc nhiều file dữ liệu (datafiles), hai hoặc nhiều file nhật ký (redo log files), một hoặc nhiều file điều khiển (control files). Các file dữ liệu (datafiles) chứa toàn bộ dữ liệu của CSDL. Khi có yêu cầu về dữ liệu thì dữ liệu sẽ được đọc từ datafile tương ứng và được đặt trong bộ nhớ Cache của Oracle. Thao tác ghi dữ liệu có thể không được ghi lên datafile ngay lập tức mà sẽ được ghi tại một thời điểm thích hợp và được thực hiện bởi tiến trình nền DBW của Oracle. Các file nhật ký (redo log files) có chức năng ghi lại tất cả các thay đổi đã thực hiện trên dữ liệu. Các file này được sử dụng để khôi phục lại CSDL khi có sự cố về hệ thống hoặc bởi các tác động bên ngoài trong lúc dữ liệu đang được ghi từ bộ nhớ tới các datafile. Các file điều khiển (control files) ghi lại cấu trúc vật lý của CSDL như tên CSDL, nhãn thời gian mà CSDL được tạo ra, tên và nơi đặt các file dữ liệu và các file nhật ký,… II.1.2 Cấu trúc CSDL logic Cấu tróc logic của CSDL Oracle được xác định bởi các thành phần : Một hoặc nhiều các Tablespaces Các đối tượng lược đồ CSDL (Database’s schema objects). Data blocks, Extents và Segment Tablespace là đơn vị lưu trữ logic của CSDL, với mục đích phân chia cấu trúc logic thành các nhóm có liên quan với nhau. Như vậy : Mỗi CSDL được chia nhỏ thành một hoặc nhiều tablespace Các file dữ liệu đặt trong mét tablespace sẽ lưu trữ (về mặt vật lý) dữ liệu của cấu trúc logic trong mét tablespace đó. Sau Tablespace là các đơn vị Data blocks, Extents và Segment. Các Tablespace có thể được đặt là trực tuyến (online)/ngoại tuyến (offline) (ngoại trừ tablespace SYSTEM) hoặc trong chế độ READ ONLY/READ WRITE. Trong trạng thái offline thì dữ liệu thuộc tablespacelà không sẵn sàng với user nhưng có thể phục vụ cho quá trình backup tablespace. Đối tượng lược đồ (Schema Object) lược đồ là một tập các đối tượng (Object). Các đối tượng của lược đồ bao gồm các cấu trúc như các bảng (tables), khung nhìn (views), các dẫy (sequences), hay các thủ tục đã lưu trữ (stored procedures), synonyms, chỉ số (indexes), clusters, và các liên kết CSDL (database links) Data blocks, Extents và Segment là các cấu trúc lưu trữ logic của Oracle Sơ đồ quan hệ giữa Datablocks, Extents và Segment 1. Data block : tương ứng với một số bytes xác định trong không gian lưu trữ vật lý trên đĩa. Kích thước của các khối được xác định khi tạo CSDL và không thể thay đổi lại được trừ phi tạo lại CSDL. Kích cỡ thường 2 -> 4 KB được xác định bởi biến DB_BLOCK_SIZE. Khuôn dạng của mét datablock bao gồm 5 phần : Header (Common and Variable) : chứa những thông tin chung về khối như địa chỉ của khối, kiểu segment,¼ Table directory : bao gồm các thông tin về các bảng (table) có các hàng (row) trong khối. Row directory : chứa thông tin về các hàng hiện tại trong khối. Row data : chứa dữ liệu bảng hoặc dữ liệu chỉ số (Table or index data), các hàng có thể trải dài trên các khối. Free space : là tập các byte trong khối dành cho việc chèn các hàng mới hay cập nhật lại các hàng có đòi hỏi thêm không gian lưu trữ (ví dụ sự chuyển đổi từ giá trị null sang giá trị non-null). Việc điều khiển Free Space thông qua hai tham số là PCTFREE và PCTUSED. Đây là hai tham số được xác định khi tạo hay hiệu chỉnh bảng (table), chỉ số (index) hoặc cluster (tập các segment). + PCTFREE : là tham số xác định tỷ lệ phần trăm nhỏ nhất của khối để cập nhật các hàng đã tồn tại trong khối. Dữ liệu sẽ chỉ được phép thêm vào khối chõng nào tỷ lệ không gian trống của khối còn lớn hơn PCTFREE.Ví dụ PCTFREE=20 (minum free space = 20% block). + PCTUSED : xác định tỷ lệ phần trăm nhỏ nhất của khối mà có thể chứa dữ liệu hàng (row data) trước khi thêm các hàng mới tới khối. Khối được xem là sẵn sàng nhận các hàng mới nếu tỷ lệ phần trăm dữ liệu hiên tại đã sử dụng là nhỏ hơn PCTUSED. Giá trị ngầm định của PCTUSED = 40. Trong trường hợp dữ liệu hàng(row) được chèn (insert) lần đầu tiên vào một đối tượng lược đồ là quá lớn so với một datablock. Thì hàng này sẽ được lưu trữ trên một chuỗi các datablock (được gọi là Row chaining). Hoặc khi một hàng đã tồn tại trong mét block nhưng được cập nhật lại (update) và kích thước mới không đủ chứa trong block hiện tại thì Oracle sẽ thực hiện ‘di trú’ toàn bộ dữ liệu của hàng này tới một block mới khác (gọi là quá trình Migrating). 2. Extent : là một đơn vị logic được cấp phát không gian lưu trữ CSDL trên một số datablock. Một hoặc nhiều các Extent tạo thành một Segment. Khi không gian lưu trữ cho mét Segment đã được sử dụng hoàn toàn thì Oracle sẽ cấp một Extent mới cho Segment đó. Mỗi segment cần có Ýt nhất là 1 extent, riêng các Segment khôi phục (Rollback Segments) cần có Ýt nhất là 2 extent. Có hai loại extent là : Initial Extent : Khi một đối tượng (table,index,…) được tạo ra thì Oracle sẽ cấp cho nó một Extent khởi đầu gồm một số xác định các datablock và được gọi là Initial Extent. Incremental Extent : Khi Initial Extent của một Segment đã đầy và nhiều không gian lưu trữ được đòi hỏi cho việc lưu trữ dữ liệu mới thì Oracle sẽ tự động cấp phát cho Segment đó thêm một Extent mới gọi là Incremental Extent. Kích thước của extent thêm có thể có kích thước bằng hoặc lớn hơn kích thước của extent trước đó. Vì vậy, trong khối header của Segment chứa một thư mục (directory) của các extents thuộc về Segment đó. Xác định số lượng và kích thước của các extent : Việc điều chỉnh các extent cho mỗi Segment được thực hiện thông qua các tham số lưu trữ (Storage parameters NEXT, PCTINCREASE, MINEXTENTS, MAXEXTENTS, và DEFAULT STORAGE). Ví dụ có thể xác định các tham số này bằng mệnh đề STORAGE khi thực hiện lệnh CREATE TABLE, nếu không thì các tham số ngầm định của Tablespace sẽ được sử dụng. Tablespace có thể quản lý các extent theo hai cách cục bé (locally) hoặc thông qua từ điển dữ liệu (data dictionary). Extent được quản lý một cách cục bộ : Theo cách này kích thước của các extent có thể đồng nhất (uniform) hoặc biến đổi (variable). Khi tạo tablespace lùa chọn UNIFORM hoặc AUTOALLOCATE(được quản lý bởi hệ thống) sẽ xác định kiểu cấp phát. +Với các extent UNIFORM : ta có thể xác định kích thước của mỗi extent hoặc sử dụng kích thước ngầm định (là 1 MB). +Với các extent được quản lý bởi hệ thống, ta có thể xác định kích thước của Initial extent và kích thước tối ưu của các extent thêm vào cùng với kích thước extent nhỏ nhất (ngầm định là 64 KB). Extent được quản lý bởi từ điển dữ liệu : Lóc này tablespace sẽ sử dụng từ điển dữ liệu để quản lý các extent của nó và kích thước của các extent tăng thêm. Khi tạo ra một đối tượng lược đồ trong mét tablespace có thể sử dụng các tham số lưu trữ để xác định kích thước và số lượng của các extent: + INITIAL : xác định kích cỡ của extent đầu tiên được định vị cho segment ngầm định là 5 data block. + NEXT : xác định kích cỡ của các extent tiếp theo ngầm định là 5 blocks + MAXEXTENTS : tổng số lớn nhất các extent cấp cho segment (ngầm định là 99) + MINEXTENTS : tổng số extent được cấp cho segment khi segment được tạo (ngầm định là 1). + PCTINCREASE : tỷ lệ % mà mỗi extent tiếp theo được phát triển có thể vượt quá extent cuối cùng (ngầm định là 50%). + OPTIMAL : kích cỡ tối ưu cho 1 đoạn khôi phục (ngầm định là null). + FREE LIST: sè danh sách của các khối rỗi cho insert vào bảng (ngầm định là 1) 3. Segment : là một tập các extent chứa tất cả dữ liệu cho một cấu trúc lưu trữ logic xác định trong mét tablespace. Ví dụ, với mỗi table Oracle sẽ cấp một hoặc nhiều extent tạo thành một segment dữ liệu của table đó. CSDL Oracle sử dụng các kiểu segment sau : Data segment : tập tất cả cá extent mà chúng cất giữ tất cả dữ liệu cho một bảng hoặc 1 cluster Index segment : chứa tất cả các dữ liệu chỉ số cho việc tìm kiếm được tối ưu, nhanh chóng. Temporary Segment : khi xử lý các câu hỏi SQL, nếu cần thiết thì Oracle sẽ tự động cấp phát một không gian đĩa được gọi là Temporary Segment. Thường là khi xử lý các câu lệnh có yêu cầu sắp xếp như (SELECT … ORDER BY, SELECT … GROUP BY,…) Roll back segment : tập các extent mà chúng cất giữ các dữ liệu cho quá trình khôi phục lại. Bootstrap segment : là 1 extent chứa các định nghĩa về từ điển cho các bảng từ điển và được nạp vào khi CSDL được mở II.2 Oracle Instance Sơ đồ minh hoạ một Oracle Instance (Multiple-process Oracle Instance) Khái niệm : Mỗi khi được khởi tạo, Oracle sẽ cấp phát một vùng bộ nhớ gọi là SGA (System Global Area) và khởi tạo một hoặc nhiều các tiến trình nền (Background Processes). SGA là một vùng bộ nhớ chứa thông tin CSDL được chia sẻ bởi các User. Sự kết hợp giữa SGA và các tiến trình Oracle được gọi là mét Oracle Instance. Mét Oracle Instance có 2 kiểu tiến trình : User Processes và Oracle Processes User Process : thực hiện mã của một chương trình ứng dụng (như ứng dụng Oracle Forms) hoặc Oracle Tool (ví dụ Oracle Enterprise Manager). Oracle Processes : là các tiến trình server (Server Process) thực hiện công việc được yêu cầu bởi User Process, các tiến trình nền (Background Proces) sẽ thực hiện công việc duy trì Oracle Server. Nếu các User Process và Server Process nằm trên những máy tính khác nhau của một mạng hoặc cùng chia sẻ thông qua các tiến trình Dispatcher thì giao thức Net8 sẽ được sử dụng để truyền thông giữa hai loại tiến trình này. Dispatchers là các tiến trình nền lùa chọn chỉ có trong cấu hình server multi-threaded. Net8 là giao diện của Oracle với các giao thức truyền thông chuẩn thực hiện trao đổi dữ liệu giữa các máy tính. II.2.1 Cấu trúc bộ nhớ Oracle Sơ đồ cấu trúc bộ nhớ và các tiến trình Oracle Oracle tạo và sử dụng cấu trúc bộ nhớ để thực hiện các công việc khác nhau (như chứa mã chương trình sẽ được thực hiện hay dữ liệu chia sẻ cho các user). Cấu trúc bộ nhớ cơ sở bao gồm SGA(database buffer, redo log buffer, shared pool) và PGA (Program Golobal Area). Vùng bé nhớ SGA : Database Buffer Cache : lưu trữ các khối dữ liệu được sử dụng gần đây nhất. Redo Log Buffer : lưu trữ các khoản mục đã thay đổi trên CSDL. Các mục lưu trữ trong Redo Log Buffer sẽ được ghi tới các tệp redo log trực tuyến. Shared Pool : vùng nhớ SGA xây dựng nên vùng SQL dùng chung (Shared SQL Areas). Shared SQL Area cần thiết cho việc xử lý mỗi lệnh SQL đã được đệ trình (Submitted) tới CSDL. Đây là vùng chứa các thông tin như cây phân tích, sơ đồ thực hiện lệnh. Một vùng Shared SQL Area đơn lẻ có thể được sử dụng bởi nhiều ứng dụng mà yêu cầu cùng một lệnh. Larger Pool : vùng tuỳ chọn trong SGA cung cấp các sự cấp phát bộ nhớ rộng cho Oracle backup, các thao tác khôi phục, các Server Process vào/ra và bộ nhớ phiên cho multi-threaded server và Oracle XA. Program Global Area (PGA) : là vùng nhớ đệm chứa dữ liệu và thông tin điều khiển cho mét Server Process. Nó được tạo ra khi mét Server Process được khởi tạo. Thông tin trong mét PGA phụ thuộc vào cấu hình của Oracle. II.2.2 Kiến trúc tiến trình Oracle Các tiến trình Oracle được gọi bởi các tiến trình khác nhau và bao gồm 2 loại tiến trình là Server Process và Background Process. 1. Các tiến trình phục vụ (Server Processes) : Điểu khiển các yêu cầu đến từ một User Process kết nối tới. Một Server Process đảm nhiệm truyền thông với User Process và giao tiếp với Oracle để thực hiện yêu cầu từ User Process. Trong mét Dedicated Server Configuration, mét Server Process điều khiển cho mét User Process đơn. Mét Multi-threaded Server Configuration cho phép nhiều User Process chia sẻ một số lượng nhá các Server Process. 2. Các tiến trình nền (Background Processes) : Oracle tạo ra một tập các tiến trình nền cho mỗi Instance. Các tiến trình nền không đồng bộ thực hiện vào/ra và giám sát các tiến trình Oracle nhằm mục đích gia tăng sự song song và đạt được một hiệu năng và độ tin cậy tốt hơn. Các tiến trình này là DBWn, LGWR, CKPT, SMON, PMON, ARCn, RECO, Dnnn, LCK0, SNPn, và QMNn. Database Writer (DBWn) : ghi các khối đã biến đổi từ Database Buffer Cache tới các Datafiles. Tham sè DB_WRITER_PROCESSES xác định số các tiến trình DBWn được sử dụng. Log Writer (LGWR) : ghi các mục trong Redo Log Buffer tới các tệp Redo Log trực tuyến. Nếu CSDL là Multiplexed Redo Log thì LGWR sẽ ghi tới một nhóm các tệp Redo Log trực tuyến. Checkpoint (CKPT) : báo hiệu cho DBWn tại các điểm kiểm tra (checkpoint) cập nhật tất cả các datafiles và control files của CSDL. System Monitor (SMON) : thực hiện khôi phục Instance khi mét Instance khác bị thất bại. Nó sẽ làm sạch Temporaray Segment không còn sử dụng, khôi phục các giao dịch chết, hợp nhất các extent rỗi trong một không gian liên tục tạo điều kiện dễ dàng trong cấp phát. Process Monitor (PMON) : thực hiện khôi phuc tiến trình khi mét User process bị thất bại (làm sạch bộ nhớ cache, giải phóng tài nguyên,…) Archiver (ARCn) : sao chép các tệp Redo Log trực tuyến tới thiết bị lưu trữ khi chúng đã đầy hoặc khi có sự chuyển đổi nhật ký được sinh ra. Số các tiến trình này có thể xác định bởi tham số khởi tạo LOG_ARCHIVE_MAX_PROCESSES (lớn nhất là bằng 10). ARCn được kích hoạt chỉ khi CSDL trong chế độ ARCHIVELOG. Recover (RECO) : giải quyết các giao dịch phân tán trên mạng mà bị treo hoặc lỗi hệ thống trong CSDL phân tán, nó sẽ kết nối tới các CSDL ở xa và tự động thực hiện commit hoặc rollback. Dispatcher (Dnn) : chỉ có trong cấu hình multi-threaded server, có trách nhiệm định đường cho các request từ các User Process tới các Shared Server Process và gửi trả kết quả trở về tới các User Process thích hợp. Lock (LCK0) : sử dụng cho việc khoá Inter-Instance trong Oracle Parallel Server. Job Queue (SNPn) : trong cấu hình CSDL phân tán có 36 tiến trình (SNP0,…, SNP9,SNPA,…,SNPZ) có thể tự động làm mới các bản chụp table (table snapshots). Queue Monitor (QMNn) : là các tiến trình nền lùa chọn mà giám sát các hàng đợi thông điệp (Message Queues) cho Oracle Advanced Queuing (Oracle AQ). III. Tích hợp dữ liệu GIS với hệ quản trị CSDL Oracle (Oracle Spatial) Oracle Spatial là một sản phẩm của Oracle cho phép lưu trữ dữ liệu không gian theo cả hai mô hinh quan hệ (Relational Model) và mô hình quan hệ - đối tượng (Object – Relational Model). Dữ liệu không gian được lưu trữ dưới dạng bảng và có thể đi kèm với các trường thuộc tính khác. III.1 Các phần tử dữ liệu Phần tử (element) : là thành phần cơ bản xây dựng nên các đối tượng hình học (geometries) bao gồm các kiểu khác nhau như điểm (point), xâu đường (line strings) và đa giác (polygon). Dữ liệu điểm gồm một thành phần toạ độ, dữ liệu đường gồm hai thành phần toạ độ (đường thẳng) hoặc 3 thành phần toạ độ (đường cong), xâu đường gồm nhiều phần tử đường, và dữ liệu đa giác gồm nhiều thành phần toạ độ theo chiều kim đồng hồ hoặc ngược chiều kim đồng hồ. Hình học (geometry) : Đối tượng hình học được biểu diễn bằng một tập có thứ tự các phần tử nguyên thủy. Nó có thể gồm chỉ một phần tử hoặc một tập đồng nhất hoặc không đồng nhất của các phần tử. Tập đồng nhất là tập các phần tử cùng kiểu (ví dụ đều là điểm hoặc đều là đa giác) còn tập không đồng nhất thì ngược lại các phần tử có thể khác kiểu nhau. Líp (layer) : Líp là một tập có thể không đồng nhất của các đối tượng hình học có cùng một tập thuộc tính. Trong GIS có thể biểu diễn các líp về địa hình, líp mạng lưới đường xá, cầu … III.2 Mô hình truy vấn Mô hình truy vấn được thực hiện theo mô hình hai líp nhằm giải quyết các câu hỏi và phép kết nối không gian. Đây là mô hình thực hiện thông qua hai thao tác lọc khác nhau có thứ tù . Sơ đồ biểu diễn như sau : Mµng läc thø nhÊt Mµng läc thø hai TËp kÕt qu¶ TËp lín d÷ liÖu vµo TËp øng cö viªn nhá h¬n Màng lọc thứ nhất cho phép chọn ra một tập các bản ghi ứng cử viên thông qua phép so sánh xấp xỉ hình học và chuyển cho màng lọc thứ hai. Mục đích của màng lọc này là rút gọn độ phức tạp tính toán cho màng lọc sau và do có chi phí tính toán thấp nên thực hiện rất nhanh. Màng lọc thứ nhất sử dụng chỉ số không gian dùa trên cây tứ phân . Màng lọc thứ hai sẽ thực hiện các phép tính chính xác lên các đối tượng hình học và trả về tập kết quả cho câu hỏi. Màng lọc này có chi phí tính toán cao nhưng được thực hiện trên một tập dữ liệu từ màng lọc thứ nhất chứ không phải là toàn bộ tập dữ liệu. Còn màng lọc thứ hai sử dụng hàm SDO_GEOM.RELATE() để đánh giá các quan hệ hình học. Đôi khi không cần thực hiện đầy đủ cả hai màng lọc này, vì một số thao tác không cần một tập kết quả chính xác nhưng cần có tốc độ nhanh như phép Zoom trong ứng dụng bản đồ. III.3 Các phương pháp đánh chỉ số không gian Đây là phương pháp đánh chỉ số không gian dùa trên cây tứ phân, nhằm mục đích xấp xỉ các đối tượng hình học bằng các ô có kích thước xác định (cố định hoặc biến đổi). Dùa trên kích thước của ô, có hai phương pháp đánh chỉ số là chỉ số xác định (Fixed Index) và chỉ số hỗn hợp (Hybrid Index). Sơ đồ minh hoạ các phương pháp chỉ số (SDO_LEVEL=2): Fixed Indexing : đầu vào là tham sè n=SDO_LEVEL cho biết số ô trên mỗi chiều là 2n ô. Đầu tiên toàn bộ không gian toạ độ (giới hạn bởi các cận) được chia đôi theo mỗi chiều tạo thành 4 ô con. Tiếp theo mỗi ô trong 4 ô con này lại tiếp tục được chia thành 4 ô con khác. Quá trình phân hoạch dừng khi số lần phân chia đạt tới SDO_LEVEL. Mỗi ô đã được phân chia sẽ được gán cho một giá trị chỉ số duy nhất. Hybrid Indexing : đầu vào ngoài SDO_LEVEL còn có SDO_MAXLEVEL và SDO_NUMTILES. Đầu tiên Fixed Indexing sẽ được thực hiện. Sau đó nếu ô nào tiếp xúc với 2 geometry trở lên hoặc khi số ô bao phủ toàn bộ geometry đó còn nhỏ hơn tham sè SDO_NUMTILES thì sẽ tiếp tục được chia 4. Và quá trình đó cứ tiếp tục cho tới khi hoặc số lần phân chia đã lớn hơn SDO_MAXLEVEL hoặc khi toàn bộ geometry đã được bao phủ bởi các ô mà số ô là lớn hơn SDO_NUMTILES. Tuy rằng mỗi phương pháp đều có ưu và nhược điểm riêng. Nhưng phương pháp chỉ số xác định thường được sử dụng cho mô hình quan hệ còn phương pháp chỉ số hỗn hợp thực hiện tốt cho mô hình quan hệ - đối tượng. Hai mô hình này sẽ được đề cập ở các mục sau. III.4 Các quan hệ không gian Các phương pháp màng lọc sử dụng các quan hệ không gian giữa các thực thể trong CSDL. Các quan hệ này được dùa trên topology và khoảng cách. Khoảng cách giữa hai đối tượng không gian là khoảng cách nhỏ nhất giữa hai điểm bất kỳ giữa chúng. Các quan hệ về topology có thể được định danh bằng các tên sau : DISJOINT – Tách rời nhau. TOUCH – Chỉ giao nhau phần biên. OVERLAPBDYDISJOINT – Bên trong của một đối tượng giao với đường biên và bên trong của một đối tượng khác nhưng hai đường biên không giao nhau. Ví dô : OVERLAPBDYINTERSECT – Biên và bên trong của hai đối tượng là giao nhau. EQUAL – Hai đối tượng có cùng đường biên và phía trong . CONTAINS – Đường biên và bên trong của một đối tượng là nằm hoàn toàn bên trong một đối tượng khác. COVERS – Bên trong của một đối tượng là nằm hoàn toàn bên trong của một đối tượng khác nhưng đường biên của chúng giao nhau. Ví dụ: INSIDE – Ngược lại với CONTAINS. COVEREDBY – Ngược với COVERS. ANYINTERACT – Các đối tượng là không tách rời nhau. III.5 Các mô hình dữ liệu Oracle Spatial hỗ trợ 2 mô hình dữ liệu là mô hình quan hệ và mô hình quan hệ - đối tượng. III.5.1 Mô hình quan hệ - đối tượng (Object – Relational Model) a. Cấu trúc dữ liệu hình học Dữ liệu hình học được lưu trữ trong một cột của bảng (table) như các dữ liệu khác nhưng có kiểu là SDO_GEOMETRY. Tên bảng có thể tự đặt nhưng phải có khoá chính cho bảng đó. Kiểu SDO_GEOMETRY đã được định nghĩa sẵn như sau : CREATE TYPE SDO_GEOMETRY AS OBJECT ( SDO_GTYPE NUMBER, SDO_SRID NUMBER, SDO_POINT SDO_POINT_TYPE, SDO_ELEM_INFO MDSYS.SDO_ELEM_INFO_ARRAY, SDO_ORDINATES MDSYS.SDO_ORDINATE_ARRAY); SDO_GEOMETRY cho phép lưu trữ dữ liệu hình học như đối tượng điểm, đối tượng xâu đường, đa giác, tập điểm, tập xâu đường, tập đa giác và cả tập không đồng nhất của các phần tử. SDO_GTYPE dùng để nhận biết kiểu Geomery, SDO_SRID để dành sử dụng trong tương lai, SDO_POINT sử dụng khi đối tượng là một điểm . Còn hai kiểu SDO_ELEM_INFO và SDO_ORDINATE_ARRAY cho phép xác định từng phần tử trong Geometry. b. Cấu trúc siêu dữ liệu hình học (Geometry Metadata) Mỗi bảng (table) chứa dữ liệu có kiểu Geometry được xem như là một Layer. Và để xác định kiểu toạ độ, các cận của layer này thì cần phải có một cấu trúc mô tả nó được gọi là Geometry Metadata. Tập các Metadata được đặt trong mét table riêng có tên là SDO_GEOM_METADATA. Oracle Spatial không tạo sẵn cho ta bảng này mà người sử dụng phải tự tạo và thêm dữ liệu vào bảng này. Create Table SDO_GEOM_METADATA ( TABLE_NAME VARCHAR2(30), COLUMN_NAME VARCHAR2(30), DIMINFO MDSYS.SDO_DIM_ARRAY); MDSYS.SDO_DIM_ARRAY đã được định nghĩa sẵn như sau : Create Type SDO_DIM_ARRAY as VARRAY(4) of SDO_DIM_ELEMENT; Create Type SDO_DIM_ELEMENT as OBJECT ( SDO_DIMNAME VARCHAR2(64), SDO_LB NUMBER NOT NULL, SDO_UB NUMBER NOT NULL, SDO_TOLERANCE NUMBER NOT NULL); c. Nạp dữ liệu (Loading Process) Để tạo dữ liệu không gian cần phải nạp dữ liệu vào các table có chứa kiểu SDO_GEOMETRY tương ứng. Có 2 cách nạp dữ liệu : Bulk loading of data : Tiến trình này thường sử dụng cho nạp một số lượng lớn dữ liệu vào trong CSDL thông qua trình tiện Ých SQL* Loader. Transactional inserts : Tiến trình này sử dụng để chèn một lượng nhỏ dữ liệu vào trong CSDL thông qua lệnh SQL ‘INSERT’. d. Đánh chỉ số không gian Để đánh chỉ số không gian cần thực hiện lệnh CREATE INDEX và việc tạo chỉ số xác định hay chỉ số hỗn hợp được thực hiện thông qua 2 tham số vào là SDO_LEVEL và SDO_NUMTILES. Chỉ số sẽ được tự động duy trì thông qua các thủ tục INSERT hoặc UPDATE. ý nghĩa các tham sè : SDO_LEVEL SDO_NUMTILES Thực hiện Không xác định Không xác định Lỗi >=1 Không xác định Chỉ số xác định (fixed-size tiles) >=1 >=1 Chỉ số hỗn hợp (hybrid indexing) Không xác định >=1 Không hỗ trợ Ngoài ra còn một số tham số khác như SDO_MAXLEVEL, physical storage params,… e. Một số ví dô : 1.Tạo mét table chứa dữ liệu không gian : CREATE TABLE Parks (Name varchar2(32),Shape MDSYS.SDO_GEOMETRY) 2.Xây dựng bảng siêu dữ liệu hình học : CREATE TABLE SDO_GEOM_METADATA ( TABLE_NAME VARCHAR2(30), COLUMN_NAME VARCHAR2(30), DIMINFO MDSYS.SDO_DIM_ARRAY) INSERT INTO SDO_GEOM_METADATA VALUES( 'Parks','Shape', MDSYS.SDO_DIM_ARRAY( MDSYS.SDO_DIM_ELEMENT('X',0,100,0.005), MDSYS.SDO_DIM_ELEMENT('Y',0,100,0.005) )) 3. Tạo dữ liệu bằng lênh INSERT : INSERT INTO PARKS VALUES( 1,MDSYS.SDO_GEOMETRY(3,NULL,NULL, MDSYS.SDO_ELEM_INFO_ARRAY(1,3,1,19,3,3), MDSYS.SDO_ORDINATE_ARRAY(6,15, 10,10, 20,10, 25,15, 25,35, 19,40, 11,40, 6,25, 6,15, 12,15, 15,24) )) 4.Tạo chỉ số (index) CREATE INDEX PARKS_FIXED ON PARKS(SHAPE) INDEXTYPE IS MDSYS.SPATIAL_INDEX PARAMETERS('SDO_LEVEL = 8') III.5.2 Mô hình quan hệ (Relational Model) a. Cấu trúc dữ liệu Mô hình quan hệ lưu trữ dữ liệu không gian của mỗi líp (layer) trong 4 bảng. Cấu trúc của mỗi bảng là như sau : Bảng 1: _SDOLAYER : Tên cột Kiểu dữ liệu ý nghĩa SDO_ORDCNT NUMBER Tổng số toạ độ trên mỗi hàng trong bảng _SDOGEOM SDO_LEVEL NUMBER Số mức được phân hoạch SDO_NUMTILES NUMBER Số ô trên mỗi đối tượng hình học SDO_MAXLEVEL NUMBER Mức lớn nhất có thể phân hoạch SDO_COORDSYS VARCHAR Tên hệ thống toạ độ (POSC , OGIS) Bảng 2 : _SDODIM (Table hoặc View) : Tên cột Kiểu dữ liệu ý nghĩa SDO_DIMNUM NUMBER Chiều mà hàng này tham chiếu (1,2..) SDO_LB NUMBER Cận dưới của chiều này (-90 với vĩ độ) SDO_UB NUMBER Cận trên của chiều này(90 với vĩ độ) SDO_TOLERANCE NUMBER Dung sai và phải lớn hơn 0 SDO_DIMNAME VARCHAR Tên chiều (ví dụ x,y hoặc vĩ độ,kinh độ) Bảng 3 : _SDOGEOM (Table hoặc View) : Tên cột Kiểu dữ liệu ý nghĩa SDO_GID NUMBER Định danh duy nhất cho mỗi Geomtry SDO_ESEQ NUMBER Đếm mỗi phần tử trong Geometry (Element SEQence) SDO_ETYPE NUMBER Kiểu phần tử nguyên thuỷ (1 : kiểu điểm 2 : xâu đường, 3 : đa giác, 4 và 5 : không hỗ trợ). SDO_SEQ NUMBER Số thứ tự bản ghi tạo nên phần tử SDO_X1 NUMBER Giá trị toạ độ X thứ nhất SDO_Y1 NUMBER Giá trị toạ Y thứ nhất … NUMBER … SDO_Xn NUMBER Giá trị toạ độ X thứ n SDO_Yn NUMBER Giá trị toạ độ Y thứ n Số cột lớn nhất trong bảng này là 1000 cột. Bảng 4 : _SDOINDEX (Table) : Tên cột Kiểu dữ liệu ý nghĩa SDO_GID NUMBER Định danh sè cho mỗi Geometry SDO_CODE RAW ID của ô phủ lên SDO_GID được tạo như kiểu RAW(255) SDO_MAXCODE RAW Tăng thêm độ dài mã cho SDO_CODE SDO_GROUPCODE RAW Biểu diễn chỉ số phân hoạch theo SDO_LEVEL SDO_META RAW Không cần thiết cho truy vấn không gian. Nã cung cấp thông tin để tìm đường biên của ô. b. Nạp dữ liệu Tiến trình nạp dữ liệu cũng chia là 2 cách : Bulk loading of data Transactional inserts c. Tạo chỉ số không gian Để tạo chỉ số không gian trước hết tạo bảng chỉ số _SDOINDEX như sau : Với chỉ số xác định (Fixed Indexing) SQL> create table _SDOINDEX 2 ( 3 SDO_GID number, 4 SDO_CODE raw(255) 5 ); Với chỉ số hỗn hợp (Hybrid Indexing) SQL> create table _SDOINDEX 2 ( 3 SDO_GID number, 4 SDO_CODE raw(255), 5 SDO_GROUPCODE raw(255), 6 SDO_MAXCODE raw(20), 7 SDO_META raw(255), 8 ); Để tạo chỉ số ta gọi hàm SDO_ADMIN.POPULATE_INDEX() với các tham số vào là tên của líp (_SDOLAYER). Các tham sè SDO_LEVEL , SDO_NUMTILES và SDO_MAXLEVEL được xác trong bảng này. Nếu dữ liệu bị xoá hay được cập nhật , ta có thể gọi thủ tục SDO_ADMIN.UPDATE_INDEX() để cập nhật chỉ số. Tham sè cho thủ tục này là tên líp và SDO_GID của geometry tương ứng. Ví dô : Tạo chỉ số cho líp ROADS : Sdo_admin.populate_index(‘ROADS’); Giả sử một geometry có SDO_GID=1000 được thêm vào bảng không gian. Ta cập nhật chỉ số bằng lệnh : sdo_admin.update_index(‘ROADS’,1000); CHƯƠNG III – TRUYềN THÔNG MạNG MáY TíNH I. Khái quát chung về mạng máy tính I.1 Định nghĩa Mạng máy tính là một tập hợp các máy tính được nối với nhau bởi các đường truyền vật lý theo một kiến trúc nào đó. I.2 Các yếu tố của mạng máy tính Đường truyền vật lý : dùng để truyền các tín hiệu điện tử giữa các máy tính. Các tín hiệu điện tử đó biểu thị các giá trị dữ liệu dưới dạng xung nhị phân (on-off) Kiến trúc mạng : (Network architecture) thể hiện cách nối các máy tính với nhau và tập hợp các quy tắc, qui ước mà tất cả các thực thể tham gia truyền thông trên mạng phải tuân theo để đảm bảo cho mạng hoạt động tốt. Cách nối máy tính được gọi là hình trạng (topology) của mạng, còn tập hợp các qui tắc, qui ước truyền thông thì được gọi là giao thức (protocol) của mạng. Topology của mạng : Có 2 kiểu nối mạng chủ yếu nhất là điểm-điểm (point– to – point) và quảng bá (broadcast hay point – to –multipoint). Theo kiểu điểm - điểm các đường truyền nối từng cặp nót với nhau và mỗi nót đều có trách nhiệm lưu trữ tạm thời sau đó chuyển tiếp dữ liệu đi cho tới đích. Ví dô : mạng hình sao (star), chu trình (loop), cây (cây). Theo kiểu quảng bá, tất cả các nót phân chia chung một đường truyền vật lý. Dữ liệu được gửi đi từ một nót nào đó sẽ có thể được tiếp nhận bởi tất cả các nót còn lại. Ví dô : mạng xa lé (bus), mạng vòng (ring) hoặc vệ tinh (satelite). Giao thức mạng : Để trao đổi được thông tin trên mạng cần phải có những quy tắc quy ước nhất định, từ khuôn dạng (cú pháp, ngữ nghĩa) của dữ liệu cho tới các thủ tục gửi, nhận dữ liệu kiểm soát hiệu quả và chất lượng truyền tin, xử lý lỗi và sự cố. Những qui tắc, quy ước đó được gọi là giao thức (protocol) của mạng. I.3 Phân loại mạng máy tính Có nhiều cách phân loại mạng máy tính khác nhau. Trong đó, các yếu tố chính được chọn làm chỉ tiêu phân loại là “khoảng cách điạ lý”, “kỹ thuật chuyển mạch”, “kiến trúc mạng”,… Dùa trên chỉ tiêu về “khoảng cách địa lý” thì có mạng cục bộ, mạng đô thị, mạng diện rộng, và mạng toàn cầu . Mạng cục bộ (LAN - Local Area Networks) : là mạng được cài đặt trong một phạm vi tương đối nhỏ (toà nhà, trường học, …) với khoảng cách lớn nhất giữa các máy tính nót mạng chỉ trong vòng vài chục km trở lại. Mạng đô thị (MAN – Metropolitan Area Networks) : là mạng được cài đặt trong phạm vi một đô thị hoặc một trung tâm kinh tế – xã hội có bán kính khoảng 100 km trở lại. Mạng diện rộng (WAN - Wide Area Networks) : phạm vi của mạng có thể vượt qua biên giới quốc gia và thậm chí cả lục địa. Mạng toàn cầu (GAN – Global Area Networks) : phạm vi của mạng trải rộng khắp các lục địa của Trái Đất. Dùa trên chỉ tiêu “kỹ thuật chuyển mạch” thì ta sẽ có mạng chuyển mạch kênh, mạng chuyển mạch thông báo, và mạng chuyển mạch gói. Mạng chuyển mạch kênh (circuit – switched networks) : Khi có 2 thực thể cần trao đổi thông tin với nhau thì giữa chúng sẽ thiết lập một “kênh” (circuit) cố định và được duy trì cho đến khi mét trong hai bên ngắt liên lạc. Các dữ liệu chỉ được truyền trên con đường cố định đó. Mạng chuyển mạch thông báo (message – switched networks) : Thông báo (message) là một đơn vị thông tin có khuôn dạng đã được qui định trước và đều có chứa vùng thông tin điều khiển chỉ rõ đích của thông báo. Mỗi nót trung gian sẽ đọc thông tin này và chuyển thông báo tới nót kế tiếp theo đường dẫn tới đích của nó. Các thông báo khác nhau có thể gửi đi trên các con đường khác nhau. Mạng chuyển mạch gói (packet – switched networks) : Mỗi thông báo được chia thành nhiều phần nhỏ hơn gọi là các gãi tin (packet) có khuôn dạng đã định trước. Mỗi gói tin cũng chứa các thông tin điều khiển, trong đó có địa chỉ nguồn và đích của gói tin. Các gói tin thuộc về một thông báo nào đó có thể được gửi đi qua mạng để tới đích bằng nhiều con đường khác nhau. II. Kiến trúc phân tầng và mô hình OSI II.1 Kiến trúc phân tầng Để giảm độ phức tạp của việc thiết kế và cài đặt mạng, hầu hết mạng máy tính hiện có đều được phân tích thiết kế theo quan điểm kiến trúc phân tầng (layering). Với nguyên tắc là : mỗi hệ thống trong một mạng đều có cấu trúc tầng như nhau. Sau khi đã xác định số lượng tầng và chức năng của mỗi tầng, tiếp theo sẽ định nghĩa mối quan hệ (giao diện) giữa 2 tầng kề nhau và mối quan hệ giữa 2 tầng đồng mức ở 2 hệ thống nối kết với nhau. Trong thực tế, dữ liệu không được truyền trực tiếp từ tầng i ở hệ thống này tới tầng i của hệ thống khác (ngoại trừ tầng thấp nhất sử dụng đường truyền vật lý) mà đi từ tầng cao tới tầng thấp ở hệ thống gửi (Sender) và đi ngược lên ở hệ thống nhận (Receiver). Vì vậy giữa hai hệ thống nối kết nhau chỉ có tầng thấp nhất mới có liên kết vật lý còn ở các tầng cao hơn chỉ là liên kết logic (hay liên kết ảo). Giao thøc tÇng N TÇng N … TÇng i+1 TÇng i … TÇng 1 TÇng N … TÇng i+1 TÇng i … TÇng 1 Giao thøc tÇng i+1 Giao thøc tÇng i Giao diÖn i+1/i Giao thøc tÇng 1 S¬ ®å kiÕn tróc ph©n tÇng tæng qu¸t §­êng truyÒn vËt lý II.2 Mô hình OSI Giao thøc tÇng 7 øng dông 7 Tr×nh diÔn 6 Phiªn 5 Giao vËn 4 M¹ng 3 Liªn kÕt d÷ liÖu 2 VËt lý 1 7 Application 6 Presentation 5 Session 4 Transport 3 Network 2 Data Link 1 Physical Giao thøc tÇng 6 Giao thøc tÇng 5 Giao thøc tÇng 4 Giao thøc tÇng 3 Giao thøc tÇng 2 Giao thøc tÇng 1 M« h×nh OSI 7 tÇng §­êng truyÒn vËt lý Khi thiết kế, các nhà thiết kế tự do lùa chọn kiến trúc mạng riêng của mình. Từ đó dẫn đến tình trạng không tương thích giữa các mạng và gây trở ngại cho sự tương tác của người sử dụng giữa các mạng khác nhau. Điều này đã thúc đẩy các nhà nghiên cứu, thông qua các tổ chức chuẩn hoá quốc tế tìm ra khung chuẩn về kiến trúc mạng làm căn cứ cho việc thiết kế và chế tạo các sản phẩm về mạng. Và năm 1984, ISO đã cho ra đời mô hình OSI (Reference Model for Open Systems Interconnection) hay mô hình tham chiếu cho việc nối kết các hệ thống mở. Mô hình này được dùng làm cơ sở để nối kết các hệ thống mở phục vụ cho các ứng dụng phân tán. Kiến trúc của mô hình OSI bao gồm 7 tầng, tên gọi của mỗi tâng như được chỉ ra trong ở sơ đồ trên. Chức năng của mỗi tầng là như sau : Tầng Physical : Liên quan đến nhiệm vụ truyền dòng bit, không có cấu trúc qua đường truyền vật lý nhờ các phương tiện cơ, điện, hàm, thủ tục. Tầng Data Link : Cung cấp phương tiện để truyền thông tin qua liên kết vật lý đảm bảo tin cậy, gửi các khối dữ liệu (frame) với các cơ chế đồng bộ hoá, kiểm soát lỗi và kiểm soát luồng dữ liệu. Tầng Network : Thực hiện chọn đường và chuyển tiếp thông tin với công nghệ chuyển mạch thích hợp, thực hiện kiểm soát luồng dữ liệu và cắt/hợp dữ liệu nếu cần. Tầng Transport : Thực hiện việc truyền dữ liệu giữa 2 đầu mót; thực hiện cả việc kiểm soát lỗi và kiểm soát luồng dữ liệu giữa 2 đầu mót. Cũng có thể thực hiện việc ghép kênh (multiplexing) cắt/hợp dữ liệu Tầng Session : Cung cấp phương tiện quản lý truyền thông giữa các ứng dụng; thiết lập, duy trì, đồng bộ hoá và huỷ bỏ các phiên truyền thông giữa các ứng dụng. Tầng Presentation : Chuyển đổi cú pháp dữ liệu để đáp ứng yêu cầu truyền dữ liệu của các ứng dụng qua môi trường OSI. Tâng Application : Cung cấp các phương tiện để người sử dụng có thể truy nhập được vào môi trường OSI, đồng thời cung cấp các dịch vụ thông tin phân tán. II.3 Phương thức hoạt động (Có liên kết và không liên kết) Tại mỗi tầng OSI có 2 phương thức hoạt động chính là phương thức có liên kết (connected – oriented) và phương thức không liên kết (connectionless). Với phương thức có liên kết quá trình truyền thông phải gồm 3 giai đoạn là : Thiết lập liện kết (logic) : hai thực thể đồng mức ở 2 hệ thống sẽ thương lượng với nhau về tập các tham số sẽ sử dụng trong giai đoạn sau. Truyền dữ liệu : dữ liệu được truyền với các cơ chế kiểm soát và quản lý kèm theo để tăng cường độ tin cậy và hiệu quả. Huỷ bỏ liên kết (logic) : giải phóng các tài nguyên hệ thốngđã cấp phát. Với phương thức không liên kết thì không cần thiết lập liên kết logic và mỗi đơn vị dữ liệu được truyền là độc lập với các đơn vị dữ liệu trước hoặc sau nã. III. Internet III.1 Giới thiệu về Internet Tiền thân của Internet là ARPANET một mạng máy tính được xây dựng bởi một cơ quan của Bộ quốc phòng Mỹ là ARPA (Advanced Research Projects Agency) hay Cục các dự án nghiên cứu tiến tiến. Khởi đầu từ 6/1968 nhưng phải đến mùa thu năm 1969 mới đánh dấu sự ra đời của mạng ARPANET chỉ với 4 máy trạm và giao thức sử dụng là NCP (Network Control Protocol). Sau đó, cùng với sự ra đời và phát triển của các công nghệ mới, đó là họ giao thức TCP/IP (sau này đã thay thế cho NCP) và mạng cục bộ Ethernet. ARPANET như được tiếp thêm sức mạnh đã liên tục mở rộng và trở thành mạng quốc gia. Do sù ra tăng quá nhanh về số lượng các thành viên của mạng ARPANET đã gây khó khăn trong vấn đề quản lý. Vì vậy, đầu năm 1980, Bộ quốc phòng Mỹ (Departement of Defense – DoD) đã quyết định tách phần “quân sự” ra thành mạng Milnet còn phần “dân sự” vẫn được gọi là ARPANET. Chính trong giai đoạn đó, Uỷ ban Khoa học Quốc gia NSF (National Science Foundation) với vai trò tiên phong đã bảo trợ cho 5 trung tâm siêu tính của toàn liên bang và kết nối chúng lại với nhau thành mạng xương sống (backbone). ARPANET/Internet chính thức bước vào giai đoạn bước ngoặt lịch sử của mình. Chỉ trong một thời gian ngắn, Internet đã nhanh chóng vượt ra khỏi nước Mỹ và trở thành một mạng toàn cầu với sự tham gia của hàng chục triệu người trên trái đất. Internet cho phép nối kết nhiều mạng với kiến trúc khác nhau bằng các cầu nối đa giao thức (multiprotocol gateway). Internet mạng của các mạng, một công nghệ điển hình về nối kết các hệ thống mở, nền tảng chủ yếu là giao thức TCP/IP. III.2 Giao thức TCP/IP TCP/IP không phải là giao thức độc lập mà nó gồm một họ các giao thức khác nhau. Trong đó có 2 giao thức chính là giao thức IP và giao thức TCP. III.2.1 Giao thức IP (Internet Protocol) Khái niệm : IP là giao thức tương ứng với tầng mạng trong mô hình OSI, được thiết kế cho mạng có sử dụng phương thức chuyển mach gãi (packet – switching). IP sẽ đảm nhận việc gửi những gói dữ liệu đã được đóng gói sẵn (datagram) từ địa chỉ nguồn tới địa chỉ đích. Đồng thời IP cũng đảm nhận chức năng tách và hợp những gói dữ liệu lớn thành những gói dữ liệu nhỏ hơn trong trường hợp mạng truyền tin chỉ có thể gửi được những gói dữ liệu nhỏ. Mục đích chính của IP là cung cấp khả năng kết nối các mạng con thành liên mạng để truyền dữ liệu. Đây là giao thức “không có liên kết”. Hoạt động : Hoạt động của giao thức IP được tiến hành với sự phối hợp của một loạt các giao thức truyền tin khác : ICMP, ARP, Routing để đảm bảo việc truyền dữ liệu đạt hiệu quả. Trước hết, giao thức ARP (Address Resolution Protocol) được sử dụng để tìm địa chỉ vật lý tương ứng với địa chỉ IP của máy nhận và gói vào trong gãi tin của tầng vật lý. Trong trường hợp địa chỉ IP nhận và địa chỉ IP gửi có địa chỉ mạng khác nhau, router được sử dụng để tìm ra đường đi từ nơi gửi tới nơi nhận tuỳ theo từng thuật toán tìm đường được sử dụng. Vì giao thức IP là giao thức không có hình thức kiểm soát lỗi nên việc thông báo về lỗi tới người gửi được thực hiện bằng giao thức ICMP (Internet Control Message Protocol). Địa chỉ IP : địa chỉ IP được chia làm 2 phần là địa chỉ mạng và địa chỉ nót. Địa chỉ IP (v4) là một số 4 bytes (32 bit) và chia thành các líp sau : class A : (1.x.x.x.x -> 126.x.x.x) 0 NetId (bit 24-30) HostId(bit 0-23) class B : (128.1.x.x -> 191.254.x.x) 1 0 NetId (bit 16-29) HostId(bit 0-15) class C : (192.0.1.x -> 223.255.254.x) 1 1 0 NetId (bit 8-28) HostId(bit 0-7) class D : (224.0.0.0 -> 239.255.255.255) 1 1 1 0 Multicass Address class E : 1 1 1 1 0 Reserved for future use III.2.2 Giao thức TCP (Transmission Control Protocol) TCP là một giao thức “có liên kết” nghĩa là cần phải thiết lập liên kết (logic) giữa một cặp thực thể TCP trước khi chóng trao đổi dữ liệu với nhau, và giải phóng liên kết khi kết thúc trao đổi dữ liệu. Giao thức TCP cung cấp khả năng truyền dữ liệu một cách an toàn giữa các máy trạm trong mạng chuyển mạch gói. Nó cung cấp thêm các chức năng nhằm kiểm tra tính chính xác của dữ liệu khi đến và bao gồm cả việc gửi lại dữ liệu khi có lỗi xẩy ra. III.3 Các dịch vụ thông tin trên Internet DNS (Domain Name System) : Dịch vụ tên miền Telnet : Dịch vụ đăng nhập từ xa FTP (File Transfer Protocol) : Truyền tệp E-Mail (Electronic Mail) : Gửi thư điện tử News groups : Dịch vụ nhóm tin Archie : Tìm kiếm tệp Gopher : Tra cứu thông tin theo thực đơn WAIS (Wide Area information Server ) : Tìm kiếm thông tin theo chỉ số. World Wide Web (hay Web) : Công nghệ WWW dùng để xử lý các trang dữ liệu đa phương tiện và truy nhập trên mạng diện rộng như trên Internet. Bản chất của WWW là sự hết hợp của Internet, siêu văn bản và mulitmedia. WWW hoạt động theo mô hình Client/Server. Tại trạm Client người sử dụng sẽ dụng một chương trình Web Browser để truy nhập đến một Web Server thông qua một địa chỉ URL. Đây là một dịch vụ hấp dẫn nhất trên Internet và có khả năng tích hợp với các dịch vụ thông tin khác như FTP, Gopher,WAIS, Email,.... CHƯƠNG IV – kiến trúc CLIENT/SERVER Trước khi tìm hiểu chi tiết về kiến tróc Client/Server chóng ta hãy cùng xem xét một chút về giai đoạn hình thành và phát triển của một công nghệ mới có tính đột phá và cũng là kết quả tất yếu – Công nghệ Client/Server. Đối với mỗi người, để có được những thành đạt trong cuộc sống hẳn cũng phải trải qua những thất bại, những bước vấp ngã trong những thuở ban đầu. Quá trình tìm ra một công nghệ mới cũng không phải là một ngoại lệ. Những nhà nghiên cứu cũng phải trải qua cả một giai đoạn khó khăn xây dựng, đánh giá, và tìm kiếm con đường đúng đắn nhất. Khởi đầu từ một dự án nhỏ của một bộ quốc phòng Mỹ đã tạo nên một mạng máy tính toàn cầu Internet lớn như ngày nay. Và khi đã có mạng máy tính, làm thế nào để chúng ‘hiểu’ và ‘nói chuyện’ được với nhau ? Đó chính là điểm xuất phát để cho ra đời công nghệ một công nghệ mới – công nghệ Client/Server. Ngay trong giai đoạn đầu, công nghệ Client/Server đã thu hót được sự quan tâm, chú ý của rất nhiều người. Đã có nhiều mô hình Client/Server xuất hiện, trong đó mỗi mô hình đều có những ưu và nhược điểm riêng. Nhưng chúng đều đã chứng tỏ được một vai trò quan trọng mình. Và hiện nay, tất cả các ứng dụng trên mạng hầu như đều tuân theo mô hình Client/Server mà điển hình là Word Wide Web. I. Khái niệm Trên thực tế, mô hình Client/Server có một phạm vi ứng dụng rất rộng nhưng đều gắn liền với hạ tầng mạng truyền thông. Hay nói một cách khác, mô hình Client/Server chỉ chứng tỏ được vai trò to lớn của nó trong môi trường mạng. Tính toán phân tán trên mạng giê đây không còn là vấn đề xa lạ.Với những bài toán lớn, việc thực hiện trên một máy tính hẳn không thể bằng thực hiện trên nhiều máy tính khác nhau. Và cũng có những bài toán hay ứng dụng có thể chia nhỏ thành các phần khác nhau ví dụ như phần tính toán hay phần xử lý dữ liệu và phần ra kết quả hay phần trình diễn. Người ta cũng nghĩ rằng có thể thực hiện những chức năng này trên những máy khác nhau. Một máy tính có tốc độ nhanh, tài nguyên mạnh sẽ đảm nhiệm chức năng tính toán, xử lý dữ liệu đó chính là phần Server, và một máy tính cần có hỗ trợ giao diện đồ hoạ đẹp, tương tác với người sử dụng một cách thuận tiện sẽ đảm nhận chức năng trình diễn ứng dụng đó chính là máy Client. Giữa Server và Client sẽ hình thành nên một sợi dây liên hệ với nhau. Server và Client cũng không nhất thiết phải nằm trên những máy khác nhau nếu như một máy tính có tất cả các chức năng này. Thực ra đó cũng không phải là điểm mấu chốt của vấn đề, khi mà một máy Server có thể đảm nhiệm các chức năng cho nhiều Client. Khi cần, một Client sẽ gửi yêu cầu tới Server và đợi kết quả, Server sẽ nhận, phân tích và xử lý yêu cầu đó rồi gửi trả kết quả lại cho Client. Một ví dụ tiêu biểu cho bài toán này là ứng dông CSDL. Khi có một lượng lớn dữ liệu cần cung cấp cho nhiều máy khác nhau, vậy thì phải làm thế nào ? giải pháp sao chép chúng cho mỗi máy khác nhau thực không hợp lý chút nào. Tuy rằng nó có thể đáp ứng việc sử dụng dữ liệu cho mỗi máy. Nhưng một khi dữ liệu đã thay đổi thì lại phải làm lại từ đầu ? đó là chưa kể đến việc tốn kém trong lưu trữ và nhiều vấn đề khác. Vậy thì giải pháp sẽ là một máy sẽ quản lý CSDL đó chính Server, các máy khác đóng vai trò như một Client, khi có nhu cầu sử dụng dữ liệu thì chỉ việc gửi yêu cầu tới Server, Server đảm nhận việc xử lý dữ liệu và gửi trả lại kết quả cho Client. Mô hình Client/Server có một vai trò rất quan trọng và có một phạm vi ứng dụng rất lớn. Sau đây sẽ là một định nghĩa của mô hình Client/Server : Client/Server là một công nghệ trong đó một công việc hay một ứng dụng được phân chia thành 2 phần : Client/Server. Mỗi phần này được coi như là một modul chương trình độc lập và từ một modul này mới phân nhỏ thành nhiều modul khác. Kiến trúc này thể hiện một dạng đặc biệt của mô hình xử lý hợp tác phân tán (Distributed Cooperative Processing), trong đó mối quan hệ giữa Client và Server là mối quan hệ giữa cả các thành phần phần cứng và phần mềm. Request Xét trên quan hệ phần cứng thì Client/Server có thể là 2 máy tính khác nhau được nối với nhau qua một mạng máy tính. Còn trên quan hệ phần mềm , thì Client đảm nhiệm chức năng giao tiếp với người sử dụng, là giao diện của ứng dụng, nơi khởi phát và gửi các yêu cầu về dịch vụ đến Server. Server đóng vai trò Result Client Server như cái lõi của ứng dụng, là nơi nhận, phân tích, xử lý các yêu cầu, sau đó gửi các dữ liệu trả lời về Client. Server không bao giê khởi tạo hội thoại cùng với Client. Sự phân biệt giữa Client và Server chỉ có tính chất tương đối, nghĩa là một Server cũng có thể trở thành một Client khi nó cần yêu cầu tới một Server khác và ngược lại. II. Các mô hình Client/Server Có 3 mô hình Client/Server chính là mô hình Host-based, mô hình Master-Slave và mô hình Client/Server. II.1 Mô hình Host-based Đây là mô hình tính toán đầu tiên, trong đó máy chủ (Host) được nối với đầu cuối (Terminal) không thông minh. Người sử dụng sẽ giao tiếp với máy chủ thông qua màn hình Terminal theo cơ chế dòng lệnh. Đầu cuối nhận đầu vào từ người sử dụng và gửi đến máy chủ, sau đó biểu diễn dữ liệu nhận từ máy chủ. Mô hình này bao gồm cả môi trường Mainframe và các hệ thống Mini truyền thống. II.2 Mô hình Master-Slave So với mô hình Host-based thì các Slave thông minh hơn nhưng vẫn phụ thuộc vào hệ thống trung tâm gọi là Master. Các Slave có thể xử lý các ứng dụng địa phương trong một giới hạn nào đó như soạn thảo, xử lý các phím chức năng,… Đây cũng là một phương tiện làm việc khá hiệu quả. II.3 Mô hình Client/Server Mô hình này là mức phát triển cao hơn so với các mô hình ở trên. Các chương trình ứng dụng bây giê nằm trên cả Client lẫn Server. ứng dụng mang tính chất phân tán. III. Vai trò của mô hình Client/Server Công nghệ Client/Server có vai trò rất quan trọng, nhưng không phải vì thế mà tất cả các ứng dụng đều có thể triển khai theo công nghệ này. Sau đây sẽ là một số phương hướng có thể áp dông : Khi cần thực hiện một ứng dụng hỗ trợ nhiều người sử dụng Khi cần thực hiện ứng dụng truy nhập từ xa Khi cần viết các ứng dụng mạnh, khả chuyển và dễ dàng trong mở rộng, bảo trì. Để giảm tắc nghẽn trên mạng : ví dụ với ứng dụng CSDL, một chương trình máy khách (Client) cần tính toán trên một số lượng dữ liệu lớn, nó chỉ cần gửi yêu cầu này tới Server, Server sẽ nhận yêu cầu này, sau đó truy nhập CSDL, tính toán và gửi trả kết quả cho Client. Kết quả thường ngắn hơn rất nhiều so với lượng dữ liêu cần để tính toán. Vì vậy, chương trình máy khách vẫn tính được kết quả mà không cần phải lấy toàn bộ dữ liệu về. Điều đó sẽ giảm được tình trạng tắc nghẽn trên mạng. IV. Các kiến trúc Client/Server Kiến tróc Client/Server thực sự không đơn giản và có nhiều kiểu kiến trúc khác nhau. Sự lùa chọn giữa các kiểu kiến trúc này cũng là cả một vấn đề lớn. Một ứng dụng có thể gồm 3 thành phần : trình diễn, xử lý và dữ liệu. Kiến trúc Client/Server có thể phân chia các thành phần này thành các thực thể phần mềm và phân tán chúng trên mạng. Có nhiều cách phân chia các tài nguyên này và cũng tạo nên nhiều cách thực hiện kiến trúc Client/Server. IV.1 Kiến trúc 2 tầng (Two - Tier Architecture) Sơ đồ kiến trúc 2 tầng Kiến trúc này gồm 2 thực thể phần mềm (hay tier) chính là ứng dụng máy khách (Client Application) và máy chủ CSDL (Database Server). Chức năng trình diễn được thực hiện ở chương trình máy khách, chức năng xử lý được tách ra giữa Client và Server, còn dữ liệu được lưu trữ và truy nhập thông qua Server. Yêu cầu từ Client gửi tới Server thường là lời gọi SQL. Và để truy nhập được tới Server, Client phải biết được vị trí Server, và cú pháp lệnh truy nhập tới Server hay ngôn ngữ API (Application Program Interface). Ưu điểm : Có nhiều thuận lợi về tốc độ phát triển ứng dông Đa số các công cụ cho kiến trúc 2 tầng là rất mạnh Làm việc tốt trong môi trường đồng nhất, Ýt có biết động. Nhược điểm : Khó khăn trong phân tán và kiểm soát các phiên bản của ứng dông. Việc đảm bảo an toàn hệ thống là khá phức tạp. Bởi mỗi người sử dụng đều cần password để truy nhập tới Database Server. Các công cụ máy khách và phần mềm trung gian có tính độc quyền cao và có thể biến đổi liên tục ảnh hưởng đến tính lâu dài của ứng dụng. IV.2 Kiến trúc 3 tầng (Three - Tier Architecture) Sơ đồ kiến trúc 3 tầng Kiến tróc 3 tầng có phần mềm dẻo hơn kiến trúc 2 tầng. Trong đó 3 chức năng chính được tách riêng thành các thực thể khác nhau. Tầng trình diễn có thể sử dụng cùng một công cụ của kiến trúc 2 tầng. Nhưng chức năng xử lý, tính toán, được dồn chủ yếu vào tầng trung gian là Functionality Server (hay Application Server). Tầng này lại có thể tạo và gửi yêu cầu tới các Server khác (thường là Database Server). Functionality Server cũng phải là đa tuyến, hay có thể được truy nhập bởi nhiều Client, và có tính linh động cao. Trong khi đó, ứng dụng phía client có thể áp dụng nhiều công nghệ khác nhau để truy nhập tới Server ở tầng trung gian như RMI, Corba, HTTP,… thông thường là phương pháp gọi thủ tục từ xa RPC (Remote Procedure Call). Ưu điểm : Phương pháp RPC từ client tới server ở tầng trung gian là mềm dẻo hơn so với các lời gọi SQL trong kiến trúc 2 tầng. Và vì vậy cũng không đòi hỏi tầng thứ 3 (Client) phải hiểu được SQL. Điều này cũng cho phép sử dụng các công nghệ mới truy nhập dữ liệu một cách dễ dàng hơn mà không cần phải thay đổi lại các ứng dụng đầu cuối. Các thực thể phần mềm tách riêng cho phép phát triển song song các tầng bởi các chuyên gia ứng dụng. Cung cấp một sự định vị tài nguyên linh động. Các Functionality Server ở tầng trung gian có thể chuyển dịch được khi cần thay đổi lại tổ chức. Đồng thời cũng giảm lưu thông dữ liệu thừa trên mạng, bởi các Functionality Server đã xử lý dữ liệu và chuyển thành cấu trúc xác định trước khi phân tán nó cho các client. Khả năng tái sử dụng lại các modul của tầng trung gian bởi một vài ứng dụng khác. Tiết kiệm được thời gian phát triển các ứng dụng con, tối thiểu hoá việc bảo trì và giảm chi phí khi chuyển đổi các ứng dụng máy khách. Thuận lợi trong việc bổ sung thềm nhiều tính năng và hỗ trợ phát triển các ứng dụng phân tán. Nhược điểm : Tăng nhu cầu quản lý lưu thông trên mạng, cân bằng tải server và các kiểm soát lỗi. Xây dựng các server ở tầng trung gian là khá phức tạp. Thực hiện các phương tiện bảo trì là khó khăn. IV.3 Kiến trúc đa tầng (Multi - Tier Architecture) Kiến trúc đa tầng là một bước phát triển cao hơn so với 2 kiến trúc ở trên. Trong đó một Functionality Server có thể kết nối tới nhiều Database Server hoặc nhiều Functionality Server khác. Kiến trúc này thực sự phức tạp và phục vụ trong môi trường phân tán đòi hỏi xử lý nhiều giao dịch với các nhiều kiểu thao tác khác nhau. IV.4 Kết luận Mặc dù kiến trúc Client/Server là rất phức tạp và nói chung được chia làm 2 kiến trúc hạ tầng khác nhau (2 tầng hoặc 3 tầng). Kiến trúc 2 tầng có thời gian phát triển nhanh hơn so với kiến trúc 3 tầng nhưng bù lại chi phí bỏ ra cho sự bảo trì, nâng cấp lại lớn hơn rất nhiều so với kiến trúc 3 tầng. Sự lùa chọn giữa 2 kiến trúc này nên dùa trên phạm vi, tính phức tạp của dự án, thời gian hoàn thành, sự tăng trưởng hay chu kỳ của hệ thống. CHƯƠNG V – LậP TRìNH SOCKET Và MULTITHREADING I. Khái niệm Socket Socket là một giao diện lập trình gồm một tập các hàm và thủ tục cho phép truyền thông giữa các tiến trình trên cùng một máy tính hoặc trên các máy khác nhau của mạng. Socket là một giao diện lập trình được phát triển bởi trường đại học Berkeley, hỗ trợ cho nhiều giao thức khác nhau. Socket đại diện cho một kênh truyền thông giữa 2 tiến trình đang chạy trên mạng. Mỗi Socket được cấu trúc bởi một địa chỉ cổng (Port) TCP và địa chỉ (Address) IP để tầng TCP có thể xác định được ứng dụng mà dữ liệu định gửi đến. Do đó mỗi tiến trình trên mạng được xác định một cách duy nhất thông qua Socket tương ứng với nó. Mét Socket có thể tham gia vào nhiều liên kết với các Socket ở xa khác nhau. II. Các loại Socket Có 2 loại Socket là Datagram Socket và Stream Socket. Cả 2 loại này đều là những luồng dữ liệu có thể truyền thông 2 chiều đồng thời (full-duplex). Stream Socket : cung cấp một luồng dữ liệu không có ranh giới bản ghi hay luồng byte, được đảm bảo phân phối (delivered), tuần tù (sequenced) và không trùng lặp (unduplicated). Stream phải dùa trên một kết nối tường minh, hay phải qua giai đoạn thiết lập kết nối trước khi trao đổi dữ liệu (ví dụ theo giao thức TCP). Datagram Socket : hỗ trợ luồng dữ liệu hướng bản ghi, không đảm bảo sẽ được phân phối và có thể không tuần tự hoặc không trùng lặp. Đây là Socket không hướng kết nối, nghĩa là có thể gửi hay nhận thông điệp từ một Socket xác định mà không cần phải tạo một kết nối (ví dụ tuân theo giao thức UDP). Tính chất tuần tù có nghĩa là các gói tin được phát đi đúng như thứ tù gửi, còn tính không trùng lặp có nghĩa là các gói tin riêng biệt chỉ được nhận đúng một lần. III. Sử dụng Socket Các Socket được sử dụng chủ yếu trong 3 ngữ cảnh truyền thông sau : Các mô hình Client/Server Các ứng dụng ngang hàng (Peer – to Peer Scenarios) ví dô : Chat Applications Gọi thủ tục từ xa (RPC Remove Procedure Call) , các ứng dụng phiên dịch các thông điệp nhận được như lời gọi hàm. IV. Mô hình lập trình sử dụng Socket Một tiến trình muốn sử dụng Socket, trước hết nó phải tạo ra một đối tượng mô tả Socket (gồm loại địa chỉ, loại Socket và giao thức). Và để truyền thông được với một tiến trình khác nó phải thực hiện bind cấu trúc mô tả Socket của nó với một điạ chỉ Socket (gồm địa chỉ IP và số port). Sau khi đã được tạo ra , địa chỉ của Socket là không thể thay đổi. Có 2 mô hình lập trình socket là mô hình sử dụng Datagram Socket và mô hình sử dụng Stream Socket. IV.1 Mô hình sử dụng Datagram Socket Server Socket Client Socket S=socket(AF_INET,SOCK_DGRAM,0) S=socket(AF_INET,SOCK_DGRAM,0) bind(S,ServerAddress) bind(S,ClientAddress) amount=recvfrom(S, buffer, from) … sento(S,”message”, ClientAddress) … sento(S,”message”, ServerAddress) … amount=recvfrom(S, buffer, from) … closesocket(S) closesocket(S) Mô hình lập trình sử dụng Datagram Socket Cấu tróc SOCKET được xem là một đối tượng (object) được xây dựng nên bởi 3 thành phần (thông qua lời gọi hàm socket(…)) : Họ địa chỉ (Address Family) : ví dụ AF_INET (Address Family Internet) Kiểu của Socket (SOCK_DGRAM/SOCK_STREAM) Giao thức (Protocol) được sử dông : nếu bằng 0 hệ thống sẽ tự xác định giao thức thích hợp. IV.2 Mô hình sử dụng Stream Socket Mô hình này cũng gồm 2 phần là Client Socket và Server Socket. Client Socket : cần tạo một kết nối tới server (bằng hàm connect())trước khi trao đổi dữ liệu (read(),write()). Server Socket : sau khi đã tạo một socket, bắt đầu thực hiện chức năng nghe các kết nối thông qua hàm listen(). Hàm listen ngoài tham số thứ nhất xác định SOCKET còn tham số thứ 2 gọi là backlog cho biết số lượng tối đa các kết nối tại một thời điểm. Khi có một kết nối tới, Server sẽ thực hiện gọi hàm accept chấp nhận kết nối, lúc này server cũng cần tạo ra một phân tuyến riêng (thread) phục vụ cho kết nối này, sau đó lại tiếp tục quay lại trạng thái đợi kết nối. Server Socket Client Socket S=socket(AF_INET,SOCK_STREAM,0) bind(S, ServerAddress) listen(S,5) … sNew=accept(S,from) … S=socket(AF_INET,SOCK_STREAM,0) connect(S,ServerAddress) n=read(sNew, buffer, amount) … write(sNew, buffer, length) … write(S, buffer, length) … n=read(S, buffer, amount) … closesocket(S) closesocket(S) Mô hình lập trình sử dụng Stream Socket V. Multithreading Không nói, hẳn chúng ta cũng đã biết những Ých lợi to lớn mà một hệ điều hành đa nhiệm (như Window 9x, Window NT, Unix, …) đem lại. Khác hẳn với môi trường DOS với một cơ chế tuần tự cứng nhắc, làm việc trong một hệ điều hành đa nhiệm người sử dụng luôn cảm thấy rằng mình có thể thực hiện được nhiều việc hơn, tiết kiệm thời gian hơn, thoải mái hơn vì không phải ngồi đợi không trong lóc thi hành một tác vụ như trước nữa. Đa nhiệm (Multitasking) Một hệ điều hành gọi là đa nhiệm (Multitasking) nếu nã cho phép chạy nhiều ứng dụng tại cùng một thời điểm. Người ta cũng phân biệt giữa môi trường đa nhiệm hợp tác (cooperative multitasking) và đa nhiệm ưu tiên (preemptive multitasking). Trong môi trường đa nhiệm hợp tác các ứng dụng có thể chiếm lĩnh CPU cho tới khi đã kết thúc sử dụng nó. Môi trường Windows 16 bit như Window 3.1 là một trong những ví dụ của môi trường này. Còn với đa nhiệm ưu tiên thì các ứng dụng có thể được ưu tiên xử lý sau một khoảng thời gian nhất định, không có một quy trình nào được phép chiếm giữ độc quyền điều khiển hệ thống. Các hệ Windows 32 bits (Windows 95, Window NT) đều là môi trường Preemptive Multitasking. Tiến trình (Process) Trong môi trường Preemptive Multitasking, Process là một chương trình ứng dụng đang thực thi trong hệ thống. Mỗi Process gồm Ýt nhất là mét thread để thực hiện đoạn mã lệnh của nã. Thread là một đơn vị mã lệnh được quyền chiếm lĩnh thời gian hệ thống để thực thi một cách tương tranh với các đơn vị mã khác và phải nằm trong mét process. Mỗi process có thể tạo ra nhiều thread và mỗi thread đều có thể tạo ra trong nó một hoặc nhiều thread khác nữa. Ngoài các thread ra, Process còn chứa mã lệnh, dữ liệu và một số tài nguyên khác cho chương trình như các bộ nhớ đã cấp phát, các file đã mở. Các tài nguyên này được tạo ra trong suốt quá trình sống của process và được giải phóng khi kết thúc process. Process sẽ kết thúc khi không còn một thread nào thuộc process đó đang thực thi. Một chương trình được thực hiện khi trình lập biểu hệ thống (System Scheduler) đặt một trong các thread của nó vào trong mét điều khiển thực thi (Execution Control). Trình Scheduler sẽ xác định thread nào sẽ được thực hiện thông qua mức ưu tiên (Priority) của mỗi thread. Thread nào có mức ưu tiên thấp thì phải đợi các thread có mức ưu tiên cao hơn hoàn thành thao tác của chúng. Trên các máy đa bộ vi xử lý, trình Scheduler có thể di chuyển các thread riêng rẽ lên các bộ vi xử lý khác nhau nhằm cân bằng tải CPU. Multithreading (Đa luồng) Đa luồng là khả năng một chương trình có thể tạo ra nhiều thread trong một tiến trình đơn thực hiện các tác vụ khác nhau tại cùng một thời điểm. Ví dụ, sử dụng thread để quản lý đồng thời các thao tác như bàn phím, chuột. Một thread theo dõi đầu vào từ bàn phím, một thread theo dõi sự kiện chuôt. Một thread thứ ba cập nhật màn hình dùa trên dữ liệu từ 2 thread trên. Tại cùng một thời điểm có thể có nhiều thread truy nhập tới file trên đĩa hoặc nhận dữ liệu tại cổng truyền thông. Các ứng dụng đa luồng có nhiều đòi hỏi khắt khe hơn so với các ứng dụng đơn luồng trong việc truy nhập tài nguyên hệ thống (dữ liệu, bộ nhớ,…). Bởi vì có nhiều thread khác nhau trong một ứng dụng có thể truy nhập vào cùng một tài nguyên tại cùng một thời điểm. Lúc này có thể dẫn đến tình trạng tranh chấp tài nguyên, ví dụ như các tranh chấp về dữ liệu (file, bộ nhớ) dùng chung. CHƯƠNG VI – NGÔN NGữ LậP TRìNH Và CáC công nghệ TRÊN WEB I. Ngôn ngữ lập trình Visual C++ Visual C++ là một sản phẩm phần mềm của hãng Microsoft, cung cấp một công cụ lập trình rất mạnh trên môi trường Windows. Cú pháp lệnh của Visual C++ hoàn toàn giống với ngôn ngữ C++. Đó là ngôn ngữ lập trình hướng đối tượng nhưng được thực hiện trong môi trường DOS. Đươc phát triển trên môi trường Windows, nên chương trình Visual C++ có thể sử dụng rất nhiều các tính năng hấp dẫn của một hệ điều hành đa nhiệm như tính đa luồng (multithreading), lập trình hướng sự kiện (Event – Oriented Programming) thông qua cơ chế truyền message, CSDL, … Ngoài các thư viện cơ bản của C++, Visual C++ còn được bổ sung thêm rất nhiều các thư viện mới mà điển hình là thư viện MFC (Microsoft Foundation Class). MFC cho phép các lập trình viên giảm đi rất nhiều khối lượng lập trình bằng tập các líp đã được viết sẵn. Visual C++ cung cấp một tập rất nhiều các công cụ lập trình : Active Template Library ActiveX Data Objects (ADO) ATL Tutorials C Language Reference C++ Language Reference Compiler COM Support iostream Reference Language Quick Reference Microsoft Foundation Classes MFC Tutorials OLE DB OLE DB Templates Open Database Connectivity (ODBC) Preprocessor Reference Remote Data Objects (RDO) Run-Time Library Reference Samples SQL Server Standard C++ Template Library Win32 Programming Môi trường Visual C++ gồm có Standard Editon, Professional Edition và Enterprise Edition. Enterpisse Edition được xem là đầy đủ nhất, ngoài tất cả các chức năng của lần xuất bản Professional còn có thêm một số công cụ mới làm việc với CSDL, gỡ rối, Visual SourceSafe,… II. Ngôn ngữ lập trình Java II.1 Giới thiệu về ngôn ngữ lập trình Java Java được thiết kế bởi nhóm các nhà khoa học thuộc công ty Sun Microsystems ở California. Nó xuất phát từ một dự án xây dựng phần mềm cho các thiết bị điện tử dân dụng khác nhau. Nhóm dự án cũng sớm nhận ra rằng các ngôn ngữ được ưa chuộng vào thời đó như C,C++ có nhiều khó khăn và rắc rối khi đưa vào các bộ vi xử lý mới. Chính vì vậy Java đã ra đời với mục tiêu tạo những chương trình rất nhỏ, khả chuyển, chạy nhanh và tin cậy. Java là một nền tảng độc lập có thể chạy trên hầu hết các máy tính với các platform khác nhau mà không cần thay đổi. Đây cũng là một trong những tiêu chí hàng đầu của các nhà phát triển Java. Khẩu hiệu “ Viết một lần, chạy mọi nơi” (Write Once, Run Anywhere) đã trở nên phổ biến và cũng là một mãnh lực hấp đẫn to lớn với các nhà phát triển phần mềm. Hãy thử tưởng tượng rằng chúng ta bỏ biết bao công sức để viết một phần mềm trên một hệ điều hành (ví dụ như Windows) nhưng khi cần phải triển khai trên các hệ điều hành khác (như Unix hay Linux ,…) thì lại phải viết lại thì thật tốn thời gian và công sức biết bao. Java ra đời cũng là để giải quuyết hộ các nhà lập trình vấn đề này do một kiến trúc hoàn toàn mới so với các ngôn ngữ lập trình khác. Trình biên dịch Java không dịch chương trình nguồn thành mã máy mà dịch ra dưới dạng byte code. Đó là một mã có thể hiểu được và thông dịch thành mã thực hiện bới một máy ảo Java (Java Virtual Machine). Máy ảo Java tạo thành một líp ngăn cách giữa trình ứng dụng và hệ điều hành. Tr×nh øng dông C¸c ®èi t­îng Java M¸y ¶o Java HÖ ®iÒu hµnh (Unix,Windows,OS/2) Java được xây dựng chủ yếu dùa trên bộ công cụ phát triển Java JDK (Java Developer Kit) ra đời đầu tiên vào năm 1995 với bản JDK 1.0 . Từ đó Java liên tục được phát triển và hoàn thiện và đến năm 1998 đã xuất hiện bản JDK 1.2 đánh dấu bước ngoặt rất lớn với nền Java thứ hai. Từ khi ngôn ngữ Java ra đời đã tạo ra những chuyển biến mới, những ứng dụng thực tiễn cao đặc biệt là trong các ứng dụng Web và hỗ trợ mạng Internet. Cùng với các thành tựu về công nghệ mà sau này đã có một loạt các sản phẩm liên quan đến Java đã ra đời như Java script, Java Bean, Java Applet, … Và cũng chính vì lý do đó đã thúc đẩy các nhà phát triển phầm mềm xây dựng những môi trường tích hợp mà chúng ta gọi là IDE ( IDE – Intergrated Development Environment). Trong số các IDE thông dụng phải kể đến như JBuilder, Java Workshop của Borland - Inprise, Visual J++ của Microsoft, Visual Cafe của Symantec, Oracle JDeveloper, … II.2 Các đặc tính của ngôn ngữ Java Có thể tóm tắt các đặc tính của ngôn ngữ Java trong một câu như sau : “Java là một ngôn ngữ đơn giản, hướng đối tượng, phân tán, thông dịch, mạnh mẽ, bảo mật, cấu trúc độc lập, khả chuyển, hiệu quả cao và linh động “ ( The Java TM Language : An Overview – Sun Microsystems/ 1995) Đơn giản (Simple) : Java là ngôn ngữ nhỏ gọn và dễ hiểu, bởi những người thiết kế đã có dụng ý lược bỏ những tính năng phức tạp của C hay C++ . Hướng đối tượng (Object-Oriented): xuất phát từ C++, Java là một ngôn ngữ hoàn toàn hướng đối tượng, nhưng Java cũng loại bỏ một số tính năng phức tạp trong C++ như tính đa kế thừa nhưng thay vào đó là các líp Interface. Phân tán : Java rất thích hợp cho việc tạo ra các ứng dụng phân tán thông qua các líp được đóng gói trong package java.net. Mặt khác các chương trình Java được nạp một cách linh hoạt vào máy khách trong lúc chạy, do đó tránh gây quá tải cho mạng. Thông dịch : thực sự java là ngôn ngữ vừa thông dịch vừa biên dịch nên nó có khả năng khả chuyển. Các ứng dụng Java có thể dễ dàng chạy trên các máy tính với các nền phần cứng khác nhau như Macintosh, Intel, Sun Microsystem, Alpha … chỉ cần đi kèm với các bộ thông dịch, bộ gỡ rối và nhất là bộ thư viện thời gian động Mạnh mẽ (Robust) : Chương chình java được kiểm soát chặt chẽ bởi trình thông dịch. Khi có lỗi xuất hiện trình thông dịch sẽ thực hiện một sự loại bỏ tránh các trường hợp có thể phá háng hệ thống. An toàn và Bảo mật : Trình thông dịch sẽ kiểm tra chặt chẽ các byte, không cho các hành vi không được phép nào được thực hiện. Các chương trình Java thực sự được chạy trong một “lồng” bảo vệ nên các lỗi được hạn chế và được kiểm soát chặt chẽ. Kiến tróc trung tính (Neutral architecture) : Tạo ra một máy

Các file đính kèm theo tài liệu này:

  • doc4868.doc