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

Tiểu luận môn cơ sở dữ liệu nâng cao TÌM HIỂU GRAPH DATABASE NEO4J

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 (888.6 KB, 28 trang )

ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
CHƯƠNG TRÌNH ĐÀO TẠO THẠC SĨ CNTTQM
………… o0o…………
BÁO CÁO THU HOẠCH MÔN HỌC
CƠ SỞ DỮ LIỆU NÂNG CAO
Đề tài:
TÌM HIỂU GRAPH DATABASE NEO4J
GVHD: PGS.TS. PhúcĐỗ
HVTH: Nguy n V n Chungễ ă
MÃ SỐ: CH1101070
TP.Hồ Chí Minh, N m 201ă 2
CƠ SỞ DỮ LIỆU NÂNG CAO
LỜI MỞ ĐẦU

Ngày nay, dữ liệu của hầu hết các ứng dụng đều rất rất lớn, có những ứng dụng truy
cập dữ liệu lên đến Tera Byte hoặc cả nghìn Tera Byte. Như vậy làm thế nào để ứng
dụng truy cập dữ liệu lớn như vậy mà tốc độ truy cập nhanh nhất mà vẫn đảm bảo dữ
liệu trả ra không bị thiếu sót, đây là một vấn đề đâu đầu của nhiều người.
Cơ sở dữ liệu đồ thị ra đời đã phần nào giải quyết được vấn đề đó. Neo4J ra đời dựa
trên ý tưởng cơ sở dữ liệu đồ thị và ngày càng hoàn thiện và khẳng định tính ưu việt
của mình trong việc lưu trử dữ liệu khổng lồ. Trong bài tiểu luận này là sự trình bày
khái quát về cơ sở dữ liệu đồ thị, đồng thời trình bày tổng quan về Neo4J.
Em xin chân thành cảm ơn PGS.TS. Đỗ Phúc – Giảng viên môn học cơ sở dữ liệu
nâng cao đã truyền đạt những kiến thức vô cùng quý báu, xin chân thành cám ơn ban
cố vấn học tập và ban quản trị chương trình đào tạo thạc sĩ Công nghệ thông tin qua
mạng của Đại Học Quốc Gia TPHCM đã tạo điều kiện về tài liệu tham khảo để em
có thể hoàn thành môn học này.
Chân thành cám ơn!
Nguyễn Văn Chung
- 1 -
CƠ SỞ DỮ LIỆU NÂNG CAO


MỤC LỤC
LỜI MỞ ĐẦU 1
CƠ SỞ DỮ LIỆU NÂNG CAO 2
PHẦN I :
CƠ SỞ DỮ LIỆU ĐỒ THỊ 3
PHẦN II : CƠ SỞ DỮ LIỆU ĐỒ THỊ NEO4J 12
KẾT LUẬN 26
- 2 -
CƠ SỞ DỮ LIỆU NÂNG CAO
ΠΗ Ν Ι : Ầ
CƠ SỞ DỮ LIỆU ĐỒ THỊ
I. TỔNG QUAN ĐỒ THỊ
I.1. Giới thiệu :
Trong toán học và tin học, đồ thị là đối tượng nghiên cứu cơ bản của lý thuyết
đồ thị. Một cách không chính thức, đồ thị là một tập các đối tượng gọi là đỉnh nối với
nhau bởi các cạnh. Thông thường, đồ thị được vẽ dưới dạng một tập các điểm (đỉnh,
nút) nối với nhau bởi các đoạn thẳng (cạnh). Tùy theo ứng dụng mà một số cạnh có
thể có hướng.
I.2. Đồ thị vô hướng:
Đồ thị vô hướng hoặc đồ thị G là một cặp không có thứ tự (ordered
pair) G:=(V, E), trong đó:
- V, tập các đỉnh hoặc nút,
- E, tập các cặp không thứ tự chứa các đỉnh phân biệt, được gọi là cạnh. Hai
đỉnh thuộc một cạnh được gọi là các đỉnh đầu cuối của cạnh đó.Tập các
cạnh bao gồm cả các cặp đỉnh không phân biệt, các cạnh này được gọi là
các khuyên.
- 3 -
CƠ SỞ DỮ LIỆU NÂNG CAO
I.3. Đồ thị có hướng:
Đồ thị có hướng G là một cặp có thứ tự G:=(V, A), trong đó:

