1. Trang chủ
  2. » Luận Văn - Báo Cáo

tiểu luận môn lập trình mạng nâng cao đảm bảo gắn bó dữ liệu khi cập nhật trong các cơ sở dữ liệu tập trung

29 573 4

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 29
Dung lượng 0,91 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Khi một trạm đã có số, nó phát yêu cầu cập nhật cùng với số này.Trên mỗi trạm, các cập nhật được thực hiện bằng cách tiếp nhận các yêucầu cùng các số liên tiếp nhau theo một trật tự.. -

Trang 1

ĐẠI HỌC ĐÀ NẴNG

- 

TIỂU LUẬN

NHẬT TRONG CÁC CƠ SỞ DỮ LIỆU TẬP TRUNG

GVHD: PGS.TS LÊ VĂN SƠN HVTH: NGUYỄN TUẤN TRUNG LỚP: CAO HỌC

CHUYÊN NGÀNH: KHOA HỌC MÁY TÍNH KHÓA: 24

Đà Nẵng - Năm 2012

Trang 2

MỤC LỤC

***

MỞ ĐẦU 2

CHƯƠNG I: CƠ SỞ LÝ THUYẾT 3

1.1 Thuật toán đảm bảo gắn bó yếu nhờ bộ tuần tự tuần hoàn 3

1.2 Thuật toán đảm bảo gắn bó mạnh 4

1.3 Giao tiếp theo mô hình Client/ Server và khái niệm Socket 5

CHƯƠNG II: GIỚI THIỆU BÀI TOÁN 10

2.1 Mô tả bài toán 10

2.2 Cơ sở dữ liệu 11

CHƯƠNG III: GIẢI QUYẾT BÀI TOÁN 16

3.1 Xây dựng Server 16

3.2 Xây dựng Client 18

3.3 Xây dựng Monitor để quản lí hệ thống 18

3.4 Một số kết quả chương trình 20

CHƯƠNG IV: KẾT LUẬN 26

4.1.Những vấn đề thực hiện được 26

4.2 Hạn chế 26

TÀI LIỆU THAM KHẢO 27

Trang 3

MỞ ĐẦU

Hệ tin học phân tán là hệ thống tin học hiện đại, đa dạng, phức tạp và đang trên đà phát triển, được nhiều trường đại học, nhiều chuyên gia công nghệ thông tin quan tâm nghiên cứu với nhiều công trình khoa học có giá trị về mặt nguyên lý, phương pháp cũng như ứng dụng trong thực tế

Thông qua môi trường mạng, con người có thể giao tiếp với nhau và chia sẻ thông tin dữ liệu dù ở khoảng cách rất xa Vấn đề đặt ra là làm sao đảm bảo dữ liệu trên mạng phải thống nhất Đây cũng chính là một trong những yêu cầu chính của lĩnh vực Lập trình mạng trên hệ phân tán.

Nội dung chủ yếu trình bày trong tiểu luận này là giải quyết một vấn

đề về lập trình mạng, đó là chia sẻ cơ sở dữ liệu giữa các đối tượng ở xa

và đảm bảo tính gắn bó của dữ liệu Chương trình được viết trên ngôn ngữ Java và sử dụng cơ sở dữ liệu MySQL

Tôi xin chân thành cảm ơn PGS.TS Lê Văn Sơn đã cung cấp kiến

thức và tài liệu để tôi có thể hoàn thành tiểu luận này.

Do thời gian và kiến thức có hạn nên tiểu luận này không tránh khỏi những thiếu sót, rất mong nhận được sự đóng góp ý kiến của thầy và các anh chị đồng nghiệp để tiểu luận được hoàn thiện hơn.

Xin chân thành cảm ơn!

Trang 4

CHƯƠNG I : CƠ SỞ LÝ THUYẾT

1.1 Thuật toán đảm bảo gắn bó yếu nhờ bộ tuần tự tuần hoàn:

1.1.1 Nguyên lý:

Trước khi phát một yêu cầu, một trạm nào đó cần phải kết hợp với

nó một số thứ tự được cấp từ bộ tuần tự tuần hoàn Các yêu cầu được tiếp

nhận tại mỗi trạm theo cùng một trật tự thống nhất Điều đó giúp ta có đượcmột sự gắn bó yếu Cần quan tâm rằng cơ chế phân phối các số dựa trên

nền tảng tổ chức các trạm theo kiểu vòng tròn ảo.

1.1.2 Triển khai hệ ổn định:

