1. Trang chủ
  2. » Tất cả

(Tiểu luận) hệ quản trị cơ sở dữ liệu (co3021) assignment indexing and query processing in mysqland mongodb

19 39 0

Đ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

Untitled ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA KHOA HỌC – KỸ THUẬT MÁY TÍNH HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU (CO3021) Assignment Indexing and Query Processing in mySQLand Mongo[.]

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA KHOA HỌC – KỸ THUẬT MÁY TÍNH HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU (CO3021) Assignment Indexing and Query Processing in mySQLand MongoDB Giáo viên hướng dẫn: Sinh viên: Lê Thị Bảo Thu Phùng Minh Khánh – 1913756 Trần Tiến Lộc – 1914038 Nguyễn Minh Bảo - 19121676 0 Tieu luan Tp Hồ Chí Minh, 2022 I Mở đầu Tổng quan Cơ sở liệu quan hệ tảng ứng dụng doanh nghiệp nhiều thập kỷ, kể từ phát hành MySQL vào năm 1995, trở thành lựa chọn phổ biến không tốn kém, đặc biệt phần tảng LAMP phổ biến để củng cố ứng dụng web ban đầu Ngày nay, doanh nghiệp đại nghĩ đến cách tốt để lưu trữ quản lý liệu - cho dù để có nhìn sâu sắc khách hàng, thích nghi với thay đổi người dùng đánh bại đối thủ cạnh tranh với ứng dụng mơ hình kinh doanh Kết nhiều giả định thúc đẩy phát triển sở liệu quan hệ trước thay đổi:  Yêu cầu suất developers cao thời gian nhanh để tiếp thị, với mơ hình liệu truyền thống cứng nhắc truyền thống phát triển ứng dụng nguyên khối tạo phương pháp nhanh, microservices DevOps, nén chu kỳ phát hành từ tháng, năm sang ngày tuần  Sự cần thiết phải quản lý loại liệu mới, nhanh chóng thay đổi liệu cấu trúc, bán cấu trúc, liệu đa hình tạo lớp học ứng dụng web, di động, xã hội IoT  Sự chuyển đổi bán buôn sang hệ thống phân tán điện toán đám mây, cho phép developers khai thác sở hạ tầng tính tốn lưu trữ theo yêu cầu, có khả mở rộng cao với khả phục vụ khán giả nơi họ làm việc chơi khắp giới đáp ứng toàn yêu cầu quy định cho chủ quyền liệu Kết sở liệu không liên quan "NoSQL", MongoDB, xuất để đáp ứng yêu cầu ứng dụng đại hóa khối lượng cơng việc Hỗ trợ cho giao dịch ACID nhiều tài liệu, lên kế hoạch cho MongoDB 4.0 vào mùa hè năm 2018, làm cho developers dễ dàng việc giải trường hợp sử dụng tương lai gặp khó khăn với MySQL Bài viết cung cấp tổng quan MySQL MongoDB, trường hợp sử dụng thích hợp cho trường hợp 0 Tieu luan Mongo database (MongoDB): MongoDB database hướng tài liệu (document), dạng NoSQL database Vì thế, MongoDB tránh cấu trúc table-based relational database để thích ứng với tài liệu JSON có schema linh hoạt gọi BSON MongoDB sử dụng lưu trữ liệu dạng Document JSON nên collection các kích cỡ document khác Các liệu lưu trữ document kiểu JSON nên truy vấn nhanh MongoDB lần đầu đời MongoDB Inc., thời điểm hệ 10, vào tháng Mười năm 2007, phần sản phẩm PaaS (Platform as a Service) tương tự Windows Azure Google App Engine Sau chuyển thành nguồn mở từ năm 2009 MongoDB trở thành NoSQL database trội giờ, dùng làm backend cho nhiều website eBay, SourceForge The New York Times Các tính MongoDB gồm có: truy vấn ad hoc, indexing, nhân (Replication), tổng hợp (Aggregation), lưu trữ file, cân tải MongoDB mang đến cho người dùng nhiều lợi ích: - Linh hoạt lưu trữ kích cỡ liệu khác Nhờ chúng lưu dạng JSON nên thoải mái chèn thông tin tùy theo nhu cầu sử dụng - Tiết kiệm thời gian việc kiểm tra tương thích cấu trúc thêm, xóa cập nhật liệu Nhờ MongoDB khơng có ràng buộc khuôn khổ, quy tắc định - Bạn dễ dàng mở rộng hệ thống thông qua việc thêm node vào cluster Cụm node đóng vai trò thư viện chứa liệu giao tiếp với - Tốc độ truy vấn MongoDB nhanh so với RDBMS toàn liệu truy vấn ghi đệm lên nhớ RAM Nhờ thế, lượt truy vấn sau rút ngắn thời gian chúng khơng cần đọc từ ổ cứng - Trường liệu “_id” (đại diện cho giá trị document) tự động đánh mục nên hiệu suất đạt mức cao 0 Tieu luan Bên cạnh lợi ích đó, MongoDB có điểm bất lợi là: - Khơng ứng dụng cho mơ hình giao dịch có u cầu độ xác cao khơng có ràng buộc - Chương trình MongoDB tiêu tốn nhiều dung lượng nhớ liệu lưu dạng key - value Trong đó, số collection có khác biệt value nên việc lặp lại key điều khó tránh khỏi Điều dẫn đến thừa liệu - Khơng có chế transaction (giao dịch) để phục vụ ứng dụng ngân hàng - Dữ liệu lấy RAM làm trọng tâm hoạt động hoạt động yêu cầu nhớ RAM lớn - Mọi thay đổi liệu mặc định chưa ghi xuống ổ cứng khả bị liệu từ nguyên nhân điện đột xuất cao MySQL: MySQL hệ thống quản trị sở liệu mã nguồn mở hướng đối tượng (gọi tắt RDBMS) hoạt động theo mơ hình client-server Với RDBMS viết tắt Relational Database Management System MySQL tích hợp apache, PHP MySQL quản lý liệu thông qua sở liệu Mỗi sở liệu có nhiều bảng quan hệ chứa liệu MySQL có cách truy xuất mã lệnh tương tự với ngôn ngữ SQL Mặc dù phát hành từ thập niên 90 MySQL lựa chọn ưu mắt quản trị viên Quá trình hình thành phát triển MySQL tóm tắt sau: - Cơng ty Thụy Điển MySQL AB phát triển MySQL vào năm 1994 - Phiên MySQL phát hành năm 1995 - Công ty Sun Microsystems mua lại MySQL AB năm 2008 - Năm 2010 tập đoàn Oracle thâu tóm Sun Microsystems Ngay lúc đó, đội ngũ phát triển MySQL tách MySQL thành nhánh riêng gọi MariaDB Oracle tiếp tục phát triển MySQL lên phiên 5.5 - Năm 2013 MySQL phát hành phiên 5.6 0 Tieu luan - Năm 2015 MySQL phát hành phiên 5.7 - MySQL phát triển lên phiên 8.0 có phiên bản: miễn phí (MySQL Community Server) có phí (Enterprise Server) Cũng hệ thống quản trị sở liệu khác, MySQL mang lại cho người dùng ưu điểm riêng biệt sau: - Dễ sử dụng: ổn định, dễ sử dụng hoạt động 20 tảng Linux, Windows, OS/X, HP-US, AIX, Netware nhiều hệ điều hành khác cung cấp hệ thống lớn hàm tiện ích mạnh - Độ bảo mật cao: thích hợp cho ứng dụng có truy cập sở liệu Internet sở hữu nhiều nhiều tính bảo mật chí cấp cao - Đa tính năng: hỗ trợ nhiều chức SQL mong chờ từ hệ quản trị sở liệu quan hệ trực tiếp lẫn gián tiếp - Khả mở rộng mạnh mẽ: MySQL xử lý nhiều liệu mở rộng cần thiết - Nhanh chóng: Việc đưa số tiêu chuẩn cho phép MySQL để làm việc hiệu tiết kiệm chi phí, làm tăng tốc độ thực thi, xử lí query Ngồi lợi trên, MySQL mang lại cho người dùng số điểm bất lợi sử dụng chúng: - Giới hạn: Theo thiết kế, MySQL khơng có ý định làm tất kèm với hạn chế chức mà vào ứng dụng cần - Độ tin cậy: Cách chức cụ thể xử lý với MySQL (ví dụ tài liệu tham khảo, giao dịch, kiểm tốn,…) làm cho giảm phần độ tin cậy so với số hệ quản trị sở liệu quan hệ khác - Dung lượng hạn chế: Nếu số ghi bạn lớn dần lên việc truy xuất liệu bạn khó khăn, phải áp dụng nhiều biện pháp để tăng tốc độ truy xuất liệu chia tải database nhiều server, tạo cache MySQL 0 Tieu luan II Indexing Tổng quan Chỉ mục (Index) bảng tra cứu đặc biệt mà cơng cụ tìm kiếm sở liệu sử dụng để tăng nhanh thời gian hiệu suất truy xuất liệu Hiểu đơn giản, mục trỏ tới giá trị xuất bảng/cột đánh mục Chỉ mục Database có ý nghĩa tương tự mục xuất Mục lục sách Một mục giúp tăng tốc truy vấn SELECT mệnh đề WHERE Chúng sử dụng để tăng tốc độ truy vấn sử dụng sở liệu tìm kiếm để xác định vị trí ghi nhanh Các lệnh INSERT UPDATE tốn nhiều thời gian bảng có index lệnh SELECT trở nên nhanh bảng Lý vì, chèn cập nhật, database phải cần chèn cập nhật giá trị index Các mục tạo bỏ mà không ảnh hưởng đến liệu Ta tạo index cho tập hợp nhiều cột table Giá trị index key phép concat giá trị từ record cột Chẳng hạn ta tạo index cho cột col_1 index key có giá trị tương ứng với giá trị record cột Cịn tạo index với cột gộp col_1, col_2, col_3 giá trị index key phép cộng concat giá trị record cột lại với Nó cần có khơng gian lưu trữ riêng thiết bị lưu trữ (đĩa cứng) có phần liệu bảng lập mục Điều có nghĩa việc tạo mục có dư thừa liệu Cấu trúc mục MongoDB 2.1 Tổng quan cấu trúc mục MongoDB Các loại mục MongoDB: Single Field Index, Compound Index, Multikey Index, Geospatial Index 0 Tieu luan Trong lập mục MongoDB, tất tập hợp có mục mặc định trường _id Nếu không định giá trị cho _id MongoDB tạo trường _id với giá trị đối tượng Chỉ mục ngăn không cho khách hàng tạo hai tài liệu có giá trị trường _id Về bản, mục MongoDB tương tự mục hệ thống sở liệu khác MongoDB xác định mục cấp sưu tập hỗ trợ mục trường trường tài liệu sưu tập MongoDB 2.2 Một số câu lệnh DDL phổ biến cho loại mục MongoDB 2.2.1 Single Field Indexes: Tài liệu mô tả mục tăng dần / giảm dần trường Thao tác sau tạo mục tăng dần trường soccre sưu tập ghi: Ta có cấu trúc câu lệnh: db.collection.createIndex( { : } ) Ví dụ trường hợp trên: db.records.createIndex( { score: } ) db.records.find( { score: { $gt: 10 } } ) 2.2.2 Single Field Indexes: 0 Tieu luan MongoDB hỗ trợ mục phức hợp, cấu trúc mục chứa tham chiếu đến nhiều trường collection document Ta có cấu trúc câu lệnh: db.collection.createIndex( { :,:, } ) Ví dụ trường hợp trên: db.products.createIndex( { "item": 1, "stock": } ) 2.2.3 Multikey Indexes: Để lập mục trường chứa giá trị mảng, MongoDB tạo khóa mục cho phần tử mảng Các mục multikey hỗ trợ truy vấn hiệu trường mảng Chỉ mục nhiều khóa xây dựng mảng chứa giá trị vô hướng (ví dụ: chuỗi, số) tài liệu lồng Ta có cấu trúc câu lệnh: db.coll.createIndex( { : < or -1 > } ) 0 Tieu luan 2.2.4 Geospatial Index: Để truy vấn liệu không gian địa lý, MongoDB hỗ trợ hai loại mục - mục 2d mục hình cầu 2d Chỉ mục 2d sử dụng hình học phẳng trả kết mục 2dsphere sử dụng hình học cầu để trả kết Ta có cấu trúc câu lệnh: db.collection.createIndex( { : "2d" } ) 2.2.5 Xóa index Mongo: Lệnh dropIndexesloại bỏ nhiều mục (ngoại trừ mục trường _id) khỏi collection định Ta có cấu trúc câu lệnh: {dropIndexes: , index: , writeConcern: , comment: } Cấu trúc mục MySQL 3.1 Tổng quan cấu trúc mục MySQL Các loại index MySQL: Clustered - PRIMARY, UNIQUE (NOT NULL) Nếu table khơng có loại MySQL tự tạo clustered index ẩn tên GEN_CLUST_INDEX field ẩn tự động chứa id hàng (autoincrement, 6-byte) Loại thứ 2: Secondary bao gồm loại index lại: INDEX MySQL cung cấp kiểu index khác cho data B-Tree, Hash R-Tree index Hiểu rõ kiểu index giúp tạo loại index bảng cách hiệu Do R-Tree sử dụng cho loại liệu khơng gian spacial data thường gặp phải nên viết tập chung so sánh loại index B-Tree Hash B-Tree index có đặc điểm sau: Dữ liệu index B-Tree tổ chức lưu trữ theo dạng cây(tree), tức có root, branch, leaf Giá trị node tổ chức tăng dần từ trái qua phải Khi truy vấn liệu việc tìm kiếm B-Tree trình đệ quy, root node tìm kiếm tới branch leaf, đến tìm tất liệu - thỏa mãn với điều kiện truy vấn dùng lại B-Tree index sử 0 Tieu luan dụng cho column bảng muốn tìm kiếm giá trị nằm khoảng Hash index có đặc điểm sau: Hash index có vài đặc điểm khác biệt so với Btree index Dữ liệu index tổ chức theo dạng Key - Value liên kết với Khác với B-Tree, Hash index nên sử dụng biểu thức toán tử = Khơng sử dụng cho tốn từ tìm kiếm khoảng giá trị > hay < Khơng thể tối ưu hóa tốn tử ORDER BY việc sử dụng Hash index khơng thể tìm kiếm phần từ Order Tồn nội dung Key sử dụng để tìm kiếm giá trị records, khác với B-Tree phần node sử dụng để tìm kiếm Hash có tốc độ nhanh kiểu Btree MySQL thực tải hàng loạt thay chèn ghi mục tạo xây dựng lại mục Phương pháp tạo mục gọi Sorted index build 3.2 Các câu lệnh DDL liên quan đến index MySQL Ta tạo index theo cách: Chỉ định index tạo table tạo index cho hay nhiều cột sau tạo table Ví dụ tạo bảng đồng thời gán index: CREATE TABLE newtable( c1 INT PRIMARY KEY, c2 INT NOT NULL, c3 INT NOT NULL, INDEX (c2,c3) ); Thêm index cho bảng, với index mang tính khơng thể null: ALTER TABLE tbl_name ADD PRIMARY KEY (olumn 1, column 2, ) Thêm index cho bảng, với index mang tính null ALTER TABLE tbl_name ADD UNIQUE index_name (column 1, column 2, ) Thêm index cho bảng, trùng lặp ALTER TABLE tbl_name ADD INDEX index_name (column 1, column 2, ) Thêm index đặc biệt thường cho tìm kiếm văn ALTER TABLE tbl_name ADD FULLTEXT index_name (column 1, column 2, ) Các lệnh xóa index DROP INDEX index_name; Query Processing 4.1 Giới thiệu xử lý truy vấn DBMS: 0 Tieu luan Xử lý truy vấn DBMS - Mục tiêu việc tạo sở liệu lưu trữ liệu liên quan nơi, truy cập thao tác chúng người dùng yêu cầu Việc truy cập thao tác liệu cần thực cách hiệu tức là; phải truy cập dễ dàng nhanh chóng Nhưng sở liệu hệ thống người dùng hệ thống ứng dụng khác người Người dùng u cầu liệu ngơn ngữ mà họ hiểu Nhưng DBMS có ngơn ngữ riêng (SQL) mà hiểu Do đó, người dùng yêu cầu truy vấn sở liệu ngôn ngữ - SQL SQL ngơn ngữ cấp cao tạo để xây dựng cầu nối người dùng DBMS cho giao tiếp họ Nhưng hệ thống DBMS khơng hiểu SQL Phải có số ngơn ngữ cấp thấp mà hệ thống hiểu Thông thường, truy vấn viết SQL chuyển đổi thành ngôn ngữ cấp thấp cách sử dụng đại số quan hệ mà hệ thống hiểu Nhưng khó cho người dùng viết trực tiếp loại truy vấn đại số quan hệ Nó địi hỏi kiến thức kỹ lưỡng Do đó, DBMS làm yêu cầu người dùng viết truy vấn SQL Nó xác minh mã người dùng viết sau chuyển đổi chúng thành ngơn ngữ cấp thấp Sau đó, chọn đường dẫn thực thi tốt thực truy vấn lấy liệu từ nhớ Tất trình gọi chung xử lý truy vấn DBMS Đây q trình bước chuyển ngơn ngữ cấp cao thành ngôn ngữ cấp thấp mà máy hiểu thực hành động yêu cầu cho người dùng Bộ xử lý truy vấn DBMS thực tác vụ 0 Tieu luan Sơ đồ mô tả cách truy vấn xử lý sở liệu để hiển thị kết Khi truy vấn gửi đến sở liệu, nhận trình biên dịch truy vấn Sau đó, quét truy vấn chia thành mã thơng báo riêng lẻ Sau mã tạo, chúng trình phân tích cú pháp xác minh tính đắn chúng Sau đó, truy vấn mã hóa chuyển đổi thành biểu thức quan hệ có khác nhau, quan hệ đồ thị quan hệ (Kế hoạch truy vấn) Sau đó, trình tối ưu hóa truy vấn chọn chúng để xác định kế hoạch truy vấn tốt để xử lý Nó kiểm tra danh mục hệ thống cho ràng buộc mục định kế hoạch truy vấn tốt Nó tạo kế hoạch thực thi khác cho kế hoạch truy vấn Kế hoạch thực truy vấn sau định kế hoạch thực thi tốt tối ưu hóa để thực thi Bộ xử lý lệnh sau sử dụng kế hoạch thực thi để lấy liệu từ sở liệu trả kết Đây tổng quan cách xử lý truy vấn hoạt động Hãy xem chi tiết bên 4.2 Xử lý truy vấn MongoDB: 4.2.1 Phương thức find(): - Hiển thị tập hợp sở liệu dạng Không có cấu trúc (Non - Structured) ({: }) bao gồm ”id” tạo tự động MongoDB liệu thu thập chèn người dùng quản trị viên - Cú pháp: db.collection_name.find () - Ví dụ: Câu lệnh db.users.find() sử dụng để hiển thị tất tài liệu có sưu tập viết lệnh SELECT * FROM users 0 Tieu luan 4.2.2 Phương thức findOne (): - Có thể tìm thấy tài liệu phương thức findOne (), Phương thức trả tài liệu phù hợp với biểu thức truy vấn lọc cho - Cú pháp: db.collection_name.findOne () - -Ví dụ: Câu lệnh db.users.findOne() hiển thị tài liệu sưu tập viết 4.2.3 Phương thức pretty(): - Trong MongoDB, hiển thị tài liệu sưu tập định theo cách định dạng tốt cách sử dụng phương thức pretty() - Cú pháp: db.collection_name.find().pretty() - Ví dụ: Câu lệnh db.users.find().pretty() hiển thị tài liệu sưu tập viết theo cách định dạng tốt 0 Tieu luan 4.2.4 Truy vấn dạng có điều kiện: - Cú pháp: db.collection_name.find(query, projection) - Trong đó: + collection_name : tên collection bạn + query : không bắt buộc Chỉ định điều kiệu muốn + projection : không bắt buộc Chỉ định trường để trả tài liệu khớp với query trên, projection rỗng trả tất trường + Có dạng {field1: , field2: }, value sau đây:  true để trả trường  false để loại trường  tốn tử projection khác 0 Tieu luan - Ví dụ: muốn lấy user có name “thu” ta dùng câu lệnh db.users.find({name: 'thu'}); 4.2.5 Truy vấn nhiều điều kiện ($and): - Thực logic AND hoạt động mảng nhiều biểu thức chọn tài liệu đáp ứng tấy biểu thức mảng - Cú pháp: {$and: [ {}, {}, , {

Ngày đăng: 06/02/2023, 09:15

Xem thêm:

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

TÀI LIỆU LIÊN QUAN

w