- V, tập các đỉnh hoặc nút,
- A, tập các cặp có thứ tự chứa các đỉnh, được gọi là các cạnh có
hướng hoặc cung. Một cạnh e = (x, y) được coi là có hướng từ x tới y; x được
gọi là điểm đầu/gốc và y được gọi là điểm cuối/ngọn của cạnh.
II. CƠ SỞ DỮ LIỆU ĐỒ THỊ
II.1. Giới thiệu :
Một cơ sở dữ liệu đồ thị lưu trữ dữ liệu trong một đồ thị, chung nhất của cấu
trúc dữ liệu, có khả năng đại diện cho bất kỳ loại dữ liệu một cách rất dễ tiếp cận. Hãy
để theo cùng một số đồ thị, sử dụng chúng để diễn đạt các khái niệm đồ thị.
II.2. Nodes và Relationships :
“Một đồ thị —các bộ dữ liệu lưu trong → các Node —có → Properties”
Đồ thị đơn giản nhất là một Node duy nhất, một node có tên xem như là
Properties. Một Node ban đầu có thể với một Property và tăng dần lên vài triệu, mặc
dù điều đó có thể có đôi chút vụng về. Tại một số điểm, nó làm cho cảm giác để phân
phối dữ liệu vào nhiều nút, tổ chức với các Relationships rõ ràng.
- 4 -
CƠ SỞ DỮ LIỆU NÂNG CAO
II.3. Các Relationship tổ chức trong Đồ thị:
“Các Node —được tổ chức bởi→ Các Relationship —các Node có→
Properties”.
Relationships tổ chức các Nodes thành những cấu trúc tùy tiện, cho phép một
Graph giống như một List, Tree, Map, hoặc một hợp chất Entity, bất kỳ có thể được
kết hợp thành phức tạp hơn, đa dạng về cấu trúc liên kết nối.
II.4. Truy vấn Đồ thị với một Traversal:
“Một Traversal —điều hướng→ Một đồ thị;
Traversal —xác định→ các Path —sắp xếp→ Nodes”
Traversal là làm thế nào bạn truy vấn một Đồ thị, điều hướng từ bắt đầu từ các
Node tới các Node liên quan theo một thuật toán, việc tìm kiếm câu trả lời cho câu
hỏi như "những gì âm nhạc nào bạn bè của tôi như tôi chưa sở hữu", hoặc "nếu điều
này cung cấp năng lượng đi xuống, những dịch vụ web bị ảnh hưởng? ".

- 5 -
CƠ SỞ DỮ LIỆU NÂNG CAO
II.5. Indexes tìm các Nodes và các Relationships
“Một Index —maps từ→ các Property —tới một trong hai→ các Node hoặc các
Relationship”
Thông thường, bạn muốn tìm thấy một Node cụ thể hoặc Relationship theo một
Property nó có. Thay vì đi qua toàn bộ Đồ thị, sử dụng một Index để thực hiện một
truy tìm, câu hỏi như "tìm ra cho các tài khoản tên người dùng master-of-graph."
- 6 -
CƠ SỞ DỮ LIỆU NÂNG CAO
II.6. Neo4j là một Graph Database
“Một cở sở dữ liệu đồ thi — quản lý → một Đồ thị và — cũng quản lý luôn →
các Indexe có liên quan”
Neo4j là một cơ sở dữ liệu mã nguồn mở đồ thị thương mại hỗ trợ. Nó được thiết
kế và được xây dựng từ mặt đất lên là một cơ sở dữ liệu đáng tin cậy, tối ưu hóa cho
các cấu trúc đồ thị thay vì các bảng. Làm việc với Neo4j, ứng dụng của bạn được tất
cả các biểu cảm của một đồ thị, với độ tin cậy của tất cả bạn mong đợi của một cơ sở
dữ liệu.
- 7 -
CƠ SỞ DỮ LIỆU NÂNG CAO
III. So sánh Database Models:
Một cơ sở dữ liệu đồ thị lưu trữ dữ liệu có cấu trúc trong các Node và các
Relationship của một đồ thị. Làm thế nào để so sánh với các mô hình bền bỉ khác?Bởi
vì một đồ thị là một cấu trúc chung, chúng ta hãy so sánh một vài mô hình sẽ nhìn vào
một đồ thị.
III.1. Một CSDL Đồ thị biến đổi một RDBMS:
Lật đổ ngăn xếp của các bản ghi trong một cơ sở dữ liệu quan hệ trong khi vẫn
giữ tất cả các mối quan hệ, và bạn sẽ thấy một đồ thị. Trường hợp một RDBMS được
tối ưu hóa cho dữ liệu tổng hợp, Neo4j được tối ưu hóa cho dữ liệu kết nối cao.
- 8 -