Bộ tuần tự cung cấp cho mỗi một yêu cầu số sắp tới còn chưa dùng,giả sử đó là T Khi đến phiên của trạm nhận bộ phận tuần tự, nó yêu cầumột số lượng n số đúng bằng số lượng các yêu cầu cập nhật đang chờ trêntrạm này Các số này là: T, T + 1, T + 2, T + n – 1

Nó tiếp tục chuyển bộ tuần tự cho trạm kề liền sau nó và số sắp tớichưa dùng đến là T + n

Khi một trạm đã có số, nó phát yêu cầu cập nhật cùng với số này.Trên mỗi trạm, các cập nhật được thực hiện bằng cách tiếp nhận các yêucầu cùng các số liên tiếp nhau (theo một trật tự) Để xác định yêu cầu sắpđến cần xử lý, mỗi một trạm duy trì một biến chứa số V được phối hợp vớiyêu cầu xử lý cuối cùng Các yêu cầu mang các số lớn hơn V + 1 được lưutrữ trong khi chờ xử lý yêu cầu V + 1

Việc phát đi các yêu cầu có thể sử dụng vòng tròn, nhưng điều đókhông phải là bắt buộc

Một trạm khi đã rút một lượng số cần phải được sử dụng hết khi nóđến lượt tiếp theo tiếp nhận bộ tuần tự, nếu không các trạm khác sẽ phảichờ

Trang 5

1.2 Thuật toán đảm bảo gắn bó mạnh:

đó, ta thường hay sử dụng dấu phối hợp cho mỗi cập nhật và ta xử lý yêucầu có thời gian dấu lâu nhất

1.2.2 Triển khai hệ ổn định:

Mỗi trạm có thể có các trạng thái sau:

- Nghỉ ngơi: Trạm không thực hiện cập nhật nào cả.

- Hoạt động: Trạm đã nhận một yêu cầu cập nhật cục bộ mà yêu

cầu này đã được truyền cho các trạm khác để kiểm tra

- Thụ động: Trạm đã đồng ý cho một cập nhật và chờ trật tự tương

ứng

- Cập nhật: Trạm đang trong tình trạng chuyển của cập nhật, trong

khi đó tất cả các yêu cầu khác truyền đến đều được lưu trữ.Chúng sẽ được xử lý khi quay về một trong các trạng thái khác

Lúc khởi sự, tất cả các trạm đều trong trạng thái nghỉ ngơi.

Trạm khởi sự việc cập nhật, đầu tiên cần phải gửi một yêu cầu chophép cập nhật, nó chỉ làm được công việc đó trong trạng thái nghỉ ngơi.Lúc này nó được nhận dấu và được gửi vào vòng tròn, trạm khởi sự chuyển

trạng thái từ nghỉ ngơi sang hoạt động

Trang 6

Nếu chỉ có một yêu cầu duy nhất được đưa vào vòng tròn, nó đi qua

tất cả các trạm để chuyển các trạm này từ nghỉ ngơi sang thụ động Khi nó

đã trở về nơi khởi sự thì việc thống nhất coi như hoàn tất Việc cập nhật nóiriêng lúc này được gửi đi và mỗi trạm sau khi thực hiện lại trở về trạng tháinghỉ ngơi

Nếu có nhiều yêu cầu được đưa ra đồng thời trong vòng tròn, thì tìnhhình đó dễ dàng diễn ra xung đột Lúc này, ta phải chọn một yêu cầu cóThời gian dấu lâu nhất Để tiến hành công việc đó, ta nêu bật vai trò của “

bộ chắn đường ” (barrage) cho các trạm khởi sự Một trạm nào đó trongtrạng thái nghỉ ngơi hay thụ động phải chuyển toàn bộ yêu cầu đã đến với

nó, một trạm trong trạng thái hoạt động chỉ phải chuyển các yêu cầu có thờigian lâu hơn các yêu cầu mà chính nó đã phát đi, các yêu cầu khác đều bịdừng lại và được lưu giữ

Các yêu cầu bị lưu lại sẽ được gửi tiếp vào vòng tròn, khi trạm lưutrữ chúng hoàn thành việc cập nhật riêng của mình

1.3 Giao tiếp theo mô hình Client/ Server và khái niệm Socket:

Khi nói tới lập trình mạng ta thường nghĩ đến cách trao đổi giữa mộtchương trình phục vụ (Server) với một hay nhiều chương trình khách(Client) Chương trình khách gửi một yêu cầu tới cho chương trình phục

vụ, và chương trình này xử lý dữ liệu để trả lời cho chương trình khách

