1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

87 1,7K 18

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 87
Dung lượng 19,01 MB

Nội dung

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ệ

Trang 1

ĐẠ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

QUAN GEPHI

CÁC SOCIAL NETWORK NỔI TIẾNG HIỆN NAY NHƯ FACEBOOK, FOURSQUARE, TWITTER

Trang 2

HV : VŨ MINH THÀNH

MS : CH1101134 Lớp : Cao học khóa 6

ĐT : 0913887997 Email :

thanhauco@gmail.com

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

Trang 3

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

Trang 4

NỘI DUNG

Trang 5

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

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

Trang 6

• 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, …

Trang 7

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

Trang 8

2 PHẦN 2 : GIỚI THIỆU MONGODB VÀ DEMO CHƯƠNG TRÌNH

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

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

- 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

Trang 9

- 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

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

Trang 10

(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)

- 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

Trang 11

(Các trường hợp trong thực tế sử dụng MongoDB)

Trang 12

Mô hình dữ liệu của Mongo theo chuỗi sau từ lớn đến nhỏ

Trang 13

Hình sau so sánh trực quan giữa CSDL quan hệ của MySQL và tương đương trong Mongo

13

Trang 14

2.8 CÁC KHÁI NIỆM CƠ BẢN TRONG MONGO

- Tương tự như khái niệm row trong RDBMS

- Được biểu diễn dạng JSON(BSON)

- 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

Trang 17

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

Trang 18

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

Trang 19

 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

Trang 20

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 :

Trang 21

 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

Trang 23

Các hàm quản lý Order CRUD (document ) trong collection

23

Trang 25

25

Trang 26

Sử dụng LINQ query có điều kiện các Orders

Driver đường dẫn trong folder sourcecode

\Installers\Java\mongo-2.9.0-RC1.jar

Sourcecode chương trình Java sử dụng MongoDB tại

\Sourcecode\Java

Biên dịch và chạy chương trình dùng command sau :

javac -cp mongo.jar; Sample.java

java -cp mongo.jar; Sample

 Mô tả source code

Trang 27

File Connect.java

27

Trang 28

File Sample.java

Trang 29

File Document.java

2.9.3 Xây dựng ứng dụng WebBlogging sử dụng PHP với MongoDB

Download và cài đặt PHP theo hướng dẫn sau

Trang 30

Tạo connection tới MongoDB

Insert document vào MongoDB

Trang 31

31

Trang 32

Sau đây ta xây dựng ứng dụng web về Blog bằng PHP sử dụng MongoDB cho phép người sử dụng có thể post blog, thêm comment, edit, delete, editor blog post, và tính năng Dashboard như các hình chụp sau

Source code hoàn chỉnh tại

\Sourcecode\PHP\WebBlogging

 Cách tổ chức các module source code

1.BlogEditor: cho phép soạn thảo blog, xem danh sách các bài posts và dashboard

2.Authentication-SessionManager: chức năng login/logout, Session manager

3.RatingTagging-MapReduce: cho phép Author Rating, Tagging cloud, sử dụng các hàm gom nhom

bằng MapReduce của NoSQL

4.Logging-WebAnalytics: Logging cho web, realtime Web analytics (web traffic data analysis) 5.Location-aware : thêm tính năng xác định vị trí location cho blogging website

 Một vài hình ảnh minh họa và sourcecode của WebBlogging

bl ogpost.php

Trang 33

33

Trang 34

tagcloud

Author’s rating

Trang 35

35

Trang 36

Page views

Daily Page views

Locating positions

Trang 37

Source blogpost.php

37

Trang 38

Source edit.php

Source Login.php

Trang 39

39

Trang 40

Source user.php

Trang 41

Source session.php

Source avg_rating.php

41

Trang 43

Source tagcloud.php

43

Trang 44

Source comment.php

Source dashboard.php(4.Logging-WebAnalytics)

Source log.php

Trang 45

45

Trang 46

Source blogreader_bot.php

Source realtime_pageviews.php

Trang 47

47

Trang 48

Source page_views.php

Trang 49

Source geolocation.js

Source query.php

49

Trang 50

Source restaurants.js

Source haystack.php

Trang 51

2.9.4 Sử dụng MongoDB với Ruby

Hướng dẫn cài đặt và chạy Ruby theo đường dẫn

Trang 53

Chương trình demo Ruby quản lý Product, Order, Inventory, Users

\Sourcecode\Ruby\Product-Inventory

53

Trang 54

3 PHẦN 3 : PHÂN TÍCH MẠNG XÃ HỘI SỬ DỤNG CÔNG CỤ TƯƠNG TÁC TRỰC

QUAN GEPHI

3.1 GIỚI THIỆU VỀ GEPHI (The Open Graph Viz Platform)

Homepage của Gephi https://gephi.org/

Video giới thiệu Gephi http://www.youtube.com/watch?v=bXCBh6QH5W0

Gephi là một nền tảng mã nguồn mở bằng Java dùng để mô phỏng và phân tích trực quan tương tác cho

tất cả các loại đồ thị network và các hệ thống phức tạp, những đồ thị động và có cấp bậc

Gephi sử dụng 3D engine để hiển thị graph theo thời gian thực và tăng tốc quá trình hiển thị Chúng ta

có thể sử dụng Gephi để khám phá, phân tích, không gian hóa (spatialise), chọn lọc (filter), kết cụm, xử lý

và xuất ra nhiều loại graph khác nhau

Gephi có thể chạy trên nhiều nền tảng khác nhau như Windows, Linux, MacOS

Trang 55

1 Phân tích khảo sát dữ liệu (Exploratory Data Analysis) : phân tích theo trực giác bằng các phép

xử lý graph theo thời gian thực

2 Phân tích mối liên hệ (Link Analysis) : khám phá những cấu trúc kết hợp bên dưới của các đối

tượng, đặc biệt trong những network có scale bất kỳ

3 Phân tích mạng xã hội (Social Network Analysis): khám phá các mối liên kết, các tổ chức và

small-world

4 Phân tích mạng sinh học (Biological Network Analysis) :thể hiện những mẫu (patterns) của dữ liệu sinh học

5 Tạo những poster : giúp đẩy mạnh công tác khoa học với những bản đồ in được chất lượng cao

3.2 CÁC TÍNH NĂNG NỔI BẬT CỦA GEPHI

Gephi là một công cụ mạnh mẽ giúp người dùng khám phá và hiểu về các graph, giống như là Photoshop dành cho graph

Gephi giúp cho các nhà phân tích dữ liệu tương tác trực quan, khám phá dữ liệu, phân tách các thành phần đồ thị, nó cũng giúp cho các nhà thống kê suy nghĩ trực quan với những giao diện tương tác cao giúp suy diễn ra nhiều vấn đề của mạng (reasoning)

1) Mô phỏng graph thời gian thực (Real-time visualization)

- Do sử dụng công cụ hiển thị đồ họa mạnh nhất hiện nay, và OpenGL engine, nên tăng tốc độ hiển thị và pattern discovery ở những đồ thị lớn

- Có thể hiển thị 50,000 nodes và 1,000,000 cạnh của đồ thị

- Filter động

- Cung cấp nhiều tính năng cho quá trình xử lý graph

55

Ngày đăng: 10/04/2015, 14:35

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w