Property graph & Cypher
Đồ thị thuộc tính: đỉnh, cạnh, và nhãnProperty graphs: vertices, edges, labels
Trong mô hình property graph, mỗi đỉnh có một định danh, tập cạnh đi ra, đi vào và một tập cặp khóa-giá trị; mỗi cạnh cũng có định danh, đỉnh đầu, đỉnh cuối, một nhãn mô tả quan hệ và các thuộc tính riêng15. Kleppmann lấy Neo4j, Titan và InfiniteGraph làm ví dụ hiện thực1. Ngôn ngữ đi kèm phổ biến nhất là Cypher, mà Neo4j mô tả thẳng là ngôn ngữ truy vấn khai báo cho cơ sở dữ liệu đồ thị thuộc tính16; đặc tả mở của nó được công bố dưới tên openCypher17.
Tưởng tượng một tấm bản đồ đầy chấm tròn và mũi tên. Mỗi chấm là một thứ (một người, một thành phố), mỗi mũi tên là một mối liên hệ và có tên hẳn hoi: "là bạn của", "sinh ra ở". Bạn hỏi bằng cách vẽ hình mẫu mình muốn tìm — "chấm nào có mũi tên sinh ra ở chỉ tới Huế?" — rồi máy đi dò. Nhớ nhé: hỏi đồ thị là mô tả hình mẫu, không phải chỉ đường.
In the property graph model each vertex has an identifier, a set of outgoing and incoming edges, and a set of key-value properties; each edge has an identifier, a tail and head vertex, a label describing the relationship, and its own properties15. Kleppmann names Neo4j, Titan and InfiniteGraph as implementations1. The best-known companion language is Cypher, which Neo4j describes outright as a declarative query language for property graph databases16; its open specification is published as openCypher17.
Sức mạnh thậtĐồ thị chịu được
tiến hóa: thêm một loại quan hệ mới chỉ là thêm một nhãn cạnh, không phải đổi lược đồ. Với dữ liệu mà cấu trúc còn đang lớn lên, đó là ưu thế lớn
1.
Điểm mạnhMuốn thêm kiểu quan hệ mới thì chỉ cần vẽ thêm một loại mũi tên, không phải làm lại cả tấm bản đồ.
The real strengthGraphs absorb
evolution: adding a new kind of relationship is just a new edge label, not a schema change. For data whose structure is still growing, that is a big advantage
1.
Truy vấn nhiều bước
Điều đồ thị làm gọn mà SQL cổ điển làm cồng kềnh là đi nhiều bước với số bước chưa biết trước: "tìm mọi người cách tôi từ một tới ba bước quen biết". Trong Cypher đó là một mẫu đường đi có độ dài thay đổi16; trong SQL phải viết truy vấn đệ quy phức tạp hơn nhiều1.
Sau khi sách xuất bản
Cuốn sách ra năm 2017 khi mỗi hệ đồ thị còn một phương ngữ riêng. Từ đó, nỗ lực chuẩn hóa GQL — kế thừa trực tiếp tinh thần của Cypher và openCypher — đã hình thành một ngôn ngữ truy vấn đồ thị chung24. Đây là diễn biến sau nội dung chương, nêu ra để bạn không đọc chương như bản đồ hiện trạng.