Tìm hiểu về NoSQL MongoDB

27 19 0
  • Loading ...
1/27 trang

Thông tin tài liệu

Ngày đăng: 03/10/2018, 16:51

NoSQL, viết tắt của non relational, hoặc theo cách hiểu khác thì có nghĩa là Not only SQL (không chỉ là SQL). NoSQL đặc biệt nhấn mạnh đến mô hình lưu trữ cặp giá trị khóa và hệ thống lưu trữ phân tán. Hệ CSDL này có thể lưu trữ, xử lý từ lượng rất nhỏ đến hàng petabytes dữ liệu với khả năng chịu tải, chịu lỗi cao nhưng chỉ đòi hỏi về tài nguyên phần cứng thấp. NoSQL thiết kế đơn giản, nhẹ, gọn hơn so với RDBMs, thiết kế đặc biệt tối ưu về hiệu suất, tác vụ đọc ghi, ít đòi hỏi về phần cứng mạnh và đồng nhất, dễ dàng thêm bớt các node không ảnh hưởng tới toàn hệ thống,… ĐỒ ÁN TÌM HIỂU NOSQL MONGODB GVHD: Nguyễn Huy Khánh Sinh viên thực hiện: - Nguyễn Mạnh Hùng _1141363 - Nguyễn Phước Duy _1142016 - Nguyễn Anh Khoa _1141375 Khoa CNTN – Trường Đại Học Khoa Học Tự Nhiên Đồ án tìm hiểu NoSQL MỤC LỤC - A_Báo cáo chi tiết nội dung tìm hiểu I Giới thiệu NoSQL II Đặc điểm NoSQL III Lợi ích NoSQL .4 IV Những hạn chế NoSQL V Giới thiệu MongoDB .7 VI Hướng dẫn cài đặt MongoDB .9 VII Làm Việc với MongoDB 15 1) Trên Command line .15 a Liệt kê CSDL hành 15 b Chọn CSDL sử dụng xem CSDL có bảng .15 c Hiển thị liệu từ CSDL 16 d Thêm dòng vào sở liệu hành 16 e Cập nhật dòng sở liệu hành 17 f Xóa dòng sở liệu hành 17 2) Trên Visual studio C# 18 a Kết nối đến Server 18 b Tạo sở liệu (Tên CSDL, bảng) 18 c Thêm vào CSDL (insert) 18 d Sửa dòng CSDL (update) 19 e Xóa dòng CSDL (Delete) 19 Khoa CNTN – Trường Đại Học Khoa Học Tự Nhiên Đồ án tìm hiểu NoSQL VIII So sánh MongoDB với sở liệu quan hệ 20 IX Viết ứng dụng nhỏ minh họa .21  Ứng dụng .21 B_Bảng điểm tự đánh giá 24 Khoa CNTN – Trường Đại Học Khoa Học Tự Nhiên Đồ án tìm hiểu NoSQL A_Báo cáo chi tiết nội dung tìm hiểu I Giới thiệu NoSQL - NoSQL, viết tắt non - relational, theo cách hiểu khác có nghĩa Not only SQL (không SQL) NoSQL đặc biệt nhấn mạnh đến mơ hình lưu trữ cặp giá trị - khóa hệ thống lưu trữ phân tán - Hệ CSDL lưu trữ, xử lý từ lượng nhỏ đến hàng petabytes liệu với khả chịu tải, chịu lỗi cao đòi hỏi tài nguyên phần cứng thấp NoSQL thiết kế đơn giản, nhẹ, gọn so với RDBMs, thiết kế đặc biệt tối ưu hiệu suất, tác vụ đọc - ghi, đòi hỏi phần cứng mạnh đồng nhất, dễ dàng thêm bớt node không ảnh hưởng tới tồn hệ thống,… - NoSQL lựa chọn mơ hình lưu trữ tập liệu theo cặp giá trị key-value Khái niệm node sử dụng quản lý liệu phân tán Với hệ thống phân tán, việc lưu trữ có chấp nhận trùng lặp liệu Một request truy vấn tới data gửi tới nhiều máy lúc, máy bị chết khơng ảnh hưởng nhiều tới tồn hệ thống Để đảm bảo tính real time hệ thống xử lý lượng lớn, thông thường người ta tách biệt database làm nhiều database Một database nhỏ đảm bảo vào liên tục, đạt tới ngưỡng thời gian dung lượng, database nhỏ gộp (merge) vào database lớn có thiết kế tối ưu cho phép đọc (read operation) II Đặc điểm NoSQL - Phi quan hệ (hay không ràng buộc): Các mối quan hệ bảng sở liệu quan hệ (RDBM) sử dụng mơ hình gồm loại khóa: khóa khóa phụ (primary key + foreign key) để ràng buộc liệu nhằm thể tính quán liệu từ bảng khác Non-relational khái niệm không sử dụng ràng buộc liệu cho quán liệu - Lưu trữ phân tán: mơ hình lưu trữ phân tán tập tin liệu nhiều máy khác mạng LAN Internet kiểm soát phần mềm Nhất qn cuối: tính qn liệu khơng cần phải đảm bảo tức khắc sau Khoa CNTN – Trường Đại Học Khoa Học Tự Nhiên Đồ án tìm hiểu NoSQL phép ghi Một hệ thống phân tán chấp nhận ảnh hưởng theo phương thức lan truyền sau khoảng thời gian (không phải tức khắc), thay đổi đến điểm hệ thống để cuối liệu hệ thống trở lại trạng thái quán - Triển khai đơn giản, dễ nâng cấp mở rộng - Mơ hình liệu truy vấn linh hoạt - Lưu trữ theo văn - Cần tài nguyên & phần cứng máy chủ để triển khai - Hỗ trợ đánh mục tất thuộc tính (Full Index Support ) - Có khả nhân rộng cao Hỗ trợ nhân rộng, phân tán máy chủ để phục vụ tốt phình liệu - Quy mô theo chiều ngang qua kiến trúc tự động sharding - Thực câu lệnh hỏi (query) dựa sở văn - Nhanh chóng cập nhật chỗ - Linh hoạt tập hợp sử lí liệu - Lưu trữ file có dung lượng mà khơng làm phức tạp ngăn xếp III Lợi ích NoSQL - Là mã nguồn mở miễn phí: o Các sản phẩm nguồn mở đưa cho người phát triển với vài lợi ích lớn lao, có tình trạng khơng có chi phí chúng o Những lợi ích khác: Phần mềm nguồn mở có xu hướng tin cậy hơn, an ninh nhanh để triển khai so với lựa chọn thay sở hữu độc quyền Khoa CNTN – Trường Đại Học Khoa Học Tự Nhiên Đồ án tìm hiểu NoSQL o Các hệ quản trị sở liệu NoSQL Cassandra, CouchDB, Hbase, MongoDB Redis - Phù hợp với công nghệ công nghệ đám mây: o NoSQL đám mây trùng khớp tự nhiên Các máy chủ ngày khơng đắt dễ dàng mở rộng phạm vi theo yêu cầu có sử dụng dịch vụ Amazon EC2 Giống tất công nghệ đám mây, EC2 dựa vào ảo hóa Liên kết yếu ảo hóa thực thi I/O, với nhớ CPU các kết nối mạnh o Các sở liệu NoSQL hầu hết sử dụng nhớ qua đĩa vị trí ghi - ngăn ngừa thực thi không ổn định I/O Và NoSQL lưu trữ liệu thường thúc đẩy tính mở rộng phạm vi theo chiều ngang thơng qua việc ngăn chia, chúng có khả tận dụng việc cung cấp mềm dẻo đám mây - Được hãng lớn tin dùng như: Các công ty Amazon, BBC, Facebook Google dựa vào sở liệu NoSQL IV Những hạn chế NoSQL - Nguồn mở hỗ trợ không đồng cho doanh nghiệp: o Trong nhà cung cấp chủ chốt RMBMS Oracle, IBM hay Sybase đưa hỗ trợ tốt tiếng cho khách hàng doanh nghiệp cỡ vừa, doanh nghiệp nhỏ hơn, thường nhà cung cấp nguồn mở thành lập mong đợi cung cấp hỗ trợ so sánh o Nhà cung cấp nguồn mở trung bình thiếu tiếp cận tồn cầu, dịch vụ hỗ - trợ tin cậy Oracle hay IBM Chưa đủ chín chắn cho doanh nghiệp: o Dù triển khai chúng số cơng ty lớn, sở liệu NoSQL đối mặt với vấn đề tin cậy với nhiều doanh nghiệp Điểm sống thiếu NoSQL độ chín muồi Khoa CNTN – Trường Đại Học Khoa Học Tự Nhiên Đồ án tìm hiểu NoSQL vấn đề tính khơng ổn định có thể, trích tính chín muồi, giàu - chức ổn định RDBMS thiết lập từ lâu Hạn chế tri thức nghiệp vụ: o Có vài câu hỏi xung quanh khả tri thức nghiệp vụ (BI) sở liệu NoSQL Liệu sở liệu cung cấp dạng phân tích liệu lớn mạnh mà doanh nghiệp quen với RDBMS? Cần tinh thơng lập trình cần có để tiến hành truy vấn o phân tích đại? Các câu trả lời khơng tích cực Các sở liệu NoSQL khơng có nhiều đeo bám tới công cụ BI thường sử dụng, yêu cầu phân tích đại đơn giản có liên quan khác nhiều tới tinh thơng lập trình Tuy vậy, giải pháp sẵn sàng Quest Software, ví dụ, tạo Toad cho sở liệu đám mây, mà phân phối khả truy vấn - đại tới số sở liệu NoSQL Thiếu tinh thơng: o Tính mẻ NoSQL có nghĩa khơng có nhiều lập trình viên người quản trị mà biết công nghệ - cho khó khăn cho cơng ty tìm người với tinh thông phù hợp Đối lại, giới RDBMS có hàng ngàn người đủ tư cách - Những vấn đề tương thích: o Khơng giống sở liệu quan hệ, sở liệu NoSQL chia sẻ theo cách thức tiêu chuẩn Mỗi sở liệu NoSQL có giao diện lập trình ứng dụng API riêng mình, giao diện truy vấn độc vơ nhị, riêng biệt Sự thiếu hụt tiêu chuẩn có nghĩa khơng có khả để chuyển cách đơn giản từ nhà cung cấp sang nhà cung cấp khác Khoa CNTN – Trường Đại Học Khoa Học Tự Nhiên Đồ án tìm hiểu NoSQL V Giới thiệu MongoDB - MongoDB mã nguồn mở "document-oriented" NoSQL - MongoDB phần gia đình NoSQL hệ thống sở liệu Thay lưu trữ liệu bảng thực sở liệu quan hệ "cổ điển" MongoDB lưu trữ liệu theo cấu trúc JSON với "schemas" (MongoDB gọi với định dạng BSON), làm cho dễ dàng nhanh trình tương - tác với liệu loại ứng dụng định Phát triển MongoDB bắt đầu vào tháng Mười năm 2007 10gen Nó sở liệu phong phú tính trưởng thành sẵn sàng để sử dụng - Nó sử dụng MTV Networks [1], Craigslist [2] Foursquare [3] Những chương trình có sẵn cho Windows, Linux, OS X, Solaris Để xem đặc trưng MongoDB vào trang chính: http://www.mongodb.org/ - Hiện MongoDB hỗ trợ cho ngôn ngữ đây: C C++ Erlang Haskell Java Javascript NET (C# F#, PowerShell, etc) Perl PHP Python Ruby Scala Ngồi xem thêm đây: http://www.mongodb.org/display/DOCS/Drivers Khoa CNTN – Trường Đại Học Khoa Học Tự Nhiên Đồ án tìm hiểu NoSQL - Mục tiêu kết hợp điểm mạnh mơ hình key-values nhanh mà tính mở rộng cao với mơ hình liệu quan hệ giàu chức - Mục tiêu Mongo giữ lại thuộc tính thân thiện SQL Do câu truy vấn giống với SQL nên MongoDB thích hợp cho lập trình viên quen với ngơn ngữ truy vấn SQL MongoDB có khối lượng tính lớn hiệu cao.Với loại liệu phong phú, nhiều truy vấn việc giảm thời gian phát triển việc mơ hình hóa đối tượng - MongoDB sử dụng tốt với nhu cầu cần truy vấn động, ta muốn định nghĩa mục mà không cần hàm map/reduce Đặc biệt ta cần tốc độ nhanh cho sở liệu lớn MongoDB ngồi tốc độ đọc nhanh tốc độ ghi nhanh - Các đặc điểm mongoDB là: o Các truy vấn Ad hoc: Mongo hỗ trợ việc tìm theo trường, khoảng kết tìm tìm theo cú pháp Các truy vấn trả trường qui định 16 văn bao gồm hàm Javascript mà người dùng chưa định nghĩa o Đánh mục: Bất trường MongoDB đánh mục (giống mục bên RMDBs) o Mô (nhân bản): Mongo hỗ trợ mô Master-slave.Một master điều khiển việc đọc ghi Một slave tạo sữ liệu từ master sử dụng cho việc đọc backup (không có quyền ghi).Slave có khả chọn master master cũ bị hỏng o Cân tải: Mongo mở rộng theo chiều ngang cách sử dụng sharding Các lập trình viên chọn khóa chia sẻ nhằm xác định liệu phân tán Dữ liệu tách thành khoảng dựa vào khóa phân tán dọc theo Shard Khoa CNTN – Trường Đại Học Khoa Học Tự Nhiên Đồ án tìm hiểu NoSQL o Lưu trữ file: Mongo lưu trữ file hệ thống, tốt cho việc cân tải nhân liệu.Trong cá hệ thống nhiều máy, file phân phối nhiều lần máy cách suốt Do hiệu việc tạo hệ thống cân tải VI Hướng dẫn cài đặt MongoDB - Tải MongoDB http://www.mongodb.org/downloads Khoa CNTN – Trường Đại Học Khoa Học Tự Nhiên Đồ án tìm hiểu NoSQL - Bước quan trọng file mà ta phải chạy để MongoDB hoạt động Ta tạo trình soạn thảo bất ký "notepad" win copy nội dung sau: C:\mongodb\bin\mongod.exe dbpath=C:/mongodb/data/db - PAUSE Tên thư mục đường dẫn thay đổi tùy theo người dùng Cuối lưu dạng mở rộng bat - Sau xong ta chạy file.bat mà ta vừa tạo lên Xuất hình Console hình ta cài đặt thành công 12 Khoa CNTN – Trường Đại Học Khoa Học Tự Nhiên Đồ án tìm hiểu NoSQL - Lưu ý: Đây tập tin chạy dùng để kết nối sở liệu Ta không tắt q trình kết nối 13 Khoa CNTN – Trường Đại Học Khoa Học Tự Nhiên Đồ án tìm hiểu NoSQL - Tạo biến mơi trường: Phải chuột My Computer -> Properties -> Advanced and Settings -> chọn tag Advanced -> chọn Environment variables -> Chọn Path System variable -> ghi thêm vào c:\mongodb\bin 14 Khoa CNTN – Trường Đại Học Khoa Học Tự Nhiên Đồ án tìm hiểu NoSQL - Để kiểm tra ta mở cửa sổ Console khác để thực tạo sở liệu test Chạy file.bat trước sau mở cmd gõ: mongo Nếu hình kết nối thành công 15 Khoa CNTN – Trường Đại Học Khoa Học Tự Nhiên Đồ án tìm hiểu NoSQL VII Làm Việc với MongoDB - Các khái niệm NoSQL  Fields - tương đương với khái niệm Columns SQL  Document - thay khái niệm row SQL Đây khái niệm làm nên khác biệt NoSQL SQL, document chứa số cột (fields) không cố định row số cột(columns) định sẵn trước  Collection - tương đương với khái niệm table SQL Một collection tập hợp document Điều đặc biệt collection chứa document hồn tồn khác  Key-value - cặp từ khóa - giá trị dùng để lưu trữ liệu NoSQL  Cursor - tạm dịch trỏ Chúng ta sử dụng cursor để lấy liệu từ database 1) Trên Command line a Liệt kê CSDL hành Show dbs - Có thể tham khảo thêm command line: Gõ help b Chọn CSDL sử dụng xem CSDL có bảng Use dbs Ví dụ: use QLHocSinh_NoSQL Ở CSDL QLHocSinh có bảng bảng HocSinh bảng Lop - Có thể tham khảo thêm command line: Gõ db.help() 16 Khoa CNTN – Trường Đại Học Khoa Học Tự Nhiên Đồ án tìm hiểu NoSQL c Hiển thị liệu từ CSDL db.TenCSDL.find() Ví dụ: db.QLHocSinh_NoSQL.find(); db.QLHocSinh.Lop.find(); Hiển thị liệu bên bảng HocSinh bảng Lop - - Ngồi nhiều kiểu để ta lấy liệu từ CSDL như:  db.TenCSDL.find().count()  db.TenCSDL.find().limit(n)  db.TenCSDL.find().skip(n)  db.TenCSDL.find().sort(…)  db.TenCSDL.findOne([query])  db.TenCSDL.findAndModify( {update:…, remove…., bool [, query: {}, sort: {}, ‘new’:false] } ) Có thể tham khảo thêm command line: gõ db.mycoll.help() d Thêm dòng vào sở liệu hành db.TenBang.insert() Ví dụ: Thêm vào bảng Lop lớp “10A1” Gõ: db.Lop.insert( {TenLop:”10A1”} ) Có thể dùng cách khác để insert dử liệu sau: 17 Khoa CNTN – Trường Đại Học Khoa Học Tự Nhiên Đồ án tìm hiểu NoSQL - Có thể tham khảo thêm command line: gõ db.mycoll.help() e Cập nhật dòng sở liệu hành db.TenBang.update( {_id: ‘…’, ‘TenThuocTinhThayDoi’ : ’TenCu’}, {$set: {‘TenThuocTinhThayDoi’ : ’Ten Moi’} }, {upsert:true} ) Ví dụ: Thay đổi Lớp “10A1” thành lớp “11A2” Gõ: db.Lop.update( {_id : ‘50f789a355b3042d7e23a0’, ‘TenLop’ : ‘10A1’} {$set: {‘TenLop’:’11A2’}}, {upsert:true } ) - Có thể tham khảo thêm command line: gõ db.mycoll.help() f Xóa dòng sở liệu hành db.TenBang.remove( {TenCotCanXoa : ’TenCanXoa’} ) Ví dụ: Xóa Lớp “10A1” bảng Lop Gõ: db.Lop.remove( {TenLop : ‘10A1’} ) - Có thể tham khảo thêm http://docs.mongodb.org/manual/reference/method/ 18 Khoa CNTN – Trường Đại Học Khoa Học Tự Nhiên Đồ án tìm hiểu NoSQL 2) Trên Visual studio C# a Kết nối đến Server - Import thư viện - Kết nối tới Server Mongo mongo = new Mongo(); mongo.Connect(); b Tạo sở liệu (Tên CSDL, bảng) Mongo mongo = new Mongo(); mongo.Connect(); var db = mongo.GetDatabase("QLHocSinh_NoSQL"); //Tên CSDL tạo IMongoCollection collHocsinh = db.GetCollection("HocSinh"); //Tạo bảng HocSinh - Chú ý bên cạnh liệu ta insert, có thêm field _id Mỗi document có giá trị _id riêng MongoDB tự động tạo cho bạn bạn khơng làm việc Field _id mặc định tạo index c Thêm vào CSDL (insert) Mongo mongo = new Mongo(); mongo.Connect(); var db = mongo.GetDatabase("QLHocSinh_NoSQL"); //Tên CSDL tạo IMongoCollection collHocsinh = db.GetCollection("HocSinh"); //Tạo bảng HocSinh Document docHocSinh = new Document(); docHocSinh["_id"] = hocsinh.strMaHS; docHocSinh["TenHS"] = hocsinh.strTenHS; docHocSinh["GioiTinh"] = hocsinh.strGioiTinh; docHocSinh["NgaySinh"] = hocsinh.dtNgaySinh; docHocSinh["NoiSinh"] = hocsinh.strNoiSinh; docHocSinh["SoDienThoai"] = hocsinh.strSoDienThoai; docHocSinh["Email"] = hocsinh.strEmail; docHocSinh["TenLop"] = hocsinh.strTenLop; collHocsinh.Insert(docHocSinh); //Thêm học sinh 19 Khoa CNTN – Trường Đại Học Khoa Học Tự Nhiên Đồ án tìm hiểu NoSQL d Sửa dòng CSDL (update) Mongo mongo = new Mongo(); mongo.Connect(); var db = mongo.GetDatabase("QLHocSinh_NoSQL"); //Tên CSDL tạo IMongoCollection collHocsinh = db.GetCollection("HocSinh"); //Tạo bảng HocSinh Document docHocSinh = new Document(); docHocSinh["_id"] = hocsinh.strMaHS; docHocSinh["TenHS"] = hocsinh.strTenHS; docHocSinh["GioiTinh"] = hocsinh.strGioiTinh; docHocSinh["NgaySinh"] = hocsinh.dtNgaySinh; docHocSinh["NoiSinh"] = hocsinh.strNoiSinh; docHocSinh["SoDienThoai"] = hocsinh.strSoDienThoai; docHocSinh["Email"] = hocsinh.strEmail; docHocSinh["TenLop"] = hocsinh.strTenLop; collHocsinh.Update(docHocSinh); //Cập nhật học sinh e Xóa dòng CSDL (Delete) Document docHocSinh = new Document(); docHocSinh["_id"] = "a1"; collHocsinh.Delete(docHocSinh); - Xóa document thỏa mãn điều kiện Ở có Mã học sinh “a1” 20 Khoa CNTN – Trường Đại Học Khoa Học Tự Nhiên Đồ án tìm hiểu NoSQL VIII So sánh MongoDB với sở liệu quan hệ Biểu đồ gây tranh cải vể việc MongoDB chèn liệu nhanh SQL Sever tới 100 lần  MongoDB  Dễ sử dụng triển khai  Hiệu cao  Truy vấn nhanh  MongoDB nhanh SQL khoảng 30 – 50 lần  MongoDB vượt trội hẳn so với SQL hiệu suất (khoảng lần) 21 Khoa CNTN – Trường Đại Học Khoa Học Tự Nhiên Đồ án tìm hiểu NoSQL IX Viết ứng dụng nhỏ minh họa  Ứng dụng: Quản lý học sinh cấp  Chương trình bao gồm chức năng:  Xem danh sách sinh viên theo lớp 22 Khoa CNTN – Trường Đại Học Khoa Học Tự Nhiên Đồ án tìm hiểu NoSQL  Thêm sinh viên vào lớp học  Chỉnh sửa sinh viên lớp học 23 Khoa CNTN – Trường Đại Học Khoa Học Tự Nhiên Đồ án tìm hiểu NoSQL  Xóa sinh viên khỏi lớp học 24 Khoa CNTN – Trường Đại Học Khoa Học Tự Nhiên Đồ án tìm hiểu NoSQL 25 Khoa CNTN – Trường Đại Học Khoa Học Tự Nhiên Đồ án tìm hiểu NoSQL B_Bảng điểm tự đánh giá MãSV 1141363 1142016 1141375 Họ tên Nguyễn Mạnh Hùng Nguyễn Phước Duy Nguyễn Anh Khoa Điểm tự đánh giá 10 10 10 26 ... Tự Nhiên Đồ án tìm hiểu NoSQL A_Báo cáo chi tiết nội dung tìm hiểu I Giới thiệu NoSQL - NoSQL, viết tắt non - relational, theo cách hiểu khác có nghĩa Not only SQL (không SQL) NoSQL đặc biệt... án tìm hiểu NoSQL V Giới thiệu MongoDB - MongoDB mã nguồn mở "document-oriented" NoSQL - MongoDB phần gia đình NoSQL hệ thống sở liệu Thay lưu trữ liệu bảng thực sở liệu quan hệ "cổ điển" MongoDB. .. tìm hiểu NoSQL MỤC LỤC - A_Báo cáo chi tiết nội dung tìm hiểu I Giới thiệu NoSQL II Đặc điểm NoSQL III Lợi ích NoSQL
- Xem thêm -

Xem thêm: Tìm hiểu về NoSQL MongoDB, Tìm hiểu về NoSQL MongoDB, IV. Những hạn chế của NoSQL, VI. Hướng dẫn cài đặt MongoDB, IX. Viết các ứng dụng nhỏ minh họa

Gợi ý tài liệu liên quan cho bạn

Nhận lời giải ngay chưa đến 10 phút Đăng bài tập ngay