BÀI tập lớn tìm HIỂU hệ QUẢN TRỊ cơ sở dữ LIỆU MONGODB

36 12 0
BÀI tập lớn tìm HIỂU hệ QUẢN TRỊ cơ sở dữ LIỆU MONGODB

Đ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

BAN CƠ YẾU CHÍNH PHỦ HỌC VIỆN KỸ THUẬT MẬT Mà ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ BÀI TẬP LỚN TÌM HIỂU HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU MONGODB Chun ngành: An tồn thơng tin Sinh viên thực hiện: Phùng Minh Hiếu Phạm Ngọc Hoàn Nguyễn Quốc Huy Nguyễn Hữu Hưng Trần Thị Diễm Hương Lớp: CHAT7 Người hướng dẫn: TS Hoàng Xuân Dậu Học Viện Cơng nghệ Bưu Chính Viễn Thơng Hà Nội, 2021 MỤC LỤC LỜI MỞ ĐẦU CHƯƠNG TỔNG QUAN VỀ MONGODB 1.1 Giới thiệu MongoDB 1.2 Kiến trúc MongoDB 1.3 Các thành phần MongoDB 1.4 Các tính bật MongoDB 1.4.1 Truy vấn Ad hoc 1.4.2 Indexing 1.4.3 Replication 1.4.4 Sharding 1.4.5 Cân tải 1.5 Ưu, nhược điểm MongoDB 1.5.1 Ưu điểm 1.5.2 Nhược điểm CHƯƠNG CÁC CƠ CHẾ BẢO MẬT CỦA MONGODB 2.1 Cơ chế xác thực MongoDB 2.1.1 Phương thức xác thực 2.1.2 Cơ chế xác thực 2.2 Cơ chế ủy quyền mongoDB 10 2.2.1 Tính kế thừa 10 2.2.2 Xem quyền role 11 2.2.3 Tính kiểm sốt truy cập 11 2.2.4 Quản lý người dùng role 13 2.3 Cơ chế mã hóa MongoDB 14 2.3.1 Mã hóa liệu trạng thái động 14 2.3.2 Mã hóa liệu trạng thái tĩnh 16 i 2.4 Kiểm toán 16 CHƯƠNG QUẢN TRỊ CƠ SỞ DỮ LIỆU MONGODB 19 3.1 Tạo, xóa database 19 3.2 Tạo, xóa collections 19 3.3 Insert document 20 3.3.1 Insert 20 3.3.2 InsertOne 21 3.3.3 InsertMany 21 3.4 Xóa document 21 3.5 Truy vấn liệu 22 3.5.1 Lấy tất liệu collection 22 3.5.2 Truy vấn có điều kiện 22 3.5.3 Truy vấn nhiều điều kiện 23 3.6 Lập mục 23 3.6.1 Các loại index MongoDB 23 3.6.2 Index Properties 24 3.7 Tìm kiếm 25 CHƯƠNG CÀI ĐẶT VÀ DEMO 27 4.1 Cài đặt MongoDB Windows 27 4.2 Demo lệnh quản trị MongoDB 31 TÀI LIỆU THAM KHẢO 34 ii LỜI MỞ ĐẦU Cùng với phát triển xã hội nay, đặc biệt bùng nổ cơng nghệ thơng tin vấn đề liệu đặc biệt quan tâm ý Từ xuất Web 2.0 vấn đề xử lý liệu đặc biệt quan tâm đến, đời Web 2.0 đánh dấu phát triển lớn mạnh mặt liệu thông tin từ liệu đó, Web 2.0 tự liệu Nó cho phép API, RSS, … truy xuất liệu từ nhiều nguồn khác mà khơng cần trực tiếp vào trang web Bên cạnh bùng nổ Web 2.0 phát triển Internet số lượng người dùng tăng lên lớn, người dùng thỏa mái tạo nội dung web, làm cho liệu trở nên khổng lồ, vượt giới hạn xử lý hệ quản trị sở liệu truyền thống Để đáp ứng nhu cầu lưu trữ, xử lý liệu khổng lồ, cần có sở liệu lưu trữ liệu với số lượng lớn truy xuất cách nhanh chóng hiệu Và MongoDB phù hợp với yêu cầu MongoDB phần mềm mã nguồn mở miễn phí, có cộng đồng phát triển lớn mạnh, đặc biệt có hiệu suất truy vấn liệu cao Vì vậy, nhóm – lớp Cao học An tồn thông tin – Học viện Kỹ thuật Mật mã chúng em tìm hiểu hệ quản trị sở liệu MongoDB để hiểu rõ MongoDB, kiến trúc, thành phần, tính hay chế bảo mật nó, đồng thời làm demo để biết cách quản trị MongoDB CHƯƠNG TỔNG QUAN VỀ MONGODB 1.1 Giới thiệu MongoDB NoSQL dạng sở liệu mã nguồn mở không sử dụng Transact-SQL để truy vấn thông tin NoSQL viết tắt bởi: None-Relational SQL, hay có nơi thường gọi Not-Only SQL Cơ sở liệu phát triển Javascript Framework với kiểu liệu JSON Đây dạng liệu kiểu key value cộng với hiệu nhanh khả mở rộng không bị ràng buộc việc tạo khóa chính, khóa ngoại,… NoSQL đời mảnh vá cho khuyết điểm thiếu xót hạn chế mơ hình liệu quan hệ RDBMS tốc độ, tính năng, khả mở rộng, memory cache, MongoDB hệ quản trị sở liệu mã nguồn mở, sở liệu NoSQL hàng triệu người tiêu dùng MongoDB viết C++ MongoDB sở liệu hướng tài liệu (document database), liệu lưu giữ document kiểu JSON thay dạng bảng sở liệu quan hệ nên truy vấn nhanh, cung cấp hiệu suất cao, tính khả dụng cao khả mở rộng dễ dàng - Với CSDL quan hệ người có khái niệm bảng, sở liệu quan hệ (như MySQL hay SQL Server…) dùng bảng để lưu liệu với MongoDB sử dụng định nghĩa collection thay bảng - So với RDBMS MongoDB collection ứng với table, cịn document ứng với row, MongoDB sử dụng document thay cho row RDBMS - Các collection MongoDB cấu trúc linh động, cho phép liệu lưu giữ không cần tuân theo cấu trúc chắn 1.2 Kiến trúc MongoDB MongoDB thiết kế để đáp ứng nhu cầu ứng dụng đại với tảng công nghệ cho phép chúng ta: • Mơ hình hóa liệu tài liệu: MongoDB đưa cho cách tốt để làm việc với liệu • Thiết kế hệ thống phân tán: cho phép đưa liệu vào nơi muốn cách thơng minh • Một trải nghiệm thống cho phép tự chạy đâu - cho phép chứng minh cơng việc tương lai loại bỏ khóa chặt nhà cung cấp 1.3 Các thành phần MongoDB Database: container collection giống sở liệu chứa bảng RDBMS Mỗi database có file hệ thống file Server MongoDB lưu trữ nhiều database Collection: nhóm liệu thuộc loại người dùng quy định, khác collection với table RDBMS collection khơng có ràng buộc, quan hệ với collection khác Mỗi liệu collection không cố định số trường row table Document: tài liệu lưu trữ dạng json Nó tương đương với row table RDBMS liệu document linh hoạt, khơng cố định có trường, liệu trường phải cố định _id: trường bắt buộc phải có document Trường biểu diễn giá trị cho document Vì bắt buộc nên khơng thiết lập giá trị cho MongoDB tự động sinh trường Field: cặp key-value Một document khơng có trường có nhiều trường Các trường tương tự cột RDBMS Embedded Documents: Nếu RDBMS, có kiểu join bảng, ví dụ bảng person join với bảng address để biết person có address MongoDB, document person chứa array document address ❖ So sánh hệ quản trị sở liệu quan hệ MongoDB RDBMS MongoDB Database Database Table Collection Row Document Column Field Table Join Embedded Documents Primary Key Primary Key (mặc định _id) 1.4 Các tính bật MongoDB 1.4.1 Truy vấn Ad hoc Khi thiết kế lược đồ (schema) sở liệu, biết trước tất truy vấn thực người dùng cuối Truy vấn ad hoc lệnh tồn thời gian ngắn có giá trị phụ thuộc vào biến Mỗi truy vấn ad hoc thực thi, kết khác nhau, tùy thuộc vào biến đề cập Việc tối ưu hóa cách thức xử lý truy vấn ad hoc tạo khác biệt đáng kể quy mơ lớn, hàng nghìn đến hàng triệu biến số cần xem xét Đây lý MongoDB, sở liệu hướng tài liệu, lược đồ linh hoạt, bật tảng sở liệu đám mây lựa chọn cho ứng dụng doanh nghiệp yêu cầu phân tích thời gian thực Với hỗ trợ truy vấn ad hoc cho phép nhà phát triển cập nhật truy vấn ad hoc thời gian thực, việc cải thiện hiệu suất thay đổi chơi MongoDB hỗ trợ truy vấn trường (field queries), truy vấn phạm vi (range queries) tìm kiếm biểu thức quy Các truy vấn trả trường cụ thể tính đến chức người dùng xác định Điều thực MongoDB lập mục tài liệu BSON sử dụng ngôn ngữ truy vấn MongoDB (MQL) 1.4.2 Indexing Vấn đề số mà nhiều nhóm hỗ trợ kỹ thuật không giải với người dùng họ lập mục Khi thực đúng, mục nhằm cải thiện tốc độ hiệu suất tìm kiếm Việc khơng xác định mục thích hợp thường dẫn đến vơ số vấn đề khả truy cập, chẳng hạn vấn đề với thực thi truy vấn cân tải Nếu khơng có mục phù hợp, sở liệu buộc phải quét tài liệu để xác định tài liệu phù hợp với câu lệnh truy vấn Nhưng tồn mục thích hợp cho truy vấn, yêu cầu người dùng máy chủ thực thi cách tối ưu MongoDB cung cấp loạt số tính với thứ tự xếp theo ngôn ngữ cụ thể hỗ trợ mẫu truy cập phức tạp vào tập liệu Đáng ý, mục MongoDB tạo theo yêu cầu để đáp ứng yêu cầu ứng dụng mẫu truy vấn thay đổi theo thời gian thực Chúng khai báo trường tài liệu bạn, kể trường lồng mảng 1.4.3 Replication Khi liệu bạn nằm sở liệu nhất, có nhiều khuyết điểm tiềm ẩn, chẳng hạn cố máy chủ, gián đoạn dịch vụ chí lỗi phần cứng cũ Bất kỳ kiện số khiến việc truy cập liệu bạn gần Nhân rộng cho phép bạn vượt qua lỗ hổng cách triển khai nhiều máy chủ để khôi phục lưu sau thảm họa Việc mở rộng quy mô theo chiều ngang nhiều máy chủ chứa liệu (hoặc phân đoạn liệu đó) có nghĩa tính khả dụng ổn định liệu tăng lên đáng kể Đương nhiên, chép giúp cân tải Khi nhiều người dùng truy cập vào liệu, tải phân bổ đồng máy chủ Trong MongoDB, tập hợp sử dụng cho mục đích Một máy chủ node chấp nhận tất hoạt động ghi áp dụng hoạt động tương tự máy chủ phụ, chép liệu Nếu máy chủ gặp cố nghiêm trọng, máy chủ phụ chọn trở thành nút Và nút cũ trở lại trực tuyến, hoạt động máy chủ phụ cho nút 1.4.4 Sharding Khi xử lý tập liệu đặc biệt lớn, sharding - trình tách tập liệu lớn thành nhiều tập hợp phân tán, “phân đoạn” - giúp sở liệu phân phối thực thi tốt truy vấn có vấn đề rườm rà Nếu khơng có sharding, việc mở rộng ứng dụng web phát triển với hàng triệu người dùng hàng ngày gần Giống chép thông qua chép, sharding MongoDB cho phép khả mở rộng theo chiều ngang lớn nhiều Chia tỷ lệ theo chiều ngang có nghĩa phân đoạn cụm chứa phần tập liệu đề cập, hoạt động sở liệu riêng biệt Tập hợp phân đoạn máy chủ phân tán tạo thành sở liệu nhất, toàn diện, phù hợp nhiều để xử lý nhu cầu ứng dụng phát triển, phổ biến mà khơng có thời gian chết Tất hoạt động môi trường sharding xử lý thông qua quy trình nhẹ gọi mongos Mongos hướng truy vấn đến phân đoạn dựa khóa phân đoạn Đương nhiên, sharding thích hợp góp phần đáng kể vào việc cân tải tốt 1.4.5 Cân tải Vào cuối ngày, cân tải tối ưu giải pháp tốt việc quản lý sở liệu quy mô lớn cho ứng dụng doanh nghiệp phát triển Việc phân phối hàng triệu yêu cầu khách hàng đến hàng trăm hàng nghìn máy chủ cách thích hợp dẫn đến khác biệt đáng ý (và đánh giá cao) hiệu suất May mắn thay, thơng qua tính mở rộng quy mô ngang chép sharding, MongoDB hỗ trợ cân tải quy mơ lớn Nền tảng xử lý nhiều yêu cầu đọc ghi đồng thời cho liệu với giao thức khóa kiểm sốt đồng thời tốt lớp để đảm bảo tính qn liệu Khơng cần thêm cân tải bên - MongoDB đảm bảo người dùng có chế độ xem quán trải nghiệm chất lượng với liệu họ cần truy cập 1.5 Ưu, nhược điểm MongoDB 1.5.1 Ưu điểm • MongoDB phần mềm mã nguồn mở miễn phí, có cộng đồng phát triển lớn • Tốc độ truy vấn MongoDB nhanh hẳn so với hệ quản trị sở liệu quan hệ • Do MongoDB dùng lưu trữ liệu dạng Document JSON nên collection có kích cỡ document khơng giống nhau, linh động việc lưu giữ liệu, bạn insert thỏa mái liệu mà muốn • Dữ liệu MongoDB khơng có ràng buộc lẫn nhau, khơng có join RDBMS nên insert, xóa hay update khơng ln phải thời gian kiểm duyệt xem có thỏa mãn ràng buộc liệu RDBMS • MongoDB dễ mở rộng Trong MongoDB có khái niệm cluster cụm node chứa liệu ăn nói với nhau, mong muốn mở rộng máy ta cần thêm node với vào cluster • Trường liệu “_id” tự động đánh mục để tốc độ truy vấn nội dung đạt hiệu cao • Khi có truy vấn liệu, ghi cached lên nhớ Ram, để phục vụ lượt truy vấn sau xảy nhanh mà không cần phải đọc từ ổ cứng 1.5.2 Nhược điểm • Một điểm tốt MongoDB chủ đạo nhược điểm MongoDB khơng có thuộc tính ràng buộc RDBMS nên dễ bị làm sai liệu Do thực hành bước với MongoDB phải cẩn thận • Khơng hỗ trợ join giống RDBMS nên viết function join code ta phải làm tay khiến cho tốc độ truy vấn bị giảm • Tốn nhớ liệu lưu dạng key-value, collection khác value nên key bị lặp lại Không hỗ trợ join nên dễ bị dư thừa liệu (trong RDBMS ta cần lưu ghi ghi khác tham chiếu tới, MongoDB khơng) • Khi insert/update/remove ghi, MongoDB chưa cập nhật xuống ổ cứng, mà sau 60 giây MongoDB thực ghi toàn liệu thay đổi từ RAM xuống ổ cứng điều điểm khơng tốt có nguy bị liệu xảy tình điện… CHƯƠNG CÁC CƠ CHẾ BẢO MẬT CỦA MONGODB 2.1 Cơ chế xác thực MongoDB Xác thực q trình xác minh danh tính người dùng Khi kiểm sốt truy cập kích hoạt, MongoDB yêu cầu tất máy khách xác thực để xác định quyền truy cập Mặc dù xác thực ủy quyền có mối liên hệ chặt chẽ với nhau, xác thực khác với ủy quyền Xác thực giúp xác minh danh tính người dùng; ủy quyền xác định quyền người dùng truy cập tương tác phạm vi tài nguyên giới hạn 2.1.1 Phương thức xác thực Gồm phương thức xác thực: Xác thực với tư cách người dùng: cung cấp tên người dùng, mật đăng nhập ⁃ sở liệu xác thực liên kết với người dùng ⁃ Xác thực cách sử dụng mongoshell: + Sử dụng tùy chọn câu lệnh mongo xác thực ( username, password -authenticationDatabase) kết nối với mongob mongos Kết nối với mongod mongos, sau chạy lệnh authenticate phương thức db.auth() dựa sở liệu xác thực Việc xác thực nhiều lần với tư cách khác không làm thông tin đăng nhập người dùng xác thực trước Điều dẫn đến kết nối có nhiều quyền chủ đích người dùng khiến hoạt động phiên logic phát sinh lỗi 2.1.2 Cơ chế xác thực Trước có quyền truy cập vào hệ thống, người dùng phải xác thực nhận dạng danh tính MongoDB Điều đảm bảo khơng có ứng + dụng khác truy cập vào liệu lưu trữ MongoDB mà không cho phép người có quyền hạn MongoDB hỗ trợ hai chế xác thực để người dùng xác minh danh tính họ: • SCRAM (Mặc định) • Chứng X.509 Ngoài ra, MongoDB Enterprise cung cấp hỗ trợ xác thực LDAP proxy xác thực Kerberos 2.1.2.1 SCRAM Cơ chế xác thực thách thức – phản hồi có Salt (Salted Challenge Response Authentication Mechanism - SCRAM) chế xác thực mặc định cho MongoDB o validator - cấu hình định dạng cho liệu trường o validationLevel - xác định độ nghiêm ngặt validator Giá trị là: ▪ "off" - không validator insert update "strict" - Đây giá trị mặc định Thiết lập validator với câu lệnh ▪ insert update "moderate" - thiết lập validator cho rule liệt kê validator, ▪ o o o nhếu trường khơng có không áp dụng validationAction - thiết lập trạng thái liệu khơng khớp với validator Giá trị điền vào "error" "warn" indexOptionDefaults viewOn pipeline o collation Lưu ý: Để thực lệnh createCollection ta cần phải khai báo sử dụng database o • Để xóa collection MongoDB ta sử dụng cú pháp: db.collectionName.drop() • Để xem danh sách collection có database ta sử dụng cú pháp: show collections 3.3 Insert document MongoDB cung cấp cho phương thức để thực việc thêm liệu vào collection Bao gồm phương thức sau: • insert • insertOne • inserMany 3.3.1 Insert Phương thức insert MongoDB dùng để thêm nhiều liệu vào MongoDB, cú pháp sử dụng: db.collectionName.insert(data) Trong đó: • collectionName tên collection cần thêm liệu vào • data object chứa trường giá trị có thẻ mảng đối tượng (nếu bạn muốn thêm nhiều ghi lần khai báo) 20 3.3.2 InsertOne Phương thức insertOne MongoDB có tác dụng cho phép insert liệu vào MongoDB lần khai báo, cú pháp sử dụng: db.collectionName.insertOne(data) Trong đó: • collectionName tên collection cần thêm liệu vào • data obejct chứa liệu cần thêm vào 3.3.3 InsertMany Phương thức insertMany cho phép thêm nhiều liệu vào MongoDB, cú pháp sử dụng: db.collectionName.insertMany(data) Trong đó: • collectionName tên collection cần thêm liệu vào • data mảng obejct chứa liệu cần thêm vào Chú ý: Với ba phương thức collectionName chưa tồn hệ thống mặc định MongoDB tự động thêm collection đồng thời insert liệu ln 3.4 Xóa document Để xóa liệu MongoDB ta sử dụng phương thức remove() với cú pháp: db.collectionName.remove( , { justOne: , writeConcern: , collation: } ) Trong đó: • collectionName tên collection mà bạn muốn thực thi lệnh xóa document • query object (hay gọi document) chứa câu truy vấn để lọc liệu • justOne tham số cấu hình số lượng ghi xóa query thực thi khớp o Nếu justOne: true xóa ghi o Nếu justOne: false xóa tất ghi khớp với điều kiện query • writeConcern document chứa write concern không bắt buộc 21 • collation document chứa quy tắc khơng bắt buộc Chú ý: Ngồi phương thức remove(), MongoDB cịn có phương thức deleteOne() deleteMany() để xóa xóa nhiều document theo lọc 3.5 Truy vấn liệu 3.5.1 Lấy tất liệu collection • Để lấy tất liệu collection sử dụng phương thức find() với cú pháp: db.collectionName.find() Trong đó: collectionName tên collection mà bạn muốn truy vấn Tuy nhiên, sử dụng phương thức find liệu trả dạng object không theo cấu trúc • Để liệu trả hiển thị theo cấu trúc định sẵn ta sử dụng phương thức pretty() với cú pháp: db.collectionName.find().pretty() 3.5.2 Truy vấn có điều kiện Để truy vấn có điều kiện MongoDB ta sử dụng cú pháp tương tự lấy tất liệu, lúc chèn thêm điều kiện vào hàm find() với cú pháp sau: db.collectionName.find(condition) Trong đó: • collectionName tên collection mà bạn muốn truy vấn • condition object chứa mệnh đề điều kiện Phép tốn Bằng (Equality) Cú pháp {key: value} Ví dụ db.admin.find({name: "Tran Huong" }).pretty() Nhỏ (Less Than ) {key: {$lt: value}} db.admin.find({age: $lt: 18}).pretty() { Nhỏ (Less {key: {$lte: value}} Than Equals) db.admin.find({age: $lte: 18}).pretty() { Lớn Than) db.admin.find({age: $gt: 12}).pretty() { db.admin.find({age: { (Greater {key: {$gt: value}} Lớn {key: {$gte: value}} (Greater Than Equals) Khác (Not Equals) $gte: 12}).pretty() {key: {$ne: value}} 22 db.admin.find({age: $ne: 12}).pretty() { Trong (In) {key: {$in: [value1, value2, ]}} db.admin.find({age: { $in: [12, 18]}).pretty() Không Thuộc (Not In) {key: {$nin: [value1, value2, ]}} db.admin.find({age: { $nin: [12, 18]}).pretty() Chú ý: Ngồi phương thức find(), MongoDB cịn có phương thức findOne() trả Document 3.5.3 Truy vấn nhiều điều kiện ❖ AND Trong phương thức find(), bạn truyền nhiều key cách phân biệt chúng dấu phẩy (,) MongoDB xem điều kiện AND Cú pháp AND MongoDB sau: db.collectionName.find({$and: [{key1: value1}, {key2:value2},…]}) ❖ OR Để sử dụng mệnh đề or (hoặc) MongoDB cần phải truyền key scope có tên $or vào làm key chứa mảng điều kiện hoặc, với cú pháp: db.collectionName.find({$or: [{key1: value1}, {key2:value2}, ]}) ❖ Kết hợp AND OR Để kết hợp AND OR bạn cần làm tương tự cách thực truy vấn AND, truy vấn or object lại làm tương tự truy vấn OR 3.6 Lập mục Trong MongoDB, index hỗ trợ thực câu truy vấn hiệu Nếu khơng có index, MongoDB phải duyệt tất document collection để tìm document thoả mãn với điều kiện truy vấn Nếu có index tồn tại, MongoDB sử dụng để giới hạn số lượng document mà phải kiểm tra Indexs cấu trúc đặc biết lưu trữ phần nhỏ collection, lưu giá trị field tập field đánh index xếp chúng theo giá trị field Với việc lưu trữ indexs xếp chúng, giúp MongoDB nhanh chóng tìm khoảng mà cần tìm kiếm Từ index tìm thấy nhanh chóng truy xuất đến document lưu trữ database MongoDB 3.6.1 Các loại index MongoDB MongoDB cung cấp số loại index khác để hỗ trợ cho kiểu liệu câu truy vấn khác • Single Field Index field Mặc định MongoDB lập single field index _id 23 Thứ tự xếp index single field không quan trọng MongoDB từ hướng đầu đến cuối ngược lại • Compound index MongoDB hỗ trợ đánh index nhiều field Lưu ý thứ tự field đánh index điều có ý nghĩa Ví dụ compound index {name: 1, userid: -1}, MongoDB sắp index theo name, sau với name có giá trị tiến hành xếp theo userid • Multikey index MongoDB sử dụng multikey index để index nội dung array Nếu bạn đánh index field array MongoDB tạo index riêng biệt cho tất phần tử array Multikey index cho phéo truy vấn chọn tài liệu cách khớp với nhiều phần tử array Lưu ý: Multikey index tự MongoDB thiết lập bạn đánh index field có kiểu liệu array Bạn không cần định thứ • Text index Text index hỗ trợ tìm kiếm nội dung có kiểu liệu string collection Text index khơng lưu trữ ngơn ngữ (ví dụ: “the”, “a”, “an”) mà lưu từ gốc 3.6.2 Index Properties • Unique indexs Unique index property đảm bảo bảo khơng có giá trị trùng lặp field đánh mục unique • Sparse Index Sparse index lưu trữ document có liệu field lập mục có giá trị null Nếu bạn khơng thêm field đánh sparse index insert bỏ qua Bạn kết hợp sparse index với unique index để ngăn chặn việc thêm liệu trùng lặp bỏ qua field index khơng thêm vào insert • TTL index TTL index loại index đặc biệt MongoDB tự động xoá document collection sau thời gian định sẵn TTL index phù hợp cho loại liệu event data, log, session Lưu ý: TTL index hoạt động với field có kiểu Date Trong hệ sở liệu, index dạng cấu trúc liệu dùng để tăng tốc độ đọc liệu sở liệu Cụ thể, MongoDB, Index cấu trúc liệu đặc biệt, lưu trữ phần nhỏ liệu collection dạng dễ dàng 24 duyệt Index lưu trữ giá trị trường cụ thể tập hợp trường collection xếp theo giá trị trường Đánh mục việc tách chọn thông tin liệu thành cấu trúc nhằm mục đích tăng tốc độ việc truy xuất liệu Để lập mục ta sử dụng phương thức createIndex() với cú pháp: db.collectioName.createIndex( {: < or -1 >, …} ); Phương thức createIndex() tạo mục chưa tồn tại, để kiểm tra mục có ta sử dụng phương thức getIndexes() với cú pháp: db.collectionName.getIndexes() Để xóa mục ta sử dụng phương thức dropIndex() với cú pháp: db.collectionName.dropIndex( fieldName ) 3.7 Tìm kiếm MongoDB hỗ trợ hoạt động truy vấn thực tìm kiếm văn nội dung chuỗi Để thực tìm kiếm văn bản, MongoDB sử dụng text index toán tử $text MongoDB cung cấp mục văn (text indexes) để hỗ trợ truy vấn tìm kiếm văn nội dung chuỗi Chỉ mục văn bao gồm trường có giá trị chuỗi mảng phần tử chuỗi (String) Để thực truy vấn tìm kiếm văn bản, bạn phải có mục văn sưu tập Một collection có mục tìm kiếm văn bản, mục bao gồm nhiều trường Ví dụ: db.stores.createIndex( { name: "text", description: "text" } ) Sử dụng tốn tử truy vấn $text để thực tìm kiếm văn collection có mục văn $text mã hóa chuỗi tìm kiếm cách sử dụng khoảng trắng hầu hết dấu câu làm dấu phân cách thực logic OR tất mã thông báo chuỗi tìm kiếm Ví dụ: bạn sử dụng truy vấn sau để tìm tất cửa hàng có chứa cụm từ từ danh sách "coffee", "shop" "java": db.stores.find( { $text: { $search: "java coffee shop" } } ) ❖ Cụm từ xác Bạn tìm kiếm cụm từ xác cách đặt chúng dấu ngoặc kép Nếu chuỗi $search bao gồm cụm từ cụm từ riêng lẻ, tìm kiếm văn khớp với tài liệu bao gồm cụm từ Ví dụ: phần sau tìm thấy tất tài liệu có chứa "coffee shop": db.stores.find( { $text: { $search: "\"coffee shop\"" } } ) 25 ❖ Loại trừ từ Để loại trừ từ, bạn thêm vào trước ký tự "-" Ví dụ: để tìm tất cửa hàng có chứa "java" "shop" khơng chứa "coffee", sử dụng sau: db.stores.find( { $text: { $search: "java shop -coffee" } } ) 26 CHƯƠNG 4.1 CÀI ĐẶT VÀ DEMO Cài đặt MongoDB Windows Truy cập vào link https://www.mongodb.com/try/download/community để thực tải xuống file cài đặt Click đúp vào file vừa tải thành công để tiến hành cài đặt Bấm Next để tiếp tục, sau chọn “I accept the terms in the License Agreement” bấm Next để sang bước 27 Chọn kiểu setup với chưa quen chọn “Complete” để cài đặt tất phần mềm phụ trợ Trong trường hợp bạn muốn tùy chỉnh (Custom) mục mà bạn muốn thiết lập Tiếp theo, chọn thư mục lưu data log cho MongoDB 28 Bấm Finish để kết thúc trình cài đặt 29 Sau cài đặt thành công, ta tạo biến môi trường cho MongoDB: thêm đường dẫn đến thư mục bin MongoDB vào Path System variables Chạy thử MongoDB cách mở hình cmd powerShell chạy lệnh mongo: 30 4.2 Demo lệnh quản trị MongoDB Hiển thị database có: Tạo database csdl-chat7: Tạo collection database csdl-chat7: Thêm liệu (document) vào collection: 31 Hiển thị tất ghi collection: Cập nhật document: 32 Lọc thành viên có tuổi nhỏ 24 có job “coder”: Tạo mục field name, loại text để hỗ trợ tìm kiếm chuỗi: Tìm kiếm thành viên mà thơng tin có chứa chữ “Tran” “Nguuyen” 33 TÀI LIỆU THAM KHẢO [1] Kiến trúc MongoDB, https://www.mongodb.com/mongodb-architecture [2] Các tính MongoDB, https://www.mongodb.com/what-is-mongodb/features [3] Cơ chế bảo mật MongoDB, https://docs.mongodb.com/manual/security/ [4] Tài liệu MongoDB, https://docs.mongodb.com/manual/ [5] Các hướng dẫn quản trị liệu MongoDB, https://toidicode.com/hoc-mongodb 34 ... chúng em tìm hiểu hệ quản trị sở liệu MongoDB để hiểu rõ MongoDB, kiến trúc, thành phần, tính hay chế bảo mật nó, đồng thời làm demo để biết cách quản trị MongoDB CHƯƠNG TỔNG QUAN VỀ MONGODB 1.1... quan hệ RDBMS tốc độ, tính năng, khả mở rộng, memory cache, MongoDB hệ quản trị sở liệu mã nguồn mở, sở liệu NoSQL hàng triệu người tiêu dùng MongoDB viết C++ MongoDB sở liệu hướng tài liệu. .. Ngoại trừ role tạo sở liệu admin, role chứa quyền áp dụng cho sở liệu kế thừa từ role khác sở liệu Ngoài ra, role tạo sở liệu admin bao gồm quyền áp dụng cho sở liệu đó, sở liệu khác cho cluster

Ngày đăng: 27/06/2022, 15:12

Hình ảnh liên quan

• justOne là tham số cấu hình số lượng bản ghi có thể xóa khi query thực thi khớp. oNếu justOne: true thì nó sẽ chỉ xóa 1 bản ghi duy nhất - BÀI tập lớn tìm HIỂU hệ QUẢN TRỊ cơ sở dữ LIỆU MONGODB

just.

One là tham số cấu hình số lượng bản ghi có thể xóa khi query thực thi khớp. oNếu justOne: true thì nó sẽ chỉ xóa 1 bản ghi duy nhất Xem tại trang 23 của tài liệu.
Chạy thử MongoDB bằng cách mở màn hình cmd hoặc powerShell và chạy lệnh mongo:  - BÀI tập lớn tìm HIỂU hệ QUẢN TRỊ cơ sở dữ LIỆU MONGODB

h.

ạy thử MongoDB bằng cách mở màn hình cmd hoặc powerShell và chạy lệnh mongo: Xem tại trang 32 của tài liệu.

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan