Tải bản đầy đủ (.docx) (87 trang)

PHÂN TÍCH SOCIAL NETWORK DÙNG CÔNG CỤ TRỰC QUAN GEPHI

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.79 MB, 87 trang )

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
CHƯƠNG TRÌNH ĐÀO TẠO THẠC SĨ CNTT
BÁO CÁO CHUYÊN ĐỀ : CƠ SỞ DỮ LIỆU NÂNG CAO
 GIỚI THIỆU NOSQL VỚI MONGODB
 PHÂN TÍCH SOCIAL NETWORK DÙNG CÔNG CỤ TRỰC
QUAN GEPHI
 GIẢI QUYẾT BÀI TOÁN SCALING DÙNG NOSQL CỦA
CÁC SOCIAL NETWORK NỔI TIẾNG HIỆN NAY NHƯ
FACEBOOK, FOURSQUARE, TWITTER

ĐẠI HỌC QUỐC GIA TPHCM CHƯƠNG TRÌNH THẠC SĨ CNTT
HV : VŨ MINH THÀNH
MS : CH1101134
Lớp : Cao học khóa 6
ĐT : 0913887997
Email :

GVHD : GS-TS ĐỖ PHÚC
TPHCM, 8/2012
Lời Mở Đầu
Có thể nói cơ sở dữ liệu (Database) đóng vai trò thiết yếu cho mọi ứng dụng, trong đó CSDL
Quan Hệ (RDBMS) đóng vai trò chính yếu nhất hiện nay. Tuy nhiên, RDBMS là hòn đá tảng đã
tồn tại và được ứng dụng đến giờ đã mấy chục năm và đã trở nên cũ kỹ, cho đến những năm gần
đây khi phong trào “NoSQL” nở rộ thì mô hình CSDL Quan Hệ tỏ ra không còn phù hợp khi các
ứng dụng web ngày nay ngày càng trở nên phức tạp, truy xuất khối lượng dữ liệu lớn (big data),
và đòi hỏi hiệu suất cao đối với các ứng dụng thời gian thực thì CSDL Quan Hệ tỏ ra chậm chạp
và rất khó scaling (mở rộng quy mô ứng dụng) (Ví dụ như các mạng xã hội Facebook, Instagram,
Foursquare…).
NoSQL cũng là hướng đề tài mà em yêu thích và muốn nghiên cứu sâu, vì thế trong khuôn khổ
bài thu hoạch này em muốn trình bày những hiểu biết của em về NoSQL, và Document DB với
MongoDB. Em cũng demo ứng dụng sử dụng MongoDB có thể chạy trên các nền tảng khác nhau


từ .NET, Java, PHP, và Ruby.
2
ĐẠI HỌC QUỐC GIA TPHCM CHƯƠNG TRÌNH THẠC SĨ CNTT
Phần tiếp theo là mạng xã hội, em xin giới thiệu một công cụ phân tích mạng xã hội thời gian
thực vô cùng trực quan và đầy đủ tính năng nhưng open source là Gephi. Mọi người đã quen với
NodeXL khi phân tích mạng xã hội, nhưng NodeXL còn thua xa Gephi về mọi mặt và không
mạnh bằng Gephi, Gephi cho phép ta tương tác graph ở chế độ 3D real-time với nhiều khả năng
tùy biến. Có thể nói Gephi là công cụ mạnh nhất hiện nay dành cho Social Network Analysis
(SNA). Trong bài thu hoạch này, em có demo việc phân tích mạng xã hội Facebook sử dụng
Gephi.
Một phần cũng khá thời sự hiện nay là giải quyết bài toán Scaling (Scalibility) sử dụng NoSQL
và Distributed database đối với các mạng xã hội nổi tiếng hiện nay như Facebook, Linkedin,
Foursquare, Twitter, Phần này em muốn trình bày cách mà các mạng xã hội trên sử dụng các
kỹ thuật như thế nào để improve performance và scaling cho ứng dụng của họ. Họ đã áp dụng
CSDL NoSQL và Distributed DB như thế nào và kết quả đạt được ra sao.
Có thể nói NoSQL là đề tài thời sự rất nóng bỏng đối với giới công nghệ thông tin hiện nay, và
nó vẫn còn đang phát triển, hứa hẹn sẽ có những đột phá mới trong tương lai.
Qua đây, em cũng xin gởi lời cám ơn chân thành đến GS-TS Đỗ Phúc, người đã tận tâm truyền
đạt những kiến thức nền tảng cơ bản cho chúng em về môn học “Cơ sở dữ liệu nâng cao”.
Xin chân thành cám ơn !
Vũ Minh Thành – 8/2012
3
ĐẠI HỌC QUỐC GIA TPHCM CHƯƠNG TRÌNH THẠC SĨ CNTT
NỘI DUNG
4
ĐẠI HỌC QUỐC GIA TPHCM CHƯƠNG TRÌNH THẠC SĨ CNTT
1 PHẦN 1 : GIỚI THIỆU NOSQL VÀ DOCUMENT DATABASE
1.1 GIỚI THIỆU VỀ NOSQL
1.1.1 Khái niệm
NoSQL (Not Only SQL) là hệ cơ sở dữ liệu phi quan hệ, khác biệt với CSDL quan hệ truyền

