Tải bản đầy đủ (.doc) (89 trang)

phát triển dịch vụ thông tin địa điểm dễ mở rộng quy mô lớn

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (5.83 MB, 89 trang )

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
──────── * ───────
ĐỒ ÁN
TỐT NGHIỆP ĐẠI HỌC
NGÀNH CÔNG NGHỆ THÔNG TIN
PHÁT TRIỂN DỊCH VỤ THÔNG TIN ĐỊA
ĐIỂM DỄ MỞ RỘNG QUY MÔ LỚN
Sinh viên thực hiện: Đặng Việt Hùng
Lớp CNPM – K51
Giáo viên hướng dẫn: TS Nguyễn Khanh Văn
HÀ NỘI 5-2011
Sinh viên thực hiện: Đặng Việt Hùng –20061444. Khóa K51 Lớp Công nghệ phần mềm 1
Sinh viên thực hiện: Đặng Việt Hùng –20061444. Khóa K51 Lớp Công nghệ phần mềm 2
LỜI CẢM ƠN
Trước tiên em xin gửi lời cảm ơn chân thành đến các thầy cô giáo trong
trường đại học Bách Khoa Hà Nội nói chung và các thầy cô giáo trong Viện
Công Nghệ Thông Tin và Truyền Thông, bộ môn Công Nghệ Phần Mềm nói
riêng đã tận tình giảng dạy, truyền đạt cho em những kiến thức, những kinh
nghiệm quý báu trong suốt 5 năm qua.
Đặc biệt em xin gửi lời cảm ơn đến thầy TS Nguyễn Khanh Văn, thầy
đã tận tình giúp đỡ, trực tiếp chỉ bảo, hướng dẫn em trong suốt quá trình làm
đồ án tốt nghiệp. Trong thời gian làm việc với thầy, em không chỉ tiếp thu
thêm được nhiều kiến thức mới, bổ ích mà còn học hỏi được nhiều kinh
nghiệm thực tiễn khi tham gia dự án Foloyu, đây là những điều rất cần thiết
cho em trong quá trình học tập và công tác sau này.
Em cũng xin gửi lời cảm ơn tới thầy Trịnh Tuấn Đạt và các bạn trong
nhóm làm dự án Foloyu đã giúp đỡ em rất nhiều trong suốt thời gian làm đồ
án tốt nghiệp.
Cuối cùng con xin gửi lời cảm ơn chân thành tới gia đình đặc biệt là bố
mẹ đã động viên, cổ vũ con trong suốt 5 năm qua.


Hà Nội, ngày … tháng … năm 2011
Sinh viên : Đặng Việt Hùng
Lớp : Công nghệ phần mềm – K51
Khoa : Viện Công nghệ Thông tin và
truyền thông
Đại học Bách Khoa Hà Nội
LỜI CẢM ƠN
Trước tiên em xin gửi lời cảm ơn chân thành đến các thầy cô giáo trong
trường đại học Bách Khoa Hà Nội nói chung và các thầy cô giáo trong Viện
Công Nghệ Thông Tin và Truyền Thông, bộ môn Công Nghệ Phần Mềm nói
riêng đã tận tình giảng dạy, truyền đạt cho em những kiến thức, những kinh
nghiệm quý báu trong suốt 5 năm qua.
Đặc biệt em xin gửi lời cảm ơn đến thầy TS Nguyễn Khanh Văn, thầy
đã tận tình giúp đỡ, trực tiếp chỉ bảo, hướng dẫn em trong suốt quá trình làm
đồ án tốt nghiệp. Trong thời gian làm việc với thầy, em không chỉ tiếp thu
thêm được nhiều kiến thức mới, bổ ích mà còn học hỏi được nhiều kinh
nghiệm thực tiễn khi tham gia dự án Foloyu, đây là những điều rất cần thiết
cho em trong quá trình học tập và công tác sau này.
Em cũng xin gửi lời cảm ơn tới thầy Trịnh Tuấn Đạt và các bạn trong
nhóm làm dự án Foloyu đã giúp đỡ em rất nhiều trong suốt thời gian làm đồ
án tốt nghiệp.
Cuối cùng con xin gửi lời cảm ơn chân thành tới gia đình đặc biệt là bố
mẹ đã động viên, cổ vũ con trong suốt 5 năm qua.
Hà Nội, ngày … tháng … năm 2011
Sinh viên : Đặng Việt Hùng
Lớp : Công nghệ phần mềm – K51
Khoa : Viện Công nghệ Thông tin và
truyền thông
Đại học Bách Khoa Hà Nội
PHIẾU GIAO NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP

1. Thông tin về sinh viên
Họ và tên sinh viên: Đặng Việt Hùng
Điện thoại liên lạc: 0984.562.829 Email:
Lớp: Công nghệ phần mềm K51 Hệ đào tạo: Đại học chính quy
Đồ án tốt nghiệp được thực hiện tại: Bộ môn Công nghệ phần mềm
Thời gian làm ĐATN: Từ ngày 21/02/2011 đến 27/05/2011
2. Mục đích nội dung của ĐATN
Tìm hiểu, nghiên cứu các vấn đề lý thuyết và công nghệ xử lý dữ liệu lớn để xây
dựng một dịch vụ mạng quản lý địa điểm đảm bảo tính dễ mở rộng quy mô (scalability)
đáp ứng nhu cầu cá nhân, cũng như kết nối với các hệ thống dịch vụ khác, trước hết là tích
hợp mạng địa xã hội Foloyu. Phân tích, đánh giá hiệu quả của các công nghệ xử lý dữ liệu
lớn qua đó lựa chọn giải pháp hiệu quả để cài đặt vào dịch vụ mạng quản lý địa điểm.
Tìm hiểu thuận toán tìm kiếm các địa điểm gần một đường đi cho trước thỏa mãn
một số tiêu chí nhất định. Triển khai thuật toán trên dịch vụ của Google Map.
3. Các nhiệm vụ cụ thể của ĐATN
 Tìm hiểu lý thuyết các công nghệ xử lý dữ liệu lớn MapReduce và Memcached.
 Cài đặt thử nghiệm và đánh giá hiệu quả của các công nghệ MapReduce,
