Làm quen với Neo4j

Bài viết Làm quen với Neo4j thuộc chủ đề về HỎi Đáp thời gian này đang được rất nhiều bạn quan tâm đúng không nào !! Hôm nay, Hãy cùng Hàng Nhật Cao Cấp tìm hiểu Làm quen với Neo4j trong bài viết hôm nay nhé ! Các bạn đang xem bài viết : “Làm quen với Neo4j”

Graph Database là gì?

Graph Database là một hệ thống quản lý cơ sở dữ liệu đồ thị (Graph Database Management System) cho phép mô tả và lưu trữ dữ liệu dưới dạng đồ thị một cách trực quan và dễ dàng truy vấn.

Tại sao dùng Graph Database? Những lĩnh vực áp dụng Graph Database?

Bối cảnh hiện đại đặt ra rất nhiều bài toán cần phải giải quyết như: phát hiện gian lận tài chính, gợi ý bạn bè trên các nền tảng mạng xã hội,  gợi ý một item cho người dùng dựa trên lịch sử hoạt động của người đó…

Với những kiểu bài toán như vậy thì cách lưu trữ dữ liệu của Relational Database hoặc NoSQL Database đều không thích hợp khi mà chúng chỉ chuẩn hóa dữ liệu để lưu vào các bảng hay các document và làm giảm đi tính kết nối. Việc lưu trữ như vậy không thể tận tận dụng được hết sức mạnh của các mối liên kết có thể mang lại. Đặc biệt, việc truy vấn giữa các bảng rất phức tạp và mất nhiều thời gian.

Một minh chứng cho sự hữu ích của Graph Database đó chính là việc gợi ý kết bạn trên nền tảng mạng xã hội Facebook. Ví dụ,  khi A là bạn của B và B là bạn của C, với công nghệ graph, Facebook sẽ biết được liệu có nên gợi ý kết bạn cho A và C hay không.

Một số bài toán áp dụng Graph Database

  • Phát hiện mối liên hệ giữa những người dùng có quen biết nhau, có tương tác giống nhau trên mạng xã hội.
  • Phát hiện các hành vi vi phạm tài chính, ví dụ như hành vi rửa tiền khi chuyển khoản qua nhiều tài khoản, nhiều ngân hàng khác nhau
  • Phát hiện gian lận thẻ tín dụng, nơi có thể bị rò rỉ thông tin rẻ, phát hiện gian lận trong đền bù bảo hiểm, lợi dụng chính sách phúc lợi của nhà nước
  • Gợi ý kết bạn dựa trên mối quan hệ bạn bè hiện có của tài khoản mạng xã hội
  • Phát hiện điểm yếu trong hệ thống lưới điện, hệ thống ống nước, kiểm soát hệ thống mạng và phát hiện hack
  • Tối ưu đường bay của máy bay thương mại, tối ưu đường vận tải của các xe chở hàng
  • Nghiên cứu khoa học về sinh học

Neo4j

Neo4j là hệ quản trị cơ sở dữ liệu đồ thị, được giới thiệu đầu tiên vào năm 2007 và công bố phiên bản 1.0 vào năm 2010. Hiện nay, neo4j là một trong các cơ sở dữ liệu đồ thị mã nguồn mở phổ biến nhất. Ne04j hỗ trợ ngôn ngữ truy vấn Cypher, một ngôn ngữ rất trực quan trong việc truy vấn dữ liệu dưới dạng Graph.

Movie Database

Data Modeling

Nodes

Nodes thường được sử dụng để biểu diễn các thực thể (entities). Đồ thị đơn giản nhất là đồ thì mà trong đó chỉ có duy nhất một node.

Ví dụ: Node đại diện cho phim “The Matrix”

Labels

Labels có thể được sử dụng để mô hình hóa miền giá trị của các node lại với nhau, thông thường chúng ta sẽ gộp nhóm các node có cùng kiểu dữ liệu hoặc là thuộc tính thành một tập hợp rồi sau đó gắn label vào cho chúng.