thống ở một vài điểm quan trọng.
NoSQL được thiết kế dành cho mục đích lưu trữ dữ liệu phân tán nơi mà việc lưu trữ dữ liệu
lớn được đòi hỏi. Ví dụ Google hay Facebook mỗi ngày thu thập cả Terabit dữ liệu người
dùng.
Các loại CSDL NoSQL không cần phải định nghĩa schema trước đó, không dùng những phép
kết (join) và cho phép ta có thể mở rộng theo chiều ngang (scale horizontally).
Rất nhiều công ty lớn hiện nay đã sử dụng NoSQL như : Google, Facebook, Mozilla, Adobe,
Foursquare, Linkedin, Digg, Zynga, Vermont, Twitter, …
1.1.2 Lịch sử ra đời của NoSQL
Thuật ngữ NoSQL lần đầu được dùng bởi Carlo Strozzi vào 1998, ông sử dụng tên này để đặt
tên cho 1 CSDL nhỏ mã nguồn mở của ông mà không có giao diện SQL.
Vào đầu năm 2009, khi last.fm muốn tổ chức một sự kiện về các hệ CSDL phân tán mã nguồn
mở, Eric Evans, nhân viên của công ty Rackspace đã sử dụng lại từ này để nói đến những
CSDL phi quan hệ, phân tán và không tuân theo ACID (Atomicity, Consistency, Isolation,
Durability) – 4 thành phần quan trọng của CSDL quan hệ.
Vào cùng năm đó, hội nghị NoSQL được tổ chức tại Atlanta, USA, nó đã được đem ra bàn
thảo và tranh luận rất nhiều.
Và cho tới bây giờ, việc thảo luận và ứng dụng NoSQL đang trên đà phát triển và chúng ta
thấy được sự tăng trưởng một cách mạnh mẽ.
1.1.3 Các tính chất quan trọng của NoSQL
• Schema-free : NoSQL không cần phải định nghĩa schema db về defind tables, relationship,
contrainst, … như CSDLQH. Trong NoSQL, collection là 1 tập các documents, các documents
mô tả cho các row và collection biểu diễn tương ứng cho 1 bảng trong CSDLQH.
Ví dụ {"colour" : "red"} đây là 2 documents có thể lưu trong 1 collection
{"salary" : 100.00}
Điều đặc biệt ở trên là 2 documents trên không có những thành phần dữ liệu giống
nhau. Sự linh hoạt này cho phép tính năng schema-free vào NoSQL
• Horizontally scalable : đây chính là khả năng scale out (mở rộng thêm nodes) cho hệ thống.
Trong NoSQL, việc lưu trữ data sẽ nhanh hơn nhiều vì tận dụng tính năng scaling out, cho
phép bổ sung thêm nhiều node vào hệ thống và phân bố tải trên những node đó.

