1. Trang chủ
  2. » Công Nghệ Thông Tin

Tìm hiểu về NoSQL MongoDB

28 387 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 28
Dung lượng 1,53 MB

Nội dung

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,…

Trang 1

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

Trang 2

MỤC LỤC

-

-A_Báo cáo chi tiết nội dung tìm hiểu 3

I Giới thiệu NoSQL 3

II Đặc điểm NoSQL 3

III Lợi ích của NoSQL 4

IV Những hạn chế của NoSQL 5

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ê các CSDL hiện hành 15

b Chọn CSDL sử dụng và xem CSDL đó có bao nhiêu bảng 15

c Hiển thị dữ liệu từ CSDL 16

d Thêm dòng vào cơ sở dữ liệu hiện hành 16

e Cập nhật một dòng trong cơ sở dữ liệu hiện hành 17

f Xóa một dòng trên cơ sở dữ liệu hiện hành 17

2) Trên Visual studio C# 18

a Kết nối đến Server 18

b Tạo cơ sở dữ liệu (Tên CSDL, các bảng) 18

c Thêm vào CSDL (insert) 18

d Sửa các dòng trên CSDL (update) 19

e Xóa các dòng trên CSDL (Delete) 19

Trang 3

VIII So sánh MongoDB với cơ sở dữ liệu quan hệ 20

IX Viết các ứng dụng nhỏ minh họa 21

 Ứng dụng 21

B_Bảng điểm tự đánh giá 24

Trang 4

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 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ặpgiá 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êmbớt các node không ảnh hưởng tới toàn hệ thống,…

- NoSQL lựa chọn mô hình lưu trữ tập dữ liệu theo cặp giá trị key-value Khái niệm

node được sử dụng trong quản lý dữ liệu phân tán Với các hệ thống phân tán, việclưu trữ có chấp nhận trùng lặp dữ liệu Một request truy vấn tới data có thể gửi tớinhiều máy cùng lúc, khi một máy nào nó bị chết cũng không ảnh hưởng nhiều tớitoàn bộ hệ thống Để đảm bảo tính real time trong các hệ thống xử lý lượng lớn, thôngthường người ta sẽ tách biệt database ra làm 2 hoặc nhiều database Một database nhỏđảm bảo vào ra liên tục, khi đạt tới ngưỡng thời gian hoặc dung lượng, database nhỏ

sẽ được 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ệ giữa các bảng trong cơ sở

dữ liệu quan hệ (RDBM) sử dụng mô hình gồm 2 loại khóa: khóa chính và khóaphụ (primary key + foreign key) để ràng buộc dữ liệu nhằm thể hiện tính nhất

các ràng buộc dữ liệu cho nhất quán dữ liệu

- Lưu trữ phân tán: mô hình lưu trữ phân tán các tập tin hoặc dữ liệu ra nhiều máy

quán cuối: tính nhất quán của dữ liệu không cần phải đảm bảo ngay tức khắc sau

Trang 5

mỗi phép ghi Một hệ thống phân tán chấp nhận những ảnh hưởng theo phươngthức lan truyền và sau một khoảng thời gian (không phải ngay tức khắc), thay đổi

sẽ đi đến mọi điểm trong hệ thống để cuối cùng dữ liệu trên hệ thống sẽ trở lạitrạng thái nhất quán

- Triển khai đơn giản, dễ nâng cấp và mở rộng.

- Mô hình dữ liệu và truy vấn linh hoạt.

vụ tốt khi phình dữ liệu

III Lợi ích của NoSQL

Trang 6

o Các hệ quản trị cơ sở dữ liệu NoSQL là Cassandra, CouchDB, Hbase,

MongoDB và Redis

- Phù hợp với các công nghệ mới như công nghệ đám mây:

o NoSQL và đám mây là một sự trùng khớp tự nhiên Các máy chủ ngày nay làkhông đắt và có thể dễ dàng mở rộng phạm vi được theo yêu cầu có sử dụng

