Kỹ thuật mới để xác định vị trí người dùng trên nền tảng Web – W3C Geolocation API, cơ sở dữ liệu với tính mở rộng và phân tán cao – MongoDB, mơ hình giảm thiểu chi phí đường truyền l
Trang 1Egobile – Mạng xã hội định vị dành cho sinh viên Đại học Cơng Nghệ Thơng Tin
Hung Q Tao#1, Vy L Y Nguyen*2, Hieu M Nguyen#3, Viet H Huynh*4, Tuan A Nguyen#5
# Khoa Hệ Thống Thơng Tin, Trường Đại học Cơng Nghệ Thơng Tin – ĐHQG TPHCM
KM 20 Xa Lộ Hà Nội, Phường Linh Trung, Quận Thủ Đức, TP Hồ Chí Minh
1 07520160@sv.uit.edu.vn
2 07520424@sv.uit.edu.vn
3 07520117@sv.uit.edu.vn
4 viethh@uit.edu.vn
5
tuanna@uit.edu.vn
Abstract— Cùng với sự phát triển mạnh mẽ của các ứng dụng
trên nền tảng World Wide Web, mạng xã hội ngày càng phát
triển với ngày càng nhiều tính năng, tiện ích hướng tới phục vụ
ngày càng tốt hơn nhu cầu giải trí và chia sẻ thơng tin của con
người Kỹ thuật mới để xác định vị trí người dùng trên nền tảng
Web – W3C Geolocation API, cơ sở dữ liệu với tính mở rộng và
phân tán cao – MongoDB, mơ hình giảm thiểu chi phí đường
truyền là những vấn đề cần quan tâm khi xây dựng một mạng xã
hội định vị và sẽ được trình bày trong báo cáo này Với tiêu chí
―Everything Goes On Mobile‖, nhĩm tác giả cũng sẽ giới thiệu
một mạng xã hội định vị mang tên Egobile và cách mà Egobile cĩ
thể giúp đỡ các sinh viên mới nhập học tại trường Đại học Cơng
Nghệ Thơng Tin – ĐHQG TPHCM
Keywords— mạng xã hội, thiết bị di động, HTML5, Geolocation
API, NoSQL
Mạng xã hội đã và đang dần dần thay đổi cách thức trao đổi
thơng tin của giới trẻ và đã là một phần của cuộc sống hiện đại
Theo thống kê của Facebook [1] – mạng xã hội lớn nhất hành
tinh với con số chính thức hơn 500 triệu người dùng, 50% số
người dùng truy cập vào Facebook mỗi ngày và điều thú vị là
hơn 250 triệu người thường xuyên truy cập Facebook trên
thiết bị di động của họ Sự phát triển của khoa học cơng nghệ
trong những năm gần đây đã đem lại nhiều lợi ích nhất định:
các thiết bị di động trở nên thơng minh và nhiều chức năng
hơn nhưng chi phí thấp hơn, các kỹ thuật xác định vị trí người
dùng di động cũng được sử dụng nhiều hơn Với hướng tiếp
cận trên các thiết bị di động, nhĩm tác giả giới thiệu ứng dụng
Egobile (Everything Goes On Mobile) – một mạng xã hội sử
dụng kỹ thuật định vị làm nền tảng giúp người sử dụng dễ
dàng chia sẻ thơng tin và liên lạc với nhau Egobile tập trung
vào đối tượng cụ thể là những sinh mới nhập học tại Trường
đại học Cơng Nghệ Thơng – ĐHQG TPHCM, gặp rất nhiều
khĩ khăn trong việc sinh hoạt, di chuyển và kết bạn với những
người khác Egobile được xây dựng trên 3 nền tảng quan
trọng:
để lưu trữ dữ liệu với những điểm mạnh như: khả năng
lưu trữ và truy vấn phân tán, hỗ trợ Spatial Index và khả năng mở rộng cơ sở dữ liệu theo chiều ngang
di động, sử dụng W3C Geolocation API để xác định vị trí của người dùng
chi phí đường truyền – yếu tố quan trọng đối với người dùng sử dụng thiết bị di động
Báo cáo được trình bày theo cấu trúc sau Phần 2 đặc tả một tình huống cụ thể: làm thế nào Egobile cĩ thể giúp đỡ những sinh viên mới vào học tại trường Đại học Cơng Nghệ Thơng Tin Phần 3 và 4 trình bày nền tảng phát triển Egobile Phần 5 đánh giá và thảo luận về đề tài Phần cuối cùng nêu kết luận
và hướng phát triển của đề tài
Trong phần này, nhĩm tác giả sẽ đưa ra một tình huống cụ thể, ứng dụng Egobile sẽ giúp đỡ một sinh viên mới nhập học tại UIT như thế nào
Nam là một sinh viên mới của trường Đại học Cơng Nghệ Thơng Tin Đây cũng là lần đầu tiên Nam rời quê hương đến sinh sống tại một thành phố đơng đúc, hiện đại Cũng giống như hầu hết các sinh viên mới vào trường, Nam cảm thấy ngỡ ngàng, mọi thứ đều mới lạ và dĩ nhiên Nam rất cần được giúp
đỡ
Như thường lệ, ngày đầu tiên tại trường Đại học, các tân sinh viên đều phải nhận mã số đăng ký và hồn tất các thủ tục nhập học Vào cuối buổi, Nam nhận được một tờ giấy hướng dẫn từ trường với tiêu đề “Làm thế nào để tìm được những điều bạn muốn tại trường Đại học?” Nam được dặn dị: ghi nhớ địa chỉ website trong hướng dẫn và hãy bắt đầu khám phá Nam về nhà trọ và ngủ một giấc sau một ngày mệt mỏi Ngày thứ hai, mọi khĩ khăn tan biến Nhớ lại địa chỉ website hơm qua, Nam truy cập đến địa chỉ đĩ bằng chính điện thoại của mình Với vài bước đăng ký, Nam đã cĩ được tài khoản trên website Một bản đồ hiện ra và Nam cĩ thể nhìn thấy được vị trí của mình trên màn hình điện thoại Điều đầu tiên Nam làm là kết nối với tài khoản của trường Đại học Cơng Nghệ Thơng Tin Tài khoản của trường chia sẻ cho Nam thơng tin và vị trí của những nơi Nam cần như: chợ, quán ăn,
Hội nghị Khoa học trẻ Lần 1 - Năm 2011
Trang 2nhà sách, bệnh viện, thư viện, các máy ATM, vị trí các trường
đại học khác xung quanh… và nhiều nơi nữa Cảm thấy thích
thú với tiện ích này, Nam ra ngồi và bắt đầu khám phá
Trên đường đi, Nam tìm thấy nhiều điều thú vị hơn Nam
kết bạn với Lan, người mà Nam đã quen hơm qua, ngay trên
website Nam hẹn Lan đến quán nước Sinh viên, gần Ký túc xá
Nam vẽ lại đường đi từ vị trí hiện tại của Lan đến nơi hẹn và
gửi cho cơ ấy Trên đường đi, Nam cĩ thể biết được Lan đang
đi đến đâu trên bản đồ của mình Họ gặp nhau và trị chuyện
với nhau vui vẻ về những thử thách mới khi vào Đại học và
đặc biệt là về những tiện ích mà Trường đã hỗ trợ trên
website Vẫn cịn nhiều tiện ích khác nữa đang chờ họ khám
phá như: ghi nhận lại địa điểm hiện tại của mình, một vài
dịng bình luận và cĩ thể chia sẻ địa điểm này cho các bạn
khác; lập lịch biểu theo vị trí tại những nơi muốn hệ thống
nhắc nhở… Cuối ngày hơm đĩ, Nam đã kết bạn với Thành,
Đức và Vân – những anh chị sinh viên cũng rất bỡ ngỡ như
Nam và Lan năm ngối
Và kể từ đĩ, ngày qua ngày, Nam càng cĩ được nhiều bạn
mới, biết được nhiều nơi và khám phá ra rất nhiều điều mới lạ
nhưng chỉ với một cách rất đơn giản
Đầu tiên, hãy xem qua mơ hình dưới đây:
User
first_name last_name nick_name email password myLocation locLog dirLog FK2 friends FK4 locations FK3 directions
Location
location name description createDate isPublic categories rating
direction
start finish direction name description createDate isPublic categories rating
Post
content
createDate
rating
tag
FK2 user_id
Comment
content
createDate
rating
FK2 post_id
FK3 user_id
Hình 1 Mơ hình thực thể kế hợp ở mức quan niệm
Hình 1 biểu diễn mối quan hệ giữa các thực thể gồm: user,
location, direction, post và comment ở mức quan niệm Nhĩm
tác giả nhận xét rằng: hầu hết các thực thể kết hợp với nhau
bằng quan hệ nhiều nhiều Mỗi một quan hệ nhiều nhiều sau
khi được mơ hình hĩa xuống tầng vật lý sẽ phát sinh thêm một
bảng Điều này sẽ gây khơng ít khĩ khăn trong quá trình xử lý,
truy vấn, đặc biệt hiệu năng của hệ thống sẽ giảm đi đáng kể
khi cơ sở dữ liệu rất lớn (do kết hợp quá nhiều bảng trong quá
trình truy xuất)
Hướng tiếp cận để giải quyết vấn đề này là mơ hình hĩa lại
các thực thể dưới dạng một tài liệu Trong đĩ, các tài liệu cĩ
mối quan hệ với nhau được đặt cạnh nhau hoặc lồng vào nhau
nhằm tăng hiệu năng và giảm quá trình xử lý NoSQL là cĩ
thể là sự lựa chọn hợp lý
NoSQL là thuật ngữ chung cho các hệ cơ sở dữ liệu khơng
sử dụng mơ hình dữ liệu quan hệ và được giới thiệu lần đầu vào năm 1998 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ưu trữ phân tán[6] Một số đặc điểm của NoSQL:
dụng đến các mối quan hệ giữa các bảng trong cơ sở dữ liệu quan hệ (Relational Database Management System)
sử dụng mơ hình gồm 2 loại khĩa: khĩa chính (primary key) và khĩa phụ (foreign key) để ràng buộc dữ liệu nhằm thể hiện tính nhất quán dữ liệu từ các bảng khác nhau Non-relational là khái niệm khơng sử dụng các ràng buộc dữ liệu cho tính nhất quán dữ liệu
BẢNG 1 đưa ra một vài so sánh giữa Cơ sở dữ liệu quan hệ (RDBMS) và NoSQL [6]
BẢNG 1 BẢNG SO SÁNH GIỮA RDBMS VÀ NOSQL
Tính năng RDBMS NoSQL
Hiệu suất Kém hơn
SQL Relational giữa các table
Rất tốt
Bỏ qua SQL
Bỏ qua các ràng buộc Khả năng
mở rộng theo chiều ngang
Hiệu suất đọc – ghi
Kém do thiết kế đảm bảo
sự vào / ra liên tục của
dữ liệu
Tối ưu về đọc – ghi
dữ liệu
Phần cứng Địi hỏi cao về phần cứng Địi hỏi thấp hơn về
giá trị và tính đồng nhất của phần cứng
MongoDB là một trong những cơ sở dữ liệu NoSQL với 3 đặc điểm phù hợp với Egobile:
Notation)
ràng buộc quá cao
Trong MongoDB, một bảng được lưu dưới dạng một Collection và một dịng trong CSDL quan hệ được gọi là một Document Thiết kế một CSDL trên MongoDB khơng giống như những gì chúng ta thường thực hiện trên CSDL quan hệ
Cĩ thể tham khảo một vài nguyên tắc trong việc thiết kế MongoDB tại [7] BẢNG 2 mơ tả một câu truy vấn SQL sẽ được định nghĩa như thế nào trong MongoDB
BẢNG 2 BẢNG MƠ TẢ CÁC TRUY VẤN SQL VÀ MONGODB [8]
SQL MongoDB
CREATE TABLE USERS (a Number, b Number)
Khơng cần định nghĩa bảng trước
INSERT INTO USERS VALUES(1,1)
db.users.insert({a:1,b:1 })
Hội nghị Khoa học trẻ Lần 1 - Năm 2011
Trang 3SELECT a,b FROM users db.users.find({},
{a:1,b:1}) SELECT * FROM users db.users.find()
SELECT * FROM users
SELECT a,b FROM users
WHERE age=33
db.users.find({age:33}, {a:1,b:1})
SELECT * FROM users
WHERE age=33 ORDER BY
name
db.users.find({age:33}).
sort({name:1})
SELECT * FROM users
WHERE age>33
db.users.find({'age':{$g t:33}})})
SELECT * FROM users
WHERE age<33
db.users.find({'age':{$l t:33}})})
SELECT * FROM users
WHERE name LIKE "%Joe%"
db.users.find({name:/Joe /})
SELECT * FROM users
WHERE name LIKE "Joe%"
db.users.find({name:/^Jo e/})
SELECT * FROM users
WHERE age>33 AND
age<=40
db.users.find({'age':{$g t:33,$lte:40}})})
SELECT * FROM users
ORDER BY name DESC
db.users.find().sort({na me:-1})
CREATE INDEX
myindexname ON
users(name)
db.users.ensureIndex({na me:1})
CREATE INDEX
myindexname ON
users(name,ts DESC)
db.users.ensureIndex({na me:1,ts:-1})
SELECT * FROM users
WHERE a=1 and b='q'
db.users.find({a:1,b:'q' })
SELECT * FROM users
LIMIT 10 SKIP 20
db.users.find().limit(10 ).skip(20)
SELECT * FROM users
WHERE a=1 or b=2
db.users.find({$or:[{a:1 },{b:2}]})
SELECT * FROM users
EXPLAIN SELECT * FROM
users WHERE z=3
db.users.find({z:3}).exp lain()
SELECT
DISTINCTlast_name FROM
users
db.users.distinct('last_
name')
SELECT COUNT(*y)FROM
SELECT COUNT(*y)FROM users where AGE > 30
db.users.find({age: {'$gt': 30}}).count()
SELECT COUNT(AGE) from users
db.users.find({age: {'$exists':
true}}).count()
UPDATE users SET a=1 WHERE b='q'
db.users.update({b:'q'}, {$set:{a:1}}, false, true)
UPDATE users SET a=a+2 WHERE b='q'
db.users.update({b:'q'}, {$inc:{a:2}}, false, true)
DELETE FROM users WHERE z="abc"
db.users.remove({z:'abc' });
Trong Egobile, cơ sở dữ liệu MongoDB đƣợc thiết kế nhƣ BẢNG 3
Các ký hiệu đƣợc sử dụng:
BẢNG 3 BẢNG MƠ TẢ CÁC COLLECTION TRONG CSDL EGOBILE
Collection 1: USER
{ _id,first_name,last_name,nick_name, email, password,
myLocation{lat, lng},groups[{_id, name}], friends[{friend_id,visibility,group[_id]}], locLog[loc_id],
locations[{loc_id,privacy[user_id],
type <public, private, friendonly>,from}], dirLog[dir_id],
directions[{dir_id,privacy[user_id],
type <public, private, friendonly>,from}]
}
Collection 2: LOCATION
{ _id, location{lat, lng}, name, description, createdate,isPublic<true,false>,
categories[value], rating{star, like[user_id], dislike[user_id]}}
Collection 3: DIRECTION
{ _id, start{lat, lng}, finish{lat, lng}, direction[{lat, lng}], name,
description, createdate, ispublic <true, false>, rating{star, like[user_id], dislike[user_id]} }
Hội nghị Khoa học trẻ Lần 1 - Năm 2011
Trang 4Collection 4: POST
{
_id, user_id, content, createDate,
privacy [{friend_id}],
rating {like[{user_id}], dislike[user_id]},
comment [{
user_id,content,createDate,
rating {like[user_id],dislike[user_id]}}],
tag {friend[friend_id],location[location_id]}}
BẢNG 4 BẢNG ĐẶC TẢ COLLECTION USER
Thành phần Ý nghĩa
_id đây là thuộc tính đầu tiên và cần thiết phải cĩ
trong một collection (cĩ thể khơng cần thiết đối
với một sub-collection) Thuộc tính này cĩ giá trị
duy nhất
first name mơ tả tên của người dùng
last name mơ tả họ của người dùng
nick name mơ tả tài khoản mà người dùng đăng nhập
email mơ tả địa chỉ hộp thư của người dùng
password mơ tả mật khẩu đăng nhập hệ thống của người
dùng
myLocation mơ tả vị trí hiện tại của người dùng Đây là một ví
dụ của document với 2 giá trị là: lat (latitude – vĩ
độ) và lng (longitude – kinh độ) Thuộc tính này
là một thuộc tính khơng gian trong MongoDB
groups mơ tả một người dùng cĩ thể cĩ nhiều nhĩm bạn,
mỗi một nhĩm do người dùng tạo ra cĩ một thuộc
tính _id là định danh phân biệt và một thuộc tính;
name lưu tên nhĩm Đây là một ví dụ về
sub-collection
friends mơ tả một người dùng cĩ thể cĩ nhiều bạn, mỗi
bạn cĩ một thuộc tính: friend_id tham chiếu đến
thuộc tính _id trong collection USER; visibility
dùng để ẩn hiện bài post của người dùng này;
group mơ tả một người bạn cĩ thể ở nhiều nhĩm
khác nhau
locLog dùng để lưu log vị trí được chia sẻ đang hiển thị
trên bản đồ của người dùng Thuộc tính này được
dùng để tối ưu hĩa quá trình xử lý ở client
locations là một sub-collection mơ tả một người dùng cĩ
thể cĩ nhiều vị trí được chia sẻ trên bản đồ, mỗi
một vị trí gồm cĩ: loc_id tham chiếu đến thuộc
tính _id trong collection Location; privacy là một
sub-collection, mơ tả một vị trí cĩ thể được chia
sẻ cho nhiều người bạn; type là một thuộc tính lựa
chọn với ba giá trị: public, private và only friend,
đây cũng là ba hình thức chia sẻ hiện tại của ứng
dụng này; from lưu _id của người tạo ra địa điểm
này
dirLog and
directions
tương tự với locLog và locations nhưng sử dụng
cho đường đi được chia sẻ
Các colllection khác được mơ tả tương tự
Để so sánh chi phí truy vấn giữa CSDL quan hệ và
MongoDB, nhĩm tác giả giả định một bài tốn như sau:
“Giả định rằng trong CSDL cĩ 1.000 user, mỗi user cĩ 200
vị trí khác nhau được chia sẻ Yêu cầu lấy tất cả vị trí được
chia sẻ của user A (quan hệ giữa user và location là quan hệ
nhiều nhiều)”
Với CSDL quan hệ, ta sẽ cĩ các bảng: user(1.000), location(200.000) và user_location (>=200.000), trong đĩ: bảng user chứa 1.000 dịng, bảng location chứa 200.000 dịng, bảng user_location thể hiện mối quan hệ giữa user và location với hơn 200.000 dịng Chi phí cho việc truy vấn chọn ra tất cả các vị trí được chia sẻ của user A bằng với số thể hiện của bảng user_location, tương đương với >= 200.000 (đơn vị thời gian)
Với MongoDB, ta sẽ cĩ các collection: user và location như BẢNG 3, trong đĩ: collection USER chứa 1.000 dịng, collection LOCATION chứa 200.000 dịng Mối quan hệ giữa USER và LOCATION đã được nhúng vào trong collection USER Vì vậy, chi phí cho việc truy vấn chọn ra tất cả vị trí được chia sẻ của user A bằng với số thể hiện của collection USER, tương đương với 1.000 (đơn vị thời gian)
Rõ ràng, trong trường hợp này, truy vấn trên MongoDB tối
ưu hơn CSDL quan hệ ít nhất 200 lần
Kết luận, Việc mơ hình hĩa các đối tượng hay các thực thể dưới dạng một tài liệu như những gì đã trình bày trong MongDB sẽ giúp cho việc truy xuất nhanh hơn, hiệu quả hơn
và phù hợp hơn với đề tài mạng xã hội
IV KỸ THUẬT ĐỊNH VỊ VÀ MƠ HÌNH TỐI ƯU
A W3C Geolocation API
Việc xác định vị trí của người dùng sử dụng thiết bị di động
cĩ nhiều cách khác nhau, đa phần phụ thuộc vào nền tảng của thiết bị, trình duyệt, hệ điều hành mà thiết bị sử dụng Theo
Maximiliano Firtman [3], các kỹ thuật định vị cĩ thể được
chia thành 2 loại chính: các kỹ thuật định vị bên trong (Indoor
Location) và các kỹ thuật định vị bên ngồi (Outdoor Location) Mỗi một kỹ thuật lại cĩ nhiều phương pháp khác
nhau tuy nhiên, những phương pháp đơn lẻ này khơng thể áp dụng trên nền tảng phổ biến như Web Giải pháp cho vấn đề này đến từ W3C – World Wide Web Consortium W3C Geolocation API [4] được xem là một giải pháp tổng thể được W3C đang xây dựng và hồn thiện API này cung cấp một kịch bản JavaScript để cĩ thể lấy được thơng tin vị trí của người sử dụng khơng chỉ bằng một mà kết hợp nhiều phương
pháp khác nhau như: xác định vị trí theo địa chỉ IP (IP
Address), kết nối mạng khơng dây (Wireless Network Connection) và thậm chí thơng tin từ phần cứng GPS tích hợp
sẵn trong các thiết bị di động Tính đến thời điểm này, W3C Geolocation API đang trong giai đoạn hồn thiện cùng với HTML5 Mặc dù vẫn cịn là bản nháp tuy nhiên, kỹ thuật này đang rất được cộng đồng chú ý và đã cĩ một vài ứng dụng cụ
tham khảo tại [5] Sau đây là một ví dụ đơn giản để cĩ thể lấy được vị trí của người sử dụng thơng qua W3C Geolocation API:
navigator.geolocation.getCurrentPosition( function(position){
var location =
[position.address.city, position.address.region, position.address.country]; location = location.join(', ');
Hội nghị Khoa học trẻ Lần 1 - Năm 2011
Trang 5createMap(position.latitude,
position.longitude, location);
}, function() {
document.getElementById(‘canvas’).inner
HTML = "Khơng thể lấy được vị trí";
});
Ví dụ trên mơ tả cách thức đơn giản nhất để cĩ được vị trí
của người dùng bao gồm: latitude, longitude (từ thiết bị GPS),
city, region, country… (từ IP Address và các phương pháp
khác) Đối tượng navigator là đối tượng cĩ sẵn trong
Geolocation API Hàm createMap là hàm JavaScript do người
dùng định nghĩa và dùng cho việc tạo bản đồ
Tĩm lại, ứng dụng W3C Geolocation API vào Egobile đáp
ứng được 3 yếu tố:
trên từng nền tảng khác nhau như: Android, iOS, Nokia,
BlackBerry, Palm…
gũi nhất – nền tảng web
B Mơ hình truy vấn tối ưu của Egobile
Mục tiêu của mơ hình truy vấn tối ưu, gọi tắt OPM
(Optimize Processing Model) là giảm thiểu tối đa chi phí
đường truyền nhưng ứng dụng vẫn giữ được tính tức thời
Nghĩa là, người dùng cĩ thể thấy ngay những thay đổi trên
bản đồ mà khơng cần làm mới lại tồn bộ trang
Trước tiên, cần phải xác định rằng: cĩ ba nhĩm đối tượng
sẽ được hiển thị trên bản đồ là vị trí của bạn bè, địa điểm được
chia sẻ và đường đi được chia sẻ Cả ba nhĩm đối tượng này
đều cùng chung một vấn đề sau:
Giả định rằng: người sử dụng đang ở vị trí Z(lat, lng), tọa
độ gĩc trên bên trái của màn hình đang hiển thị là A(lat, lng),
tọa độ gĩc dưới bên phải của màn hình là B(lat, lng),
Boundary là vùng giới hạn bởi AB Hiện tại, bản đồ hiện ra:
50 bạn bè cĩ mặt quanh đây, 50 địa điểm được chia sẻ và 50
đường đi được chia sẻ Mỗi lần người sử dụng di chuyển bản
đồ đến một vị trí mới cách vị trí cũ ko xa, hàm thực thi tại
client sẽ phải gửi yêu cầu đến server để lấy lại danh sách các
đối tượng cĩ trong Boundary mới, sau đĩ duyệt hết danh sách
các đối tượng cũ để xĩa và thêm danh sách các đối tượng mới
vào bản đồ Điều này sẽ làm giảm hiệu năng của hệ thống:
thời gian đáp ứng, tính tương tác
Hình 2 đề xuất một mơ hình tối ưu kết quả truy vấn nhằm
giải quyết vấn đề nêu trên Mơ hình tối ưu bắt đầu bằng việc
lấy tất cả những đối tượng hiện cĩ trong Boundary, sau đĩ so
sánh với log được lưu trên server Kết quả của hàm so sánh là
tạo ra ba mảng đối tượng: Equal (chứa danh sách các đối
tượng mới tồn tại trong log), Add (chứa danh sách các đối
tượng mới khơng tồn tại trong log), Remove (chứa danh sách
các đối tượng trong log khơng tồn tại trong danh sách mới)
Bước tiếp theo là lưu các đối tượng mới vào log để cập nhật
lại trạng thái cho lần truy vấn tiếp theo Ba mảng đối tượng sẽ
được truyền xuống client để thực hiện xĩa đối tượng cũ, và
thêm đối tượng mới (nếu cĩ)
Hình 3 mơ tả luồng xử lý từ khi một yêu cầu được gửi từ client cho đến khi nhận được kết quả trả về từ server OPM được thể hiện ở ơ xử lý thứ 3 của mơ hình trên
Start
End
Get all available objects in map boudary
Compare with log in Server
Is There no different found?
Create output array Equal Array = |New Objects| Ç |Log|
Add Array = |New Objects| \ |Log|
Remove Array = |Log| \ |New Objects|
Create empty array
Get output array and Save New Log
Hình 2 Mơ hình tối ưu kết quả truy vấn
OPM được tích hợp vào ứng dụng Egobile như Hình 3
User Interface
1 Javascript Conroller
ajax process
process
forward forward
display
3 Optimizing
1.1 Javascript UI Process
1.2 Javascript Server Process
forward forward
display
2.1 Controller
process MongoDB
Server
connect 2.2
Model Invalid request
Hình 3 Mơ hình xử lý tổng quan của Egobile
Để cĩ thể đánh giá được mơ hình OPM hiệu quả như thế nào thì cần một tiêu chuẩn cụ thể
ISO 9126 là tiêu chuẩn quốc tế đánh giá phần mềm [9]
Tiêu chuẩn này được giám sát bởi dự án SQuaRE, ISO 25000:2005 dựa trên các khái niệm chung tương đương nhau Tiêu chuẩn này được phân chia thành 4 phần tuân theo một cách nghiêm ngặt các tiêu chí sau: mẫu chất lượng, hệ đo lường bên ngồi và bên trong, chất lượng khi sử dụng hệ đo lường này Mẫu chất lượng được thiết lập ở phần đầu của tiêu chuẩn, mơ hình này được đặt tên là ISO 9126-1, phân loại chất lượng phần mềm theo một chuỗi cĩ tổ chức các đặc trưng
và đặc trưng phụ như Hình 4
Hội nghị Khoa học trẻ Lần 1 - Năm 2011
Trang 6Hình 4 Mơ hình chất lượng trong và ngồi của chuẩn ISO 9126-1
Với mơ hình này, để cĩ thể đánh giá mơ hình OPM, nhĩm
tác giả sẽ tập trung vào 2 tiêu chí tính năng và hiệu quả, trong
đĩ, chia thành 3 tiêu chí nhỏ như sau:
Tính tức thời: một người vừa được bạn bè chia sẻ 1 địa
điểm gần họ thì người đĩ cĩ thấy địa điểm đĩ trên bản
đồ ngay lập tức khơng? 100 người chia sẻ địa điểm
cùng 1 lúc thì như thế nào?
Tính ổn định: xung quanh vị trí hiện tại của người dùng
cĩ 200 địa điểm được chia sẻ thì hệ thống cĩ sự cố gì
khơng?
Tính hiệu quả: chi phí đường truyền khi sử dụng hệ
thống ra sao?
BẢNG 5 BẢNG KẾT QUẢ ĐÁNH GIÁ THEO CÁC TIÊU CHÍ
Tiêu chí Nội dung
thực nghiệm
Kết quả
Tính
tức thời
Kiểm tra khả năng đáp
ứng của hệ thống ngay
khi một người vừa
được bạn bè chia sẻ 1
địa điểm gần với vị trí
hiện tại của người
dùng
Địa điểm chia sẻ được hiển thị ngay lập tức trên bản đồ với độ trễ là (1s – 2s)
Trường hợp 100 người
chia sẻ địa điểm cùng
1 lúc thì như thế nào?
Hệ thống vẫn đáp ứng tốt, hiển thị vị trí trên bản đồ với độ trễ (1s – 2s)
Tính
ổn định
Trường hợp xung
quanh vị trí hiện tại
của người dùng cĩ 200
địa điểm được chia sẻ
thì hệ thống cĩ đáp
ứng được khơng?
Người dùng vẫn thao tác bình thường
Tính
hiệu quả
Đánh giá chi phí
đường truyền khi sử
dụng hệ thống
Phương pháp: dùng chương trình Bandwidth Monitor
để đánh giá đường truyền khi sử dụng hệ thống
Độ chính xác: tương đối
(xem kết quả bên dưới)
Kết quả đánh giá tính hiệu quả của hệ thống khi sử dụng
chương trình Bandwidth Monitor:
Ứng dụng Egobile được triển khai trên nền PHP, HTML5
và sử dụng máy chủ Web Apache Trong giới hạn báo cáo này, nhĩm tác giả đã chạy thử ứng dụng trên các thiết bị: iPod Touch, iPhone, Android 2.2 và máy tính để bàn Một điều thú
vị là W3C Geolocation API vẫn cĩ thể lấy được thơng tin vị trí người dùng một cách tương đối mặc dù khơng cĩ thiết bị GPS hỗ trợ (chỉ cần cĩ kết nối Wifi)
Đề tài Mạng xã hội định vị – Egobile với hướng tiếp cận từ các thiết bị di động vẫn cịn nhiều vấn đề cần nghiên cứu: i) giao diện người dùng phải phù hợp với phần lớn các thiết bị di động, ii) bảo mật thơng tin vị trí người dùng đồng thời vẫn đảm bảo các dịch vụ trong ngữ cảnh của hệ thống, iii) khuyến khích những người sống biệt lập sử dụng các giá trị của mạng
xã hội mang lại và mang nĩ vào cuộc sống thật, iv) ứng dụng mạng xã hội cho vào mơi trường học, và v) hiểu rõ các khuynh hướng xã hội bằng cách theo dõi hoạt động của người dùng
Đầu tiên, giao diện người dùng phải phù hợp với phần lớn các thiết bị di động Các thiết bị di động cĩ màn hình nhỏ hơn, tốc độ hạn chế so với máy tính và lượng pin cũng hạn chế Một chiếc điện thoại di động cũng khơng phải là một máy tính thu nhỏ Do đĩ trong Egobile, để tăng tốc độ tính tốn và truyền dữ liệu nhanh nhất cho máy khách (client), chúng tơi đưa hầu hết các xử lý nặng về phía máy chủ (server)
Thứ hai, việc các thơng tin người dùng (như vị trí) bị lưu giữ bởi các nhà cung cấp dịch vụ đang làm gia tăng phản ứng của cộng đồng về việc xâm phạm quyền riêng tư [10] Tuy nhiên, trong ngữ cảnh của đề tài, nhĩm tác giả chưa đề cập đến việc giải quyết vấn đề này Hướng giải quyết được đưa ra
là chuyển những thơng tin quan trọng của người dùng về client bằng cách sử dụng HTML5 Web Storage
Một khía cạnh thú vị khác là về thực trạng sống biệt lập [11] Trong cuộc sống, chúng ta dễ dàng bắt gặp các trường hợp giới trẻ thành thị chỉ tập trung vào chiếc điện thoại di động mà khơng quan tâm đến những điều xảy ra xung quanh
Xã hội số trực tuyến dường như hấp dẫn với họ hơn là cuộc sống thực tại, do đĩ họ sẽ hồn tồn tự động cơ lập bản thân với cuộc sống Một mạng xã hội dành cho thiết bị di động sẽ giúp họ tiến dần vào cuộc sống thực
Tĩm lại, những vấn đề nêu trên được tổng hợp lại thành sáu vấn đề cần phải nghiên cứu:
trên thiết bị di động cĩ thể giúp đỡ những người khác?
với nhiều loại thiết bị và nhiều nền tảng khác nhau, phù hợp với nhiều người khác nhau?
trong mạng xã hội định vị trong khi đây là thơng tin quan trọng nhất của ứng dụng?
dùng thốt khỏi trạng thái cơ lập như thế nào?
học tập trong cộng đồng như thế nào?
cĩ thể phục vụ người dùng tốt hơn?
Hội nghị Khoa học trẻ Lần 1 - Năm 2011
Trang 7Danh sách một số màn hình trong ứng dụng Egobile:
(c) Màn hình chia sẻ địa điểm (d)Màn hình chia sẻ đường đi
Hình 4 Danh sách các màn hình ví dụ của Egobile
Tĩm lại, trong báo cáo này, nhĩm tác giả đã xây dựng một mạng xã hội định vị mang tên Egobile, sử dụng các cơng nghệ mới như: kỹ thuật xác định vị trí với W3C Geolocation API, cơ sở dữ liệu dễ mở rộng và phân tán với MongoDB – NoSQL Egobile giải quyết được những vấn đề gây khĩ khăn cho những sinh viên mới nhập học tại UIT
Về mặt ý nghĩa, ứng dụng Egobile cịn cĩ thể giúp cho các bạn học sinh trong mùa thi Đại học tìm được địa điểm thi, nhà trọ một cách nhanh chĩng và tiết kiệm nhất Các thơng tin chia sẻ trên hệ thống được cập nhật từ các trường tổ chức tuyển sinh nên cĩ độ tin cậy cao
Trong giai đoạn tiếp theo, nhĩm tác giả sẽ tiếp tục hồn thiện các chức năng của Egobile dựa trên nền tảng đã phát triển Nhĩm tác giả cũng sẽ tập trung vào vấn đề bảo mật thơng tin vị trí người dùng với HTML5 Web Storage và Offline Web Apps
ACKNOWLEDGMENT
Nhĩm tác giả muốn bày tỏ lịng biết lơn sâu sắc đến các Thầy Cơ trường Đại học Cơng Nghệ Thơng Tin – ĐHQG TPHCM, đã tạo điều kiện cho chúng tơi hồn thành đề tài này
REFERENCES [1] Facebook statistics, facebook.com
URL: http://www.facebook.com/press/info.php?statistics [2] B Schilit, N Adams, R Want, Context-Aware Computing
Applications, IEEE Workshop on Mobile Computing Systems and
Applications, 1994, Santa Cruz, CA, US
[3] Maximiliano Firtman (July 2010), Programming the Mobile Web,
O’Reilly Media, Inc, 1005 Gravenstein Highway Norht, Sebastopol,
CA 95472
[4] Geolocation API Specification, w3c.org,
URL: http://dev.w3.org/geo/api/spec-source.html [5] Google Maps with My Location (Beta), google.com
URL: http://www.google.com/mobile/gmm/mylocation/index.html [6] NoSQL phân tán, khơng ràng buộc, pcworld.com.vn,
URL: http://www.pcworld.com.vn/articles/cong-nghe/cong-nghe/2011/03/1222905/nosql-phan-tan-khong-rang-buoc/
[7] MongoDB Schema Design, mongodb.org,
URL: http://www.mongodb.org/display/DOCS/Schema+Design [8] SQL To MongoDB Mapping Chart, mongodb.org
URL: http://www.mongodb.org/display/DOCS/SQL+to+Mongo+Mappi ng+Chart
[9] ISO 9126, http://vi.wikipedikia.org/wiki/ISO_9126
[10] T Hashem, L Kulik, Don’t trust anyone : Privacy protection for
location-based services, Pervasive and Mobile Computing In Press,
Corrected Proof (2010) doi: 10.1016/j.pmcj.2010.04.006 doi:doi: 10.1016/j.pmcj 2010.04.006
[11] D J Cook, J C Augusto, V R Jakkula, Review: Ambient
intelligence: Technologies, applications, and opportunities, Pervasive
and Mobile Computing 5 (4) (2009) 277 – 298 doi:DOI: 10.1016/ j.pmcj.2009.04.001
Hội nghị Khoa học trẻ Lần 1 - Năm 2011