1.1.4 Một số phân loại CSDL NoSQL
Hiện nay số lượng DB kiểu NoSQL đã lên tới hàng trăm, đa số là mã nguồn mở, nhưng nó
được phân loại theo một loại sau
5
ĐẠI HỌC QUỐC GIA TPHCM CHƯƠNG TRÌNH THẠC SĨ CNTT
• Document-oriented : data được lưu như những tài liệu documents.
Ví dụ : { FirstName="Arun", Address="St. Xavier's Road",
Spouse=[{Name:"Kiran"}], Children=[{Name:"Rihit", Age:8}] }
Một số db dạng này : CouchDB, MongoDB, Jackrabbit, OrientDB, SimpleDB, Terrastore, …
• XML database : data được lưu dạng XML. Điển hình : BaseX, eXist, MarkLogic Server, …
• Graph databases : data được lưu thành collection của những nodes. Nodes được kết nối bởi
cạnh (edges). Một số DB như : AllegroGraph, DEX, Neo4j, FlockDB, Sones GraphDB…
• Key-Value store : dạng này cho phép ta lưu data không cần schema, khóa key ở đây có thể là
string, hashes, lists, sets, sorted sets và Value được lưu theo những key này.
Một số loại : Cassandra, Riak, Redis, memcached, BigTable, …
6
ĐẠI HỌC QUỐC GIA TPHCM CHƯƠNG TRÌNH THẠC SĨ CNTT
1.2 GIỚI THIỆU CSDL TÀI LIỆU (DOCUMENT-ORIENTED DB)
Trong phần này ta xét một loại CSDL NoSQL là Document-oriented DB (điển hình là MongoDB).
Ta đã định nghĩa Document DB ở trên, ở đây ta nói thêm về một số khía cạnh của document.
- Mã hóa (Encodings) : trong Document DB được sử dụng ở dạng XML, YAML, JSON và BSON
(Binary JSON), cũng như dạng PDF và MS Office documents.
- Khóa (Keys) : các documents trong db được xác định qua khóa duy nhất, thường là dạng string.
Trong vài trường hợp có thể là URI hay Path. Dù dạng nào, ta đều có thể dùng key này để rút
trích document từ db. DB có thể sử dụng index cho key đó giúp truy xuất document được
nhanh giống trong CSDLQH.
- Rút trích dữ liệu (Retrieval) : một trong những điểm hay của Document DB là ngoài việc dùng
key để tìm ra document,db còn cung cấp API cho phép ta truy vấn document dựa theo nội dung
nó chứa trong đó.
- Cách tổ chức dữ liệu (Organization) : có vài cách như Collections, Tags, Metadata ẩn, phân cấp

giống thư mục
7
ĐẠI HỌC QUỐC GIA TPHCM CHƯƠNG TRÌNH THẠC SĨ CNTT
2 PHẦN 2 : GIỚI THIỆU MONGODB VÀ DEMO CHƯƠNG TRÌNH
2.1 GIỚI THIỆU VỀ MONGODB
MongoDB là Document DB được thiết kế linh hoạt, mở rộng, và tốc độ nhanh, thậm chí với tải lớn. Nó
được xây dựng với mục đích đem lại khả năng sẵn sàng cao (high availability), hỗ trợ rich và dynamic
schema, và cho phép ta dễ dàng phân tán dữ liệu lên nhiều server khác nhau.
MongoDB được viết bởi công ty 10gen (www.10gen.com) bằng C++ nên tốc độ nhanh và phân phối dưới
dạng mã nguồn mở. Foursquare là một trong những khách hàng nổi tiếng đang sử dụng MongoDB cho
production của mình.
2.2 CÀI ĐẶT VÀ SỬ DỤNG MONGODB
MongoDB có thể chạy trên nhiều hệ điều hành khác nhau, cài đặt cũng rất dễ.
Xem link hướng dẫn cài đặt dưới đây
/>hoặc file hướng dẫn trong CD source code tại
\Installers\MongoDB\HuongDanCaiDatMongoDB.docx
Source để cài MongoDB trong đường dẫn
\Installers\MongoDB\mongodb-win32-x86_64-2.0.7.zip
2.3 CÁC ĐIỂM MẠNH CỦA MONGODB
 Document-oriented :
- Document s (objects) được map dễ dàng vào các kiểu dữ liệu các ngôn ngữ lập trình
- Tài liệu con (Embedded documents) và arrays làm giảm nhu cầu không cần phải joins các bảng
- Schemaless : không cần định nghĩa schema, nên dễ dàng thay đổi cấu trúc schema
- Không kết bảng (joins) và không có giao tác đa tài liệu (multi-document transactions) đem lại hiệu
suất cao và dễ scaling.
 Hiệu năng cao (High performance):
- Không kết bảng và embedding giúp đọc và ghi nhanh
- Indexing bao gồm cả indexing keys của các tài liệu con và mảng bên trong.
- Cho phép tùy chọn streaming writes
 Tính sẵn sàng cao (High availability)

8
ĐẠI HỌC QUỐC GIA TPHCM CHƯƠNG TRÌNH THẠC SĨ CNTT
- Cho phép replicated servers với khả năng tự động kháng lỗi master (master failover)
 Dễ dàng mở rộng (Easy scalability)