Memcached qua đó lựa chọn giải pháp áp dụng vào dịch vụ mạng quản lý địa điểm.
 Tìm hiểu công nghệ lập trình Java, Servlet, JSP, và xây dựng Web Service trên Java.
 Tìm hiểu Google Map API, qua đó cài đặt thuật toán tìm kiếm các địa điểm gần một
đường đi cho trước trên Google Map.
 Xây dựng dịch vụ mạng quản lý địa điểm tích hợp vào mạng đia xã hội Foloyu và
ứng dụng thử nghiệm.
4. Lời cam đoan của sinh viên
Tôi – Đặng Việt Hùng - cam kết ĐATN là công trình nghiên cứu của bản thân tôi dưới
sự hướng dẫn của TS.Nguyễn Khanh Văn.
Các kết quả nêu trong ĐATN là trung thực, không phải là sao chép toàn văn của bất kỳ
công trình nào khác.
Hà Nội, ngày 27 tháng 05 năm 2011
Tác giả ĐATN

Đặng Việt Hùng
Sinh viên thực hiện: Đặng Việt Hùng –20061444. Khóa K51 Lớp Công nghệ phần mềm 3
5. Xác nhận của giáo viên hướng dẫn về mức độ hoàn thành của ĐATN và cho phép
bảo vệ:
……………………………………………………………………………………….…….…
……………………………………………………………………………………….…….…
……………………………………………………………………………………….…….…
……………………………………………………………………………………….…….…
……………………………………………………………………………………….…….…
Hà Nội, ngày 27 tháng 05 năm 2011
Giáo viên hướng dẫn
TS Nguyễn Khanh Văn
Sinh viên thực hiện: Đặng Việt Hùng –20061444. Khóa K51 Lớp Công nghệ phần mềm 4
TÓM TẮT NỘI DUNG ĐỒ ÁN TỐT NGHIỆP
Những năm gần đây khi Internet ngày càng phát triển ở Việt Nam, các bản đồ số, các
hệ thống tra cứu địa điểm ra đời đã đáp ứng nhu cầu tìm kiếm, tra cứu địa điểm của con
người. Tuy nhiên đối với với một số tổ chức, doanh nghiệp, các cá nhân trong các ngành
như du lịch, bất động sản, mua sắm trực tuyến, thì việc giới thiệu các địa điểm, vị trí đến
với người dùng, những khách hàng của họ lại phụ thuộc vào các hệ thống xây dựng sẵn có
như vậy. Do đó, nhu cầu về một dịch vụ mạng quản lý địa điểm là rất cần thiết. Đồ án này
tập trung vào xây dựng một một giải pháp cho vấn đề trên, đó là dịch vụ mạng thông tin
địa điểm đáp ứng nhu cầu sử dụng của cá nhân, các tổ chức cũng như tích hợp với các hệ
thống khác. Dịch vụ mạng này phải có tính dễ mở rộng quy mô (scalability) và hỗ trợ tốt
việc hiển thị trên bản đồ trực tuyến khi các hệ thống khác có nhu cầu. Để xây dựng được
một dịch vụ như vậy, đồ án đã đề cập đến một số giải pháp công nghệ xử lý dữ liệu cực lớn
được áp dụng thành công ở các hệ thống lớn của Google, Yahoo, hay Facebook như mô
hình MapReduce, Memcached…Ngoài ra, nhằm đánh giá hiệu quả của dịch vụ mạng quản
lý địa điểm, đồ án cũng xây dựng một hệ thống thử nghiệm có tích hợp dịch vụ này kết hợp
hiển thị, tìm kiếm địa điểm trên bản đồ trực tuyến của Google.
Từ khóa —Địa điểm, MapReduce, Memcached, Google Map, Design Application

Scalability, Web Service.
Sinh viên thực hiện: Đặng Việt Hùng –20061444. Khóa K51 Lớp Công nghệ phần mềm 5
ABSTRACT OF THESIS
In recent years, Internet has been developing rapidly in Viet Nam. The appearance of
digital Mapping Services and Location Searching Services has met the people’s need for
searching and finding places. However, the locations of organizations, companies,
individuals in tourist, real estate, shopping business showed and introduced to costumers
depend a lot on such services mentioned above. Therefore, a location management service
is very in need. My thesis focus on a location management service that meets the demands
of individuals and organizations and it can be integrated into other systems. This service
has to be scalable and provide the displays on online map when other systems request
service. In order to build such a service, my thesis is based on some solutions to large data
processing technology such as MapReduce, Memcached…In addition, to evaluate the
effectiveness of location management service, I have built a system integrated with this
service to display and search locations on Google Map.
Keywords—Location Service, MapReduce, Memcached, Web Service, Design
Application Scalability.
Sinh viên thực hiện: Đặng Việt Hùng –20061444. Khóa K51 Lớp Công nghệ phần mềm 6
MỤC LỤC
PHIẾU GIAO NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP 3
TÓM TẮT NỘI DUNG ĐỒ ÁN TỐT NGHIỆP 5
ABSTRACT OF THESIS 6
MỤC LỤC 7
DANH MỤC CÁC BẢNG 8
DANH MỤC CÁC HÌNH 9
DANH MỤC CÁC TỪ VIẾT TẮT VÀ THUẬT NGỮ 11
MỞ ĐẦU 12
PHẦN I: TỔNG QUAN VỀ ĐỀ TÀI 14
ĐẶT VẤN ĐỀ VÀ PHƯƠNG PHÁP THỰC HIỆN 14
CƠ SỞ LÝ THUYẾT VÀ CÔNG NGHỆ 18

