Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 50 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
50
Dung lượng
1,2 MB
Nội dung
ĐẠI HỌC QUỐC GIA HÀ NỘI TRƢỜNG ĐẠI HỌC CÔNG NGHỆ Nguyễn Tuấn DũngPHÁTTRIỂNỨNGDỤNGWEB VỚI SERVER – SIDE JAVASCRIPT KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC CHÍNH QUY Ngành: Công nghệ Thông tin HÀ NỘI – 2012 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƢỜNG ĐẠI HỌC CÔNG NGHỆ Nguyễn Tuấn DũngPHÁTTRIỂNỨNGDỤNGWEB VỚI SERVER – SIDE JAVASCRIPT KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC CHÍNH QUY Ngành: Công nghệ Thông tin Cán bộ hƣớng dẫn: TS Nguyễn Hải Châu HÀ NỘI – 2012 LỜI CẢM ƠN Lời đầu tiên, tôi xin gửi lời cảm ơn sâu sắc nhất tới Tiến sĩ Nguyễn Hải Châu, ngƣời đã tận tình hƣớng dẫn và giúp đỡ tôi trong suốt quá trình thực hiện khóa luận tốt nghiệp. Tôi chân thành cảm ơn các thầy, cô đã tạo những điều kiện thuận lợi cho tôi học tập và nghiên cứu tại trƣờng Đại học Công nghệ. Các thầy cô đã giảng dạy và cho tôi những kiến thức quý báu, làm nền tảng để tôi hoàn thành khóa luận cũng nhƣ công việc trong tƣơng lai. Tôi cũng xin gửi lời tri ân tới các bạn trong lớp K53CC đã ủng hộ và giúp đỡ tôi trong suốt quá trình học tập tại trƣờng. Cuối cùng, tôi muốn gửi lời cảm ơn vô hạn tới gia đình và bạn bè – những ngƣời thân yêu luôn ở bên, khuyến khích và động viên tôi trong cuộc sống cũng nhƣ trong học tập. Tôi xin chân thành cảm ơn. Hà nội, tháng 5 năm 2012 Sinh viên Nguyễn Tuấn DũngPHÁTTRIỂNỨNGDỤNGWEB VỚI SERVER-SIDE JAVASCRIPT Nguyễn Tuấn Dũng Khóa QH-2008-I/CQ, ngành Công nghệ thông tin Tóm tắt Khóa luận tốt nghiệp: Ngày nay với kỉ nguyên công nghệ bùng nổ, thời kì của mạng xã hội đã khiến cho số lƣợng ngƣời dùng truy cập vào cùng một hệ thống ngày càng tăng.Điển hình nhƣ Facebook một ngày phục vụ hơn 1000 tỉ lƣợt xem với khoảng hơn 800 triệu lƣợt khách vào ra trong một tháng thì ta mới hình dung đƣợc sự bùng nổ của thông tin nhƣ thế nào.Để giải quyết vấn đề bùng nổ nhƣ trên thì chúng ta đã mở rộng các hệ thống máy chủ siêu lớn, phân thành nhiều các cụm đặt khắp nơi trên thế giới.Nhƣng với tốc độ tăng trƣởng theo cấp số hiện nay thì việc tăng số lƣợng máy chủ lên thôi có lẽ không đủ.Ta cần xem xét và nâng cấp các giải pháp xây dựngweb cho tƣơng lai. Đầu tiên là về mặt ngôn ngữ và máy chủ.Các websever hiện hay với cách truyền thống là phục vụ theo luồng tự nó đã giới hạn khả năng của các máy chủ cho việc đáp ứng số lƣợng yêu cầu đến từ ngƣời dùng và không tốt cho các bài toàn cần tính toán thời gian thực.Giải pháp hƣớng sự kiện của nodeJS có vẻ khả khi trong trƣờng hợp này.Nó sẽ giảm số luồng hoạt động của máy chủ xuống, giảm thời gian trễ nên đáp ứng rất tốt các ứngdụng thời gian thực.Ngoài ra việc tận dụng tốt hơn sẽ khiến cho số truy vấn đến nhiều hơn khiến cho việc giảm thiểu số máy chủ xuống. Thứ hai là về mặt cơ sở dữ liệu.Với các hệ thống với số lƣợng lên đến hàng triệu cho đến hàng tỉ thì việc hiệu năng tốt là việc bắt buộc.Hệ thống máy chủ cơ sở dữ liệu đòi hỏi phải rất mạnh mẽ nếu không máy chủ sẽ bị quá tải.Với các hệ RBDMs hiện nay thì vấn đề hiệu năng thƣờng không tốt cho trƣờng hợp này.Ngôn ngữ SQL là ngôn ngữ thông dịch với các ràng buộc trong các bảng khiến cho hiệu năng thực sự của hệ thống cơ sở dữ liệu khi thực thi là khá ì ạch với hệ thống lớn nhƣ kể trên.Chƣa kể là với hệ thống lớn thì vấn đề phân tán dữ liệu, tính toàn vẹn dữ liệu là việc rất quan trọng.NoSQL đáp ứng đƣợc tất cả các yêu cầu này.Với tốc độ nhanh do không phải qua các câu truy vấn SQL, có tính sẵn sàng, phân tán cao và độ ổn định tuyệt vời.Rất thích hợp cho các hệ thống có lƣợt truy vấn lớn.Ở trong khóa luận của tôi, tôi sẽ nghiên cứu về một NoSQL khá phổ biến - CouchDB.Với khả năng chịu lỗi tốt và tính ổn định cao, đồng bộ giữa các thiết bị tốt, hỗ trợ các phiên bản khi offline tốt.CouchDB xứng đáng là một cơ sở dữ liệu đáng tin cậy. Từ khóa: Nodejs, javascript server side, nosql, couchdb LỜI CAM ĐOAN Tôi xin cam đoan đây là công trình nghiên cứu và thực hiện khóa luận thực sự của riêng tôi, dƣới sự hƣớng dẫn của ThS Nguyễn Hải Châu Mọi tham khảo từ các tài liệu, công trình nghiên cứu liên quan trong nƣớc và quốc tế đều đƣợc trích dẫn rõ ràng trong luận văn. Mọi sao chép không hợp lệ, vi phạm quy chế hay gian trá tôi xin hoàn toàn chịu trách nhiệm và chịu mọi kỷ luật của ĐHQG Hà Nội và Nhà trƣờng. Hà Nội, ngày 18 tháng 05 năm 2012 Sinh viên Nguyễn Tuấn Dũng MỤC LỤC MỞ ĐẦU 1 CHƢƠNG 1: TÌM HIỂU VỀ NODE WEB: NODE.JS – THƢ VIỆN VIẾT ỨNGDỤNG SERVER-SIDE JAVASCRIPT 2 1.1. Javascript và lập trình server 2 1.2. NodeJs là gì? 2 1.3. Khác nhau giữa Blocking và Non-Blocking 3 1.3.1. Blocking 3 1.3.2. Non-Blocking 4 1.3.3. Lợi ích even-driven so với lại tốt hơn thread-driven 4 1.4. Node package manager (NPM) 7 1.4.1 Giới thiệu về NPM 7 1.4.2. Định dạng một gói cài npm 7 1.4.3. Sử dụng npm 8 1.4.4. Gói toàn cục và gói cục bộ trong khi npm cài đặt 9 Chƣơng 2 TÌM HIỂU VỀ CÁC GIẢI PHÁP CƠ SỞ DỮ LIỆU DẠNG NOSQL (NOT ONLY SQL) 10 2.4 Đặc điểm của NoSQL? 11 2.5 Phân loại NoSQL? 12 2.5.1. Wide Column Store / Column Families 12 2.5.2. Key-Value Store/Tuple store 12 2.5.3. Document Store 12 2.5.4. Graph Database 13 2.6 Hiệu năng NoSQL 13 2.6.1. Xử lý việc suy giảm hiệu năng 13 2.6.2. Xử lý một dữ liệu cực lớn 14 2.7. Các loại NoSQL phổ biến 15 2.7.1. MongoDB [2][3] 15 2.7.2. CouchDB [4] 16 2.7.3. Cassandra[5] 17 2.7.4. Membase [6] 19 Chƣơng 3 TÌM HIỂU VỀ COUCHDB 20 3.1. CouchDB là gì 20 3.2. Lịch sử CouchDB 20 3.3. Các đặc điểm của CouchDB 20 3.3.1. Document storage 21 3.3.2. Map/Reduce Views và Indexes 21 3.3.3. Kiến trúc phân tán với việc nhân bản [10] [11] 21 3.3.4. REST API 22 3.3.5. Tính nhất quán cuối cùng. 23 3.3.6. Sử dụng Offline 23 3.4. Sử dụng CouchDB 23 3.4.1. Khởi động 23 3.4.2. Xử lý truy vấn trong CouchDB 23 3.4.3. Views 24 3.4.6. Futon 28 3.5. Tìm hiểu phần mở rộng GEO của COUCHDB 29 3.5.1. GeoCouch là gì 29 3.5.2. Cài đặt GeoCouch 30 3.5.3. Kết nối NodeJs và GeoCouch 31 3.5.4. Sử dụng GeoCouch 31 Chƣơng 4 ỨNGDỤNG MAPCHAT 33 4.1. ExpressJS 33 4.2. SocketIO 34 4.3. Cài đặt project 35 4.3.1. Phần Chatting 35 4.3.2 Phần map 36 KẾT LUẬN 39 DANH SÁCH CÁC BẢNG Bảng 1: So sánh CSDL quan hệ và NoSQL……………………………………… 11 Bảng 2: Bảng tƣơng ứng các câu lệnh truy vấn …… ……………………………23 DANH SÁCH CÁC HÌNH VẼ Hình 1:Bảng so sánh hiệu n……………………………………………………….13 Hình 2: Giao diện Futon……………………………………………………………28 Hình 3: Tạo temporary view……………………………………………………….29 Hình 4: Ứngdụng mapchat……………………………………………………… 38 DANH SÁCH CÁC TỪ VIẾT TẮT Từ viết tắt Nghĩa của từ viết tắt SQL Structured Query Language API Application on Programming Interface ACID Atomicity, Consistency, Isolation, Durability CSDL Cơ sở dữ liệu [...]... và cách sử dụng cơ bản của nó Kết luận: NoSQL và Javscript server side có thể sẽ là tƣơng lai của web trong một tƣơng lai không xa Khi mà yêu cầu về tốc độ, thống nhất ngôn ngữ, tính sẵn sàng và khả năng mở rộng cao đƣợc đặt lên hàng đầu 1 CHƢƠNG 1: TÌM HIỂU VỀ NODE WEB: NODE.JS – THƢ VIỆN VIẾT ỨNGDỤNG SERVER-SIDE JAVASCRIPT 1.1 Javascript và lập trình server Mặc dù các ứng dụng trên nền web chở nên... ngƣời dùng cuối Còn về phía server Họ xây dựng server dựa theo Javascript có thể làm web server và nhiều hơn thế nữa Rất nhiều dịch vụ server đƣợc viết bằng JavaScript đã ra đời ví dụ nhƣ Jaxer đƣợc pháttriển bởi Aptana, Jaxer là một web serve dựa Ajax để xây dựng một trang web nhiều tính năng cũng nhƣ các ứngdụng sử dụng mô hình ajax cái có thể đƣợc viết hoàn toàn bằng JavaScirpt Chúng ta sẽ tập trung... ngân hàng phải tăng chi phí (tiền để trả lƣơng, mặt bằng văn phòng ) (tƣơng ứng với việc tăng phần cứng máy chủ lên để đáp ứng) Nhƣ thế sẽ gây ra các vấn đề về lãng phí Và không tận dụng đƣợc nguồn lực và tiết kiệm đƣợc chi phí 1.3.2 Non-Blocking Ở một ngân hàng khác, họ lại áp dụng theo một phƣơng thức mới (eventdriven):Tận dụng mọi khả năng của tất cả các nhân viên khi họ rảnh và nhân viên khi có... lƣu trữ dữ liệu tƣơng tác với các ứngdụng web. Các ứngdụng đó phải phục vụ rất nhiều ngƣời dùng đồng thời: tạo, lƣu trữ thu hồi, tập hợp, thao tác và trình bày dữ liệu.Membase đƣợc thiết kế để cung cấp một cách đơn giản, nhanh chóng và dễ dàng để mở rộng dữ liệu key-value với độ trễ thấp và băng thông cao.Nó đƣợc thiết kế để phân cụm thành một máy tính duy nhất để triển khai qui mô lớn Membase đƣợc... trong các máy dùng CouchDB(Máy chủ và các máy client) đều có một "nhân bản" cơ sở dữ liệu độc lập, mà các ứngdựng tƣơng tác đầy đủ với cơ sở dữ liệu (truy vấn, thêm xóa sửa).Khi các ứng dụng kết nối lại (online) hoặc theo một chu kỳ, thì 21 dữ liệu sẽ đƣợc đồng bộ 2 chiều.Rất thích hợp với các ứngdụngweb hiện nay.Ví dụ nhƣ google docs.Bạn có thể soạn thảo offline khi không kết nối mạng.Khi kết nối mạng.Thì... nhƣ bắt buộc phải có một trƣờng nào đó và có thể thêm các trƣờng đặc biệt khác mà không phụ thuộc các bản ghi khác nhƣ bên RDBMs CouchDB Văn bản thay đổi bởi các ứng dụng client theo trình tự nhƣ sau.Các ứng dụng client tải văn bản cần dùng, sử dụng chúng bằng cách tƣơng tác nó, sau đó là lƣu chúng vào cơ sở dữ liệu.Nếu có một máy khách khác cũng sửa cùng văn bản đó và lƣu thay đổi của họ trƣớc thì client... minh (smartphone) CouchDB đƣợc sử dụng tốt nhất cho các hệ thống thỉnh thoảng thay đổi dữ liệu nhƣ các hệ thống CMS, các hệ thống cho phép triển khai nhiều trang web Các đặc điểm chính của CouchDB: Lưu trữ theo hướng văn bản (document storage) Sử dụng ngữ nghĩa ACID: Cho phép điều khiển việc đồng bộ việc ghi và đọc cƣờng độ rất cao mà không lo bị xung đột Sử dụng Map/Reduce và các chỉ mục: Mỗi... thay đổi số thay đổi số node thƣờng khá đơn giản, hệ thống node phức tạp Phần cứng Đòi hỏi cao về phần cứng không ảnh hƣởng đến hệ thống Đòi hỏi thấp hơn về giá trị và tính đồng nhất của phần cứng [1] 2.4 Đặc điểm của 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óa phụ (primary key + foreign... khi cách đó là ổn cho rất nhiều ứng dụng thì các mô hình dựa theo 2 luồng không thể mở rộng một cách có hiệu quả với nhiều kết nối tồn tại lâu Ví dụ nhƣ bạn muốn dùng các dịch vụ thời gian thực nhƣ Friendfeed hay Google Wave Nodejs, sử dụng một sự kiện lặp thay cho các luồng, và nó có thể mở rộng lên hàng triệu kết nối một lúc Điều này rất có lợi vì thực tế các máy chủ sử dụng phần lớn thờti gian vào... phân tán, có thể triển khai một số lƣợng lớn các node trên nhiều trung tâm dữ liệu khác nhau.Kiến trúc phân phối các đặc trƣng khóa của Casandra thích hợp cho việc triển khai nhiều chung tập dữ liệu.Sử lý dữ liệu dƣ thừa, đề phòng việc hỏng hóc Tính đàn hồi: Thông lƣợng đọc và ghi đều tăng tuyến tính khi các máy mới thêm vào vì giảm đƣợc thời gian chết hoặc bị gián đoạn giữa các ứngdụng Tính dung . 2 CHƢƠNG 1: TÌM HIỂU VỀ NODE WEB: NODE.JS – THƢ VIỆN VIẾT ỨNG DỤNG SERVER-SIDE JAVASCRIPT 1.1. Javascript và lập trình server Mặc dù các ứng dụng trên nền web chở nên phổ biến trong những. – 2012 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƢỜNG ĐẠI HỌC CÔNG NGHỆ Nguyễn Tuấn Dũng PHÁT TRIỂN ỨNG DỤNG WEB VỚI SERVER – SIDE JAVASCRIPT KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC CHÍNH QUY Ngành:. xin chân thành cảm ơn. Hà nội, tháng 5 năm 2012 Sinh viên Nguyễn Tuấn Dũng PHÁT TRIỂN ỨNG DỤNG WEB VỚI SERVER-SIDE JAVASCRIPT Nguyễn Tuấn Dũng Khóa QH-2008-I/CQ, ngành Công nghệ thông