LogoDuyệtSr. Data Engineer
HomeAboutPhotosInsightsCV

Footer

Logo

Resources

  • Rust Tiếng Việt
  • /archives
  • /series
  • /tags
  • Status

me@duyet.net

  • About
  • LinkedIn
  • Resume
  • Projects

© 2026 duyet.net | Sr. Data Engineer | 2026-02-27

Graph Database

Note: This post is over 11 years old. The information may be outdated.

Bài trước tôi có nói về Columnar Database và Graph Database. Mục đích là so sánh và đi sâu vào Graph Database. Tiếp đến là xử lý Graph Database với Big Data.

Graph (đồ thị)

Đồ 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. (Wikipedia).

Graph Database

Graph Database 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. Dĩ nhiên Graph Database cũng sẽ có những ưu, khuyết điểm, những trường hợp nên và không nên sử dụng.

Khi nào sử dụng Graph Database

Quay lại CSDL quan hệ, chúng ta đã quá quen với cách biểu diễn theo từng quan hệ truyền thống, nhưng với những bài toán cần nhiều quan hệ việc sử dụng Relation Database để lưu trữ không phải là một giải pháp hay vì :

  • Việc biểu diễn quan hệ dưới dạng bảng không phải là một cách làm trực quan.
  • Các phép kết bảng thường tốn rất nhiều chi phí, nhất là với lượng dữ liệu phức tạp, lớn hoặc cực lớn.

Graph Database liên kết trực tiếp giữa các thực thể (các đỉnh). Do đó Graph giúp trả lời rất nhiều câu hỏi liên quan đến truy vấn dữ liệu một cách hiệu quả hơn so với Relation Database, đồng thời khả năng trực quan hoá dữ liệu của Graph so với Relation Database cũng tốt hơn rất nhiều.

Giả sử ta có một cơ sở dữ liệu quan hệ lưu trữ thông tin người dùng và các bạn bè của họ. Rất phức tạp và tốn nhiều chi phí nếu muốn trả lời các câu hỏi sau:

  • Ai là bạn của bạn Alice.
  • Ai là bạn chung của Alice và Bob.
  • Giả sử Alice không quen Bob, vậy họ phải thông qua những ai để có thể làm quen với nhau một cách nhanh nhất.

Tuy nhiên Graph Database trả lời câu hỏi trên một cách rất trực tiếp và đơn giản!

Neo4j

Neo4j là một trong những Graph Database phổ biển nhất hiện nay.

Quy ước:

  • Đỉnh trong Neo4j

  • được ký hiệu là (A)

  • có thể có nhiều thuộc tính dưới dạng key:value

  • có thể có một hoặc nhiều nhãn (B: Person) : B có nhãn là Person

  • Cạnh trong Neo4j

  • được ký hiệu là -[rel]-

  • có thể có nhiều thuộc tính dưới dạng key:value

  • có duy nhất một kiểu của cạnh : (a)-[rel:KNOW]-(b) mô tả a và b được liên kết với nhau bởi cạnh rel có kiểu là KNOW

  • có thể có hướng : (a)-[rel:KNOW]->(b)

Cài đặt Neo4j

Download Neo4j bản mới nhất tại trang chủ: https://neo4j.com

Khởi chạy Neo4j bằng lệnh bin/neo4j start

Truy cập: http://localhost:7474 để sử dụng và truy vấn.

Neo4j trong môi trường Big Data

Lưu trữ graph bằng Neo4j thì toàn bộ graph phải nằm trên một máy duy nhất. Đây là nhược điểm rất lớn của Neo4j, điều này khiến việc lưu trữ một big graph bao gồm rất nhiều đỉnh và cạnh bằng Neo4j là rất khó khăn.

Tuy nhiên vào năm 2010 Google có publish một bài báo về Pregel một mô hình hiệu quả cho việc xử lý big graph. Sau đó hai năm, apache đưa ra thư viện mã nguồn mở mới cài đặt mô hình Pregel là Apache Giraph trên hệ sinh thái Hadoop.

Đây chính là giải pháp cho việc lưu trữ và xử lý cho các bài toán liên quan đến big graph.

Giraph tôi sẽ trình bày trong những bài sau.

Feb 3, 2016·10 years ago
|Data|
DatabaseBig Data
|Edit|

Related Posts

Bigdata - Columnar Database và Graph Database

Như đã nói về big data, chúng ta có các loại dữ liệu khác nhau và chúng ta cần lưu trữ trong database. Bigdata có thể xử lý và lưu trữ trên nhiều loại CSDL khác nhau. Sau đây tôi sẽ nói 1 ít về columnar Database và Graph Database.

Feb 3, 2016·10 years ago
Read more

Manage Redshift/Postgres Privileges GitOps Style

The grant project aims to manage Postgres and Redshift database roles and privileges in GitOps style. Grant is the culmination of my learning of Rust for data engineering tools.

Feb 24, 2022·4 years ago
Read more

Good reasons to use ClickHouse

More than 200+ companies are using ClickHouse today. With many features support, it's equally powerful for both Analytics and Big Data service backend.

Aug 29, 2021·5 years ago
Read more

Postgres Full Text Search

Postgres has built-in functions to handle Full Text Search queries. This is like a "search engine" within Postgres.

Jul 4, 2021·5 years ago
Read more
On this page
  • Graph (đồ thị)
  • Graph Database
  • Khi nào sử dụng Graph Database
  • Neo4j
  • Cài đặt Neo4j
  • Neo4j trong môi trường Big Data
On this page
  • Graph (đồ thị)
  • Graph Database
  • Khi nào sử dụng Graph Database
  • Neo4j
  • Cài đặt Neo4j
  • Neo4j trong môi trường Big Data