CƠ SỞ DỮ LIỆU NÂNG CAO
Hình: RDBMS
Hình: Cơ sở dữ liệu đồ thị như một RDBMS
III.2. CSDL đồ thị dựng lên một Key-Value Store
Một mô hình Key-Value tuyệt vời cho tra cứu các giá trị đơn giản hoặc danh
sách. Khi các giá trị được kết nối với nhau, bạn đã có một đồ thị.Neo4j cho phép bạn
xây dựng cấu trúc dữ liệu đơn giản thành phức tạp hơn, dữ liệu kết nối với nhau.
Hình: Key-Value Store
K* đại diện cho một key, V* là một value.
- 9 -
CƠ SỞ DỮ LIỆU NÂNG CAO
Hình: CSDL đồ thị giống như Key-Value Store
III.3. CSDL Đồ thị liên quan Column-Family:
Column-Family (BigTable-Style) cơ sở dữ liệu là một sự tiến hóa có giá trị quan
trọng, bằng cách sử dụng "gia đình" để cho phép nhóm hàng. Lưu trữ trong một đồ
thị, các gia đình có thể trở thành thứ bậc, và các mối quan hệ giữa các dữ liệu trở nên
rõ ràng.
III.4. CSDL Đồ thị thông qua Document Store:
Hệ thống phân cấp container của một cơ sở dữ liệu tài liệu có thể chứa dữ liệu
miễn phí tốt đẹp, lược đồ có thể dễ dàng được thể hiện như một cái cây. Đó là tất
nhiên một đồ thị. Hãy tham khảo các tài liệu khác (hoặc các yếu tố tài liệu) bên trong
cây đó và bạn có một đại diện có ý nghĩa hơn của cùng một dữ liệu. Khi trong Neo4j,
những mối quan hệ dễ dàng điều hướng.
Hinh: Document Store
D=Document, S=Subdocument, V=Value, D2/S2 = reference to subdocument in (other)
document.
- 10 -
CƠ SỞ DỮ LIỆU NÂNG CAO
Hình: CSDL Đồ thị như là Document Store
- 11 -

CƠ SỞ DỮ LIỆU NÂNG CAO
ΠΗ Ν ΙΙ : Ầ CƠ SỞ DỮ LIỆU ĐỒ THỊ NEO4J
I. Giới thiệu
Neo4j là một cơ sở dữ liệu đồ thị, lưu trữ dữ liệu trong các nút và các mối quan
hệ của một đồ thị. Chung của các cấu trúc dữ liệu, biểu đồ thanh lịch đại diện cho bất
kỳ loại dữ liệu, bảo quản cấu trúc tự nhiên của miền.
Neo4j là một dự án mã nguồn mở có sẵn trong một ấn bản cộng đồng GPLv3,
với phiên bản nâng cao và doanh nghiệp theo giấy phép AGPLv3 và thương mại, hỗ
trợ bởi công nghệ Neo.
II. Các khái niệm trong Neo4j
II.1. Node:
Các đơn vị cơ bản hình thành nên một đồ thị là các Node và các Relationship.
Trong Neo4j, cả hai Node và các Relationship có thể chứa các Property.
Các Node được thường được sử dụng để đại diện cho các thực thể (Entity),
nhưng tùy thuộc vào miền Relationship có thể được sử dụng cho mục đích đó.
Hãy bắt đầu bằng một biểu đồ thực sự đơn giản, chỉ chứa một Node duy nhất với
một Property:
II.2. Relationship
Mối quan hệ(Relationship) giữa các Node là một phần quan trọng của một cơ sở
dữ liệu đồ thị. Chúng cho phép cho việc tìm kiếm dữ liệu liên quan. Cũng giống như
các Node, các mối quan hệ có thể có các Property.
- 12 -
CƠ SỞ DỮ LIỆU NÂNG CAO
Một mối quan hệ kết nối hai nút, và được bảo đảm có bắt đầu có hiệu lực và các
nút kết thúc.
Khi mối quan hệ luôn luôn chỉ đạo, họ có thể được xem như là tương đối đi hoặc
đến một nút, đó là hữu ích khi đi qua các đồ thị:
Điều này có nghĩa rằng không có cần phải thêm các mối quan hệ trùng lặp theo
hướng các Relationship tốt như nhau đi qua trong hai hướng ngược lại (đối với cây
hoặc thực hiện).