Như vậy, chương trình khách muốn gửi được yêu cầu thì trước hếtphải tìm cách kết nối với Server Server có thể chấp nhận hay từ chối sự kếtnối này Một khi sự kết nối đã được thiết lập thì Client và Server trao đổivới nhau thông qua các lớp cho phép kết nối

Các lớp trong gói java.net cung cấp các phương thức để kết nốimạng và trao đổi tin giữa các máy với nhau theo mô hình Client/Server

Trang 7

Mặt khác, trên Internet nhiều máy tính sử dụng các giao thức để trao đổivới nhau.

1.3.1 Lập trình mạng thông qua Socket:

Trước khi yêu cầu một dịch vụ trên máy chủ thực hiện điều gì đó, máy khách (client) phải có khả năng kết nối được với máy chủ (server).Quá trình kết nối này được Java thực hiện thông qua môt cơ chế trừu tượnghóa gọi là Socket (tạm dịch là “cơ chế ổ cắm”)

Nếu kết nối socket thành công thì máy khách và máy chủ có thể traođổi sữ liệu với nhau thực hiện các yêu cầu về dịch vụ trên máy chủ Việckết nối theo cơ chế socket cần biết hai thông tin chủ yếu đó là địa chỉ củamáy cần kết nối và số hiệu cổng của chương trình dịch vụ Java cung cấplớp Socket (thường được dùng cho máy khách) và lớp ServerSocket(thường được đặt trên máy chủ) Hai lớp này được đăt trong gói thư việnJava.net

Tuy nhiên, lớp Socket có thể được dùng kết nối chung cho cả máykhách và máy chủ nhưng ta vẫn thường dùng lớp ServerSocket để thựchiện việc quản lý kết nối đăt riêng ở máy chủ hơn

 Public Socket(InetAddress address, int port) throws IOException

Tạo ra một socket kết nối từ địa chỉ là đối tượng InetAddress và sốcổng port

Trang 8

 Public Socket(String host, int port, boolean stream) throwsIOException

Tạo ra một socket kết nối theo địa chỉ host và số cổng port, tham sốtream cuối cùng để quy định kết nối theo TCP (stream=true) hay UDP(stream=false)

Các phương thức khác hỗ trợ cho lớp Socket từ phía máy khách baogồm:

 InputStream getInputStream()throws IOException

Lấy về luồng nhập để máy khách có thể đọc dữ liệu trả về từ phíamáy chủ

 OutputStream getOutputStream()throws IOException

Lấy về luồng xuất để máy khách có thể ghi dữ liệu gửi đến máy chủ  InetAddress getInetAddress()

Lấy địa chỉ kết nối socket của máy chủ

 Int getPort()

Lấy về số cổng dùng kết nối của máy chủ

 Synchronized void close () throws IOException

Cắt đứt kết nối với máy chủ

Ví dụ đoạn mã sau sẽ thực hiện kết nối với máy chủ có địa chỉ

“my.testing.server” và mở ra hai luồng xuất nhập để đọc và gửi thông tinđến máy chủ có theo số cổng 1234:

try{

Socket me=new Socket(“my.testing.server”, 1234);

//Luồng nhập để đọc thông tin trả về từ máy chủ kết nối

DataInputStream in =

New DataInputStream(me.getInputStream());

//Luồng xuất để ghi thông tin gửi đến máy chủ

Trang 9

DataOutputStream out=new DataOutputStream(me.getOutputStream());Catch (Exception e){

 Public ServerSocket(int port)throws IOEXception

Port là số hiệu cổng mà đối tượng ServerSocket phải lắng nghe đểnhận biết những kết nối từ phía máy khách gửi đến

Để chờ đợi kết nối từ các máy khách gửi đến đối tương ServerSocketthường đến phương thức accept như sau:

 Socket accept()throws IOEXception

Phương thức này thực sự dừng lại chờ đợi cho đến khi nhận đượcthông tin kết nối sẽ trả về đối tượng socket của máy khách nơi có yêu cầunối vào máy chủ

Cuối cùng máy chủ có thể cắt đứt mọi kết nối bằng cách gọi phươngthức close của đối tượng ServerSocket:

 Public void close()throws IOEXception

Ví dụ đoạn mã sau sẽ tạo ra một đối tượng ServerSocket trên máychủ luôn lắng nghe kết nối từ máy khách gửi đến qua số cổng 1234

Trang 11

CHƯƠNG II : GIỚI THIỆU BÀI TOÁN

2.1 Mô tả bài toán:

Giả sử rằng ta có hệ thống CSDL phối hợp với một hoạt động đượcgọi từ xa nhằm phục vụ cho việc cập nhật hay tra cứu thông tin cần thiết.Bài toán yêu cầu viết chương trình trên ngôn ngữ Java cho phép cập nhậtCSDL có kiểm tra tính gắn bó

1 Đây là hệ đơn Server, có thể hoạt động theo mô hình Client/Serverthường gặp

2 Viết chương trình theo kiểu đa truy cập, ngẫu nhiên, từ xa với sốlượng truy cập lớn

3 Xây dựng Monitoring để Manager hệ thống có thể kiểm tra và điềukhiển quá trình thực hiện

Bài toán xây dựng một bộ phân phối tải (Bộ cung cấp tài nguyên Server) Bộ cung cấp tài nguyên căn cứ vào tài nguyên hiện có của mạng(Khả năng đáp ứng yêu cầu dịch vụ của Client) mà chấp nhận phục vụ hay

-từ chối yêu cầu cung cấp dịch vụ -từ Client

Yêu cầu dịch vụ từ Client ở đây được mô tả bằng cách Client gởi yêucầu đến Server, Server thực hiện các thao tác cần thiết như cập nhật hay tracứu và gởi trả lại tình trạng của thao tác

Trang 12

Trong quá trình vận hành hệ thống, Server phải biết được tình trạnghiện tại của hệ thống như: Số Client yêu cầu cung cấp dịch vụ hiện tại; Sốthông điệp (Message) của các Client đã gởi đến cho Server; Client nào đãkết thúc yêu cầu kết nối đến Server; Tình trạng của Server (Có khả năngđáp ứng hay từ chối yêu cầu của Client (quá tải)…

Hệ thống chỉ từ chối yêu cầu của các Client khi quá trình xung đột xẩy

ra, các yêu cầu từ các Client khác vẫn được phục vụ bình thường Khi hệthống hết tình trạng xung đột thì các Client khác có thể sử dụng tài nguyên

hệ thống bình thường

2.2 Cơ sở dữ liệu:

2.2.1 Thiết kế Cơ sở dữ liệu:

Yêu cầu đầu tiên của bài toán là phải có một hệ thống cơ sở dữ liệu

Cơ sở dữ liệu này sẽ phối hợp với một hoạt động cập nhật, tra cứu thông tin

từ xa

Trong tiểu luận này, cơ sở dữ liệu được thiết kế không nhằm mục đíchquản lý mà chỉ mô phỏng cho yêu cầu về cập nhật, tra cứu thông tin Trongtiểu luận này chỉ tạo cơ sở dữ liệu đơn giản như sau:

- Thiết kế cơ sở dữ liệu PhoneBooks sử dụng hệ quản trị cơ sở dữliệu MySQL

- Cơ sở dữ liệu PhoneBooks sẽ bao gồm table tbl_telephone

- Table tbl_telephone gồm 2 trường name và telephone để lưu các tên

và số điện thoại của tên đó

2.2.2 Kết nối cơ sở dữ liệu trong Java:

JDBC là viết tắt của “Java DataBase Connectivity” Nó là một API(Application Programming Interface) có chứa một tập hợp các lớp, các giaodiện Java và các thông báo lỗi ngoại lệ nằm trong cùng một đặc tả mà theo

Trang 13

đó cả các công ty sản xuất JDBC driver cũng như các nhà phát triển JDBCđều phải tuân thủ chặt chẽ khi phát triển ứng dụng

Tại sao lại dùng JDBC?

JDBC tồn tại là để giúp các nhà phát triển Java tạo nên các ứng dụngtruy xuất cơ sở dữ liệu mà không cần phải học và sử dụng các API độcquyền do các công ty sản xuất phần mềm khác nhau bên thứ ba cung cấp.Bạn chỉ cần học JDBC và sau đó bạn sẽ được đảm bảo rằngbạn sẽ có thểphát triển nên các ứng dụng truy cập cơ sở dữ liệu có khả năng truy cập đếncác RDBMS khác nhau bằng cách sử dụng các JDBC driver khác nhau

Có 4 loại JDBC driver Thông dụng nhất và cũng là hiệu quả nhất làloại 4 Sau đây là mô tả:

- JDBC Driver loại 1: Chúng là các trình điều khiển cầu nối ODBC Chúng ủy nhiệm công việc truy cập dữ liệu cho ODBC API Chúng

JDBC-là trình điều khiển chậm nhất trong số còn lại SUN cung cấp một phầnmềm trình điều khiển JDBC/ODBC

- JDBC Driver loại 2 : Chúng chủ yếu sử dụng API mã nền để truycập dữ liệu và cung cấp các lớp bao Java để có thể được gọi ra bằng cáchdùng các JDBC driver

- JDBC Driver loại 3: Chúng được viết thuần bằng Java và sử dụng

giao thức Net độc lập nhà sản xuất để truy cập đến trình theo dõi từ xa độclập nhà sản xuất Trình theo dõi này đến lượt nó lại ánh xạ các lời gọi độclập nhà sản xuất này vào các lời gọi phụ thuộc nhà sản xuất Bước đặc biệtnày đã làm tăng độ phức tạp và giảm tính hiệu quả trong truy cập cơ sở dữliệu

- JDBC Driver loại 4: Chúng được viết thuần túy bằng Java và là loạihiệu quả nhất Chúng cho phép kết nối trực tiếp vào cơ sở dữ liệu, cung cấpkết quả tối ưu và cho phép lập trình viên thực hiện các chức năng tùy thuộc

Trang 14

vào cơ sở dữ liệu cụ thể Điều này đã tạo ra tính cơ động cao nhất là khibạn cần thay đổi cơ sở dữ liệu bên dưới một ứng dụng Loại driver nàythường được dùng cho các ứng dụng phân tán cao.

SUN khuyến cáo sử dụng và phát triển các trình điều khiển loại 4trong các ứng dụng

Cài đặt MySQL:

MySQL là hệ quản trị cơ sở dữ liệu mã nguồn mở phổ biến nhất thếgiới và được các nhà phát triển rất ưa chuộng trong quá trình phát triển ứngdụng MySQL miễn phí hoàn toàn nên bạn có thể tải về MySQL từ trang

chủ www mysql com

MySQL có nhiều phiên bản cho các hệ điều hành khác nhau như

Windows, Linux, Mac OS

 Cài đặt Connector/J - JDBC Driver của MySQL:

JDBC Driver của MySQL có thể lấy về ở địa chỉ:

http://www.mysql.com/downloads/connector/j/

File tải về sẽ là một file zip hoặc tar.gz Sau khi giải nén sẽ có 1 file

có tên tương tự như sau: mysql-connector-java-5.1.19-bin.jar Chép file nàyvào thư mục %JAVA_HOME%\jre\lib\ext trên hệ thống

Ví dụ C:\j2sdk1.4.2\jre\lib\ext

Bạn cũng cần đưa đường dẫn đến file JAR này vào biến môi trườngMYSQL_DRIVER theo đường dẫn: Control Panel\System\Advancedsystem settings\Environment Variables

Trang 15

Sau khi đã đặt đường dẫn đến Connector/J vào biến môi trườngMYSQL_DRIVER thì đã có thể yên tâm là JDBC driver của MySQL đãđược cài đặt xong.

Kết nối vào hệ cơ sở dữ liệu MySQL:

Để kết nối và sử dụng một cơ sở dữ liệu từ Java applet, servlet hayứng dụng Java thì chúng ta cần thực hiện qua 3 bước:

1 Đăng kí/Nạp (các) driver

2 Thiết lập kết nối đến cơ sở dữ liệu

3 Gửi câu lệnh SQL và xử lý kết quả thu về

Bước đầu tiên để tạo ra một kết nối giữa ứng dụng Java và một cơ sở

dữ liệu là đăng kí một JDBC driver với máy ảo Java (JVM) mà ứng dụngJava chạy trên đó Với cơ chế kết nối truyền thống thì kết nối và tất cả cáchình thức giao tiếp với cơ sở dữ liệu đều do đối tượng DriverManager kiểmsoát

Để thiết lập một đường kết nối, một JDBC driver thích hợp dùng cho

cơ sở dữ liệu mục tiêu phải được đăng kí với đối tượng DriverManager.Việc đăng kí một driver đơn giản chỉ là việc nạp lớp driver vào JVM.Chúng ta có thể làm điều đó bằng một số cách khác nhau

Ví dụ:

try{

Ngày đăng: 31/01/2015, 22:53

HÌNH ẢNH LIÊN QUAN

Sơ đồ khối cho MultipleSocketServer: - tiểu luận môn lập trình mạng nâng cao đảm bảo gắn bó dữ liệu khi cập nhật trong các cơ sở dữ liệu tập trung
Sơ đồ kh ối cho MultipleSocketServer: (Trang 18)
Sơ đồ khối cho chương trình chính của Client như sau: - tiểu luận môn lập trình mạng nâng cao đảm bảo gắn bó dữ liệu khi cập nhật trong các cơ sở dữ liệu tập trung
Sơ đồ kh ối cho chương trình chính của Client như sau: (Trang 19)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

  • Đang cập nhật ...

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w