PHẦN II: CÁC KẾT QUẢ ĐẠT ĐƯỢC 32
CÀI ĐẶT MEMCACHED TRONG HỆ THỐNG 33
PHÂN TÍCH HỆ THỐNG THỬ NGHIỆM TÍCH HỢP DỊCH VỤ THÔNG TIN
ĐỊA ĐIỂM 38
KẾT QUẢ CÀI ĐẶT, TRIỂN KHAI VÀ CHẠY THỬ 72
KẾT LUẬN 81
TÀI LIỆU THAM KHẢO 82
PHỤ LỤC 84
Sinh viên thực hiện: Đặng Việt Hùng –20061444. Khóa K51 Lớp Công nghệ phần mềm 7
DANH MỤC CÁC BẢNG
Bảng 1: Thay đổi key-value qua các quá trình 23
Bảng 2: Chiến lưu trữ key-value với memcacehd trong hệ thống 36
Bảng 3: Các tác nhân của hệ thống 39
Bảng 4: Bảng thông tin User 59
Bảng 5: Bảng thông tin địa điểm 59
Bảng 6: Bảng thông tin Hạ tầng mạng của địa điểm 60
Bảng 7: Bảng các địa điểm ưa thích của user 60
Bảng 8:Bảng thông tin loại địa điểm 60
Bảng 9: Bảng bài viết liên quan đến địa điểm 61
Bảng 10: Bảng bình luận của địa điểm 61
Bảng 11: Bảng kết nối giữa Địa điểm và Loại địa điểm 61
Bảng 12: Bảng Multimedia 62
Bảng 13: Bảng Block – Thông tin Phường Xã 62
Bảng 14: Bảng District-Thông tin Quận Huyện 62
Bảng 15: Bảng Province-Thông tỉn Tỉnh/Thành Phố 63
Bảng 16: Bảng đánh giá dịch vụ quản lý địa điểm và các hệ thống khác 79
Sinh viên thực hiện: Đặng Việt Hùng –20061444. Khóa K51 Lớp Công nghệ phần mềm 8
DANH MỤC CÁC HÌNH
Hình 1: Mô hình mạng xã hội Foloyu 16
Hình 2: Kiến trúc client-server truyền thống 19

Hình 3: Kiến trúc phân tán thông thường 20
Hình 4: Kiến trúc client-server trong hệ thống sử dụng 20
Hình 5: Kiến trúc đặc trưng đầy đủ của hệ thống sử dụng memcached 21
Hình 6: Luồng dữ liệu xử lý bài toán 22
Hình 7: Luồn xử lý dữ liệu khi áp dụng mô hình MapReduce 24
Hình 8: Mô hình thực thi MapReduce 25
Hình 9: Kiến trúc Web Service 28
Hình 10: Minh họa một Request message 29
Hình 11: Minh họa một Response message 30
Hình 12: Minh họa một WSDL 30
Hình 13: Kiến trúc client-server khi áp dụng Memcached 34
Hình 14: Kiến trúc hệ thống 38
Hình 15: Usecase tổng quan hệ thống 40
Hình 16: Usecase Xem danh sách địa điểm 41
Hình 17: Usecase Xem bản đồ 43
Hình 18: Usecase Tìm kiếm địa điểm 43
Hình 19: Usecase Xem loại địa điểm 45
Hình 20: Usecase Xem thông tin chi tiết địa điểm 46
Hình 21: Usecase Tìm đường đi 47
Hình 22: Usecase Đăng địa điểm 48
Hình 23: Usecase Cập nhật địa điểm 49
Hình 24:Usecase Quản lý địa điểm 50
Hình 25:Usecase Quản lý tài nguyên liên quan đến địa điểm 50
Hình 26:Usecase Đánh giá địa điểm 51
Hình 27: Usecase Đăng ký làm chủ sở hữu 52
Hình 28: Usecase Thống kê địa điểm 52
Hình 29:Usecase Xem danh sách địa điểm của vùng 53
Hình 30: Usecase Quản lý tài nguyên của User đăng lên 53
Hình 31: Usecase Thêm user là chủ sở hữu vật tư 54
Hình 32: Thiết kế giao diện trang chủ 55

Hình 33: Thiết kế giao diện trang Xem địa điểm theo loại 56
Hình 34: Thiết kế giao diện trang Hiển thị thông tin chi tiết địa điểm 56
Hình 35: Sơ đồ thực thể liên kết 57
Hình 36: Biểu đồ dữ liệu quan hệ 58
Hình 37: Kiến trúc phân tầng 63
Sinh viên thực hiện: Đặng Việt Hùng –20061444. Khóa K51 Lớp Công nghệ phần mềm 9
Hình 38: Biểu đồ lớp 65
Hình 39: Package location.site 66
Hình 40: Package location.business.repositories 67
Hình 41: Sơ đồ thao tác thêm mới địa điểm 68
Hình 42: Sơ đồ thao tác Cập nhật thông tin địa điểm 69
Hình 43: Sơ đồ thao tác Tìm kiếm địa điểm 70
Hình 44: Sơ đồ thao tác xóa địa điểm 71
Hình 45: Sơ đồ kế hoạch triển khai thử nghiệm 72
Hình 46: Giao diện trang chủ 74
Hình 47: Giao diện trang Duyệt địa điểm theo loại 75
Hình 48: Giao diện của trang xem thông tin chi tiết địa điểm 76
Hình 49: Giao diện trang tìm kiếm địa điểm xung quang đường 77
Hình 50: Giao diện trang thêm địa điểm 78
Sinh viên thực hiện: Đặng Việt Hùng –20061444. Khóa K51 Lớp Công nghệ phần mềm 10
DANH MỤC CÁC TỪ VIẾT TẮT VÀ THUẬT NGỮ
STT Từ viết tắt/Thuật ngữ Mô tả
1 Memcached Công nghệ cache đối tượng trên bộ nhớ phân
tán
2 MapReduce Mô hình xử lý dữ liệu lớn do Google đề xuất
dựa trên tính toán song song
3 Java Servlet Công nghệ phát triển ứng dụng web sử dụng
ngôn ngữ Java lần đầu tiên được Sun
Microsystems giới thiệu vào năm 1996.
4 JSP Java Servlet Pages-Là mở rộng của công