Trong khi mối quan hệ luôn luôn có một hướng đi, bạn có thể bỏ qua các hướng
mà nó không phải là hữu ích trong ứng dụng của bạn.
Lưu ý rằng một nút có thể có mối quan hệ với chính nó:
Để tăng cường hơn nữa đồ thị traversal tất cả các mối quan hệ có một mối quan
hệ. Lưu ý rằng các loại từ có thể được gây hiểu lầm ở đây, thay vì bạn có thể nghĩ về
nó như là một nhãn. Ví dụ sau đây cho thấy một mạng xã hội đơn giản với hai loại
mối quan hệ.
- 13 -
CƠ SỞ DỮ LIỆU NÂNG CAO
Sử dụng hướng Relationship và type:
Cái gì Làm thế nào
get who a person follows outgoing follows relationships, depth one
get the followers of a person incoming follows relationships, depth one
get who a person blocks outgoing blocks relationships, depth one
get who a person is blocked by incoming blocks relationships, depth one
Ví dụ này là một mô hình đơn giản của một hệ thống tập tin, bao gồm các liên kết
tượng trưng:
Tùy thuộc vào những gì bạn đang tìm kiếm, bạn sẽ sử dụng sự chỉ đạo và loại của các
mối quan hệ trong traversal.
- 14 -
CƠ SỞ DỮ LIỆU NÂNG CAO
Cái gì Làm thế nào
get the full path of a file incoming file relationships
get all paths for a file incoming file and symbolic link
relationships
get all files in a directory outgoing file and symbolic link
relationships, depth one
get all files in a directory, excluding
symbolic links
outgoing file relationships, depth one

get all files in a directory, recursively outgoing file and symbolic link
relationships
II.3. Properties
Cả hai Node và các Relationship có thể có các Property.
Property là các cặp giá trị quan trọng mà chính là một chuỗi. Giá trị Property có
thể là primitive hoặc một mảng của một kiểu primitive. Ví dụ cho String, int, int[] giá
trị là giá trị Property.
Chú ý:
null không phải là giá trị hợp lệ của Property. Nulls có thể mô hình hóa sự thiếu vắng của
key.
- 15 -
CƠ SỞ DỮ LIỆU NÂNG CAO
Các loại value của Property:
Type Description Miền giá trị
boolean True/false
byte 8-bit integer -128 to 127, inclusive
short 16-bit integer -32768 to 32767, inclusive
int 32-bit integer -2147483648 to
2147483647, inclusive
long 64-bit integer -9223372036854775808 to
9223372036854775807,
inclusive
float 32-bit IEEE 754 floating-
point number
double 64-bit IEEE 754 floating-
point number
char 16-bit unsigned integers
representing Unicode
characters
u0000 to uffff (0 to 65535)

string sequence of Unicode
characters
- 16 -
CƠ SỞ DỮ LIỆU NÂNG CAO
II.4. Paths
Một đường nét là một hoặc nhiều hơn các nút kết nối các mối quan hệ, thường
lấy như là một truy vấn hoặc kết quả traversal.
Đường đi ngắn nhất có thể có số không dài và trông như thế này:
Một con đường có chiều dài một:
II.5. Traversal
Vượt qua một đồ thị có nghĩa là truy cập vào các nút của nó, sau mối quan hệ
theo một số quy tắc. Trong hầu hết trường hợp chỉ có một đồ thị con phổ truy cập,
như bạn đã biết trong đồ thị các nút và các mối quan hệ thú vị được tìm thấy.
Neo4j đi kèm với một cuộc gọi lại của traversal API cho phép bạn chỉ định các
quy tắc traversal. Ở mức độ cơ bản là một sự lựa chọn giữa đi qua chiều rộng hoặc
chiều sâu đầu tiên.
- 17 -
CƠ SỞ DỮ LIỆU NÂNG CAO
III. CÀI ĐẶT NEO4J:
III.1. Yêu cầu hệ thống:
1. CPU
Hiệu suất nói chung là bộ nhớ hoặc I/O bị ràng buộc cho các đồ thị lớn, và tính toán các
ràng buộc cho các biểu đồ phù hợp trong bộ nhớ.
Minimum
Intel 486
Recommended
Intel Core i7
2. Memory
Thêm bộ nhớ cho phép các đồ thị lớn hơn, nhưng có nguy cơ cảm ứng hoạt động
Garbage Collection lớn hơn.