Ví dụ: Ở cơ sở dữ liệu Movie trên,  các node thể hiện thông tin cho Movie sẽ được gán nhãn là  “Movie”.

Mỗi một node thì có thể có một hoặc nhiều lables.

Relationships

Relationships đúng như cái tên của nó đó là sẽ biểu mối quan hệ, hay liên kết giữa các node với nhau. Ngoài ra relationship còn có thể cấu trúc phân chia các nodes thành những cấu trúc khác nhau, biến đồ thị thành các dạng cấu trúc giống như là list, tree, map, hoặc có thể là thực thể phức hợp (compound entity). Thực thể phức hợp là thực thể có nhiều liên kết phức tạp liên kết với nhau.

Trong Neo4j, mỗi Relationship là một cạnh có hướng nối Node nguồn và Node đích. Một Node có thể có cạnh nối với chính nó.

Relationship Types

Mỗi Relationship chỉ có duy nhất một Relationship Types. Relationship Type giúp ta biết được mối quan hệ giữa các Node là gì. Việc đặt type cho Relationship giúp chúng ta dễ hình dung được Node nào là Node nguồn và Node nào là Node đích.

Ví dụ: Ở Graph trên, các node đại diện cho Person sẽ có liên kết với node đại diện cho Movie. Cụ thể, Joel Silver [:ACTED_IN] The Matrix (đóng phim) hay Andy Wachowski [:DIRECTED] The Matrix (đạo diễn).

Properties

Properties là một cặp key-value thể hiện các thuộc tính của Node hoặc Relationship. Các value có thể có các kiểu dữ liệu như number, string, boolean hoặc list.

Ví dụ: Node Movie có các thuộc tính như: tagline, title, released

Traversals and Paths

Traversal là cách mà chúng ta truy vấn dữ liệu để trả lời cho một câu hỏi. Travesaling một đồ thị nghĩa là chúng ta bắt đầu từ một Node và lần theo các Relationship theo các quy tác nào đó. Hầu như chúng ta chỉ cần lần theo Đồ thị con của Đồ thị (dựa vào các Label, các Relationship Type).

Kết quả của traversal có thể trả về là một đường đi (path) từ Node này đến Node kia.

Schema

Schema trong Neo4j bao gồm Indexes và Constraints.

  • Indexes được sử dụng để tăng hiệu suất cho câu truy vấn, lý do chính cho việc sử dụng Indexes là khi truy vấn dữ liệu trên đồ thị, chúng ta bắt đầu bằng một Node và đi qua các Node, việc index giúp cho tìm kiếm các Node một cách nhanh chóng. Có thể đánh index trong bất cứ thời điểm nào, tuy nhiên khi có dữ liệu, việc đánh index sẽ tốn nhiều thời gian hơn.
  • Constraints được sử dụng để chắc chắn rằng các thuộc tính tuân thủ các luật nào đó.

Cypher

Cypher là ngôn ngữ truy vấn trong Neo4j. Các câu query là tập hợp các mệnh đề được liên kết với nhau.

  • MATCH: tìm kiếm theo pattern. OPTIONAL MATCH tương tự MATCH nhưng sẽ trả về kết quả Null nếu có missing trong pattern.
  • MERGE: đảm bảo pattern luôn tồn tại trong đồ thị, nếu không tồn tại, MERGE sẽ giúp tạo pattern đó.
  • WITH: thực hiện các thao tác với các output trước khi sang các mệnh đề khác.
  • WHERE: Thêm các ràng buộc cho pattern.
  • RETURN: Định nghĩa kết quả trả về.
  • CREATE: Tạo Node, Relationship hoặc một Path.
  • DELETE: Xóa Node, Relationship.
  • SET: Dùng để cập nhật Labels, Properties.
  • LIMIT, ORDER BY : tương tự như SQL.

Ví dụ: Câu lệnh truy vấn bên dưới sẽ trả về thông tin các bộ phim được diễn bởi những diễn viên nào.

MATCH (p:Person)-[:ACTED_IN]->(m:Movie) RETURN p, m