dựa vào ảo hóa Liên kết yếu của ảo hóa là sự thực thi của I/O, với bộ nhớ vàCPU các các kết nối mạnh

tiên - vì thế ngăn ngừa được sự thực thi không ổn định của I/O Và vì NoSQLlưu trữ dữ liệu thường thúc đẩy được tính mở rộng phạm vi theo chiều ngangthông qua việc ngăn chia, chúng có khả năng tận dụng được việc cung cấpmềm dẻo của đám mây

- Được các hãng lớn tin dùng như: Các công ty như Amazon, BBC, Facebook và

Google dựa vào các cơ sở dữ liệu NoSQL

IV Những hạn chế của NoSQL

- Nguồn mở vì thế có thể sẽ hỗ trợ không đồng đều cho các doanh nghiệp:

Sybase đưa ra sự hỗ trợ tốt nổi tiếng cho các khách hàng doanh nghiệp cỡ vừa,thì các doanh nghiệp nhỏ hơn, thường là các nhà cung cấp nguồn mở mớithành lập không thể được mong đợi cung cấp được sự hỗ trợ có thể so sánhđược

o Nhà cung cấp nguồn mở trung bình thiếu sự tiếp cận toàn cầu, các dịch vụ hỗ

- Chưa đủ chín chắn cho các doanh nghiệp:

NoSQL vẫn đối mặt với một vấn đề về sự tin cậy chính với nhiều doanh

Trang 7

nghiệp Điểm sống còn đối với sự thiếu của NoSQL về độ chín muồi và cácvấn đề về tính không ổn định có thể, trong khi trích ra tính chín muồi, giàu

- Hạn chế về tri thức nghiệp vụ:

các cơ sở dữ liệu NoSQL Liệu các cơ sở dữ liệu này có thể cung cấp dạng

Cần bao nhiêu sự tinh thông về lập trình cần có để tiến hành những truy vấn

và phân tích hiện đại?

đeo bám tới các công cụ BI thường được sử dụng, trong khi những yêu cầu vàphân tích hiện đại đơn giản nhất có liên quan khác nhiều tới sự tinh thông vềlập trình Tuy vậy, các giải pháp là sẵn sàng Quest Software, ví dụ, đã tạo raToad cho các cơ sở dữ liệu đám mây, mà nó phân phối các khả năng truy vấnhiện đại tới một số cơ sở dữ liệu NoSQL

- Thiếu sự tinh thông:

người quản trị mà biết công nghệ này - là cho khó khăn cho các công ty tìm

những người đủ tư cách

- Những vấn đề về sự tương thích:

ít theo cách thức của các tiêu chuẩn Mỗi cơ sở dữ liệu NoSQL có các giaodiện lập trình ứng dụng API riêng của mình, các giao diện truy vấn độc nhất vônhị, và những sự riêng biệt Sự thiếu hụt các tiêu chuẩn có nghĩa là nó không

Trang 8

có khả năng để chuyển một cách đơn giản từ một nhà cung cấp này sang mộtnhà cung cấp khác.

Trang 9

V Giới thiệu MongoDB

lưu trữ dữ liệu trong bảng được thực hiện trong các cơ sở dữ liệu quan hệ "cổđiển" thì MongoDB lưu trữ dữ liệu theo cấu trúc JSON với "schemas" (MongoDBgọi với định dạng là BSON), làm cho dễ dàng hơn và nhanh hơn quá trình tươngtác với dữ liệu trong các loại ứng dụng nhất định

một cơ sở dữ liệu phong phú tính năng trưởng thành và sẵn sàng để sử dụng

Để xem các đặc trưng chính của MongoDB vào trang chính:

Trang 10

cao với mô hình dữ liệu quan hệ giàu chức năng

- Mục tiêu chính của Mongo là giữ lại các thuộc tính thân thiện của SQL Do đó cáccâu truy vấn khá giống với SQL nên MongoDB khá thích hợp cho các lập trìnhviên đã quen với ngôn ngữ truy vấn SQL MongoDB có một khối lượng tính nănglớn và hiệu năng cao.Với các loại dữ liệu phong phú, nhiều truy vấn và việc giảmthời gian phát triển trong việc mô hình hóa các đối tượng