nghệ servlet.
5 DNS Domain Name System-Hệ thống phân giải
tên miền.
6 LRU Least Recently Used-Một thuật toán chọn ra
các phần tử để xóa khỏi bộ đệm (cache).
7 SOA Service-oriented architecture – Kiến trúc
hướng dịch vụ.
8 WSDL Web Service Definition Language - Ngôn
ngữ đặc tả Web Service.
9 SOAP Simple Object Access Protocol – Giao thức
truy nhập đối tượng đơn giản.
10 UDDI Universal Description, Discovery and
Integration- Là một nền tảng độc lập được
thiết kế để tương tác với tin nhắn SOAP và
cung cập sự truy cập tới các tài liệu WSDL
11 J2ME Java 2 Micro Edition - Phiên bản Java dành
cho các thiết bị có cấu hình thấp.
Sinh viên thực hiện: Đặng Việt Hùng –20061444. Khóa K51 Lớp Công nghệ phần mềm 11
MỞ ĐẦU
Địa điểm đang dần trở nên quan trọng trong cuộc sống của chúng ta. Một số
hoạt động của con người luôn gắn liên với một địa điểm như mua sắm, du lịch, giải
trí hay đơn giản chỉ là đi chơi với bạn bè. Cùng với sự phát triển của Internet, sự ra
đời của bản đồ số và các thiết bị di động thông minh tích hợp các bản đồ trực tuyến
khiến việc tìm kiếm, tra cứu địa điểm ngày càng trở nên dễ dàng. Ví dụ con người
có thể dễ dàng tìm một địa điểm mua sắm chỉ với một chiếc di động kết nối mạng
hay đơn giản là dùng máy tính vào các web site như diadiem.com hoặc
map.google.com để tra cứu. Tuy nhiên, bên cạnh các hệ thống tra cứu địa điểm sẵn
có như vậy, các công ty, doanh nghiệp trong các ngành như du lịch, bất động sản
hay các hệ thống nhà hàng, các hệ thống mua sắm… với vô số đại lý, cửa hàng phân
bố trên toàn quốc lại chưa có một dịch vụ tra cứu địa điểm lại để tích hợp vào hệ

thống của mình.
Vì vậy trong đồ án này, tác giả hướng tới phát triển một dịch vụ thông tin địa
điểm có khả năng đáp ứng nhu cầu cá nhân hay các tổ chức…cũng như tích hợp vào
các hệ thống khác. Dịch vụ này phải đảm bảo khả năng mở rộng quy mô
(scalability) khi cơ sở dữ liệu địa điểm là rất lớn, đồng thời hỗ trợ tốt việc hiển thị
trên bản đồ trực tuyến. Để xây dựng được một hệ thống như vậy, tác giả cũng giới
thiệu một số công nghệ xử lý dữ liệu cực lớn, đã được áp dụng ở một số hệ thống
lớn như Google Search, Yahoo, Facebook và ứng dụng chúng cho đề tài.
Trong quá trình làm đồ án, tác giả có cơ hội tham gia phát triển dự án mạng
địa xã hội Foloyu-mạng xã hội dựa địa điểm, dưới sự hướng dẫn tận tình của thầy
TS Nguyễn Khanh Văn.Tiến sĩ đã giúp tác giả thử nghiệm và hoàn thiện dịch vụ
thông tin địa điểm tích hợp được trên nhiều hệ thống hoạt động trên nhiều nền tảng
bao gồm cả thiết bị di động chạy hệ điều hành Android.
Đồ án được bố cục gồm bốn phần chính:
 Phần mở đầu:
 Giới thiệu về đề tài tốt nghiệp.
 Tóm tắt nội dung, môi trường thực hiện đồ án.
 Phần một: Đặt vấn đề và định hướng giải pháp:
 Mô tả xuất phát cần xây dựng dịch vụ mạng quản lý địa điểm.
 Trình bày chi tiết các nhiệm vụ được giao trong đồ án.
 Định hướng, giải pháp lựa chọn để xây dựng đề tài.
 Tóm tắt cơ sở lý thuyết và công nghệ được áp dụng trong các hệ
thống xử lý dữ liệu lớn.
 Phần hai: Xây dựng dịch vụ mạng quản lý địa điểm và hệ thống website thử
nghiệm dịch vụ:
 Trình bày kết quả phân tích, yêu cầu chức năng của dịch vụ mạng và
hệ thống website thử nghiệm.
Sinh viên thực hiện: Đặng Việt Hùng –20061444. Khóa K51 Lớp Công nghệ phần mềm 12
 Đánh giá kết quả đạt được và so sánh với các hệ thống khác.
 Phần kết luận:

 Đánh giá lại toàn bộ quá trình thực hiện đề tài tốt nghiệm và đề xuất
phát triển trong tương lai.
Sinh viên thực hiện: Đặng Việt Hùng –20061444. Khóa K51 Lớp Công nghệ phần mềm 13
PHẦN I: TỔNG QUAN VỀ ĐỀ TÀI
ĐẶT VẤN ĐỀ VÀ PHƯƠNG PHÁP THỰC HIỆN
Nội dung của chương này sẽ trình bày các vấn đề sau:
 Đặt vấn đề về yêu cầu cần phát triển dịch vụ thông tin địa điểm
 Phương pháp tiếp cận và hướng thực hiện đề tài của tác giả