- Tự động chia mảnh (automatic sharding) data trải ra trên các server, read và write phân tán trên
các mảnh (shards)
- Eventually-consistent reads
Mô hình hoạt động ở chế độ phân tán dữ liệu của Mongo
2.4 CÁC TÍNH NĂNG CHÍNH CỦA MONGODB
 Document-based queries : cho phép truy vấn dữ liệu linh hoạt với JSON/Javascript
 Map/Reduce : tính năng này giống các hàm gom nhóm và xử lý dữ liệu trong SQL
- Queries chạy song song trên các mảnh (shards)
Có thể nói khái niệm Map/Reduce trong NoSQL là phức tạp và khó hiểu, hình minh họa sau đây giúp
ta dễ dàng hơn khi so sánh các hàm gom nhóm trong Mysql tương đương với Map/Reduce trong
Mongo như thế nào
9
ĐẠI HỌC QUỐC GIA TPHCM CHƯƠNG TRÌNH THẠC SĨ CNTT
(So sánh Map/Reduce của Mongo với hàm Aggregation trong MySQL)
 GridFS : cho phép ta lưu trữ files dung lượng lớn
 Geospatial Indexing : khả năng index cho các dữ liệu vị trí địa lý. Cho phép ta tìm object dựa theo vị
trí của nó (VD : hãy tìm những điểm gần điểm X cho trước)
2.5 KHI NÀO NÊN SỬ DỤNG MONGODB ?
- Khi ta gặp phải những vấn đề về performance với RDBMS
- Ta đang cần giải quyết vấn đề lưu trữ files trong db
- Ta cần xử lý realtime cho batch processing
- Chúng ta đang phát triển theo mô hình agile (Scrum)
- Dữ liệu phức tạp không thể mô hình hóa trong RDBMS
- Dự án của ta chậm tiến độ và công việc đòi hỏi truy xuất db nhiều
- Ta được yêu cầu sử dụng những server hay mạng riêng biệt cho giải pháp db hiện có
- Ta đang cần deploy lên trên public hay private cloud

