Đề tài tìm hiểu MongoDB

25 1.3K 3
Đề tài tìm hiể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

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG ──────── * ─────── BÁO CÁO PROJECT Đề tài: tìm hiểu MongoDB Sinh viên thực : Phạm Văn Mạnh MSSV: 20132553 Giáo viên hướng dẫn :TS.Trịnh Anh Phúc Hà Nội, tháng năm 2016 CHƯƠNG 1: TỔNG QUAN Đặt vấn đề Cùng với phát triển xã hội nay, đặt biệt bùng nổ công nghệ thông tin vấn đề liệu cần đặc biệt ý 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 quan hệ truyền thống Để đáp ứng nhu cầu lưu trữ, xữ lý liệu không lồ, cần 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 Mục tiêu đề tài Tìm hiểu hệ quản trị CSDL Mongodb, biết cách cài đặt hệ sử dụng Mongodb để lưu trữ liệu ( Tạo database, thêm/ xóa/ sữa truy vấn liệu) Biết cách xây dựng ứng dụng sủ dụng Mongodb để làm CSDL cho ứng dụng Nội dung • Phần 1: tổng quan  Tìm hiểu tổng quan đề tài  Mục tiêu đề tài  Lên nội dung  Viết báo cáo • Phần 2: NoSql  NoSql gì?  Ưu nhược điểm NoSql  So sánh NoSql với CSDL quan hệ  Viết báo cáo • Phần 3: Tìm hiểu mongoDB        Cài đặt MongoDB Các lệnh tạo Đatabase Các lệnh thêm sửa xóa CSDL Truy vấn liệu Khái niệm NoSql Bảng, cột Ưu điểm CHƯƠNG 2: TÌM HIỂU CƠ SỞ DỮ LIỆU NOSQL 2.1 Khái niệm NoSql NoSQL Non-Relational: tạm dịch quan hệ NoSQL sở liệu không quan hệ, ràng buộc Collection (hay gọi bảng sở liệu bình thường) Tức Collection (Bảng) khóa chính, khóa sở liệu bình thường Việc giảm bớt rối sở liệu có nhiều bảng 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 2.2 Ưu nhược điểm CSDL NoSql a Ưu điểm  Là mã nguồn mở: chi phí có xu hướng tin cậy, an ninh nhanh để triển khai so với hệ quản trị sở liệu độc quyền  Linh hoạt việc mở rộng phát triển: Về phía công ty quản lý giúp dễ dàng mở rộng máy chủ liệu ngày lớn lượng truy cập, tải liệu lớn, thay thuê máy chủ lớn để máy chủ trước công ty cần thuê thêm máy chủ khác Về phía người lập trình giúp dễ dàng thêm Collection (Bảng) cặp liệu (Cột) Dễ dàng việc thống kê, truy vấn nhanh  Áp dụng công nghệ điện toán đám mây: 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 NoSQL lưu trữ liệu thường mở rộng phạm vi theo chiều ngang tận dụng b 2.3 cung cấp mềm dẻo đám mây Giúp mở rộng liệu dễ dàng  Được hãng lớn sử dụng Amazon, BBC, Facebook Google Làm tảng, sở cho công ty lớn áp dụng có tin cậy cao hệ quản trị NoSQL Nhược điểm NoSql  Hỗ trợ không đồng cho doanh nghiệp Các doanh nghiệp vừa hỗ trợ tốt từ nhà cung cấp RMBMS (vì phát triển trước NoSQL thời gian dài) doanh nghiệp nhỏ thường sử dụng mã nguồn mở không hỗ trợ tốt  Chưa sử dụng rộng rãi NoSQL chưa nhận tin cậy với nhiều doanh nghiệp, phần liệu xây dựng từ lâu, nên việc chuyển đổi vấn đề khó với nhiều doanh nghiệp chưa hỗ trợ tốt chức ổn định RMBMS  Còn lạ với số lập trình viên Chưa sử dụng để đào tạo rộng rãi Chưa có tool hỗ trợ giao diện tương tác phương thức tốt Dẫn đến hạn chế tri thức nghiệp vụ  Chia sẻ liệu chưa theo tiêu chuẩn chung Mỗi CSDL NoSQL có giao diện lập trình ứng dụng API riêng Sự thiếu hụt tiêu chuẩn có nghĩa khả để chuyển cách đơn giản từ nhà cung cấp sang nhà cung cấp khác So sánh NoSql với CSDL quan hệ Tiêu chí đánh giá Đánh mục lượng lớn liệu, phân trang phân phối luồng liệu RDBMs Có nhiều yếu NoSql Thực tốt media Mô hình liệu table Yêu cầu phần cứng cho liệu lớn Yêu cầu phần cứng máy chủ cao Cách lấy liệu từ client Thông qua chuỗi kết nối (tên máy chủ, tên sở liệu, tên tài khoản mật khẩu) Hiệu xuất Kém SQL Relational bảng Hạn chế lượng Khả mở rộng Phù hợp với công nghệ điện toán đám mây Hiệu xuất đọc ghi Không Kém thiết kế để đảm bảo vào/ra liên tục liệu Thay đổi số node hệ Phải shutdown hệ thống thống Việc thay đổi số node phức tạp Hỗ trợ lập trình hướng đối Kém tượng Tính tiện dụng mặt hỗ Tốt trợ a) Key/Value, Columnbased – Tabular, Documentbased, Graphbased datastores Không thiết phần cứng phải cao, mở rộng máy chủ nhiều nơi với tài nguyên phần cứng thấp Thông qua API (Application Programming Interface) Cực tốt Bỏ qua SQL Bỏ qua ràng buộc liệu Hỗ trợ lượng lớn cho node Có Tốt với mô hình xử lý lô tối ưu đọcghi liệu Không cần phải shutdown hệ thống Việc thay đổi số node đơn giản, không ảnh hưởng đến hệ thống Tốt Còn chưa hoàn thiện Các RDBMs bộc lộ yếu việc đánh mục lượng lớn liệu, phân trang, phân phối luồng liệu media (phim, ảnh, nhạc ) Cơ sở liệu quan hệ thiết kế cho mô hình liệu nhỏ thường xuyên đọc viết Social Network Services lại có lượng liệu cực lớn cập nhật liên tục số lượng người dùng b) c) d) e) 2.4 nhiều thời điểm Thiết kế Distributed NoSQL giảm thiểu tối đa phép tính toán, I/O liên quan kết hợp với batch processing đủ đảm bảo yêu cầu xử lý liệu mạng dịch vụ liệu cộng đồng Facebook, Amazon ví dụ điểm hình NoSQL chủ yếu lựa chọn mô hình lưu trữ tập liệu theo cặp giá trị key/value để dễ dàng việc truy xuất Trong NoSQL có khái niệm gọi node sử dụng quản lý liệu phân tán Hệ thống liệu phân tán kiểm tra có trùng liệu hay không, nên liệu phân tá chấp nhận việc lưu trữ trùng lặp liệu Khi có yêu cầu truy vấn lấy liêu có nhiều máy lúc gửi đến, có máy bị hỏng không ảnh hưởng nhiều tới toàn hệ thống Thông thường người ta tách biệt database nhiều database để đảm bảo lượng truy cập xử lý lớn Một database nhỏ đảm bảo liệu nhập/ xuất liên tục, liệu đạt tới ngưỡng gộp vào Database lớn có thiết kế tối ưu cho việc Mô hình cho phép tăng cường hiệu suất nhập/ xuất Thế hệ CSDL NoSQL - giảm thiểu tối đa phép tính toán, tác vụ đọcghi, đảm bảo yêu cầu xử lý liệu dịch vụ mạng xã hội 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 lựa chọn tốt cho công ty nhỏ không đủ kinh phí cho việc đầu tư quyền server mạnh, cấu hình cao Đây kết thống kê lượng người dùng sử dụng sở liệu NoSQL RDBMs: Phân loại NoSql a) Wide Column Store / Column Families: Hệ sở liệu cho phép truy xuất ngẫu nhiên/tức thời với khả lưu trức lượng lớn liệu có cấu trúc Dữ liệu tồn dạng bảng với hàng tỷ ghi ghi chứa hàng triệu cột Hệ thống triển khai từ vài trăm hàng nghìn thiết bị dẫn đến khả lưu trữ hàng petabytes đảm bảo hiệu cao  Một số sản phẩm thông dụng: Hadoop/Hbase – Apache, Bigtable – Google, Cassandra – Facebook, Hypertable – Baidu, Accumulo, Amazon SimpleDB, Cloundata, Clouera…  Thường cho: hệ phân tán file Ưu điểm: Tìm kiếm nhanh, Phân tán liệu tốt Nhược điểm: Hỗ trợ với phần mềm Document Store: Thực chất sở liệu hướng tài liệu, thiết kế riêng biệt cho việc lưu trữ tài liệu Các cài đặt giả lập tương tác cở sở liệu quan hệ, sở liệu đối tượng hay key-value store  Một số sản phẩm tiêu biểu: MongoDB, Elasticsearch, Couchbase Server, CouchDB, RethinkDB,  Thường cho: Web applications  Ưu điểm: Dùng liệu nguồn không mô tả đầy đủ  Nhược điểm: Hiệu truy vấn, Không có cú pháp chuẩn cho câu truy vấn liệu Key Value / Tuple Store: Mô hình lưu trữ liệu dạng cặp giá trị keyvalue việc truy suất, xóa, cập nhật giá trị thực thông qua key tương ứng.Với hỗ trợ kĩ thuật Btree, B+Tree, Hash,… liệu tồn RAM ổ cứng, phân tán không phân tán Hầu hết cá NoSql Database key-value store  Các sản phẩm thông dụng: DynamoDB, Azure Table Storage, Riak, Redis,…  Thường cho: Content caching Applications  Ưu điểm: Tìm kiếm nhanh  Nhược điểm: Lưu liệu không theo khuôn dạng (schema) định Graph Databases: Là dạng sở liệu thiết kế riêng cho việc lưu trữ thông tin đồ họa cạnh, nút hay thuộc tính  Một số sản phẩm tiêu biểu như:Neo4j, Infinite Graph, InfoGrid, HyperGraphDB, Dex, GraphBase, …  Thường cho: Social networking, Hệ trợ giúp  Ưu điểm: Ứng dụng thuật toán đồ thị Đường ngắn nhất, liên thông,…  Nhược điểm: Phải duyệt nội đồ thị, để trả lời lại truy vấn Không dễ để phân tán Multimodel Databases: Datomic, OrentDB, ArangoDB, FatDB, AlchemyDB, … Object Databases: Versant, db4o, Objectivity, Starcounter, Perst, VelocityDB, HSS Database, ZoDB, …   b) c) d) e) f) g) h) Grid & Cloud Database Solutions: Gigaspaces, Infinispan, Queplix, Hazelcast, … XML Databases: EMC Document xDB, eXist, Sedna, BaseX, Qizx, … CHƯƠNG 3: HỆ QUẢN TRỊ CSDL MONGODB Cở sở liệu MongoDB 1.1 Giới thiệu MongoDB MongoDB mã nguồn mở, dùng để thiết kế sở liệu để dễ dàng phát triển mở rộng, cung cấp hiệu suất cao, tính sẵn sàng cao Cấu trúc Mongodb bao gồm cặp “thuộc tính” – “giá trị”, MongoDB document tương tự đối tượng JSON Giá trị thuộc tính bao gồm thuộc tính giá trị cụ thể ( số, chữ, …), document, mảng, mảng đối tượng Các tính chính: - Hiệu suất cao: Hỗ trợ nhúng liệu dạng mô hinh liệu giúp giảm thiểu hoạt động server, Truy vấn liệu sử dụng mục giúp tối ưu tốc độ truy vấn - Dễ dàng tăng tính mở rộng: chế sharding tự động (tự động phân vùng liệu máy chủ, động hóa liệu tốt MongoDB chạy hầu hết tảng hỗ trợ kiến trúc 64-bit để sử dụng sản xuất hai 64-bit 32-bit kiến trúc để thử nghiệm Các hệ điều hành bổ trợ: Amazon Linux Debian 7.1 RedHat / CentOS 6.2+ SUSE 11 Ubuntu LTS 12.04 Ubuntu LTS 14.04 Windows Server 2012 Mac OSX 10.6+ Mongodb Hỗ trợ Hỗ trợ Hỗ trợ Hỗ trợ Hỗ trợ Hỗ trợ Hỗ trợ Hỗ trợ Mongodb Enterprise Hỗ trợ Hỗ trợ Hỗ trợ Hỗ trợ Hỗ trợ Hỗ trợ Hỗ trợ RedHat / CentOS 5.5+ RedHat / CentOS 5.7+ Windows Server 2008 R2 1.2 Hỗ trợ Hỗ trợ Hỗ trợ Hỗ trợ Hỗ trợ Cài đặt MongoDB 1.2.1 Giới thiệu MongoDB Windows Hướng dẫn cài đặt MongoDB Windows, sử dụng hệ điều hành Win8 - 64bit Và sử dụng phiên mongodb: mongodb-win32x86_64-3.2.5-signed.msi 1.2.2 Một số ý đặt MongoDB Windows  Bắt đầu từ phiên 2.2, MongoDB không hỗ trợ cho hệ điều hành Windows XP Vì vậy, nên dùng hệ điều hành Windows  Cài đặt file msi chứa phần mềm hỗ trợ tốt cho hệ điều hành dùng tự động cập nhật cho MongoDB  Xác định rõ việc cài đặt loại MongoDB cần cho hệ điều hành bạn - MongoDB dành cho Windows 64-bit chạy Windows Server 2008 R2, Windows 64-bit phiên Windows Phiên tận dụng cải tiến gần cho tảng Windows không hỗ trợ cho phiên trước Windows - MongoDB dành cho Windows 32-bit chạy hệ điều hành Windows 32-bit so với Windows Vista Phiên 32-bit dành cho hệ thống cũ để sử dụng thử nghiệm phát triển hệ thống Phiên 32-bit hỗ trợ sở liệu nhỏ 2G - MongoDB dành cho Windows 64-bit Legacy chạy Windows Vista, Windows Server 2003 Windows Server 2008 Phiên không gồm hỗ trợ tốt hiệu xuất tảng Chú ý: kiểm tra hệ điều hạnh bạn chạy thông qua lệnh “wmic os get caption” “wmic os get osarchitecture” dùng Command Prompt : 1.2.3 Hướng dẫn tải Windows Vào trang http://www.mongodb.org/downloads/ kéo xuống làm theo hướng dẫn hình: 1.2.4 Hướng dẫn cài đặt windows Kick đúp vào file tải làm sau: 1.2.5 Cấu hình MongoDB Windows Thư mục vừa cài đặt Vào cmd gõ lệnh: cd C:\Program Files\MongoDB\Server\3.2\bin Để trỏ đến thư mục cài đặt Mongodb Bắt đầu làm việc với Mongodb Bắt đầu thực với câu lệnh tạo Collection 1.2.6 Công cụ RoboMongo làm việc với MongoDB Giới thiệu: RoboMongo công cụ trực quan giúp bạn quản lý Database MongoDB Nó phần mềm mã nguồn mở miễn phí, hỗ trợ loại hệ điều hành Windows, Linux, Mac OS Link tải: http://robomongo.org/download.html MongoDB CRUD CRUD viết tắt Create (Tạo), Retrieve (Lấy), Update (Cập nhật) Delete(Xóa) MongoDB lưu trữ liệu document, với cặp thuộc tính: giá trị Json MongoDB lưu trữ tất document Collection Collection nhóm document giống số thành phần 1.2.8 Các khái niệm MongoDB CRUD • Database gì? Database Ô chứa liệu mức vật lý (physical), database có nhiều collection thiết lập lưu trữ nơi máy chủ máy tính Một máy chủ MongoDB thường tạo nhiều sở liệu • Collection gì? Collection MongoDB nhóm tài liệu (document), tương đương với bảng (table) CSDL thông thường nên collection thuộc database Tuy nhiên có sực khác biệt ràng buộc Relationship hệ quản trị CSDL khác nên việc truy xuất nhanh, collection chứa nhiều thể loại khác không giống table hệ quản trị mysql field cố định • Document gì? Document MongoDB có cấu trúc tương tự kiểu liệu JSON, nghĩa có cặp (key => giá trị) nên có tính động lớn Document ta hiểu giống record liệu MYSQL, nhiên có khác biệt cặp (key => value) không giống document 1.2.7 Để rõ so sánh MongoDB hệ quản trị CSDL RDBMS Database Table Tuple/Row Column Table Join Primary key MongoDB Database Collection Document Field Embedded Document Primary key (mặc định _id) Chạy Server: Vào thư mục cài đặt mongo chạy file “mongod.exe” kết chạy thành công sever: Mở cửa sổ cmd thực mở sở liệu: Tạo Database: Dùng lênh “show dbs” để xem database có server Tạo Collection Dùng lệnh “dropDatabase” để xóa database sau Thêm liệu: Có số key/value có Document Collection Sửa liệu Xem liệu Collect manh: Tìm liệu Lấy tất xếp theo id 1.3 Data Model Hệ quản trị sở liệu MongoDB mô hình liệu linh hoạt Không giống sở liệu SQL, phải xác định triển khai sơ đồ bảng trước chèn liệu, Collection MongoDB linh hoạt, không thiết phải cho biết thuộc tính có Collection, cần bổ sung sau Sự linh hoạt tạo điều kiện cho việc hướng tới cách lưu trữ thực thể hay đối tượng Mỗi Document có phù hợp với trường liệu Collection chứa nó, thay đổi gần toàn liệu Tuy nhiên, thực tế, Document Collection chung cấu trúc Khi thiết kế sở liệu cần ý cân nhu cầu ứng dụng (tức có nên tạo nhiều Collection lồng nhau), đặc tính hiệu suất thực truy vấn, mô hình liệu Khi thiết kế mô hình liệu, luôn xem xét việc sử dụng liệu (ví dụ truy vấn, cập nhật, xử lý liệu) cấu trúc vốn có thân liệu Thiết kế data Model Với MongoDB, bạn nhúng liệu liên quan vào Structure Document, hay gọi mô hình "denormalized" Mô hình liệu nhúng cho phép ứng dụng lưu trữ phần liệu liên quan thông tin Document sở liệu Sử dụng nhúng mô hình liệu khi: Cơ sở liệu có muối quan hệ thực thể (One-to-One One-to-Many) Nói chung, nhúng cung cấp hiệu suất tốt cho hoạt động đọc, khả yêu cầu lấy liệu có liên quan hoạt động sở liệu Chuẩn hóa data Model Tạo liên kết “id” Document với Một số đặc trưng MongoDB Thược tính Lưu trữ hướng văn Hỗ trợ muục đầy đủ Tính lặp tính sẵn sàng cao Auto-sharding Đặc trưng Văn theo phong cách JSON với lươc đồ đơn giản Chỉ mục bất kỳ thuộc tính Mở rộng Mở rộng theo chiều ngang mà không ảnh hưởng đến chức Truy vấn GridFS Hỗ trợ thương maị Đa dạng, truy v ấn dựa văn Lưu trữ file với bất kỳ kích cỡ mà không làm phức tạp ngăn xếp Hỗ trợ doanh nghiêp, đào tào, tư vấn Khái niệm Mongodb Các điểm lưu ý lựa chọn MongoDB: - - - Nếu ứng dụng có tính chất INSERT cao, mặc định MongoDB có sẵn chế ghi với tốc độ cao an toàn Ứng dụng dạng thời gian thực nhiều, nghĩa nhiều người thao tác với ứng dung Nếu trình load bị lỗi điểm bỏ qua phần nên an toàn Ứng dụng bạn có nhiều liệu Ví dụ, giả sử web có đến 10 triệu records ác mộng với MYSQL Bởi MongoDB có khả tìm kiến thông tin liên quan nhanh nên trường hợp nên dùng Máy chủ hệ quản trị CSDL, trường hợp thường bạn sử dụng SQL LIFE MongoDB Một số lệnh truy vấn tương đương SQL MongoDB Tài liệu tham khảo [1] Ebook NoSQL – Nhữ Đình Thuận [2] Eelco Plugge, Peter Membrey and Tim Hawkins, The Definitive Guide to MongoDB The NoSQL Database for Cloud and Desktop Computing [3] NoSQL resources - http://nosql-database.org/ [4] NoSQL in the Enterprise - http://www.infoq.com/articles/nosql-in-theenterprise [5] NoSQL wiki - http://en.wikipedia.org/wiki/NoSQL [6] Kristina Chodorow - Michael Dirolf, MongoDB: The Definitive Guide, O’reilly, 2010 [7] http://www.mongodb.org

Ngày đăng: 11/07/2016, 09:14

Từ khóa liên quan

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

Tài liệu liên quan