1.1. Đặt vấn đề
Ngày nay, cùng với sự phát triển mạnh mẽ của mạng Internet, việc tìm kiếm,
tra cứu địa điểm ngày càng trở nên dễ dàng. Cùng với đó, sự ra đời của các hệ thống
bản đồ số, các thiết bị di động thông minh để định vị đang thay thế dần cách thức
tra cứu truyền thống trên các tấm bản đồ giấy, giúp con người tiếp cận được với địa
điểm nhanh chóng và tiện lợi. Không chỉ có nhu cầu tra cứu, con người còn muốn
giới thiệu, chia sẻ địa điểm của mình đến cộng đồng.
Bên cạnh đó, địa điểm đang trở nên đặc biệt quan trọng đối với một số hệ
thống trong các ngành như du lịch, bất động sản, quảng bá mua sắm, giải trí và
mạng xã hội địa điểm-một mô hình mạng xã hội dựa địa điểm mới phát triển mạnh
ở Việt Nam từ năm 2010-2011. Với mong muốn đưa đến người dùng các thông tin
địa điểm chính xác và trực quan, các hệ thống trên đã phát triên các hệ thống thông
tin địa điểm của riêng mình. Tuy nhiên các hệ thống chỉ phát triển đáp ứng được
nhu cầu đặc thù, chuyên biệt của tổ chức đang sở hữu mà chưa hướng đến được nhu
cầu sử dụng của cá nhân. Ngoài ra dữ liệu địa điểm ở các hệ thống này mới chỉ có
tính cục bộ phụ thuộc vào người sử dụng và từng hệ thống cung cấp mà chưa có sự
chia sẻ, thống nhất tạo nên một cơ sở dữ liệu địa điểm lớn, phong phú.
Vì vậy một giải pháp được đưa ra đó là một dịch vụ thông tin địa điểm có thể
tích hợp được vào nhiều hệ thống khác và tập trung được dữ liệu địa điểm do các hệ
thống này cung cấp. Ví dụ với một hệ thống về giao dịch bất động sản trực tuyến,
thông tin về các hạ tầng xã hội xung quanh như siêu thị, chợ, trường học là rất quan
trọng và ảnh hưởng đến giá trị của chính một bất động sản. Khi dịch vụ thông tin

địa điểm được tích hợp vào, hệ thống sẽ có sẵn một cơ sở dữ liệu về hạ tầng xã hội
với đầy đủ thông tin như vị trí, đánh giá, bình luận mà không cần xây dựng thêm
một thành phần nào khác. Ngoài ra, đối với những cá nhân, tổ chức nhỏ có nhu cầu
xây dựng cho mình một hệ thống có liên quan đến địa điểm như hiển thị vị trí các
đại lý, cửa hàng, các danh lam thắng cảnh hay đơn giản chỉ là chia sẻ các địa điểm
ưa thích của mình thì dịch vụ thông tin địa điểm cũng có thể đáp ứng.
Với giải pháp trên, đồ án cần giải quyết được những vấn đề sau:
Sinh viên thực hiện: Đặng Việt Hùng –20061444. Khóa K51 Lớp Công nghệ phần mềm 14
 Phát triển được dịch vụ thông tin đia điểm đảm bảo các chức năng cơ bản có
thể đáp ứng được nhu cầu đa dạng cho nhiều hệ thống.
 Dịch vụ cần đảm bảo tính mở rộng quy mô về dữ liệu khi cơ sở dữ liệu địa
điểm là rất lớn.
 Dịch vụ phải sử dụng được cho các hệ thống sử dụng các nền tảng khác
nhau.
 Xây dựng hệ thống thử nghiệm nhằm đánh giá hiệu quả của dịch vụ được
phát triển.
Nhằm giải quyết nhưng vấn đề trên, tác giả đã xây dựng hệ thống thành 2 giai
đoạn:
 Giai đoạn 1: Xây dựng dịch vụ quản lý địa điểm dưới dạng web service tích
hợp vào hệ thống website thử nghiệm theo mô hình client-server. Giai đoạn
này hoàn thiện trong khuôn khổ đồ án.
 Giai đoạn 2: Xây dựng dịch quản lý địa điểm thành một engine cung cấp
không chỉ các API về phía server, mà còn các API cho client phục vụ cho
việc hiển thị địa điểm trên bản đồ số. Giai đoạn này là hướng phát triển sau
tốt nghiệp.
Ngoài ra, trong quá trình làm đồ án, tác giả có cơ hội được tham gia vào dự án
mạng địa xã hội Foloyu, một mạng xã hội dựa địa điểm, đã giúp tác giả hoàn thiện
được các chức năng của dịch vụ thông tin địa điểm trong quá trình tích hợp thử
nghiệm dịch vụ vào mạng xã hội này, đặc biệt là thử nghiệm trên hệ thống chạy trên
thiết bị di động cài hệ điều hành Android.

Trên thế giới, mô hình mạng xã hội địa điểm (tiếng Anh là Geosocial
networking) hình thành từ những năm 2005 và phát triển mạnh ở Việt Nam những
năm gần đây 2010-2011 với sự ra đời của các mạng địa điểm như go.vn, kunkun.vn
hay Yoo!. Khi tham gia mạng xã hội địa điểm, người dùng ngoài việc tìm kiếm
thông tin về địa điểm, có thể tạo ra một mạng kết nối với các người dùng khác
thông qua việc họ hiển thị đăng nhập và chia sẻ với nhau các địa điểm mình quan
tâm. Foloyu cũng là một trong mạng xã hội địa điểm như vậy, được phát triển với
nhiều thành phần và cơ sở dữ liệu phân tán (Hình 1).
Sinh viên thực hiện: Đặng Việt Hùng –20061444. Khóa K51 Lớp Công nghệ phần mềm 15
Hình 1: Mô hình mạng xã hội Foloyu
Mô hình hệ thống Foloyu được chia thành nhiều thành phần với server Foloyu là
trung tâm và các engine khác hỗ trợ gồm:
 Location Engine: quản lý toàn bộ thông tin về các địa điểm, cung cấp các
API dưới dạng webservice cho Foloyu server.
 Feed Engine: quản lý các feed (cập nhật thông tin) từ người dùng rồi truyền
tải các thông tin này cho người dùng khác.
 Profile Engine: quản lý thông tin người dùng, bạn bè trong hệ thống.
1.2. Phương pháp tiếp cận và hướng thực hiện đề tài
Như đã mô tả ở phần 1.1 Tổng quan đề tài, phần này sẽ đưa ra các hướng tiếp
cận để giải quyết được những vấn đề đã nêu gồm:
 Xây dựng được dịch vụ quản lý đia điểm đảm bảo các chức năng cơ bản có