Minimum
1GB
Recommended
4-8GB
3. Disk
Ngoài khả năng, đặc điểm hiệu suất của đĩa là quan trọng nhất khi lựa chọn lưu trữ.
Minimum
SCSI, EIDE
Recommended
SSD w/ SATA
4.Filesystem
Đối với hành vi ACID thích hợp, hệ thống tập tin phải hỗ trợ flush (fsync, fdatasync).
Minimum
ext3 (or similar)
Recommended
ext4, ZFS
5.Software
Neo4j is Java-based
Java 1.6+
Operating Systems
Linux, Windows XP, Mac OS X
6. JDK Version
Neo4j thời gian chạy được liên tục thử nghiệm với JRE 1.6
III.2. Cài đặt Neo4J Server:
Neo4J có thể cài đặt trên server, chạy hoặc Application hoặc System Service.
- 18 -
CƠ SỞ DỮ LIỆU NÂNG CAO
- Download gói mới nhất tại
-Chọn version tương thích với platform. Ở đây chọn cho hệ điều hành
Windows 64 bit

- Giải nén file vừa download về
-Đổi tên directory top-level thành NEO4J_HOME
- Dùng scripts trong bin directory
-Double-click lên %NEO4J_HOME%\bin\Neo4j.bat
- Có thể thao khảo thông tin thêm trong doc directory.
•Tạo Windows Service:
Với quyền Admin của Windows, Neo4j có thể cài đặt Windows service.
Click Start → All Programs → Accessories
Right click Command Prompt → Run as Administrator
Provide authorization and/or the Administrator password
Navigate to %NEO4J_HOME%
Run bin\Neo4j.bat install
Để uninstall, run bin\Neo4j.bat remove as Administrator.
Để query the status của service, run bin\Neo4j.bat status
Để start service từ command prompt, run bin\Neo4j.bat start
Để stop service từ command prompt, run bin\Neo4j.bat stop
 Sau khi install xong Windows Service, ta dùng Browser gõ url:
http://localhost:7474/webadmin/ sẽ cho ra giao diện phía dưới
Hình: Màn hình WebAdmin của Neo4J
- 19 -
CƠ SỞ DỮ LIỆU NÂNG CAO
III.3. Đồ thị
Ta có các Relationship: Con, Ban, Biet.
Danh sách các Node và các Property:
Id Node Property
0 Ten:Dung
Tuoi:23
Quequan:Nha Trang
Nghenghiep: Lap trinh vien
1 Ten:Hong

Tuoi:49
Quequan:Quy Nhon
2 Ten:Tuan
Tuoi:50
Quequan:Nha Trang
3 Ten:Lan
Tuoi:18
Nghenghiep: Sinh vien
4 Ten:Cuong
Tuoi:20
Quequan:Ho Chi Minh
Nghenghiep: Sinh vien
5 Ten:Bao
Tuoi:20
Quequan:Ha Noi
Nghenghiep:Sinh vien
6 Ten:Thuy
Tuoi:20
QueQuan:Hue
Nghenghiep: Sinh vien
10 Ten:Minh
Tuoi:22
Quequan:Nha Trang
Nghenghiep: Lap trinh vien
- 20 -
CƠ SỞ DỮ LIỆU NÂNG CAO
• Tạo Node
• Tạo Relationship
- 21 -
CƠ SỞ DỮ LIỆU NÂNG CAO

• Tạo Style View
- 22 -
CƠ SỞ DỮ LIỆU NÂNG CAO
• Màn hình đồ thị

III.4. Tạo Node dùng Ứng Dụng C#:
• Tạo Node mới:
• Kết quả tạo Node từ Ứng dụng
- 23 -
CƠ SỞ DỮ LIỆU NÂNG CAO
• Tạo Relationship “Con” từ Node tới Node
• Kết quả tạo Relationship từ Node 19 tới Node 20
- 24 -

×