10
ĐẠI HỌC QUỐC GIA TPHCM CHƯƠNG TRÌNH THẠC SĨ CNTT
(Các trường hợp trong thực tế sử dụng MongoDB)
2.6 CÁC KHÁCH HÀNG ĐANG SỬ DỤNG MONGODB
Danh sách khách hàng là các website sử dụng MongoDB rất nhiều
( />Ta có thể điểm qua 1 vài tên tuổi
• Foursquare
• SAP
• SourceForge
• GitHub
• Eventbrite
• CERN
• MTV network
• EA.com
• 02
• BusinessInsider.com
• Forbes
11
ĐẠI HỌC QUỐC GIA TPHCM CHƯƠNG TRÌNH THẠC SĨ CNTT
• CNN Turk (www.cnnturk.com)
• Disney
• Shopwiki
• Shutterfly
• Intuit

• The New York Times
• Lexis Nexis
….
2.7 MÔ HÌNH DỮ LIỆU CỦA MONGODB
Mô hình dữ liệu của Mongo theo chuỗi sau từ lớn đến nhỏ

Database  collections  documents  set of fields  key 
12
ĐẠI HỌC QUỐC GIA TPHCM CHƯƠNG TRÌNH THẠC SĨ CNTT
value
Hình sau so sánh trực quan giữa CSDL quan hệ của MySQL và tương đương trong Mongo
13
ĐẠI HỌC QUỐC GIA TPHCM CHƯƠNG TRÌNH THẠC SĨ CNTT
2.8 CÁC KHÁI NIỆM CƠ BẢN TRONG MONGO
2.8.1 Document
- Tương tự như khái niệm row trong RDBMS
- Được biểu diễn dạng JSON(BSON)
- Có tính phân cấp
- Có thể tham chiếu đến 1 document khác
2.8.2 Collection
- Tương tự khái niệm Table trong RDBMS
- Là tập các documents
2.8.3 Embedding document
- Tương tự foreign key trong RDBMS
- Nghĩ như là “pre-joined relationship”
- Embedding có thể là các object con hay là những collections
14
ĐẠI HỌC QUỐC GIA TPHCM CHƯƠNG TRÌNH THẠC SĨ CNTT
2.8.4 References
- Tương tự như foreign key
- Nghĩ như là “relationship”
2.8.5 Querying
Mọi cách truy vấn như hình đều tìm được document
15
ĐẠI HỌC QUỐC GIA TPHCM CHƯƠNG TRÌNH THẠC SĨ CNTT
2.8.6 Indexing

Tương tự như RDBMS, ta có thể index cho 1 field trong Mongo
2.8.7 Inserting
Thêm 1 document vào collection.
2.8.8 Updating
Update 1 document trong collection => obj phải load hết trong memory, truy xuất db
nhiều lần => không hiệu quả
16
ĐẠI HỌC QUỐC GIA TPHCM CHƯƠNG TRÌNH THẠC SĨ CNTT
Cách khác là dùng Atomic Update (giống Transactions trong RDBMS), cho phép one-trip
tới db, thực hiện nhiều tác vụ 1 lần.
17
ĐẠI HỌC QUỐC GIA TPHCM CHƯƠNG TRÌNH THẠC SĨ CNTT
2.9 DEMO CHƯƠNG TRÌNH SỬ DỤNG MONGODB
MongoDB cung cấp các drivers cho phép ta có thể sử dụng MongoDB trên nhiều môi trường và
ngôn ngữ khác nhau : Windows, MacOS, Linux, .NET, Java, PHP, C++, Python, Ruby, …
 Lưu ý : để chạy được các chương trình demo sau, ta phải start trước MongoDB server (xem phần
sử dụng MongoDB ở trên ) thành công.
2.9.1 Sử dụng MongoDB với .NET Driver
MongoDB cung cấp các drivers (DLL) cho phép ta lập trình MongoDB với C# và sử dụng LINQ
collection.
Driver đường dẫn trong folder sourcecode
\Installers\NET\CSharpDriver-1.5.0.4566\MongoDB.Driver.dll
\Installers\NET\CSharpDriver-1.5.0.4566\MongoDB.Bson.dll
Trước khi chạy được chương trình .NET, ta cần cài đặt .NET Framework và Visual Studio 2010 (Express
or Pro version)
- Download Microsoft .NET framework 4.0 và cài đặt
/>- Ta có thể sử dụng bản Visual C# 2010 Express (tốt nhất nên cài bản Pro hay Ultimate)
/>Source code minh họa trong folder
\Sourcecode\NET\MongoCSharpDriverDemo
(chọn folder src và mở solution MongoCSharpDriverDemo.sln trong Visual Studio, kết qủa như hình

18
ĐẠI HỌC QUỐC GIA TPHCM CHƯƠNG TRÌNH THẠC SĨ CNTT
sau)
 Mô tả về tính năng chương trình
- Xây dựng 1 chương trình demo nhỏ sử dụng MongoDB để tạo và quản lý các Orders
(document), tạo và quản lý blog Posts (Title, Author, Body, Tags). Ở đây minh họa các tính
CRUD cho các document trong MongoDB
Cấu trúc source code :
Gồm có 4 project chính có thể chạy độc lập riêng bằng cách chọn Debug -> Start New Instance cho
project tương ứng
19
ĐẠI HỌC QUỐC GIA TPHCM CHƯƠNG TRÌNH THẠC SĨ CNTT
1) LinqDemo : minh họa tính năng tạo và quản lý Order sử dụng LINQ
2) MongoCSharpDriverDemo : minh họa tính năng quản lý Orders và multiple documents
3) NoRMDriverDemo : tương tự nhưng minh họa Query with Condition
4) SupportedMongoDbCSharpDriverDemo : tương tự nhưng có thêm quản lý blog Posts
Chương trình khi chạy sẽ xuất ra màn hình như hình sau :
20
ĐẠI HỌC QUỐC GIA TPHCM CHƯƠNG TRÌNH THẠC SĨ CNTT
 Mô tả về sourcecode
Khai báo đối tượng object Order
Khai báo đối tượng object Post (blog)
Hàm Main() chương trình chính (các project tương tự)
21
ĐẠI HỌC QUỐC GIA TPHCM CHƯƠNG TRÌNH THẠC SĨ CNTT
22
ĐẠI HỌC QUỐC GIA TPHCM CHƯƠNG TRÌNH THẠC SĨ CNTT
Các hàm quản lý Order CRUD (document ) trong collection
23
ĐẠI HỌC QUỐC GIA TPHCM CHƯƠNG TRÌNH THẠC SĨ CNTT

24
ĐẠI HỌC QUỐC GIA TPHCM CHƯƠNG TRÌNH THẠC SĨ CNTT
25

×