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

TIỂU LUẬN MÔN CƠ SƠ DỮ LIỆU NÂNG CAO NoSQL và ứng dụng trên Cloud

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 (144.18 KB, 6 trang )

NoSQL và ứng dụng trên Cloud
Cài đặt thử nghiệm sử dụng Google AppEngine
Giáo viên hướng dẫn TS. Nguyễn Hà Nam
Nhóm thực hiện: 1. Phạm Tuấn Anh
2. Phạm Thị My
1. Giới thiệu
Dữ liệu trên Internet là vô cùng lớn, đặc biệt là sự phát triển rất mạnh của dữ
liệu người dùng (user-driven). Kích thước dữ liệu tăng rất nhanh, đây chính là
thách thức cũng là cơ hội cho việc phát triển hệ thống lưu trữ và phân tích dữ liệu.
Cùng với đó, chúng ta còn phải đối mặt với dữ liệu thưa (sparse) và bán cấu trúc
(semi-structured) [1]
Trước sự phát triển về dữ liệu đó, việc sử dụng các hệ quản trị cơ sở dữ liệu
quan hệ (RDBMS) không còn phù hợp nữa bởi vì RDBMS yêu cầu:
- Dữ liệu có cấu trúc rõ ràng
- Dữ liệu dày đặc (dense) và thống nhất
- Các thuộc tính và quan hệ của dữ liệu phải được định nghĩa trước.
Đây là những yêu cầu rất khó được bảo đảm với các loại dữ liệu thưa và bán
cấu trúc.
Để giải quyết vấn đề kích thước dữ liệu lớn, thưa và bán cấu trúc này đòi hỏi
một hệ quản trị cơ sở dữ liệu mới, và đó chính là lý do NoSQL ra đời. NoSQL gồm
4 loại:
- Lưu trữ dữ liệu hướng cột (column-oriented data stores)
- Cơ sở dữ liệu cặp khóa-giá trị (key/value pair database)
- Cơ sở dữ liệu tài liệu (document database)
- Cơ sở dữ liệu đồ thị (Graph Database)
Trong phần tiếp theo (phần 2) chúng tôi sẽ giới thiệu một số ứng dụng thành
công của NoSQL trên Cloud. Phần 3 sẽ giới thiệu một cơ sở dữ liệu NoSQL cụ
thể đó là Bigtable của Google và ứng dụng của nó. Phần 4 trình bày một cài đặt
thử nghiệm ứng dụng Chat đa người dùng sử dụng Bigtable. Phần 5 là một số kết
luận.
2. Ứng dụng NoSQL


NoSQL đã và đang được ứng dụng rất rộng rãi với nhiều ứng dụng thực tế.
Trong phần này chúng tôi đưa ra khảo sát một số ứng dụng của NoSQL trên
Cloud.
2.1. Document database
- Apache CouchDB: mục tiêu chính của cơ sở dữ liệu này là phải đáp
ứng được nhu cầu dữ liệu lớn và khả năng chịu lỗi.
1
- MongoDB: Là cơ sở dữ liệu mã nguồn mở được viết bằng C++, được
thiết kế để dễ dàng làm việc với cơ sở dữ liệu lớn. Nó thích hợp cho các
ứng dụng web như blogs, wikis, comments, messages,…
2.2. Key/value pair database
- Amazon Dynamo: có rất nhiều dịch vụ của Amazon truy cập cơ sở dữ
liệu sử dụng khóa (key). Các ứng dụng như shopping carts, customer
preferences, session management, sales rank, … Cơ sử dữ liệu Dynamo
cung cấp một cách đơn giản đáp ứng được các yêu cầu cho các ứng
dụng này.
- Project Voldemort: là hệ cơ sở dữ liệu phân tán key/value. Trong hệ
phân tán này dữ liệu được phân chia một cách tự động vào rất nhiều
severs. Hiện nay được sử dụng trong các công ty web 2.0 (web 2.0
companies) như LinkedIn.
- Amazon SimpleDB: là một giao diện các dịch vụ web, cho phép tạo và
lưu trữ nhiều tập dữ liệu, truy vấn dữ liệu dễ dàng và trả về kết quả
nhanh. Nó được viết bằng Erlang của Amazon.com và là cơ sở dữ liệu
phân tán.
- Scalaris: là một cơ sở dữ liệu phân tán key-value, được thiết kế cho các
ứng dụng web 2.0. Đặc tính chính của nó là khả năng trợ giúp các giao
dịch phân tán (distributed transactions).
- Riak: là cơ sở dữ liệu mã nguồn mở, phân tán, chịu lỗi và hướng tài liệu
(document-oriented).
2.3. Column-oriented data stores

