Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 47 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
47
Dung lượng
702,72 KB
Nội dung
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN TOÁN ỨNG DỤNG VÀ TIN HỌC BÁO CÁO MÔN CƠ SỞ DỮ LIÊU NÂNG CAO Sinh viên thực hiện: Bùi Thị Thu Huệ Mã số sinh viên: 20151638 Lớp: Toán Tin 02 – K60 HÀ NỘI – 2020 Mục lục Phần 1: Cơ sở liệu lớn 1.1 Big Data gì? 1.2 Đặc trưng Big Data 1.3 Cơ sở liệu No SQL Phần 2: Cơ sở liệu phân tán 2.1 Khái niệm 2.2 Ưu nhược điểm CSDL phân tán 2.2.1 Ưu điểm 2.2.2 Nhược điểm 2.3 Kiển trúc hệ sở liệu phân tán 2.4 Tính suốt sở liệu phân tán Phần 3: Hệ quản trị sở liệu Oracle Lecture Lecture Lecture 10 Lecture 13 Lecture 17 Lecture 23 Lecture 28 Phần 4: Bài tập kết thúc môn 33 Bài 1: 33 Bài 2: 36 Bài 38 Bài 39 Bài 40 Bài 7: 42 Bài 8: 45 Tài liệu tham khảo 47 Phần 1: Cơ sở liệu lớn 1.1 Big Data gì? Big Data tập liệu có khối lượng lớn phức tạp Độ lớn đến mức phần mềm xử lý liệu truyền thống khơng có khả thu thập, quản lý xử lý liệu khoảng thời gian hợp lý Thuật ngữ “Big Data” không đề cập tới liệu mà cịn cấu tổ chức liệu, cơng cụ cơng nghệ liên quan Theo Gartner Big Data tài sản thơng tin, mà thơng tin có khối lượng liệu lớn, tốc độ cao liệu đa dạng, đòi hỏi phải có cơng nghệ để xử lý hiệu nhằm đưa định hiệu quả, khám phá yếu tố ẩn sâu liệu tối ưu hóa q trình xử lý liệu” 1.2 Đặc trưng Big Data Big Data mơ tả đặc trưng sau: • Volume (Dung lượng): Số lượng liệu tạo lưu trữ Kích thước liệu xác định giá trị tiềm insight- liệu thực coi liệu lớn hay khơng • Variety (Tính đa dạng): Các dạng kiểu liệu Dữ liệu thu thập từ nhiều nguồn khác kiểu liệu có nhiều cấu trúc khác nhau, ví dụ video, văn bản, sở liệu, số, liệu cảm biến • Velocity (Tốc độ): Trong trường hợp nghĩa tốc độ liệu tạo xử lý để đáp ứng nhu cầu thách thức đường tăng trưởng phát triển • Veracity (Tính xác thực): Chất lượng liệu thu khác nhiều, ảnh hưởng đến phân tích xác 1.3 Cơ sở liệu No SQL Để đáp ứng cần thiết sở liệu, sở hạ tầng phục vụ chiến lược liên tục nhà phát triển đưa có thay đổi đáng kể Những công nghệ đám mây đơn giản giá hợp lý xuất để thay máy chủ phức tạp đắt tiền Hay kĩ sư sử dụng phương pháp đẩy nhanh tốc độ, nhằm mục đích liên tục phát triển rút ngắn chu trình, mục đích để truy vấn liệu với tốc độ nhanh, đáp ứng nhu cầu người dùng Như vậy, NoSQL đời để phục vụ yêu cầu phù hợp với Hệ thống NoSQL lưu trữ quản trị liệu cho hỗ trợ tốc độ vận hành công suất cao cung cấp tính linh hoạt tuyệt vời cho nhà phát triển sử dụng Không giống với sở liệu SQL, nhiều sở liệu NoSQL mở rộng theo chiều ngang hàng trăm hàng ngàn máy chủ Một số đặc điểm chung: • High Scalability: Gần khơng có giới hạn cho liệu người dùng hệ thống • High Availability: Do chấp nhận trùng lặp lưu trữ nên node bị chết khơng ảnh hưởng tới tồn hệ thống • Consistency: chấp nhận tính qn yếu, khơng thấy thay đổi cập nhật liệu • Durability: liệu tồn nhớ máy tính đồng thời lưu trữ lại đĩa cứng • Deployment Flexibility: việc bổ sung thêm/loại bỏ node, hệ thống tự động nhận biết để lưu trữ mà không cần phải can thiệp tay Hệ thống khơng địi hỏi cấu hình phần cứng mạnh, đồng Phần 2: Cơ sở liệu phân tán 2.1 Khái niệm • Cơ sở liệu phân tán: Một tuyển tập liệu có quan hệ logic với nhau, phân bố máy tính mạng máy tính • Hệ quản trị CSDL phân tán: Hệ thống phần mềm cho phép quản lý CSDL phân tán đảm bảo tính suốt phân tán người dung • Ứng dụng cục bộ: yêu cầu thực máy tính nút hệ CSDL phân tán liên quan đến CSDL nút • Ứng dụng toàn cục: yêu cầu truy nhập liệu nhiều nút thông qua hệ thống truyền thông 2.2 Ưu nhược điểm CSDL phân tán 2.2.1 Ưu điểm • Phù hợp với cấu trúc tổ chức lớn • Nâng cao khả chia sẻ tính tự trị địa phương • Nâng cao tính sẵn sàng • Nâng cao tính tin cậy • Nâng cao hiệu • Dễ mở rộng 2.2.2 Nhược điểm • Phức tạp • Thiết kế sở liệu phức tạp • Khó điều khuyển tính qn liệu • Khó phát xử lý lỗi • Giá thành cao • Vấn đề bảo mật • Thiếu chuẩn mực • Thiếu kinh nghiệm 2.3 Kiển trúc hệ sở liệu phân tán Do đan dạng, khơng có kiên trúc cơng nhận tương đương với kiến trúc mức ANSI/SPARC Một kiến trúc tham khảo bao gồm: • Tập sơ đồ ngồi tồn cục (Global external schemas) • Sơ đồ khái niệm tồn cục (Global conceptual schema) • Sơ đồ phân đoạn (Fragmentation schema) sơ đồ định vị (Allocation schema) • Tập sơ đồ cho hệ CSDL cục tuân theo tiêu chuẩn mức ANSI/SPARC Lược đồ toàn cục: định nghĩa tất liệu chứa sở liệu phân tán Lược đồ phân đoạn: Mỗi quan hệ tổng thể chia thành vài phần nhỏ không giao gọi đoạn (fragments) Là ánh xạ quan hệ toàn cục đoạn Lược đồ định vị: định vị nút chứa đoạn Lược đồ ánh xạ cục bộ: phụ thuộc vào loại Hệ quản trị sở liệu phân tán 2.4 Tính suốt sở liệu phân tán Các mức suốt hệ sở liệu phân tán: • Trong suốt phân đoạn (fragmentation transparency): Mức độ cao mức độ suốt, người dùng cuối người lập trình không cần biết sựu phân tán CSDL ( khơng biết tên đoạn vị trí phân bố đoạn • Trong suốt định vị (location transparency): Người dùng cuối người lập trình biết sở liệu phân chia thành đoạn, tên đoạn khơng biết vị trí phân bố đoạn • Trong suốt ánh xạ địa phương (local mapping transparency): Người dùng cuối người lập trình biết tên đoạn vị trí đoạn Phần 3: Hệ quản trị sở liệu Oracle Lecture Khơng có tập Lecture Practice 1: Create the DEPT table based on the following table instance chart Place the syntax in script called lab_09_01.sql, then execute the statement in the script to create the table Confirm that the table is created CREATE TABLE dept (id NUMBER(7) CONSTRAINT dept_department_id PRIMARY KEY, name VARCHAR2(25)); Practice 2: Populate the DEPT table with data from the DEPARTMENTS table Include only columns that you need INSERT INTO dept SELECT department_id, department_name FROM departments; Practice 3: Create the EMP table based on the following table instance chart Place the syntax in a script called lab_09_03.sql, and then execute the statement in the script to create the table Confirm that the table is created CREATE TABLE emp (id NUMBER(7) CONSTRAINT emp_employee_id PRIMARY KEY, last_name VARCHAR2(25), first_name VARCHAR2(25), dept_id NUMBER(7) CONSTRAINT empdept_fk1 REFERENCES dept(id)); Practice 4: Create the EMPLOYEES2 table based on the structure of the EMPLOYEES table Include only the EMPLOYEE_ID, FIRST_NAME, LAST_NAME, SALARY, and DEPARTMENT_ID columns Name the columns in your new table ID, FIRST_NAME, LAST_NAME, SALARY, and DEPT_ID, respectively CREATE TABLE employees2 AS SELECT employee_id id, first_name, last_name, salary, department_id dept_id FROM employees; Practice 5: Drop the EMP table DROP TABLE employees2; Practice 6: Create a nonunique index on the DEPT_ID colums in the DEPT table CREAT INDEX emp_dept_id_idx ON emp(dept_id); Lecture Practice 1: The staff in the HR department wants to hide some of the data in the EMPLOYEES table They want a view call EMPLOYEES_VU based on the employee numbers, employee names, and department numbers from the EMPLOYEES table They want the heading for the employee name to be EMPLOYEE CREATE OR REPLACE VIEW employees_vu AS SELECT employee_id, last_name employee, department_id FROM employees; Practice 2: Confirm that the view works Display the contents of the EMPLOYEES_VU view SELECT * FROM employees_vu; 10 Phần 4: Bài tập kết thúc môn Bài 1: Kiểm tra sinh viên đủ điều kiện tốt nghiệp chưa biết kiều sinh viên tốt nghiệp là: Tích lũy đủ số tín Điểm phẩy tốt nghiệp khơng nhỏ 1.0, biết bảng đổi điểm sau: Thang điểm ĐẠT KHÔNG ĐẠT Điểm chữ Điểm số A+ 4.5 A 4.0 A- 3.5 B+ 3.0 B 2.5 B- 2.0 C+ 1.5 C 1.0 C- 0.5 Code Oracle: Bước 1: Tạo view chuyển từ điểm chữ sang điểm số lấy từ bảng takes CREATE OR REPLACE VIEW takes_number AS SELECT id, course_id, sec_id, semester, year, CASE WHEN grade = 'A+' THEN 4.5 WHEN grade = 'A ' THEN 4.0 33 WHEN grade = 'A-' THEN 3.5 WHEN grade = 'B+' THEN 3.0 WHEN grade = 'B ' THEN 2.5 WHEN grade = 'B-' THEN 2.0 WHEN grade = 'C+' THEN 1.5 WHEN grade = 'C ' THEN 1.0 WHEN grade = 'C-' THEN 0.5 ELSE END AS point FROM takes; Bước 2: Tạo view chưa điểm cao môn sinh viên học cải thiện học lại CREATE OR REPLACE VIEW takes_bester AS SELECT id, course_id, MAX(point) count FROM takes_number GROUP BY id, course_id; Bước 3: Tạo stored procedure với input mã sinh viên, output sinh viên có đủ điều kiện tốt nghiệp hay khơng (tín tích lũy đủ 128 tín CPA >=1) CREATE OR REPLACE PROCEDURE SP_Bai1( student_id IN VARCHAR) AS tot_cred number; CPA number; begin SELECT tot_cred INTO tot_cred FROM student 34 WHERE id = student_id; IF tot_cred > 128 THEN SELECT SUM(t.count * c.credits) / SUM(c.credits) INTO CPA FROM takes_bester t JOIN course c ON t.id = student_id AND t.course_id = c.course_id; IF CPA < 1.0 THEN dbms_output.put_line(' Khong du dieu khien tot nghiep Diem trung binh la:' || CPA); ELSE dbms_output.put_line(' Du dieu kien tot nghiep Diem trung binh la:' || CPA); END IF; ELSE dbms_output.put_line('Khong du dieu kien tot nghiep So tin chi tich luy la:' || tot_cred); END IF; EXCEPTION when no_data_found Then dbms_output.put_line('Ma so sinh vien khong dung:' || student_id); end; Kết quả: thử với id_student = 93004 exec SP_Bai1(93004); 35 Bài 2: Viết thủ tục SP_LOC_DU_LIEU cho phép nhập vào tên trường giá trị trường (Ví dụ: SP_LOC_DU_LIEU ‘dept_name’, ‘Physics’) Kết trả liệu sau lọc theo giá trị trường liệu Bảng kết trả gồm trường: Mã sinh viên, Họ tên sinh viên, Năm học, Kỳ học, Khóa học, Thời gian học, Phịng học, Giảng viên, Khoa viện Bước 1: Tạo view để lấy liệu theo yêu cầu đề CREATE OR REPLACE VIEW Temp AS SELECT st.id, st.name student_name, se.year, se.semester, c.title, ts.day, ts.start_hr, ts.start_min, ts.end_hr, ts.end_min, se.room_number, se.building, i.name instructor_name, 36 st.dept_name FROM section se JOIN course c ON se.course_id = c.course_id JOIN teaches te ON se.course_id = te.course_id AND se.sec_id = te.sec_id AND se.semester = te.semester AND se.year = te.year JOIN instructor i ON te.id = i.id JOIN takes ta ON se.sec_id = ta.sec_id AND se.semester = ta.semester AND se.year = ta.year AND se.course_id = ta.course_id JOIN student st ON ta.id = st.id LEFT JOIN time_slot ts ON se.time_slot_id = ts.time_slot_id; Bước 2: Tạo thủ tục lọc liệu CREATE OR REPLACE PROCEDURE SP_BAI2(field_name IN VARCHAR2, field_value IN VARCHAR, mycursor OUT SYS_REFCURSOR) AS str_query VARCHAR(1000 ); BEGIN str_query := 'SELECT * FROM Temp WHERE ' || field_name || ' LIKE ''%' || field_value || '%'''; OPEN mycursor FOR str_query; EXCEPTION 37 WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('Khong ton tai truong du lieu: ' || field_name); END; Kết quả: Thử với trường liệu: field_name = 'ID' field_value = '93004' Bài Viết thủ tục SP_LOC_DU_LIEU cho phép nhập vào biến kiểu table gồm trường: tên trường giá trị trường Kết trả liệu sau lọc theo danh sách giá trị trường liệu Bước 1: Tạo object gồm trường field_name field_value CREATE OR REPLACE TYPE my_object AS OBJECT(field_name VARCHAR(50), field_value VARCHAR(50)); Bước 2: Tạo kiểu liệu dạng table cho object tạo CREATE TYPE my_table AS TABLE OF my_object; 38 Bước 3: Tạo thủ tục theo dạng bảng CREATE OR REPLACE PROCEDURE SP_BAI3 (mytable IN my_table, mycursor OUT SYS_REFCURSOR) AS str_query VARCHAR (1000); BEGIN str_query := 'SELECT * FROM Temp WHERE 1=1'; FOR i IN mytable.FIRST mytable.LAST LOOP str_query := str_query || ' AND ' || mytable(i).field_name ||' LIKE ''%' || mytable(i).field_value || '%'' '; END LOOP; OPEN mycursor FOR str_query; EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('Dau vao khong hop le!'); END; Bài Sinh viên A muốn học môn ‘Mobile Computing’ hỏi A cần phải học qua mơn gì? Đầu tiên ta tìm mã mơn học có tên ‘Mobile Computing’ SELECT course_id FROM course WHERE title = 'Mobile Computing'; 39 Kết có mã: Sau ta chạy truy vấn phân cấp để tìm mơn trước: SELECT * FROM prereq START WITH course_id = '612' CONNECT BY PRIOR prereq_id = course_id; Kết với môn có course_id = 612 là: Tức để học mơn có mã 612 cần phải học qua mơn có mã 123 Kết với mơn có mã 810: SELECT * FROM prereq START WITH course_id = '810' CONNECT BY PRIOR prereq_id = course_id; Tức để học mơn có mã 810 cần phải học qua mơn có mã 966 Bài Viết thủ tục cho biết kết học tập sinh viên với: Đầu vào: Mã sinh viên Đầu ra: Mã sinh viên, Tên sinh viên, Số tín tích lũy, Điểm trung bình học kỳ điểm trung bình tích lũy theo học kỳ Sử dụng view takes_number 40 Code: CREATE OR REPLACE PROCEDURE SP_BAI6(student_id NUMBER, mycursor OUT sys_refcursor ) IS BEGIN OPEN mycursor FOR SELECT t.id, s.name, t.semester, t.year, ROUND( SUM( t.point * c.credits ) / SUM( c.credits), ) GPA, ROUND((SELECT SUM(MAX( t1.point) * c1.credits) /SUM( c1.credits ) FROM takes_number t1,course c1 WHERE t1.id = student_id AND t1.course_id = c1.course_id AND t1.year 128 then dbms_output.put_line('Trinh nam 5'); end if; if cpa < then dbms_output.put_line('Hoc luc kem'); elsif cpa