thể đáp ứng được nhu cầu cho nhiều hệ thống => Cơ sở dữ liệu được thiết kế
phân tán, với các quan hệ khóa lỏng lẻo.
 Dịch vụ cần đảm bảo tính mở rộng quy mô về dữ liệu khi cơ sở dữ liệu địa
điểm là rất lớn => Các công nghệ xử lý dữ liệu lớn đảm bảo tính mở rộng
quy mô.
 Dịch vụ phải sử dụng được cho các hệ thống sử dụng các nền tảng khác nhau
=> Các chức năng được xây dựng dưới dạng web service.
Với những cách tiếp cận trên, một số công nghệ chuyên xử lý dữ liệu lớn như
Memcached, MapReduce, kiến trúc Web Service, Google Map API được tác giả tìm

Sinh viên thực hiện: Đặng Việt Hùng –20061444. Khóa K51 Lớp Công nghệ phần mềm 16
Dịch vụ quản lý địa
điểm tích hợp vào hệ
thống Foloyu
hiểu để áp dụng được trong đề tài sẽ được giới thiệu trong chương tiếp theo, chương
2: Cơ sở lý thuyết và công nghệ.
Sinh viên thực hiện: Đặng Việt Hùng –20061444. Khóa K51 Lớp Công nghệ phần mềm 17
CƠ SỞ LÝ THUYẾT VÀ CÔNG NGHỆ
Nội dung của chương này sẽ trình bày các vấn đề sau:
 Công nghệ Memcached
 Mô hình MapReduce
 Kiến trúc Web Service
 Giới thiệu về Google Map API
Để phát triển được dịch thông tin địa điểm có tính dễ mở rộng quy mô
(scalability), tác giả đã tập trung tìm hiểu các công nghệ xử lý dữ liệu cực lớn. Các
công nghệ này đã được áp dụng thành công ở các hệ thống lên đến hàng triệu người
dùng với lượng dữ liệu cần xử lý hàng terabyte, petabyte như mô hình MapReduce
áp dụng trong bộ máy tìm kiếm của Google, Yahoo hay công nghệ Memcached áp
dụng trong Facebook-mạng xã hội lớn nhất thế giới. Ngoài ra, tác giả cũng trình bày
về kiến trúc của Web Service nhằm xây một hệ thống mềm dẻo linh hoạt có khả
năng “nói chuyện” với nhiều hệ thống chạy trên các nền tảng khác nhau. Cuối
chương 2 này, tác giả cũng giới thiệu qua về Google Map API, một dịch vụ cung
cấp các chức năng hiển thị bản đồ trực tuyến.
1.3. Công nghệ Memcached
Các hệ thống khi thao tác với cơ sở dữ liệu đều xây dựng các chiến lược cache
phù hợp. Các hệ thống lớn như Facebook với số người dùng lên đến hàng triệu thì
các hệ thống cache dữ liệu đóng vai trò rất quan trọng. Được đánh giá là hiệu quả
và đã áp dụng thành công ở các hệ thống lớn là chiến lược cache dựa trên kiến trúc
phân tán. Có rất nhiều công nghệ để thực thi chiến lược này, nhưng nhờ những ưu
điểm như dễ cài đặt, mã nguồn mở, thích hợp với nhiều nền tảng, Memcached là

sự lựa chọn hàng đầu cho các hệ thống hiện nay.
1.3.1. Khái niệm
Memcached là hệ thống lưu trữ đối tượng trên bộ nhớ dựa trên kiến trúc
phân tán (distributed memory object caching system). Memcached lần đầu tiên
được ứng dụng cho trang web LiveJournal.com nhưng đến bây giờ đã được rất
nhiều hệ thống áp dụng. Công nghệ này thường được sử dụng để tăng tốc độ các hệ
thống ứng dụng có nhiều các thao tác liên quan đến database bằng cách lưu trữ dữ
liệu và các đối tượng trong bộ nhớ (thường là RAM hoặc các thiết bị có tốc độ truy
suất cao) để giảm số lần phải truy cập dữ liệu bên ngoài (ví dụ như cơ sở dữ liệu
hoặc các API). Memcached chạy được trên nhiều nền tảng như Unix, Windows và
MacOS.
Sinh viên thực hiện: Đặng Việt Hùng –20061444. Khóa K51 Lớp Công nghệ phần mềm 18
Đặc biệt, Memcached cung cấp khả năng cached dữ liệu sử dụng nhiều máy kết
hợp tạo thành một hệ thống caching phân tán, tăng khả năng lưu trữ và khả năng mở
rộng hệ thống.
1.3.2. Kiến trúc hệ thống sử dụng công nghệ Memcached
Memcached được sử dụng ở các hệ thống website đòi hỏi khả năng mở rộng quy
mô về dữ liệu (scalability). Trong kiến trúc Client –Server thông thường, một
request từ máy khách đến các máy chủ chứa ứng dụng và máy chủ ứng dụng tiếp
tục đọc dữ liệu từ một máy chủ khác chứa database (Database cũng có thể đặt chung
với máy chủ chứa ứng dụng). Các máy chủ này thường được thiết kế để có thể phân
phối tải, sao lưu dữ liệu và chịu lỗi (Hình 2).
Hình 2: Kiến trúc client-server truyền thống
Tuy nhiên, việc truy cập cơ sở dữ liệu về bản chất là đọc đĩa cứng. Đĩa cứng
là thành phần có tốc độ truy cấp chậm nhất trong kiến trúc này và khi nhu cầu đọc
ghi lớn, nhiều request đến thì hiện tượng thắt cổ chai có thể xảy ra.
Memcached thật sự rất mạnh bởi vì khả năng chạy được trên các hệ thống
phân tán (tăng khả năng mở rộng) nhưng không giống như kiến trúc phân tán truyền
thống (Hình 3), Memcached không có thành phần điều khiển trung tâm để phân
phối dữ liệu. Cũng vì vậy mà giữa các nút (có thể là máy chủ) chạy Memcached