Với hệ cơ sở dữ liệu truyền thống thì việc truy vấn tất cả các cột trong bảng
của một hàng nhanh hơn rất nhiều so với việc truy vấn tất cả các hàng trong một
bảng. Hệ cơ sở dữ liệu column-oriented được thiết kế để tối ưu việc truy vấn
nhiều hàng và đọc/ghi hiệu quả.
- Bigtable: Là cơ sở dữ liệu được thiết kế bởi Google, nó chủ yếu tập
trung vào hệ dữ liệu phân tán cho việc quản lý dữ liệu có cấu trúc và đáp
ứng được dữ liệu kích thước lớn.
- FusionTable: được xây dựng bởi Google, FusionTable được thiết kế để
có thể giải quyết được những giới hạn của cơ sở dữ liệu quan hệ truyền
thống. Chẳng hạn như nó làm đơn giản một số phép toán mà là rất khó
cơ sở dữ liệu quan hệ như tích hợp dữ liệu từ nhiều nguồn khác nhau và
khả năng làm việc trên các tập dữ liệu lớn.
- Cassandra: là hệ cơ sở dữ liệu phân tán key/value có cấu trúc khá phổ
biến. Hệ thống này sử dụng kiến trúc của Apache Dynamo và lưu trữ dữ
liệu theo kiểm Bigtable.
- Hadoop Database (HBase): là cơ sở dữ liệu hướng cột (column-
oriented), phân tán, mã nguồn mở.
2.4. Graph database
2
Graph database sử dụng các nút (nodes), các cạnh và các thuộc tính để lưu
trữ thông tin. Có một số graph database rất phổ biến hiện nay như sau:
- VertexDB: là một graph database có hiệu quả cao. Giao diện chính để
kết nối cơ sở dữ liệu này là HTTP vì vậy nó dễ dàng sử dụng trong các
ứng dụng web.
- Allegro Graph: là một cơ sở dữ liệu disk-base RDF. Nó thích hợp cho
các ứng dụng phân tích mạng xã hội, các mô hình ontoloty cho các ứng
dụng ngữ nghĩa.
- Neo4j: là một hệ cơ sở dữ liệu mạnh, cung cấp một mô hình hướng đồ
thị cho việc thể hiện dữ liệu. Việc lưu trữ được quản lý một cách tối ưu
cho các cấu trúc đồ thị để có hiệu quả cao nhất. Nó có thể thực hiện tốt

với các đồ thị lớn hàng tỷ nút, quan hệ và thuộc tính trên một máy tính
đơn lẻ và có thể được chia sẻ trên nhiều máy.
3. Bigtable
Bigtable là một hệ thống lưu trữ phân tán để quản lý dữ liệu có cấu trúc
được thiết kế để mở rộng đến một kích thước rất lớn: petabyte dữ liệu trên hàng
ngàn máy chủ [2] Nhiều dự án lưu trữ dữ liệu của Google trong Bigtable như: lập
chỉ mục web, Google Earth, và Google Finance. Các ứng dụng này đặt nhu cầu
rất khác nhau trên Bigtable, cả về kích thước dữ liệu (từ các URL đến các trang
web đến hình ảnh vệ tinh) và các yêu cầu độ trễ (từ hỗ trợ thời gian xử lý số
lượng lớn dữ liệu). Mặc dù có những nhu cầu đa dạng, Bigtable đã cung cấp giải
pháp linh hoạt, hiệu suất cao cho tất cả các sản phẩm của Google.
3.1. Mô hình dữ liệu
Bigtable là một bản đồ (map) đa chiều, phân tán và thưa. Map được lập chỉ
mục bởi khóa hàng, khóa cột, và dấu thời gian. Mỗi giá trị trong map là một mảng
bytes.
(row:string, column:string, time:int64) → string
Giả sử chúng ta muốn giữ một bản sao của một bộ sưu tập lớn của các
trang web và thông tin liên quan có thể được sử dụng bởi nhiều dự án khác nhau,
gọi đây là bảng cụ thể các Webtable. Webtable, sử dụng URL như là khóa hàng,
3
các khía cạnh khác của các trang web như tên cột, lưu trữ nội dung của các trang
web: cột theo thời gian (hình 1)
 Hàng
