1. Trang chủ
  2. » Giáo Dục - Đào Tạo

TÌM HIỂU NOSQL và ỨNG DỤNG

101 21 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

Thông tin cơ bản

Định dạng
Số trang 101
Dung lượng 1,72 MB

Nội dung

ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA CÔNG NGHỆ PHẦN MỀM KHỐ LUẬN TỐT NGHIỆP TÌM HIỂU NOSQL VÀ ỨNG DỤNG Giảng viên hướng dẫn : Ths PHẠM THI VƯƠNG Sinh viên thực : DƯƠNG THÂN DÂN - 08520057 BÙI NGỌC HUY Lớp : CNPM03 Khoá : 2008 - 2012 TP Hồ Chí Minh, tháng 12 năm 2012 - 08520544 LỜI MỞ ĐẦU Ngày với kỹ nguyên công nghệ bùng nổ, thành công Internet khiến cho số lượng người dùng truy cập vào hệ thống ngày tăng Điển Facebook tháng phục vụ 1000 tỉ truy cập 800 triệu lượt khách ghé thăm ta hình dung bùng nổ thông tin Để giải vấn đề bùng nổ mở rộng hệ thống máy chủ siêu lớn, phân thành nhiều cụm đặt khắp nơi giới Nhưng với tốc độ phát triển theo cấp số việc tăng số lượng máy chủ chưa đủ Ta cần xem xét nâng cấp giải pháp lưu trữ cho tương lai Hệ thống máy chủ sở liệu đòi hỏi phải mạnh mẽ không máy chủ bị tải Với hệ thống với số lượng lên đến hàng triệu hàng tỉ việc hiệu tốt việc bắt buộc.Các hệ RDBMS vấn đề hiệu thường không tốt cho trường hợp Ngôn ngữ SQL ngôn ngữ thông dịch với ràng buộc bảng khiến cho hiệu thực hệ thống sở liệu thực thi ì ạch với hệ thống lớn kể Chưa kể với hệ thống lớn vấn đề phân tán liệu, tính tồn vẹn liệu việc quan trọng NoSQL đáp ứng tất yêu cầu này.Với tốc độ nhanh khơng phải qua câu truy vấn SQL, có tính sẵn sàng, phân tán cao độ ổn định tuyệt vời, NoSQL thích hợp cho hệ thống có số lượng lượt truy vấn lớn Ở khố luận này, nghiên cứu loại NoSQL phổ biến – RavenDB RavenDB sở liệu mã nguồn mở có hỗ trợ transactional (giao dịch) viết cho tảng NET RavenDB đưa mơ hình liệu linh hoạt (flexible data model) nhằm đáp ứng yêu cầu hệ thống giới thực (real-world systems) RavenDB cho phép xây dựng ứng dụng có hiệu suất cao(high-performance), độ trễ thấp(low-latency) cách nhanh chóng hiệu RavenDB xứng đáng sở liệu đáng tin cậy LỜI CẢM ƠN Chúng em xin gửi lời cảm ơn sâu sắc đến thầy Phạm Thi Vương, giúp đỡ, tạo điều kiện cho nhóm hồn thành tốt khóa luận tốt nghiệp Thầy tận tình hướng dẫn đưa nhận xét vô quý giá để đề tài ngày hồn thiện Những góp ý thầy giúp cho chúng em tiếp cận, hiểu rõ giải vấn đề dễ dàng Đồng thời, chúng em xin bày tỏ lòng biết ơn đến quý thầy, cô Trường Đại Học Công Nghệ Thông Tin – Đại Học Quốc Gia Thành Phố Hồ Chí Minh, đặc biệt thầy, cô khoa Công nghệ Phần Mềm tận tình truyền đạt kiến thức, kinh nghiệm cho chúng em từ ngày đầu học tập trường Sự nhiệt tình thầy, giúp cho chúng em có kiến thức tảng vững kinh nghiệm thực tiễn quý báu để chúng em hồn thành tốt nhiệm vụ học tập, làm việc nghiên cứu Bên cạnh đó, chúng em gửi lời cảm ơn đến gia đình, anh, chị, bạn bè động viên, giúp đỡ chúng em nhiều trình học tập sống Thành phố Hồ Chí Minh, ngày 22 tháng 12 năm 2012 Nhóm sinh viên thực Dương Thân Dân – Bùi Ngọc Huy NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN NHẬN XÉT CỦA GIẢNG VIÊN PHẢN BIỆN MỤC LỤC DANH MỤC CÁC ……………………………………………… BẢNG,SƠ DANH MỤC HÌNH…………………………………………………………… TÀI LIỆU THAM KHẢO ĐỒ CÁC Trang DANH MỤC CÁC BẢNG, SƠ ĐỒ GVHD: Ths Phạm Thi Vương SVTH: Dương Thân Dân – Bùi Ngọc Huy Trang DANH MỤC CÁC HÌNH GVHD: Ths Phạm Thi Vương SVTH: Dương Thân Dân – Bùi Ngọc Huy Trang CHƯƠNG - GIỚI THIỆU ĐỀ TÀI 1.1 Vấn đề tìm hiểu Trong khoảng thập niên trở lại đây, hệ quản trị sở liệu quan hệ RDBMS lựa chọn cho việc quản trị sở liệu Tuy nhiên, với yêu cầu RDBMS bộc lộ yếu điểm Chính chặt chẽ, yêu cầu quán liệu gây rườm rà, phức tạp làm giảm hiệu xuất hoạt động, trường hợp phải chứa lượng lớn liệu Nhưng với bùng nổ công nghệ nay, với mạng Internet lượng liệu cần lưu trữ ngày tăng Yêu cầu cho việc lưu trữ ngày cao như: lưu trữ nhiều liệu, tốc độ truy xuất nhanh, phân tán liệu nhiều máy chủ… với mơ hình sở liệu quan hệ rõ ràng đáp ứng đủ yêu cầu Mọi vấn đề có giải pháp Thật vậy, năm gần lên xu hướng lưu trữ mới, cách thức trái ngược với sở liệu quan hệ - sở liệu phi quan hệ - NoSQL NoSQL sinh để khắc phục vấn đề mà sở liệu dạng RDBMS gặp phải NoSQL sinh để cạnh tranh với RDBMS mà để đảm nhiệm việc mà RDBMS chưa làm tốt Mục tiêu mà NoSQL nhắm đến hiệu suất hoạt động cao với số lượng liệu cực lớn Tuy nhiên để đạt điều NoSQL bỏ qua thơng dịch SQL với truy vấn rườm Việc sử dụng ràng buộc quan hệ truy vấn SQL thân thiện thích hợp với phần đông liệu Tuy nhiên, liệu đơn giản, thủ tục SQL không cần thiết (theo Curt Monash - nhà phân tích sở liệu, blogger) Đồng thời NoSQL có cách thiết kế liệu khác với sở liệu truyền thống như: tư tưởng thiết kế liệu phi quan hệ, lưu trữ liệu dạng document, sử dụng tối đa indexes… Trong đặc tính đó, liệu phi quan hệ yếu tố quan trọng góp phần làm nên thành công cho NoSQL Dữ liệu phi quan hệ tức khơng tn theo dạng chuẩn hóa mà sở liệu RDBMS đặt Thay vào đó, thiết kế sở kiệu NoSQL ta phải tuân theo số quy tắc mà NoSQL đặt để đạt hiệu suất hoạt động cao Bảng kết làm việc MySQL sở liệu Cassandra Facebook Facebook Search > 50 GB Data Writes Average Reads Average MySQL ~300ms ~350ms Cassandra 0.12ms 15ms Bảng 1.1: Hiệu suất hoạt động MySQL Cassandra GVHD: Ths Phạm Thi Vương SVTH: Dương Thân Dân – Bùi Ngọc Huy Trang 10 Chính khác biệt loại sở liệu dẫn đến cách thiết kế khác Đa số lập trình viên quen với mơ hình quan hệ truyền thống, cần phải tìm hiểu kĩ cách thiết kế liệu NoSQL để đạt hiệu suất mong muốn Đồng ý RDBMS cung cấp mơ hình tuyệt vời để đảm bảo tính tồn vẹn liệu Tuy nhiên, nhiều người lựa chọn NoSQL nói chúng khơng q cần thiết cho nhu cầu họ Như vậy, đề tài chúng tơi tìm hiểu xem NoSQL giải vấn đề áp dụng kiến thức tìm hiểu vào việc xây dựng ứng dụng sử dụng sở liệu dạng NoSQL 1.2 Mục tiêu đề tài Với vấn đề nêu trên, đề này cần đạt mục tiêu sau: - Tìm hiểu NoSQL, kiến trúc, phân loại đặc điểm loại để có nhìn tổng quan NoSQL đồng thời biết cách mà NoSQL giải vấn đề hiệu suất cao với lượng liệu lớn - Tìm hiểu trường hợp áp dụng sở liệu dạng NoSQL, trường hợp không phù hợp với NoSQL Phân tích làm rõ ưu khuyết điểm việc áp dụng sở liệu NoSQL So sánh việc sử dụng sở liệu RDBMS XML sở liệu NoSQL ứng dụng So sánh hiệu suất sở liệu dạng NoSQL sở liệu dạng RDBMS để làm rõ hiệu suất hoạt động NoSQL - Tìm hiểu tổng quan sở liệu NoSQL phổ biến như: RavenDB, Hadoop, Cassandra, MongoDB, CouchDB - Do có bốn loại sở liệu NoSQL (xem chi tiết chương Các giải pháp sở liệu NoSQL) nên chúng em tập trung tìm hiểu cách thiết kế liệu cho sở liệu loại Document database loại phổ biến Sau tìm hiểu chi tiết kĩ thuật sở liệu thuộc loại RavenDB - Sử dụng kiến thức RavenDB để xây dựng ứng dụng sử dụng sở liệu NoSQL đồng thời để tổng hợp lại kiến thức học trước Ở định xây dựng website cho phép người dùng thảo luận vấn đề (với chức Google Group) ứng dụng có tính chất phù hợp với sở liệu dạng NoSQL 1.3 Nội dung báo cáo Nội dung đề tài tổ chức thành chương: Chương – Giới thiệu đề tài: Trong chương trình bày vấn đề cần tìm hiểu luận văn này, mục tiêu cần đạt luận văn GVHD: Ths Phạm Thi Vương SVTH: Dương Thân Dân – Bùi Ngọc Huy Trang 87 Sơ đồ 5.14: Sequence diagram trang Home GVHD: Ths Phạm Thi Vương SVTH: Dương Thân Dân – Bùi Ngọc Huy Trang 88 Sơ đồ 5.15: Sequence diagram chức Join Group Sơ đồ 5.16: Sequence diagram chức Accept Member GVHD: Ths Phạm Thi Vương SVTH: Dương Thân Dân – Bùi Ngọc Huy Trang 89 5.5.4.3 Quản lý Topic Sơ đồ 5.17: Sequence diagram chức Create Topic GVHD: Ths Phạm Thi Vương SVTH: Dương Thân Dân – Bùi Ngọc Huy Trang 90 Sơ đồ 5.18: Sequence diagram chức đăng bình luận GVHD: Ths Phạm Thi Vương SVTH: Dương Thân Dân – Bùi Ngọc Huy Trang 91 5.5.4.4 Tìm kiếm Sơ đồ 5.19: Sequence diagram chức tìm kiếm 5.6 Thiết kế giao diện 5.6.1 Danh sách hình STT Tên hình Chức Màn hình giao diện Cung cấp cho người dùng nhìn tổng quan chương trình Tại hình này, ta thực thao tác thường dùng như: Login, Register, Create Group… Màn hình tạo viết Cho phép người dùng tạo viết Màn hình danh sách viết Hiển thị danh sách viết Có thể quản lý danh sách viết vai trò Owner hay Manager Màn hình viết tất bình luận Hiển thị viết cụ thể tất bình luận Cho phép người dùng đăng bình luận Màn hình cài đặt group GVHD: Ths Phạm Thi Vương Cung cấp chức cài đặt SVTH: Dương Thân Dân – Bùi Ngọc Huy Trang 92 group Bảng 5.10: Danh sách hình 5.6.2 Mơ tả giao diện người dùng 5.6.2.1 Màn hình giao diện Hình 5.1: Màn hình chương trình 5.6.2.2 Màn hình tạo viết Hình 5.2: Màn hình tạo viết GVHD: Ths Phạm Thi Vương SVTH: Dương Thân Dân – Bùi Ngọc Huy Trang 93 5.6.2.3 Màn hình danh sách viết Hình 5.3: Màn hình danh sách viết 5.6.2.4 Màn hình viết tất bình luận Hình 5.4: Màn hình viết tất bình luận GVHD: Ths Phạm Thi Vương SVTH: Dương Thân Dân – Bùi Ngọc Huy Trang 94 5.6.2.5 Màn hình cài đặt Group Hình 5.5: Màn hình cài đặt Group GVHD: Ths Phạm Thi Vương SVTH: Dương Thân Dân – Bùi Ngọc Huy Trang 95 CHƯƠNG – KẾT LUẬN 6.1 Kết đạt - Về mặt lý thuyết: • Tổng hợp phân tích chi tiết sở liệu NoSQL với ứng dụng thực tiễn Qua tài liệu này, người đọc có nhìn bao qt NoSQL ứng dụng vào hệ thống cần lưu trữ nhiều liệu • Trình bày phân tích loại khác NoSQL bao gồm: keyvalue store, column families, document database graph database • Tìm hiểu tính năng, đặc điểm lợi ích số loại document database phổ biến là: MongoDB, CouchDB, RavenDB • Đào sâu kiến thức RavenDB triển khai ứng dụng sử dụng RavenDB - Về mặt thực nghiệm: Xây dựng ứng dụng DaHu Groups (có chức giống Google Groups) sử dụng sở liệu RavenDB Web Ứng dụng không quy mô áp dụng kĩ thuật nâng cao RavenDB ứng dụng thể tốc độ vượt trội hoạt động với lượng lớn liệu, đáp ứng yêu cầu đề 6.2 Hướng phát triển - Tìm hiểu thêm vấn đề phân tán liệu nhiều máy chủ Tìm hiểu thêm vấn đề quản lý transaction Đặc biệt xử lý tình sở liệu phân tán nhiều máy chủ - Một số vấn đề bảo mật, config server, backup restore liệu sở liệu NoSQL GVHD: Ths Phạm Thi Vương SVTH: Dương Thân Dân – Bùi Ngọc Huy Trang 96 PHỤ LỤC 7.1 Tính đầy đủ RavenDB - Safe by default: RavenDB đảm bảo an toàn cho việc truy cập liệu Không tiêu tốn tài nguyên mạng hệ thống Xây dựng ứng dụng với RavenDB, tốc độ chạy chương trình nhanh đáng tin cậy - Transactional: Hỗ trợ đầy đủ ACID transactions (Atomicity, Consistency, Isolation, Durability) node khác hệ thống - Scalable: Hỗ trợ Sharding, Replication, Multi-Tenancy Scaling out (mở rộng theo chiều ngang) tương đối dễ dàng • Build-in Sharding: phân tán liệu nhiều server khác để quản lý việc load liệu tốt • Buil-in Replication: nhân liệu nhiều server để tăng tính sẵn sàng lấy liệu nhanh chóng • Mix replication and sharding: Có thể sử dụng kết hợp tính Replication Sharding Hình 7.2: Scalable - Schema free: Bỏ qua khái niệm tables, rows,mappings, complex datalayers RavenDB sở liệu hướng tài liệu, lưu trữ đối tượng liệu - Get running in minutes: Chỉ cần phút sử dụng RavenDB RavenDB không yêu cầu cài đặt phức tạp, tải chạy Rất đơn giản - It Just Work: Thiết kế để làm việc - Fast Queries: RavenDB thực truy vấn với tốc độ cực nhanh(tốc độ ánh sang) Tất thao tác indexing thực (thực ngầm), không ảnh hưởng đến truy vấn, thao tác đọc viết từ database - Best practices built-in • Unit Of Work: thay đổi liệu cách thay đổi đối tượng nhận từ Client API GVHD: Ths Phạm Thi Vương SVTH: Dương Thân Dân – Bùi Ngọc Huy Trang 97 • Domain Driven Design: mơ hình liệu sử dụng khái niệm DDD để thao tác liệu tốt • In-memory DB for testing • Automatic-batching: tự tối ưu cách gửi tập lệnh thay lệnh đơn - High performance: RavenDB lưu trữ nhanh tất mơ hình liệu Bỏ qua giai đoạn mapping phức tạp hay đa tầng DAL, đơn giản lưu trữ thực thể - Caching built-in: Nhiều tầng caches thực tự động server client Caching cấu hình sẵn có chế độ nâng cao Aggressive Caching - APIs: Có thể truy cập RavenDB nhiều ngôn ngữ hay công nghệ khác Giao tiếp Client/Server thông qua REST (HTTP API), NET client API, Silverlight and Javascript - Built-in managemet studio: Dễ dàng quản lý liệu với giao diện đồ họa trực quan - Carefully designed: RavenDB thiết kế cẩn thận, tỉ mĩ đảm bảo thứ hoạt động tốt - Map/Reduce: Sử dụng indexes, dễ dàng viết hàm Map/Reduce sử dụng cú pháp Linq Hỗ trợ khái niệm multi-maps boosting indexes để viết Map/Reduce đơn giản thể sức mạnh - Feature rich and extensible: Hỗ trợ nhiều tính khả mở rộng - Embededable: RavenDB nhúng vào ứng dụng NET, hồn tồn phù hợp với ứng dụng desktop - Bundles: Nhiều gói liệu hỗ trợ kèm với với Server-side plugins Chỉ cần copy file DLL vào thư mục Server - Index replication to SQL:sử dụng ưu điểm cơng cụ reporting có sẵn từ RDBMS RavenDB cho phép nhân index sang SQL table dễ dàng GVHD: Ths Phạm Thi Vương SVTH: Dương Thân Dân – Bùi Ngọc Huy Trang 98 Hình 7.3: Index replication to SQL - Full-text Search built-in: Không cần sử dụng cơng cụ hỗ trợ tìm kiếm nâng cao bên ngồi, RavenDB hỗ trợ tìm kiếm full-text server client API - Advances search techniques - Geo-spatial search support: Dễ dàng sử dụng API Hình 7.4: Geo-spatial search support - Easy backup: Việc lưu trữ bất đồng mà không làm ảnh hưởng đến thao tác DB thông thường Backup Restore hỗ trợ DB - Multi-tenancy: Lưu trữ nhiều database RavenDB Server Hình 7.5: Multi-tenancy - Attachments: RavenDB hỗ trợ lưu trữ luồng liệu mà không thực liệu hình ảnh hay liệu nhị phân mà không muốn lưu trữ document, lưu trữ - Online index Rebuild: Indexes update ngầm bên mà không cần tác động người dùng hay thao tác ACID sở liệu - Fully async (C# ready): RavenDB hỗ trợ API bất đồng giới thiệu C#5 - Community - Cloud hosting available: Chạy RavenDB đám mây với RavenHQ, CloudBird, AppHorbor Windows Azure GVHD: Ths Phạm Thi Vương SVTH: Dương Thân Dân – Bùi Ngọc Huy Trang 99 Hình 7.6: Cloud hosting available 7.2 Giới thiệu mơ hình ASP.NET MVC4 - Mẫu kiến trúc Model – View – Controller sử dụng nhằm chia ứng dụng thành ba thành phần chính: model, view controller Nền tảng ASP.NET MVC giúp cho tạo ứng dụng web áp dụng mơ hình MVC thay tạo ứng dụng theo mẫu ASP.NET Web Forms Nền tảng ASP.NET MVC có đặc điểm bật nhẹ (lightweight), dễ kiểm thử phần giao diện (so với ứng dụng Web Forms), tích hợp tính có sẵn ASP.NET Nền tảng ASP.NET MVC định nghĩa namespace System.Web.Mvc phần name space System.Web Hình 7.1: Mẫu kiến trúc Model – View – Controller - Vài nét mô hình MVC: • Models: Các đối tượng Models phần ứng dụng, đối tượng thiết lập logic phần liệu ứng dụng Thông thường, đối tượng model lấy lưu trạng thái model CSDL Ví dụ như, đối tượng Product lấy liệu từ CSDL, thao tác liệu cập nhật liệu trở lại vào bảng Products SQL Server Trong ứng dụng nhỏ, model thường là khái niệm nhằm phân biệt cài đặt thực thụ, ví dụ, ứng dụng đọc liệu từ CSDL gởi chúng đến view, ứng dụng khơng cần phải có tầng GVHD: Ths Phạm Thi Vương SVTH: Dương Thân Dân – Bùi Ngọc Huy Trang 100 model lớp liên quan Trong trường hợp này, liệu lấy đối tượng model (hơn tầng model) • Views: Views thành phần dùng để hiển thị giao diện người dùng (UI) Thông thường, view tạo dựa vào thơng tin liệu model Ví dụ như, view dùng để cập nhật bảng Products hiển thị hộp văn bản, drop-down list, check box dựa trạng thái đối tượng Product • Controllers: Controller thành phần dùng để quản lý tương tác người dùng, làm việc với model chọn view để hiển thị giao diện người dùng Trong ứng dụng MVC, view dùng để hiển thị thông tin, controller chịu trách nhiệm quản lý đáp trả nội dung người dùng nhập tương tác với người dùng Ví dụ, controller quản lý liệu người dùng gởi lên (query-string values) gởi giá trị đến model, model lấy liệu từ CSDL nhờ vào giá trị - Ngày 15-08-2012, Microsoft cho phiên ASP.NET MVC với nhiều tính mới, giao diện cải thiện nhiều so với phiên trước GVHD: Ths Phạm Thi Vương SVTH: Dương Thân Dân – Bùi Ngọc Huy Trang 101 TÀI LIỆU THAM KHẢO Tiếng Việt: Ebook NoSQL – Nhữ Đình Thuận Nhúng CSDL RavenDB vào ứng dụng ASP.NET MVC – Asp.net.vn Một số viết như: Một số thông tin NoSQL thị trường database, NoSQL, Nhất quán cuối SQL Việt Blog (http://www.sqlviet.com/blog/) Tiếng Anh: Ayende Rahien (Oren Eini), RavenDB Documentation - http://ravendb.net/docs (trang tham khảo chính) Ayende Rahien (Oren Eini), RavenDB Mythology Documentation Release 1.0, November 29, 2010 Eelco Plugge, Peter Membrey and Tim Hawkins, The Definitive Guide to MongoDB The NoSQL Database for Cloud and Desktop Computing Adam Freeman and Joseph C.Rattz, Jr Pro LINQ Language Intergrated Query In C# 2010 Apress, 2010 NoSQL resources - http://nosql-database.org/ NoSQL in the Enterprise - http://www.infoq.com/articles/nosql-in-theenterprise NoSQL wiki - http://en.wikipedia.org/wiki/NoSQL Blog hay RavenDB: Ayende's Blog (http://ayende.com/blog), Phillip Haydon's Blog (http://www.philliphaydon.com/), Gregor Suttie's Blog (http://gregorsuttie.com/) So sánh RavenDB với CouchDB MongDB (http://weblogs.asp.net/britchie/archive/2010/08/17/document-databasescompared-mongodb-couchdb-and-ravendb.aspx) GVHD: Ths Phạm Thi Vương SVTH: Dương Thân Dân – Bùi Ngọc Huy ... em tìm hiểu kĩ kĩ thuật, cách áp dụng sở liệu thuộc loại document database RavenDB Chương – Xây dụng ứng dụng sử dụng RavenDB: Sử dụng kết tìm hiểu chương để áp dụng vào xây dụng ứng dụng sử dụng. .. tơi tìm hiểu xem NoSQL giải vấn đề áp dụng kiến thức tìm hiểu vào việc xây dựng ứng dụng sử dụng sở liệu dạng NoSQL 1.2 Mục tiêu đề tài Với vấn đề nêu trên, đề này cần đạt mục tiêu sau: - Tìm hiểu. .. phải ứng dụng chấp nhận Có nghĩa ứng dụng khơng u cầu ràng buộc liệu, không yêu cầu liệu phải cập nhập xác tức Một số ứng dụng phù hợp trang mạng xã hội, ứng dụng ghi log tự động… Các ứng dụng

Ngày đăng: 25/03/2021, 15:06

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w