- MongoDB được sử dụng tốt nhất với nhu cầu cần truy vấn động, nếu ta muốn định

nhanh cho một cơ sở dữ liệu lớn vì MongoDB ngoài tốc độ đọc nhanh ra thì tốc độghi của nó rất nhanh

- Các đặc điểm chính của mongoDB là:

và tìm theo cú pháp Các truy vấn có thể trả về các trường được qui định 16

chưa định nghĩa

o Đánh chỉ mục: Bất cứ một trường nào trong MongoDB đều được đánh chỉ

mục (giống như chỉ mục bên RMDBs)

thể điều khiển việc đọc và ghi Một slave tạo bản sao sữ liệu từ master và chỉ

chọn ra một master mới nếu master cũ bị hỏng

Các lập trình viên chọn các khóa chia sẻ nhằm xác định dữ liệu sẽ được phântán như thế nào Dữ liệu sẽ được tách thành các khoảng dựa vào khóa và phântán dọc theo các Shard

Trang 11

o Lưu trữ file: Mongo lưu trữ bằng file hệ thống, rất tốt cho việc cân bằng tải và

nhân bản dữ liệu.Trong cá hệ thống nhiều máy, các file được phân phối vàđược sao ra rất nhiều lần giữa các máy một cách trong suốt Do đó rất hiệuquả trong việc tạo ra một hệ thống cân bằng tải

VI Hướng dẫn cài đặt MongoDB

- Tải MongoDB tại http://www.mongodb.org/downloads

Trang 12

- Sau khi tải xong copy và giải nén Ở đây chọn ổ c:\mongodb\bin

- Vào c:\mongodb\bin sẽ nhìn thấy các file của MongoDB cung cấp cho ta

Trang 13

- Bước tiếp theo tiến hành tạo 1 thư mục để chứ các csdl của MongoDB.

Ở đây ta tạo tiếp ở ổ C:\mongodb

 Tạo thư mục tên là "db" bên trong "data"

Trang 14

- Bước tiếp theo rất quan trọng và sẽ là file mà ta phải chạy nó để MongoDB có thể hoạt động Ta tạo ở một trình soạn thảo bất ký bất kỳ như "notepad" của win và copy nội dung sau:

dạng đuôi mở rộng là bat

C:\mongodb\bin\mongod.exe dbpath=C:/mongodb/data/db

PAUSE

Trang 15

- Sau khi xong thì ta chạy file.bat mà ta vừa tạo đó lên Xuất hiện màn hình Consolenhư hình dưới đây là ta đã cài đặt thành công.

- Lưu ý : Đây là tập tin chạy dùng để kết nối cơ sở dữ liệu Ta không được tắt nó đi trong quá trình kết nối

Trang 16

- Tạo biến môi trường: Phải chuột tại My Computer -> Properties -> Advanced and Settings -> chọn tag Advanced -> chọn Environment variables -> Chọn Path dưới

System variable -> ghi thêm vào c:\mongodb\bin

Trang 17

- Để kiểm tra ta mở 1 cửa sổ Console khác để thực hiện tạo 1 cơ sở dữ liệu test.

nối thành công

Trang 18

VII Làm Việc với MongoDB

- Các khái niệm mới trong NoSQL

Fields - tương đương với khái niệm Columns trong SQL

Document - thay thế khái niệm row trong SQL Đây cũng chính là khái

niệm làm nên sự khác biệt giữa NoSQL và SQL, 1 document chứa số cột (fields) không cố định trong khi 1 row thì số cột(columns) là định sẵn trước

Collection - tương đương với khái niệm table trong SQL Một collection là

tập hợp các document Điều đặc biệt là một collection có thể chứa các document hoàn toàn khác nhau

Key-value - cặp từ khóa - giá trị được dùng để lưu trữ dữ liệu trong NoSQL