Các khóa hàng trong một bảng là chuỗi bất kỳ (hiện tại lên đến 64KB kích
thước, mặc dù 10-100 byte). Mỗi khi đọc hoặc viết dữ liệu dưới 1 khóa hàng duy
nhất là atomic, dễ dàng hơn cho Client về hành vi của hệ thống, đồng thời để cập
nhật cùng một hàng.
Bigtable duy trì dữ liệu trong từ điển bởi khóa hàng. Mỗi hàng được gọi là
một bảng nhỏ, đọc của các dãy hàng ngắn hiệu quả và thường đòi hỏi phải giao
tiếp với một số lượng nhỏ các máy tính. Client có thể khai thác tài sản bằng cách

chọn khóa hàng để truy cập dữ liệu của họ.
Lưu trữ các trang từ cùng một tên miền gần nhau làm cho một số máy chủ
lưu trữ và phân tích miền hiệu quả hơn.
 Column Families
Khóa cột được nhóm lại thành bộ được gọi là column Families (CF), tạo
thành các đơn vị cơ bản của kiểm soát truy cập. Tất cả các dữ liệu được lưu trữ
trong một CF thường là cùng một loại (nén dữ liệu trong cùng một CF với nhau).
Một CF phải được tạo ra trước khi dữ liệu được lưu trữ bởi khóa cột, sau khi CF
đã được tạo ra, bất kỳ khóa cột CF có thể được sử dụng. Số lượng các CF có cột
riêng biệt trong một bảng nhỏ và CF hiếm khi thay đổi trong quá trình hoạt động.
Một bảng có thể có một số lượng cột không giới hạn. Tên khóa cột được
đặt tên bằng cú pháp:
family::qualifier.
family phải được in, qualifier là chuỗi tùy ý.
Ví dụ: Webtable là ngôn ngữ, lưu trữ các ngôn ngữ trong một trang web, sử
dụng chìa khóa duy nhất, và nó lưu trữ ID ngôn ngữ của mỗi trang web. Một CF
hữu ích cho bảng này là anchor, mỗi khóa cột trong CF này đại diện cho một
anchor đơn (hình 1). qualifier là tên của trang web giới thiệu các nội dung di động
là các văn bản liên kết.
Kiểm soát truy cập cả đĩa và bộ nhớ, cho phép chúng ta quản lý một số
dạng khác nhau của ứng dụng: một số có thể thêm cơ sở dữ liệu mới, đọc các cơ
sở dữ liệu và tạo ra nguồn gốc CF, và một số chỉ được phép xem dữ liệu hiện có.
 Timestamps
Mỗi cell trong Bigtable có thể chứa nhiều phiên bản của cùng một dữ liệu,
các phiên bản này được lập chỉ mục bởi thời gian. Các timestamps Bigtable là
những số nguyên 64-bit. Các ứng dụng cần để tránh trùng lặp phải tạo ra dấu thời
4
gian duy nhất, lưu trữ trong thứ tự giảm dần theo thời gian, để các phiên bản gần
nhất có thể được đọc đầu tiên.
Thiết lập cho Bigtable phiên bản cell thu thập “rác” tự động. Ví dụ, chỉ giữ lại

các giá trị đã được viết trong bảy ngày qua.
3.2. Một số ứng dụng của Bigtable
 Google Earth
