ĐẶT VẤN ĐỀ Ngày nay, sự phát triển của Internet và nhu cầu sử dụng tài nguyên ảo của con người ngày càng cao, đặc biệt là nhu cầu lưu trữ thông tin. Từ những trang web cá nhân đến các hệ thống mạng xã hội toàn cầu đều cần lưu trữ và khai thác thông tin một cách tối ưu. Với những hệ thống nhỏ như các trang web cá nhân hay các dịch vụ mua bán trực tuyến thì hệ thống dữ liệu lưu trữ cần phải toàn vẹn, logic và đảm bảo ổn định. Còn với các hệ thống mạng xã hội toàn cầu hay các hệ thống thông tin quốc gia, khi mà dữ liệu lưu trữ khổng lồ cần một tài nguyên rộng lớn thì việc đảm bảo độ bảo mật và tốc độ xử lý luôn được đề cao hàng đầu.
Đến đây, người ta yêu cầu một giải pháp có thể vừa đảm bảo sự linh hoạt trong việc lưu trữ, vừa đảm bảo tốc độ truy xuất nhanh chóng. Có thể thấy, mô hình cơ sở dữ liệu quan hệ đã giải quyết tốt các yêu cầu lưu trữ của hệ thống. Thế nhưng, liệu nó đã đáp ứng được hết nhu cầu người dùng khi các thông tin ngày càng phức tạp và rời rạc nhau? Và người ta đã bắt đầu nghiên cứu một cách lưu trữ thông tin mới – mô hình dữ liệu không ràng buộc NoSQL(Not Only SQL). Đề tài nghiên cứu về MongoDB, một trong những hệ quản trị cơ sở dữ liệu đặc trưng của NoSQL, so sánh những đặc điểm của hệ quản trị mới này với hệ quản trị cơ sở dữ liệu MySQL để xây dựng trang web bán sách trực tuyến.
Quá trình nghiên cứu sẽ tìm ra các điểm nổi bật, vượt trội của MongoDB, những điểm mới mà MySQL chưa có. Đề tài sẽ so sánh MongoDB và MySQL trên các phương diện phân tích, thiết kế hệ thống, xây dựng cơ sở dữ liệu và cách thức truy xuất dữ liệu trên trang web. LỊCH SỬ GIẢI QUYẾT VẤN ĐỀ Chúng ta có thể thấy, ngày nay càng có nhiều hệ thống sử dụng cơ sở dữ liệu không ràng buộc thay thế cho phương pháp lưu trữ truyền thống. Điều này đã nói lên phần nào lợi thế của nó.
NoSQL đặc biệt phổ dụng trong thời kì Web 2.0 bùng nổ, nơi các mạng dịch vụ cộng đồng cho phép người dùng tạo ra hàng tỉ nội dung trên web, đánh dấu sự trưởng thành của thế hệ database mới trong khi những sản phẩm phần mềm có thể đã được phát triển trước đó từ rất lâu. Với các trang web giao dịch trực tuyến, trước đó đã có rất nhiều phương pháp để xây dựng và thiết kế hệ thống dữ liệu, nhưng vẫn còn những vấn đề phát sinh. MongoDB đã được sử dụng vào các website mua bán nhưng vẫn chưa được phổ biến. Đa số những trang web vẫn sử dụng cơ sở dữ liệu truyền thống.
Biểu đồ so sánh hiệu suất hoạt động của MongoDB và SQL 2 Kết quả nghiên cứu cho chúng ta thấy những mặt ưu điểm vượt trội của NoSQL. Thế nhưng các kết quả được thực hiện trên các hệ thống lớn, phức tạp với lượng mẫu tin lên đến hàng triệu. Liệu với những hệ thống vừa và nhỏ, với những dữ liệu có tính toàn vẹn cao thì NoSQL có thể thay thế được cho cơ sở dữ liệu thông thường? 1.3 PHẠM VI ĐỀ TÀI Chính những vấn đề phát sinh trong việc lựa chọn giữa NoSQL và cơ sở dữ liệu quan hệ cùng với sự hấp dẫn của phương pháp lưu trữ mới nên em đã chọn và xây dựng đề tài “So sánh MongoDB và MySQL ứng dụng vào xây dựng website bán sách trực tuyến”. Đề tài nghiên cứu và so sánh MongoDB và MySQL ở các phương diện phân tích và thiết kế hệ thống, xây dựng cơ sở dữ liệu cho trang web bán sách trực tuyến.
Trang web sẽ xây dựng trên cơ sở một nhà sách vừa và nhỏ, chủ yếu xoáy sâu và hệ thống lưu trữ, truy xuất và tìm kiếm thông tin, về các phương thức thanh toán sách cũng như các tiêu chí phân loại người dùng vẫn chưa được triển khai.4 PHƯƠNG PHÁP NGHIÊN CỨU Dựa trên quá trình nghiên cứu và phân tích hệ thống, cũng như tham khảo các hệ thống bán sách của những nhà sách lớn để xây dựng trang web bán sách trên nền của hai hệ quản trị cơ sở dữ liệu MongoDB và MySQL. Đồ án tập trung vào các điểm mạnh của MongoDB để triển khai trên hệ thống trang web, tìm hiểu các phương thức lưu trữ và truy xuất dữ liệu, từ các kết quả nghiên cứu sẽ rút ra được những điểm khác nhau của MongoDB và MySQL. 3 CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 2.1 GIỚI THIỆU VỀ NOSQL 2.1 Giới thiệu Với sự phát triển ngày càng nhanh của các mạng xã hội Facebook, Google Plus… kèm theo đó sẽ là lượng dữ liệu phát sinh ngày càng lớn và cập nhật liên tục, cấu trúc dữ liệu tổ chức lưu trữ và mối quan hệ giữa chúng trở nên cồng kềnh, phức tạp. Chính việc kiểm tra và đảm bảo các ràng buộc toàn vẹn trên dữ liệu, việc thực hiện phép kết nối dữ liệu giữa quá nhiều bảng trên khối lượng dữ liệu khổng lồ đó làm cho hiệu suất thực hiện của hệ thống không đáp ứng với kỳ vọng.
Đội ngũ phát triển mạng xã hội hay các hệ thống lớn tương tự, giờ đây đang đòi hỏi các hệ quản trị cơ sở dữ liệu nhiều ở khả năng giảm thiểu tối đa các phép tính toán, các tác vụ đọc-ghi liên quan, kết hợp với khả năng xử lý theo lô (batch processing). Bên cạnh đó các thiết bị di động, các máy tính bảng,… với bộ nhớ và tốc độ xử lý thấp, còn khi cần xử lý lượng dữ liệu lớn thì các hệ quản trị cơ sở dữ liệu quan hệ đòi hỏi cao về phần cứng, do đó cũng có 1 đòi hỏi khác là các hệ quản trị cơ sở dữ liệu có thể triển khai được trên các thiết bị di động và chỉ đòi hỏi về tài nguyên thấp. Xuất phát từ các yêu cầu chính đó nên mô hình cơ sở dữ liệu NoSQL được ra đời và phát triển. Như tên gọi của nó, NoSQL (None-Relational SQL) là mô hình cơ sở dữ liệu không quan hệ nên nó sẽ giảm thiểu được các phép tính toán, các kiểm tra ràng buộc trên dữ liệu… do đó tốc độ đọc ghi nhanh, và yêu cầu thấp về phần cứng.
Hiện nay, các hệ quản trị cơ sở dữ liệu theo mô hình NoSQL này có thể kể đến Cassandra của FaceBook, Dynamo của Amazon và BigTable của Google, CouchDB, Hbase, MongoDB và Redis.2 Đặc điểm Looser consistency: NoSQL tổ chức lưu trữ và truy xuất dữ liệu theo cơ chế “thoáng hơn trong đảm bảo tính nhất quán của dữ liệu” so với mô hình dữ liệu quan hệ tryền thống nhằm cải thiện hiệu suất, đảm bảo dữ liệu luôn được đáp ứng tốt hơn Eventual consistency: NoSQL không yêu cầu phải đảm bảo tính nhất quán của dữ dữ liệu ngay tức thì mà sẽ hiện thực tính nhất quán của dữ liệu theo cơ chế lan truyền. Ví dụ: Khi bạn đổi đổi avartar trên Facebook thì hình ảnh trên trang cá nhân của bạn được đổi tức thì, còn trong danh sách bạn bè và trên trang chủ chưa được cập nhật ngay. Distributed storage: hay còn gọi là lưu trữ phân tán là thay vì dữ liệu được lưu trữ trên một máy chủ duy nhất thì hệ thống sẽ lưu dữ liệu trên nhiều máy khác nhau. Horizontal scalable: hay còn gọi là khả năng mở rộng chiều ngang.
Bình thường, với các hệ quản trị cơ sở dữ liệu quan hệ , khi mà dữ liệu quá lớn phương pháp tăng khả năng lưu trữ là sẽ phải mở rộng (nâng cấp máy chủ), còn đối với NoSQL thì chỉ cần bổ sung thêm máy chủ khác vì hệ thống hỗ trợ lưu trữ phân tán trên nhiều máy. NoSQL là mã nguồn mở: điều này có nghĩa là bạn sẽ dễ dàng phát triển một ứng dụng có sử dụng NoSQL mà không phải tốn chi phí license. Tuy nhiên, đây cũng chính là nhược điểm của NoSQL. Dễ mở rộng quy mô: NoSQL đã thay thế cách mở rộng quy mô truyền thống của các hệ quản trị cơ sở dữ liệu quan hệ bằng hình thức “mở rộng ra ngoài”.
Với hình thức mở rộng đặc biệt này, thay vì phải bổ sung thêm các máy chủ lớn hơn vào hệ thống khi dữ liệu lớn lên, thì NoSQL lại hỗ trợ doanh nghiệp phân tán dữ liệu qua nhiều máy chủ khi dữ liệu gia tăng. Hỗ trợ các mô hình dữ liệu khác nhau tuỳ mục đích và cách thức lưu trữ dữ liệu như lưu kiểu key-value, BigTable, lưu Document hay lưu thông tin Graph 5 2.2 GIỚI THIỆU VỀ MONGODB 2.1 Giới thiệu MongoDB là một hệ quản trị cơ sở dữ liệu mã nguồn mở “document-oriented” NoSQL. Thay vì cách thức lưu trữ dữ liệu trong các 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 đặc tính “shcemaless” (MongoDB gọi với định dạng là BSON), làm cho việc tương tác với dữ liệu trong một số loại ứng dụng trở nên dễ dàng và nhanh hơn. MongoDB được bắt đầu phát triển từ năm 2007 bởi 10Gen, và ngày nay đã trở thành một hệ quản trị cơ sở dữ liệu phong phú về tính năng dành cho người dùng.
MongoDB được sử dụng bới MTV Networks, Craigslist, Foursquare… và đã có sẵn trên các hệ điều hành Windows, Linux, OS X và Solaris. Phiên bản mới nhất của MongoDB hiện tại là bản 2.4, tải về tại địa chỉ www. MongoDB là một CSDL có khả năng mở rộng, hiệu suất cao, mã nguồn mở và hướng văn bản. Với các ứng dụng có lượng ghi dữ liệu lớn thì MongoDB lại càng là lựa chọn hợp lý.
Một ví dụ về cách thức lưu trữ trên MongoDB và MySQL. Mô hình lưu trữ trên MongoDB 6 Hình 3. Mô hình lưu trữ trên MySQL Tương tự như MySQL và các hệ quản trị cơ sở dữ liệu khác, MongoDB cũng có các khái niệm như bảng(Collection), dòng dữ liệu(Documents)… 2.2 Các khái niệm Bảng 1. CÁC KHÁI NIỆM TRONG MONGODB VÀ MYSQL MongoDB MySQL Database Database Collection Table Documents Rows Fields Columns Database bao gồm nhiều Collection, những mã nhúng javascript và một số thành phần khác.
7 Mẫu tin (Document) là đơn vị cơ bản của dữ liệu trong MongoDB, nó tương đương với một dòng trong cơ sở dữ liệu quan hệ. Bộ sưu tập (Collection) có thể được coi như tương đương với một bảng. MongoDB có thể lưu trữ nhiều CSDL độc lập, mỗi CSDL này có các bộ sưu tập và điều khoản riêng của mình. MongoDB đi kèm với một trình tiện ích JavaScript đơn giản nhưng mạnh mẽ, nó hữu ích trong quản trị và thao tác dữ liệu.