không có khả năng phân phối dữ liệu tự động, các nút là hoàn toàn độc lập không
giao tiếp với nhau.
Sinh viên thực hiện: Đặng Việt Hùng –20061444. Khóa K51 Lớp Công nghệ phần mềm 19
Mạng Internet
Máy chủ ứng
dụng
Máy chủ
dữ liệu
Hình 3: Kiến trúc phân tán thông thường
Để giảm tải việc đọc đĩa cứng hay truy cập cơ sở dữ liệu, thay vì chỉ có các
máy chủ chứa ứng dụng thì sẽ có thêm các máy chủ làm nhiệm vụ caching dữ liệu
đứng ở giữa. Vì vậy kiến trúc mới khi có các máy chủ Memcached giờ được chia
làm hai thành phần (Xét trong phạm vi chỉ gồm máy chủ chứa ứng dụng và máy chủ
Memcached, máy chủ nào truy cập đến các máy chủ Memcached thì máy chủ đó
đóng vai trò như là client-minh họa trong hình 4):
1. Client: Thường là một máy chủ chứa ứng dụng, lấy danh sách các máy chủ
cài đặt Memcached và sử dụng các hàm băm lựa chọn máy chủ cache để thiết lập
hoặc đọc dữ liệu.
2. Server: Là các máy chủ cài đặt Memcached hỗ trợ các xử lý liên quan thiết
lập, xóa và nhận dữ liệu.
Hình 4: Kiến trúc client-server trong hệ thống sử dụng
Để có thể truy cập đến các máy chủ Memcached, bên client cần cài đặt thư
viện memcached client (có các thư viện riêng cho các nên tảng ngôn ngữ khác nhau,
với java là spymemcached - cho phép
giao tiếp, thực hiện các thao tác như chọn máy chủ đọc và ghi dữ liệu. Các client sử
Sinh viên thực hiện: Đặng Việt Hùng –20061444. Khóa K51 Lớp Công nghệ phần mềm 20
Các hệ thống
phân tán thông
thường. Nhưng
memcached không

hoạt động giống
như vậy
Client sẽ quyết định
chọn server cache
nào để đọc và ghi dữ
liệu dựa vào một
hàm băm
Mỗi Memcached
server chạy độc lập
với nhau
dụng một hàm băm sinh một hash dựa trên key truyền vào. Từ key này client sẽ
chọn một máy chủ để giao tiếp. Với những đặc điểm trên, kiến trúc đặc trưng của
một hệ thống sử dụng Memcached với khả năng sao lưu, cân bằng tải và chịu lỗi
minh họa trong hình 5.
Hình 5: Kiến trúc đặc trưng đầy đủ của hệ thống sử dụng memcached
1.3.3. Đánh giá hiệu quả và khả năng ứng dụng
Qua quá trình cài đặt thử nghiệm, khi thử các thao tác cơ bản với dữ liệu đối
với hệ thống có sử dụng Memcached và hệ thống chỉ cài đặt hệ quản trị cơ sở dữ
liệu SQL Server 2008, tác giả nhận thấy có sự khác biệt rõ rệt về chi phí thời gian
khi thực hiện cùng một thao tác giống nhau. Thông tin chi tiết trong bảng số liệu
bên dưới:
S
TT
Thao tác Memcached SQL Server 2008
1 Lấy danh sách 500.000
bản ghi
Rất chậm, khoảng 30
phút
Rất nhanh, khoảng 2-3
giây

2 Lấy 1 bản ghi Rất nhanh, không phụ
thuộc vào số lượng bản
ghi
Rất nhanh, phụ thuộc
vào số lượng bản ghi
3 Khả năng tìm kiếm,
duyệt danh sách bản ghi
Gần như không có khả
năng này. Tùy chiến
lược lưu trữ

Sinh viên thực hiện: Đặng Việt Hùng –20061444. Khóa K51 Lớp Công nghệ phần mềm 21
Máy chủ ứng dụng có
thể trực tiếp truy cập
database khi một giá trị
không khả dụng trong
memcached server
Chùm máy chủ dữ
liệu (database)
Chùm máy
memcached server
với tường lửa bảo vệ
Một tiến trình riêng
biệt để quyết định
khi nào đồng bộ dữ
liệu giữa cache và
database
Chùm máy chủ dữ liệu
Từ bảng trên chúng ta có thể thấy với hệ thống áp dụng Memcached cần phải có
chiến lược lưu trữ key-value linh hoạt nhằm tận dụng những lợi thế từ công nghệ

này. Chi tiết cách thức làm việc và chiến lược cài đặt Memcached vào dịch vụ
thông tin địa điểm sẽ được tác giả trình bày trong phần II của đồ án.
1.4. Mô hình MapReduce
Với sự rộng lớn của mạng Internet, các công cụ tìm kiếm trực tuyến trở thành
một phần không thể thiếu cho người duyệt web. Mỗi giây, các hệ thống tìm kiếm
khổng lồ như Google, Yahoo tiếp nhận hàng triệu lượt truy vấn từ người dùng và trả
lại kết quả trong thời gian chỉ vài mili giây. Tại sao với số lượng hàng tỉ trang web,
các hệ thống tìm kiếm lại có thể đáp ứng nhanh như vậy? Câu trả lời nằm ở mô hình
lập trình MapReduce, một mô hình xử lý dữ liệu cực lớn.
1.4.1. Khái niệm
MapReduce là một mô hình giúp cho các hệ thống xử lý lượng dữ liệu cực
lớn lên đến hàng terabyte, petabyte phân bố trên hàng ngàn máy tính biệt lập mà
vẫn đáp ứng được về mặt thời gian và tận dụng được khả năng phần cứng với cấu
hình thấp.
Về bản chất, MapReduce biểu diễn dữ liệu bằng các cặp key – value và quá
trình xử lý dữ liệu bao gồm hai công việc chính được gọi là Map và Reduce. Để có
thể hiểu được các khái niệm trong mô hình này, tác giả bắt đầu từ một bài toán cơ
bản “Đếm số lần xuất hiện của các từ trong văn bản”. Bài toán đặt ra là hết sức đơn
giản nhưng nếu số lượng văn bản là rất rất lớn thì việc lập trình thông thường sẽ
không giải quyết được. Nếu áp dụng mô hình MapReduce, chúng ta có luồng xử lý
dữ liệu của bài toán như sau (hình 6):
Hình 6: Luồng dữ liệu xử lý bài toán
Như trong sơ đồ hình 6, một văn bản đầu vào sẽ được chia ra làm 3 phần
(Splitting). Công việc tiếp theo là đếm số lần xuất hiện các từ trong mỗi phần này,
Sinh viên thực hiện: Đặng Việt Hùng –20061444. Khóa K51 Lớp Công nghệ phần mềm 22
ta có được thống kê về số là xuất hiện của từ trong mỗi phần (Mapping). Sau đó là
công việc sắp xếp các kết quả thống kê này để tạo thành các nhóm có chung từ cần
đếm (Sorting). Từ các nhóm này ta có được tổng số xuất hiện của mỗi từ trong văn
bản lúc đầu (Reducing).
Dữ liệu biểu diễn bằng các cặp key – value trong quá trình này như sau (bảng 1):

Quá trình Các Key – Value
Splitting Văn bản gốc được chia làm 3 phần, mỗi phần sẽ được
gắn key để thao tác với giá trị của key là nội dung tương
ứng với phần đó. VD:
“Phần 1” – “Nội dùng đoạn văn bản 1”
“Phần 2” – “Nội dung đoạn văn bản 2”
“Phần 3” – “Nội dung đoạn văn bản 3”
Mapping Mỗi phần sau khi được chia, qua quá trình Mapping,
các từ sẽ được đếm số lần xuất hiện, key ở quá trình
chính là từ đó với giá trị tương ứng là số lần đếm được.
VD
“Deer” – “1”
“Bear” – “1”
“River” – “1”
“Car” – “1”…
Sorting Trong quá trình sorting key vẫn là từ và value số lần từ
xuất hiện
“Bear” – “1”
“Car” – “1”
“Deer” – “1”
“River” – “1”…
Reducing Trong quá trình này, key vẫn là từ cần đếm nhưng value
là tổng só lần xuất hiện của từ đó trong cả 3 phần văn
bản được chia ra. Qua quá trình này, số lượng key –
value đã giảm đi
“Bear” – “2”
“Car” – “3”
“Deer” – “2”
“River” – “2”
Bảng 1: Thay đổi key-value qua các quá trình

Sinh viên thực hiện: Đặng Việt Hùng –20061444. Khóa K51 Lớp Công nghệ phần mềm 23
1.4.2. Luồng dữ liệu xử lý khi áp dụng mô hình MapReduce
Hình 7: Luồn xử lý dữ liệu khi áp dụng mô hình MapReduce
Sinh viên thực hiện: Đặng Việt Hùng –20061444. Khóa K51 Lớp Công nghệ phần mềm 24
Input Files
Input reader
Compare function
Map function
Partition function
Reduce function
Output writer
Output file
Thiết bị đọc dữ liệu đầu vào và chia file thành
các phần thích hợp (đặc trưng từ 16MB đến
128MB) và sinh các cặp key/value gán cho
mỗi phần.
Dữ liệu được dự trữ ở vùng lưu trữ ổn định
thường là một distributed file system
Mỗi phần cùng với key của nó sẽ đi qua một
xử lý gọi là Map. Đầu ra sẽ là một tập các các
cặp key/value
Tập các cặp key/value từ pha xử lý Map trở
thành đầu vào của pha tiếp theo gọi là
Partition. Pha này sẽ chia không gian key này
thành R phần (ví dụ bằng hash (key) mod R)
Sau khi được chia thành R phần. Mỗi phần này
trở thành đầu vào của pha tiếp theo. Pha
Compare sắp xếp mỗi phần theo key tạo thành
các nhóm có cùng key
Mỗi nhóm có cùng key (số nhóm < R) trở

thành đầu vào của pha tiếp theo gọi là Reduce.
Pha này cho ra một cặp key/ value duy nhất.
Sau pha Reduce, ta thu được các đầu ra. Các
đầu ra này được ghi lên một distributed file
system.
Distributed file system. (Global Storge)
1.4.3. Thực thi mô hình MapReduce
Hình 8: Mô hình thực thi MapReduce
Về cơ bản đối với quá trình Map- Dữ liệu đầu vào được tự động phân tách
thành một tập gồm M phần. Trong mô hình MapReduce thì các phần có kích thước
bằng nhau, có cùng một xử lý giống nhau trên mỗi phần này. Việc xử lý này phải
độc lập trong tính toán (ví dụ trong bài toán Fibonacci, tính toán song song là
không thể vì mỗi giá trị đều phụ thuộc vào các giá trị đứng trước) và không yêu
cầu giao tiếp giữa các nhiệm vụ. Các phần dữ liệu này có thể được xử lý song song
bằng cách phân phối đến vô số máy thực hiện.
Sau quá trình này, quá trình Reduce cũng được phân phối đến các máy bằng
việc phân vùng không gian key trung gian (Sinh ra sau quá trình Map) thành R
mảnh sử dụng hàm partitioning (ví dụ như hash(key) mod R). Số mảng R và
partitioning function được chỉ ra bởi người dùng như là các tham số.
Trong thực tế thì M và R thường lớn hơn rất nhiều so với số lượng máy tham
gia vào nhiệm vụ tính toán. Phần tiếp theo sẽ chỉ luồng hoạt động của MapReduce.
Khi chương trình người dùng gọi chức năng MapReduce, tuần tự các hành động
sau sẽ xảy ra:
1. Thư viện MapReduce trong chương trình đầu tiên cắt các file đầu vào thành
M miếng thường có kích thước từ 16 – 64 MB 1 mảnh (có thể điều khiển
bởi người dùng thông qua một tham số tùy chọn). Sau đó nó sẽ khởi động
rất nhiều phiên bản sao chép của chính chương trình đó ở một cluster các
máy.
Sinh viên thực hiện: Đặng Việt Hùng –20061444. Khóa K51 Lớp Công nghệ phần mềm 25

×