CHƯƠNG 1: GIỚI THIỆU VỀ YII FRAMEWORK1.1.Khái quát về Yii framework1.1.1.Kiến trúc Yii framework1.1.2.Cấu trúc thư mục trong Yii framework1.2.Model – Trao đổi thông tin1.2.1.Tạo model1.2.2.Định nghĩa lớp model1.2.3.Đặt luật cho model1.2.4.Kết nối với bảng trong cơ sở dữ liệu1.3.Controller –Bộ điều khiển1.3.1.Một lớp controller trong Yii có dạng1.3.2.Các thành phần chính của controller1.4.View – Hiện dữ liệu1.4.1.Layout1.4.2.Widget1.5.Các mở rộng (Extensions)1.6.Tạo khung ứng dụngCHƯƠNG 2: TỔNG QUAN VỀ NOSQL2.1.NoSQL là gì ?2.1.1.Thuật ngữ2.1.2.Lịch sử2.2.So sánh NoSql và RDBMs2.2.1.Một số đặc điểm.2.2.2.Phân loại NoSqlCHƯƠNG 3: GIỚI THIỆU VỀ MONGODB3.1.Tổng quan về MongoDB3.1.1.Lịch sử ra đời MongoDB3.1.2.Các khái niệm cơ bản MongoDB3.2.Mô hình hóa dữ liệu3.2.1.Mô hình nhúng OnetoOne mối quan hệ giữa các Documents3.2.2.Mô hình nhúng OnetoMany mối quan hệ giữa các Documents3.2.3.Mô hình tham chiếu OnetoMany mối quan hệ giữa các Documents3.3.Hướng dẫn cài đặt và sử dụng MongoDBCHƯƠNG 4: SO SÁNH HIỆU NĂNG MONGODB VỚI MYSQL4.1.Mô hình thử nghiệm4.2.So sánh4.2.1.So sánh dựa trên thực hiện câu lệnh INSERT4.2.2.So sánh dựa trên multi users đồng thời thực hiện truy vấn4.3.Đánh giá kết quả so sánh:KẾT LUẬNĐánh giá kết quảĐịnh Hướng phát triểnTÀI LIỆU THAM KHẢO
Trang 1KHOA CÔNG NGHỆ THÔNG TIN
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
ĐỀ TÀI:
“NGHIÊN CỨU CÁC GIẢI PHÁP CÔNG NGHỆ: NOSQL, YII FRAMEWORK ĐỂ TỐI ƯU TỐC ĐỘ TRUY VẤN THÔNG TIN VÀ DỮ LIỆU CHO
Trang 2Độc lập - Tự do – Hạnh phúc
KHOA CÔNG NGHỆ THÔNG TIN
ĐỀ TÀI ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
Họ và tên sinh viên: Bùi Xuân Bích
- Giới thiệu về mongodb
- So sánh hiệu năng MongoDB với MySQL
- Kết luận và hướng phát triển
3/ Cơ sở dữ liệu ban đầu
- Dữ liệu của website đang hoạt động: wowquatot.com
4/ Ngày giao đồ án: /12/2013
5/ Ngày nộp đồ án : /4/2014
(Ký, ghi rõ họ tên) (Ký, ghi rõ họ tên)
TRƯỞNG KHOA
Trang 3Tôi xin cam đoan đây là đề tài nghiên cứu của tôi Những thông tin và các số liệutrong báo cáo thực tập tốt nghiệp được khai thác tại nguồn dữ liệu của websitewowquatot.com Trong quá trình làm đồ án tốt nghiệp, ngoài những tài liệu tìm kiếmtrên mạng và trong sách vở Tôi xin cam đoan không sao chép, không nhờ người kháclàm Nếu không đúng sự thật tôi xin chịu hoàn toàn trách nhiệm và chịu mọi hình thức
kỉ luật của thầy, cô và của khoa CNTT Trường Đại Học Đông Á
Sinh viên thực hiện
Bùi Xuân Bích
Trang 4Đặc biệt là sự bùng nổ công nghệ Web 2.0, nơi các mạng dịch vụ dữ liệu cộngđồng cho phép người dùng tự do tạo nội dung trên web, dẫn đến dữ liệu tăng lên rấtnhanh, vượt qua giới hạn xử lý của các Hệ quản trị cơ sở dữ liệu quan hệ truyền thống.
Để đáp ứng được nhu cầu phát triển của xã hội, đòi hỏi một cơ sở dữ liệu (CSDL)
có thể lưu trữ, xử lý được một lượng dữ liệu lớn một cách nhanh chóng và hiệu quả.NoSQL đã ra đời, thay thế hệ quản trị CSDL quan hệ, giải quyết bài toán trên
2 Mục đích và nhiệm vụ nghiên cứu
Vận dụng tổng hợp những kiến thức về Yii framework đó là những kiến thức vềmặt lý thuyết để áp dụng vào ứng dụng
Tìm hiểu khái quát về các CSDL hiện đại NoSQL, chi tiết hơn về hệ cơ sở dữ liệuNoSQL là MongoDB và đồng thời giúp tôi có thể thực hiện tối ưu tốc độ truy vấn dữliệu cho website wowquatot.com trên hệ cơ sở dữ liệu MongoDB
Trang 5Để hoàn thành đồ án tốt nghiệp, tôi xin gửi lời cảm ơn sâu sắc tới các thầy cô giáotrong Khoa công nghệ thông tin Trường Đại học Đông Á đã trực tiếp giảng dạy vàcung cấp cho tôi những kiến thức quý báu để tôi có thể tìm hiểu và tiếp cận với nhữngcông nghệ và lĩnh vực mới.
Đặc biệt tôi xin chân thành gửi lời cảm ơn đến thầy Hồ Đức Lĩnh – Giảng viênTrường Đại Học Đông Á đã tận tình hướng dẫn tôi cũng như tạo mọi điều kiện về tàiliệu và kiến thức để tôi có thể hoàn thành được đồ án tốt nghiệp này
Và cuối cùng xin gửi lời cảm ơn tới gia đình, tới các bạn đã động viên, góp ý và sátcánh cùng tôi trên con đường học tập
Báo cáo hoàn thành trong thời gian ngắn và khả năng của tôi còn hạn chế nên đồ ántốt nghiệp không tránh khỏi những thiếu sót trong quá trình thực hiện Kính mongnhận được nhiều ý kiến đóng góp, phê bình của quý thầy cô và các bạn để sản phẩmđược hoàn thiện hơn
Tôi xin chân thành cảm ơn!
Đà Nẵng, Ngày… tháng…năm 2014
Trang 6CHƯƠNG 1: GIỚI THIỆU VỀ YII FRAMEWORK 1
1.1 Khái quát về Yii framework 1
1.1.1 Kiến trúc Yii framework 1
1.1.2 Cấu trúc thư mục trong Yii framework 4
1.2 Model – Trao đổi thông tin 6
1.2.1 Tạo model 6
1.2.2 Định nghĩa lớp model 6
1.2.3 Đặt luật cho model 7
1.2.4 Kết nối với bảng trong cơ sở dữ liệu 7
1.3 Controller –Bộ điều khiển 7
1.3.1 Một lớp controller trong Yii có dạng 7
1.3.2 Các thành phần chính của controller 8
1.4 View – Hiện dữ liệu 9
1.4.1 Layout 9
1.4.2 Widget 9
1.5 Các mở rộng (Extensions) 10
1.6 Tạo khung ứng dụng 11
CHƯƠNG 2: TỔNG QUAN VỀ NOSQL 12
2.1 NoSQL là gì ? 12
2.1.1 Thuật ngữ 12
2.1.2 Lịch sử 12
2.2 So sánh NoSql và RDBMs 12
2.2.1 Một số đặc điểm 14
2.2.2 Phân loại NoSql 15
CHƯƠNG 3: GIỚI THIỆU VỀ MONGODB 17
3.1 Tổng quan về MongoDB 17
3.1.1 Lịch sử ra đời MongoDB 17
3.1.2 Các khái niệm cơ bản MongoDB 17
3.2 Mô hình hóa dữ liệu 19
3.2.1 Mô hình nhúng One-to-One mối quan hệ giữa các Documents 21
3.2.2 Mô hình nhúng One-to-Many mối quan hệ giữa các Documents 22
3.2.3 Mô hình tham chiếu One-to-Many mối quan hệ giữa các Documents 22
3.3 Hướng dẫn cài đặt và sử dụng MongoDB 24
CHƯƠNG 4: SO SÁNH HIỆU NĂNG MONGODB VỚI MYSQL 26
4.1 Mô hình thử nghiệm 26
Trang 74.2.1 So sánh dựa trên thực hiện câu lệnh INSERT 27
4.2.2 So sánh dựa trên multi users đồng thời thực hiện truy vấn 30
4.3 Đánh giá kết quả so sánh: 31
KẾT LUẬN 32
Đánh giá kết quả 32
Định Hướng phát triển 32
TÀI LIỆU THAM KHẢO 33
Trang 8Hình 1.1.1 Hiệu suất Yii 1
Hình 1.1.2 Mô hình MVC 1
Hình 1.1.3 Cấu trúc tĩnh của Yii Application 2
Hình 1.1.4 Quy trình làm việc của một ứng dụng Yii 2
Hình 1.1.5 Cấu trúc Yii 4
Hình 1.1.6 Cấu trúc lớp Category trong model 7
Hình 1.1.7 Luật (Rules) trong model 7
Hình 1.1.8 Funtion kết nối tới collection trong MongoDB 7
Hình 1.3.1 Cấu trúc 1 lớp trong controller của Yii 7
Hình 1.3.2 actionCreate thực hiện nhiệm vụ tạo mới một danh mục địa điểm 9
Hình 1.3.3 Cấu trúc layout trong Yii 9
Hình 1.3.4 Khai báo sử dụng Widget trong Yii 9
Hình 1.3.5 Extensions của Yii 10
Hình 1.3.6 Cấu hình sử dụng Extension MongoDB Suite 10
Hình 1.3.7 Cú pháp lệnh tạo mới một ứng dụng Yii 11
Hình 1.3.8 Ứng dụng wowquatot 11
Hình 3.1.1 Cấu trúc một Document 18
Hình 3.1.2 Một văn bản (Document) mẫu 18
Hình 3.1.3 Một bộ sưu tập (Collection) mẫu 18
Hình 3.1.4 So sánh cấu trúc dữ liệu MongoDB với MySQL 19
Hình 3.2.1 Các bảng trong CSDL quan hệ 20
Hình 3.2.2 Các class trong MongoDB 20
Hình 3.2.3 Mô hình nhúng One-to-One thông thường 21
Hình 3.2.4 Mô hình nhúng One-to-One tối ưu 21
Hình 3.2.5 Mô hình nhúng One-to-Many thông thường 22
Hình 3.2.6 Mô hình nhúng One-to-Many tối ưu 22
Hình 3.2.7 Mô hình tham chiếu One-to-Many thông thường 23
Hình 3.2.8 Mô hình tham chiếu One-to-Many tối ưu 24
Hình 3.3.1 Các phiên bản MongoDB 24
Hình 3.3.2 Quản lý Service MongoDB 25
Hình 3.3.3 Thông báo cài đặt MongoDB thành công 25
Hình 4.1.1 Mô hình UML mẫu 27
Hình 4.2.1 Kết quả test Sinh 5000 users và lưu vào CSDL 28
Hình 4.2.2 Kết quả test Sinh 5000 IPs và lưu vào CSDL 28
Hình 4.2.3 Kết quả test Sinh 120000 domains và lưu vào CSDL 29
Hình 4.2.4 Kết quả test Sinh 100000 bản ghi HTTP logs và lưu vào CSDL 29
Trang 9Bảng 1.1.1 Chức năng các thư mục và file trong cấu trúc Yii 4
Bảng 1.1.2 Bảng các thành phần ứng dụng trong Yii 5
Bảng 2.2.1 Một số so sánh giữa RDBM và NoSQL 13
Bảng 4.2.1 Bảng danh sách scripts so sánh câu lệnh INSERT 27
Bảng 4.2.2 Kết quả thời gian thực hiện câu lệnh INSERT 30
Bảng 4.2.3 Bảng danh sách scripts thực hiện truy vấn trên multi users 30
Bảng 4.2.4 Tìm kiếm thông tin ngẫu nhiên của 1 user (Read Test) 30
Bảng 4.2.5 Thêm mới 1 user (Write Test) 31
Bảng 4.2.6 Tìm kiếm hoặc thêm mới 1 user với xác suất tương ứng là 80% hoặc 20% (Read & Write Test) 31
Trang 10CHƯƠNG 1: YII FRAMEWORK
1.1 Khái quát về Yii framework
Yii là từ viết tắt của Yes, it is! hoặc cũng có thể là viết ngắn gọn 3 chữ cái đầu củaEasy (dễ dàng), Efficient (hiệu quả) và Extensible (khả năng mở rộng) Yii là một PHPframework mã nguồn mở và hoàn toàn miễn phí, có hiệu năng cao, giúp người lậptrình phát triển tốt nhất các ứng dụng Web 2.0 Yii cho phép tái sử dụng tối đa cácthành phần của ứng dụng để tăng tốc độ viết ứng dụng
Hình 1.1.1 Hiệu suất Yii
1.1.1 Kiến trúc Yii framework
Yii được viết theo mô hình MVC, đây là mô hình thông dụng trong lập trìnhweb Mô hình MVC tách biệt phần xử lý dữ liệu ra khỏi phần giao diện, cho phépkiểm tra, quản lý và bảo trì một cách dễ dàng và độc lập:
Hình 1.2: Mô hình MVC
Bên cạnh đó Yii còn phát triển thêm một bộ điều khiển phía trước gọi làApplication Application thu thập một số yêu cầu của người dùng sau đó đưa đến chocontroller thích hợp để xử lý thêm
View
Controller
Model
Hình 1.1.2 Mô hình MVC
Trang 11Để hiểu rõ hơn về cách thức phối hợp của Yii ta có thể xem ví dụ dưới
đây về các xử lý yêu cầu nhập vào từ người dùng
Controllerfiltersaction
Hình 1.1.3 Cấu trúc tĩnh của Yii Application
Hình 1.1.4 Quy trình làm việc của một ứng dụng Yii
Trang 12Quá trình phối hợp của Yii được mô tả theo các bước sau:
- Bước1: Người dùng tạo yêu cầu đối với url (ví dụ: với thanh địa chỉ http://
wowquatot.com/index.php/category/view/id/533ba29963ff878c09000004)
và máy chủ web xử lý yêu cầu đó bằng cách thực hiện script
- Bước 2: Script tạo ra một Application và chạy nó.
- Bước 3: Application có được chi tiết yêu cầu của người dùng từ application
component có tên là request
- Bước 4: Application này xác định yêu cầu controller và action với sự giúp
đỡ của một application component có tên urlManager
- Bước 5: Application tạo ra một bộ điều khiển để tiếp tục xử lý yêu cầu
người dùng, bộ điều khiển nhận thấy action (view) có liên quan đến phươngthức (actionView) trong controller Sau đó nó sẽ tạo ra các bộ lọc để kếthợp với action này.Các action sẽ được thực hiện dưới sự cho phép của các
bộ lọc
- Bước 6: Action sẽ đọc Catagory model với ID=533ba29963ff878c09000004
với dữ liệu từ database
- Bước 7: Action sẽ render một view có tên là view với Category model.
- Bước 8: View sẽ đọc là trình bài các thuộc tính của Category model.
- Bước 9: View sẽ thực hiện một số widgets.
- Bước 10: Kết quả của view sẽ được nhúng vào layout.
- Bước 11: Action hoàn thành các kết quà của view và hiện kết quả nguời
dùng
Trang 131.1.2 Cấu trúc thư mục trong Yii framework
Hình 1.1.5 Cấu trúc YiiTrong đó thư mục chính là 3 thư mục: models, controllers, views
Bảng 1.1.1 Chức năng các thư mục và file trong cấu trúc Yii
index.php file script truy cập đến ứng dụng web
index-test.php file script truy cập đến các chức năng
kiểm định
protected chứa các file bảo vệ của ứng dụng
commands chứa các lệnh yiic được thiết lập
components chứa các components có thể sử dụng lại
Trang 14config chứa các file cấu hình
controller chứa các tập tin lớp điều khiển
extensions chứa các phần mở rộng của Yii
messages chứa các thông điệp đã được dịch
runtime chứa các tập tin tạm thời tạo ra
view chứa các file điều khiển xem và bố trí của
ứng dụng
yiic.bat yiic command line script cho Windows
yiic.php yiic command line script cho Windows
Bảng 1.1.2 Bảng các thành phần ứng dụng trong Yii
TÊN CÁC THÀNH PHẦN ỨNG
assetManager: CAssetManager quản lý việc xuất bản các tập tin riêng
authManager: CAuthManager quản lý kiểm soát truy cập
clientScript: CClientScript quản lý lệnh của người dùng (JavaScript và
CSS)
coreMessages: CPhpMessageSource cung cấp thông điệp cốt lõi dịch được sử dụng
bởi các khuôn khổ Yii
db: CDbConnection Cung cấp các kết nối cơ sở dữ liệu.Lưu ý, phải
cấu hình connection String để sử dụng thànhphần này
errorHandler: CErrorHandler xử lý lỗi
format: CFormatter định dạng dữ liệu giá trị cho mục đích hiển thịmessages: CPhpMessageSource cung cấp thông dịch được sử dụng bởi ứng
dụng Yiirequest: CHttpRequest cung cấp thông tin liên quan đến yêu cầu
người dùngsecurityManager: CSecurityManager cung cấp vấn đề liên quan đến dịch vụ
session: CHttpSession cung cấp phiên liên quan đến chức năng
Trang 15statePersister: CStatePersister cung cấp cơ chế cho trạng thái toàn cục
urlManager: CUrlManager cung cấp các phân tích cú pháp URL và chức
năng sáng tạouser: CWebUser mang thông tin liên quan đến danh tính người
dùng hiện hànhthemeManager: CThemeManager quản lý chủ đề
1.2 Model – Trao đổi thông tin
Model là lớp được xây dựng nhằm trao đổi thông tin với cơ sở dữ liệu Một lớpmodel có thể thực hiện việc kết nối, thêm, xoá, sửa dữ liệu Theo lời khuyên của cáclập trình viên ta nên tuân theo một số nguyên tắc sau:
Không nên sử dụng $_GET, $_POST hoặc các biến tương tự được gắn liền vớiyêu cầu người dùng
Tránh nhúng đoạn mã HTML vào model
Tên lớp được viết hoa chữ cái đầu tiên, các chữ còn lại viết thường, ví dụ như:Place,Ticket…
Tên tập tin được đặt tên trùng với tên lớp và được đặt vào thư mụcprotected/models
Bắt buộc thừa kế từ lớp model, trong hàm tạo lớp con phải gọi đến hàm lớp cha.1.2.1 Tạo model
Để xây dựng một lớp model, phải quyết định loại dữ liệu từ người dùng yêu cầu
và những luật lệ mà những dữ liệu này phải tuân theo Một model, như định nghĩa, lànơi trung tâm để xác nhận yêu cầu
Tùy thuộc vào cách ta sử dụng các đầu vào của người sử dụng, ta có thể tạo rahai loại mô hình Nếu yêu cầu của người dùng nhập vào được sử dụng và sau đó bỏ đi,
ta sẽ tạo ra một form_model, nếu yêu cầu của người dùng nhập vào được lưu vào cơ sở
dữ liệu, ta sẽ sử dụng một active record thay thế
1.2.2 Định nghĩa lớp model
Dưới đây là lớp Category dùng để xử lý phần danh mục địa điểm:
Hình 1.1.6 Cấu trúc lớp Category trong modelKhi đã định nghĩa xong lớp model ta sẽ đặt luật cho model
1.2.3 Đặt luật cho model
class Category extends EMongoDocument {
public static function model($className = CLASS ) {
return parent::model ( $className );
}
Trang 16Để đặt luật cho model ta dùng hàm
Hình 1.1.7 Luật (Rules) trong modelMột khi người dùng gửi các yêu cầu của mình ta cần đảm bảo chúng phải hợp lệtrước khi sử dụng Ta xác định luật trong phương thức rules(), tuỳ thuộc vào yêu cầu
mà ta xác lập trong hàm rules() sẽ trả về điều kiện theo ta đặt ra
1.2.4 Kết nối với bảng trong cơ sở dữ liệu
Lớp model có chức năng kết nối với các bảng trong cơ sở dữ liệu MySQL hay
collection trong MongoDB, để thể hiện mối liên kết đó ta dùng:
Hình 1.1.8 Funtion kết nối tới collection trong MongoDB
1.3.Controller –Bộ điều khiển
Controller là những lớp đóng vai trò trung gian giữa view và model Controllernhận các yêu cầu từ phía người dùng, kiểm tra chúng trước khi chuyển qua cho model.Sau khi model xử lý yêu cầu và trả về cho controller, controller sẽ chuyển sang view
để hiện thị dữ liệu cho người dùng
1.3.1 Một lớp controller trong Yii có dạng
Hình 1.3.9 Cấu trúc 1 lớp trong controller của Yii Khai báo hàm cotroller ta cần tuân theo một số nguyên tắc:
- Tên lớp được viết hoa chữ cái đầu tiên, các chữ còn lại viết thường, ví dụ
// Đặt luật cho model
public function rules() {
return array(
array('name', 'required'),
array('description', 'length', "max" => 500),
array('status, position', 'numerical', 'integerOnly' =>
Trang 17- Controller thể hiện của lớp CController hoặc của một lớp mở rộng từ
CController Khi một controller chạy nó thực hiện các hành động được yêu
cầu thường là mang từ model và sau đó render đến view Một hành động,
thực chất là một lớp điều khiển có tên bắt đầu bằng action
1.3.2 Các thành phần chính của controller
Route: Là thành phần quan trọng trong controller, nó giúp controller định tuyến
một địa chỉ khi người dùng gửi yêu cầu đến hệ thống Ví dụ khi người dùng nhập điạ
chỉ http://wowquatot.com/index.php/category/view/, thì địa chỉ này sẽ được bộ điều
hướng của Yii xử lý và gọi đến action được yêu cầu trong controller
Trong đó:
- category: là tên controller
- view: là tên action trong controller
Action: Phương thức làm việc trong controller là làm nhiệm vụ tiếp nhận và xử
lý yêu cầu Sau khi nhận kết quả từ model trả về, controller sẽ gọi đến view để hiện thị
kết quả cho người dùng
Một action thường được định nghĩa như một phương pháp có tên bắt
đầu bằng action Thông thường trong controller ta sẽ khai báo thêm các
hàm action để thực hiện các yêu cầu người dùng Ví dụ actionCreate thực
hiện nhiệm vụ tạo mới một danh mục địa điểm
Hình 1.3.10 actionCreate thực hiện nhiệm vụ tạo mới một danh mục địa điểm
Đây là hành động sẽ điều khiển đến trang create.php
1.4 View – Hiện dữ liệu
View được xây dựng nhằm thể hiện dữ liệu trong model thành các giao diện
tương tác với người dùng View có thể là một trang web hoàn chỉnh hoặc chỉ là một
class CategoryController extends Controller
$this->render('create',array(
'model'=>$model,
));
}
Trang 18phần của trang web (header, footer, ) Nội dung của view ngoài mã HTML còn có mãPHP View không bao giờ được gọi trực tiếp mà phải thông qua controller.
Nó là một view đặc biệt được dùng để trang trí cho view Layout thường chứamột phần của giao diện người dùng được phổ biến một vài lần.Ví dụ một layout có thểchứa phần header và footer, nhúng thêm phần nội dung hiển thị của view:
Hình 1.3.11 Cấu trúc layout trong YiiLayout được sử dụng khi ta gọi hàm render(), theo mặc định file main.php trongthư mục protected/views/layouts được sử dụng làm layout trong view Ta có thể tuỳchỉnh bằng cách thay đổi CWebApplication::layout, CController::layout Nếu view
mà không cần một layout nào ta dùng hàm renderPartial ()
Trang 19Hình 1.3.13 Extensions của Yii
Để làm việc với MongoDB trong đồ án này tôi đã sử dụng Extensions YiiMongoDB Suite để thao tác dữ liệu với MongoDB một cách dễ dàng nhất Phần mởrộng này gần như hỗ trợ hoàn toàn cho ActiveRecord trong Yii nó được viết bởityohan
Để sử dụng Extensions này trong file protected/config/main.php chúng ta sẽ thêm đoạn code sau:
Hình 1.3.14 Cấu hình sử dụng Extension MongoDB Suite
Trang 20Hình 1.3.15 Cú pháp lệnh tạo mới một ứng dụng Yii
Ví dụ ta tạo một ứng dụng tên là wowquatot được lưu trong thư mục D:\xampp\htdocs Sau đây là kết quả của câu lệnh trên, ta sẽ được một ứng dụng như sau:
Hình 1.3.16 Ứng dụng wowquatot
Kết quả của việc tạo bộ khung ứng dụng ta có:
Thư mục controller: SiteController.php
Thư mục models: ContactForm.php, LoginForm.php
Trang 21CHƯƠNG 2: TỔNG QUAN VỀ NOSQL
2.1 NoSQL là gì ?
2.1.1 Thuật ngữ
NoSQL có nghĩa là Non-Relational (NoRel) - không ràng buộc Tuy nhiên,
thuật ngữ đó ít phổ dụng hơn và ngày nay người ta thường dịch NoSQL thành Not
Only SQL - không chỉ là SQL
Đây là thuật ngữ chung cho các hệ CSDL không sử dụng mô hình dữ liệu quan
hệ 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ưutrữ phân tán
2.1.2 Lịch sử
Thuật ngữ NoSQL được giới thiệu lần đầu vào năm 1998 sử dụng làm tên gọichung cho các lightweight open source relational database (cơ sở dữ liệu quan hệnguồn mở nhỏ) nhưng không sử dụng SQL cho truy vấn
Vào năm 2009, Eric Evans, nhân viên của Rackspace giới thiệu lại thuật ngữNoSQL khi Johan Oskarsson của Last.fm muốn tổ chức một hội thảo về cơ sở dữ liệunguồn mở phân tán Thuật ngữ NoSQL đánh dấu bước phát triển của thế hệ CSDLmới: phân tán (distributed) + không ràng buộc (non-relational)
NoSQL storage đặc biệt phổ dụng trong thời kỳ Web 2.0 bùng nổ, nơi các mạngdịch vụ dữ liệu cộng đồng cho phép người dùng tạo hàng tỷ nội dung trên web Do đó,
dữ liệu lớn rất nhanh vượt qua giới hạn phần cứng cần phải giải quyết bằng bài toánphân tán
Về cơ bản, các thiết kế của NoSQL lựa chọn mô hình lưu trữ tập dữ liệu theo cặpgiá trị key value Khái niệm node được sử dụng trong quản lý dữ liệu phân tán Vớicác hệ thống phân tán, việc lưu trữ có chấp nhận trùng lặp dữ liệu Một request truyvấn tới data có thể gửi tới nhiề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ới toà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ông thường người ta sẽ tách biệt database ra làm 2 hoặc nhiềudatabase Một database nhỏ đảm bảo vào ra liên tục, khi đạt tới ngưỡng thời gian