2009-07-21 29 views
20

Có một số hype around graph databases. Tôi tự hỏi tại sao.Hype xung quanh cơ sở dữ liệu đồ thị ... tại sao?

Những vấn đề có thể xảy ra trong môi trường web ngày nay có thể được giải quyết bằng cách sử dụng cơ sở dữ liệu đồ thị là gì? Và các cơ sở dữ liệu đồ thị có phù hợp với các ứng dụng cổ điển, tức là một cơ sở dữ liệu có thể được sử dụng để thay thế cho một cơ sở dữ liệu quan hệ không? Vì vậy, trên thực tế nó là hai câu hỏi trong một.

liên quan:Has anyone used Graph-based Databases (http://neo4j.org/)?

Trả lời

20

Nhiều cơ quan đại diện quan hệ của đồ thị không phải là đặc biệt hiệu quả cho tất cả các hoạt động bạn có thể muốn thực hiện. Ví dụ, nếu người ta muốn tập hợp được kết nối của tất cả các nút trong đó các cạnh thỏa mãn một biến vị ngữ đã cho, bắt đầu từ một nút đã cho, thì không có cách tự nhiên nào trong SQL để diễn tả điều đó. Có khả năng bạn sẽ làm một truy vấn cho các cạnh với biến vị ngữ, và sau đó phải loại bỏ các cạnh bị ngắt kết nối cục bộ, hoặc có một cuộc hội thoại rất dài với máy chủ cơ sở dữ liệu sau một tập hợp các liên kết đến tiếp theo trong các truy vấn lặp lại.

Đồ thị không phải là sự thay thế chung cho cơ sở dữ liệu quan hệ. RDB xử lý chủ yếu trong các bộ (bảng), trong khi đồ thị chủ yếu là thú vị vì "hình dạng" của các kết nối. Với các DB quan hệ bạn theo các liên kết của một độ sâu xác định trước (các số kết nối cố định) giữa các bộ, với kết quả được lọc và nhóm lại dần dần, trong khi các đồ thị thường được điều hướng đến độ sâu tùy ý và được xác định đệ quy (tức là không phải số lượng được xác định trước) . Bạn có thể lạm dụng hoặc để phù hợp với đặc điểm của người khác, nhưng họ sẽ có những điểm mạnh khác nhau.

+0

Đóng cửa chuyển tiếp có thể không phải là một phần của tiêu chuẩn SQL (và có thể khó thực hiện trong trường hợp chung hoặc nhiều nhà cung cấp hơn) nhưng không khó thực hiện cho một ứng dụng cụ thể bằng cách sử dụng các thủ tục được lưu trữ. – finnw

+3

Chắc chắn; nhưng phải viết các truy vấn đặc biệt như các thủ tục lưu sẵn có thể đặt một nếp uốn theo phong cách của bạn. –

+3

@finnw Vấn đề không thể thực hiện được, các vấn đề là hiệu quả và hiệu suất. Để đạt được hiệu suất đọc tốt, bạn phải hy sinh hiệu suất chèn và lãng phí nhiều không gian đĩa. Bài viết này: http://www.codeproject.com/KB/database/Modeling_DAGs_on_SQL_DBs.aspx phác thảo cách thức này có thể được thực hiện bằng cách sử dụng các thủ tục được lưu trữ để chèn và SQL chung cho lần đọc. – nawroth

3

Theo ý kiến ​​của tôi, các trang mạng xã hội có thể được hưởng lợi từ cơ sở dữ liệu đồ thị vì biểu đồ là cách lưu trữ tự động giữa người dùng.

2

Answwer để Q1: định tuyến

Các vấn đề liên quan