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ừ
Trang 1BÁO CÁO THU HOẠCH MÔN HỌC
CƠ SỞ DỮ LIỆU NÂNG CAO
Trang 2liệ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
Trang 3KẾT LUẬN 26
Trang 4nhau 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
Trang 5II 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
Trang 6II.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? "
Trang 7II.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."
Trang 8II.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
Trang 9III 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
Trang 10Hì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
Trang 11Hì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
Trang 12Hình: CSDL Đồ thị như là Document Store
Trang 13vớ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
Trang 14Mộ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ệ
Trang 15Sử dụng hướng Relationship và type:
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:
Trang 16II.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
Trang 17Các loại value của Property:
2147483647, inclusive
9223372036854775807, inclusive
u0000 to uffff (0 to 65535)
Trang 18Đườ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
Trang 20Vớ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
Trang 21Nghenghiep: Lap trinh vien
Tuoi:49Quequan:Quy Nhon
Tuoi:50Quequan:Nha Trang
Tuoi:18Nghenghiep: Sinh vien
Tuoi:20Quequan:Ho Chi MinhNghenghiep: Sinh vien
Tuoi:20Quequan:Ha NoiNghenghiep:Sinh vien
Tuoi:20QueQuan:HueNghenghiep: Sinh vien
Trang 22• Tạo Relationship
Trang 23• Tạo Style View
Trang 24III.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
Trang 25• Tạo Relationship “Con” từ Node tới Node
• Kết quả tạo Relationship từ Node 19 tới Node 20
Trang 27Việc áp dụng cơ sở dữ liệu đồ thị không chỉ giải quyết được vấn đề lưu trữ mà còn giải quyết được một vấn đề trọng điểm của các yêu cầu ngày nay đó là rút tri thức từ dữ liệu hiện có và đồng thời áp dụng máy học lên khối dữ liệu đã lưu trữ để khám phá ra những dữ liệu mới.Vì mục đích của tấc cả các ứng dụng ngày nay là không chỉ lưu trữ được dữ liệu , xử lý linh hoạt dữ liệu trong mọi thời điểm mà còn phải là một hệ thống thông minh có khả năng đưa ra những nhận xét phán đoán hoặc rút trích những kết luận chính xác từ dữ liệu nhập vào.
Tuy nhiên, bên cạnh những thuận lợi thì tồn tại một khó khăn đó là người sử dụng phải chi trả bộ nhớ lớn cho việc lưu trữ dữ liệu đồ thị Nhưng xét về những lợi điểm mà dữ liệu đồ thị đem lại thì con người sẵn sàn chi trả chi phí cho vấn đề đó