Google cung cấp cho người dùng truy cập hình ảnh vệ tinh có độ phân giải
cao của bề mặt của thế giới, thông qua giao diện web dựa trên Google Maps
(maps.google.com) và thông qua Google Earth (earth.google.com) tùy chỉnh phần
mềm máy khách. Những sản phẩm này cho phép người dùng thao tác: có thể
xoay, xem, và chú thích hình ảnh vệ tinh ở nhiều cấp độ khác nhau của độ phân
giải. Hệ thống này sử dụng một bảng để xử lý trước dữ liệu, và một bộ khác nhau
của bảng để phục vụ dữ liệu Client.
Trước khi xử lý sử dụng một bảng để lưu trữ hình ảnh nguyên. Trong quá
trình xử lý, hình ảnh được làm sạch và hợp nhất vào các dữ liệu cuối cùng. Bảng
này có khoảng 70 terabyte dữ liệu do đó được phục vụ từ đĩa. Các hình ảnh nén
hiệu quả, nén để Bigtable bị vô hiệu hóa.
Mỗi hàng trong bảng hình ảnh tương ứng với một phân đoạn địa lý duy
nhất. Hàng được đặt tên để đảm bảo rằng các phân đoạn liền kề địa lý được lưu
trữ ở gần nhau. Bảng này chứa một CF để theo dõi các nguồn dữ liệu cho từng
phân khúc. CF này có một số lượng lớn các cột cơ bản cho mỗi dữ liệu hình ảnh
thô.
Hệ thống phục vụ sử dụng một bảng dữ liệu chỉ mục lưu trữ trong GFS.
Bảng này là tương đối nhỏ (~ 500 GB), nhưng nó phải phục vụ hàng chục ngàn
truy vấn mỗi trung tâm dữ liệu mỗi giây với độ trễ thấp. Kết quả là, bảng này được
lưu trữ trên hàng trăm tablet server và CF bộ nhớ trong.
 Personalized Search (www.google.com / psearch)
Personalized Search là lựa chọn một dịch vụ mà người dùng truy vấn hồ sơ
và nhấp chuột trong một loạt các sản phẩm của Google như tìm kiếm web, hình
ảnh, và tin tức. Người dùng có thể duyệt qua lịch sử tìm kiếm của họ để xem xét
lại các truy vấn cũ, họ có thể yêu cầu kết quả tìm kiếm được cá nhân hoá dựa trên
các mẫu lịch sử sử dụng Google.
Personalized Search lưu trữ dữ liệu của người dùng trong Bigtable. Mỗi

người sử dụng có một userid duy nhất. Tất cả các hành động người dùng được
lưu trữ trong một bảng. Một CF riêng biệt được dành riêng cho từng loại hành
động. Mỗi phần tử dữ liệu sử dụng như là dấu thời gian Bigtable, thời gian mà tại
đó các hành động của người dùng tương ứng xảy ra. Personalized Search tạo ra
5
các hồ sơ người dùng bằng cách sử dụng một MapReduce trên Bigtable. Những
hồ sơ người dùng được sử dụng để cá nhân hoá kết quả tìm kiếm trực tiếp.
4. Ứng dụng Chat đa người dùng sử dụng Bigtable
Chúng tôi đã xây dựng một ứng dụng Chat sử dụng cơ sử dữ liệu Bigtable
của google. Ứng dụng bảo đảm các yêu cầu sau:
- Nhiều người dùng
- Yêu cầu đăng nhập sử dụng tài khoản của google.
- Có khả năng nhận ra tài khoản người dùng nếu client đang ở trạng thái
đăng nhập một dịch vụ nào đó của google.
- Chia thành các phòng chat (chat room)
- Lọc và hiển thị 20 chat messages gần nhất
5. Kết luận
Trong báo cáo này chúng tôi đã trình bày khái quát về NoSQL và đã chỉ ra
rằng việc sử dụng NoSQL đã giải quyết được một số trường hợp mà rất khó thực
hiện trong các hệ quản trị cơ sở dữ liệu truyền thống. Chúng tôi cũng đa đưa ra
khảo sát các cơ sở dữ liệu NoSQL hiện có và đi sâu vào nghiên cứu mô hình dữ
liệu và ứng dụng của một loại là Bigtable của Google.
Qua tìm hiểu chúng tôi đã xây dựng thành công một ứng dụng Chat mà hoạt
động tương tự như dịch vụ google talk của google.
Tài liệu tham khảo
[1]. Shashank Tiwari, Professional NoSQL, John Wiley & Sons, Inc.,
Indianapolis, Indiana, 2011
[2]. Fay Chang, Jeffrey Dean, Sanjay Ghemawat, Wilson C, Hsieh, Deborah A,
Wallach Mike Burrows, Tushar Chandra, Andrew Fikes, Robert E. Gruber,
Bigtable: A distributed storage system for structured data, Google, Inc, 2006

6

×