Import Data into Neo4j by CSV File

Khi việc thêm từng node trong Graph qúa tốn thời gian thì việc import dữ liệu theo một định đạng cho trước sẽ là lựa chọn tốt nhất. Ở phần này, chúng ta sẽ import dữ liệu của Movie Database vào Neo4j. Đầu tiên  cần có 3 files csv  như sau:

person.csv

id,name 1,Charlie Sheen 2,Michael Douglas 3,Martin Sheen 4,Morgan Freeman 

movie.csv

id,title,country,year 1,Wall Street,USA,1987 2,The American President,USA,1995 3,The Shawshank Redemption,USA,1994 

roles.csv

personId,movieId,role 1,1,Bud Fox 4,1,Carl Fox 3,1,Gordon Gekko 4,2,A.J. MacInerney 3,2,President Andrew Shepherd 5,3,Ellis Boyd 'Red' Redding 

Lưu ý: Các file csv này đều có headers, tức phần tên của mỗi cột.

Import Person nodes into Database

LOAD CSV WITH HEADERS FROM "file:///persons.csv" AS csvLine CREATE (p:Person id: toInteger(csvLine.id), name: csvLine.name) 

Import Movie nodes into Database

LOAD CSV WITH HEADERS FROM "file:///movies.csv" AS csvLine MERGE (country:Country name: csvLine.country) CREATE (movie:Movie id: toInteger(csvLine.id), title: csvLine.title, year:toInteger(csvLine.year)) CREATE (movie)-[:ORIGIN]->(country) 

Import Relationships between Person and Movie nodes

USING PERIODIC COMMIT 500 LOAD CSV WITH HEADERS FROM "file:///roles.csv" AS csvLine MATCH (person:Person id: toInteger(csvLine.personId)), (movie:Movie id: toInteger(csvLine.movieId)) CREATE (person)-[:ACTED_IN role: csvLine.role]->(movie) 

Như vậy, trong bài này chúng ta đã có thể làm quen với khái niệm Graph Database và một trong những hệ quản trị cơ hệ dữ liệu đồ thị phổ biến nhất hiện tại là Neo4j. Trong bài tiếp theo chúng ta sẽ tìm hiểu sâu hơn cách mà Graph Database hoạt động nói chung và Neo4j nói riêng, ứng dụng thực tế của chúng như thế nào?

Bái bai mọi người! 😀

Nguồn tham khảo:

[1] https://medium.com/lehuynhduc/giới-thiệu-neo4j-và-graph-database-38900eacb982

[2] https://neo4j.com/docs/



Các câu hỏi về neo4j là gì


Nếu có bắt kỳ câu hỏi thắc mắt nào vê neo4j là gì hãy cho chúng mình biết nhé, mõi thắt mắt hay góp ý của các bạn sẽ giúp mình cải thiện hơn trong các bài sau nhé <3 Bài viết neo4j là gì ! được mình và team xem xét cũng như tổng hợp từ nhiều nguồn. Nếu thấy bài viết neo4j là gì Cực hay ! Hay thì hãy ủng hộ team Like hoặc share. Nếu thấy bài viết neo4j là gì rât hay ! chưa hay, hoặc cần bổ sung. Bạn góp ý giúp mình nhé!!

Các Hình Ảnh Về neo4j là gì


Các hình ảnh về neo4j là gì đang được chúng mình Cập nhập. Nếu các bạn mong muốn đóng góp, Hãy gửi mail về hộp thư [email protected] Nếu có bất kỳ đóng góp hay liên hệ. Hãy Mail ngay cho tụi mình nhé

Tra cứu thêm báo cáo về neo4j là gì tại WikiPedia

Bạn có thể tra cứu thông tin về neo4j là gì từ trang Wikipedia.◄ Tham Gia Cộng Đồng Tại

💝 Nguồn Tin tại: https://hangnhatcaocap.com.vn/

💝 Xem Thêm Chủ Đề Liên Quan tại : https://hangnhatcaocap.com.vn/wiki-hoi-dap/

Related Posts

About The Author