Cursor - tạm dịch là con trỏ Chúng ta sẽ sử dụng cursor để lấy dữ liệu từ

database

1) Trên Command line

a Liệt kê các CSDL hiện hành

Show dbs

b Chọn CSDL sử dụng và xem CSDL đó có bao nhiêu bảng

Use dbs

Ví dụ: use QLHocSinh_NoSQL

Ở đây CSDL QLHocSinh có 2 bảng là bảng HocSinh và bảng Lop

Trang 19

- Có thể tham khảo thêm ở command line: Gõ db.help()

c Hiển thị dữ liệu từ CSDL

db.TenCSDL.find()

Ví dụ: db.QLHocSinh_NoSQL.find(); db.QLHocSinh.Lop.find();

Hiển thị dữ liệu bên trong bảng HocSinh và bảng Lop

- Ngoài ra còn nhiều kiểu để ta có thể lấy dữ liệu từ CSDL ra như:

query: {}, sort: {}, ‘new’:false] } )

- Có thể tham khảo thêm ở command line: gõ db.mycoll.help()

d Thêm dòng vào cơ sở dữ liệu hiện hành

db.TenBang.insert()

Ví dụ: Thêm vào bảng Lop một lớp nữa là “10A1”

Gõ: db.Lop.insert( {TenLop:”10A1”} )

Trang 20

Có thể dùng cách khác để insert dử liệu như sau:

e Cập nhật một dòng trong cơ sở dữ liệu hiện 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 } )

f Xóa một dòng trên cơ sở dữ liệu hiện hành

db.TenBang.remove( {TenCotCanXoa : ’TenCanXoa’} )

Ví dụ: Xóa Lớp “10A1” trong bảng Lop

Gõ: db.Lop.remove( {TenLop : ‘10A1’} )

Trang 21

- Có thể tham khảo thêm ở http://docs.mongodb.org/manual/reference/method/

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 cơ sở dữ liệu (Tên CSDL, các bảng)

Mongo mongo = new Mongo ();

mongo.Connect();

var db = mongo.GetDatabase( "QLHocSinh_NoSQL" ); //Tên CSDL được tạo ra IMongoCollection collHocsinh = db.GetCollection( "HocSinh" ); //Tạo

ba 'ng HocSinh

document có 1 giá trị _id riêng MongoDB sẽ tự động tạo nó cho bạn nếubạn không làm việc đó Field _id mặc định sẽ được tạo index

c Thêm vào CSDL (insert)

Trang 22

var db = mongo.GetDatabase( "QLHocSinh_NoSQL" ); //Tên CSDL được tạo ra IMongoCollection collHocsinh = db.GetCollection( "HocSinh" ); //Tạo

ba '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

d Sửa các dòng trên CSDL (update)

Mongo mongo = new Mongo ();

mongo.Connect();

var db = mongo.GetDatabase( "QLHocSinh_NoSQL" ); //Tên CSDL được tạo ra IMongoCollection collHocsinh = db.GetCollection( "HocSinh" ); //Tạo

ba '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 các dòng trên CSDL (Delete)

Document docHocSinh = new Document ();

docHocSinh[ "_id" ] = "a1" ;

collHocsinh.Delete(docHocSinh);

Trang 24

VIII So sánh MongoDB với cơ sở dữ liệu quan hệ

Biểu đồ gây tranh cải vể việc MongoDB chèn dữ liệu nhanh hơn SQL Sever tới hơn 100 lần

MongoDB

Trang 25

IX Viết các ứng dụng nhỏ minh họa

Ứng dụng: Quản lý học sinh cấp 3

Chương trình bao gồm các chức năng:

Xem danh sách sinh viên theo lớp hiện tại

Trang 26

Thêm sinh viên vào lớp học hiện tại

Chỉnh sửa sinh viên trong lớp học hiện tại

Trang 27

Xóa sinh viên khỏi lớp học hiện tại

Trang 28

B_Bảng điểm tự đánh giá

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

TỪ KHÓA LIÊN QUAN

w