2013-07-10 43 views
8

Tôi mới làm quen với đồ thị và câu hỏi rất thú vị của nó. Câu hỏi này có thể là một câu hỏi nhưng hãy trang web một số tài liệu tốt.Làm thế nào để lưu trữ dữ liệu đồ thị trong cơ sở dữ liệu?

Tôi đang cố gắng tạo một Mạng xã hội nhỏ, trong đó mỗi người dùng là một nút và đã không kết nối với bạn bè của mình.

Làm việc tốt nhưng bây giờ tôi muốn lưu trữ nó trong cơ sở dữ liệu.

Làm thế nào để lưu trữ tất cả các nút được kết nối (con trỏ) của một nút.

Có tốt hơn khi xóa bộ nhớ sau khi người dùng đăng xuất và đọc nó từ cơ sở dữ liệu khi đăng nhập hoặc nên đăng nhập và đăng xuất không nên có bất kỳ tác động nào lên nút?

Tôi biết lý thuyết của nó. Bất kỳ tài liệu tham khảo sẽ thực sự hữu ích.

Trả lời

2

Tôi bắt đầu ở dưới cùng.

Có tốt hơn khi xóa bộ nhớ sau khi người dùng đăng xuất và đọc nó từ cơ sở dữ liệu khi đăng nhập hoặc đăng nhập và đăng xuất không có ảnh hưởng đến nút?

Bạn sẽ cần một số loại bộ nhớ vĩnh viễn hoặc mất tất cả dữ liệu bạn đã mua vào lần khởi động/lần khởi động đầu tiên có thể làm người dùng khó chịu.

Làm cách nào để lưu trữ dữ liệu? Vâng mà không biết thêm về điều này nó là khó tuy nhiên giả sử rằng bạn có một danh sách người dùng và mỗi người dùng có thể có 0 hoặc nhiều bạn bè sau đó tôi sẽ đi với 2 bảng.

  • Người dùng - lưu trữ tất cả thông tin người dùng của bạn như tên người dùng và mật khẩu
  • UsersFriends * - lưu trữ tất cả các mối quan hệ trong một UserID -> UserID thời trang *

Ví dụ

Người dùng Bảng

UserID Username 
1  user2511713 
2  abstracthchaos 
3  anotheruser 

UsersFriends

UserID FriendUserID 
1   3 
2   3 
1   2 

Phương tiện user2511713 là bạn bè với anotheruser & abstracthchaos và abstracthchaos kết bạn với anotheruser, phụ thuộc vào logic kinh doanh của bạn nó cũng có thể hữu ích để ngụ ý cách khác xung quanh như vậy 3 1 is the same as 1 3

+1

Nếu tôi làm như vậy (bảng thứ hai) sau đó whats sử dụng graph.It tất cả sau đó sôi xuống hiệu quả của cơ sở dữ liệu của tôi không phải là cấu trúc dữ liệu tôi đang sử dụng – user2511713

8

Sử dụng cơ sở dữ liệu biểu đồ thực tế để lưu trữ dữ liệu của bạn.

http://www.neo4j.org/

Bạn có thể lưu trữ cặp khóa/giá trị trong một nút và bạn cũng có thể lưu trữ các cạnh nối các nút.

Sau đó, bạn có thể sử dụng thứ gì đó như Gremlin để truy vấn/duyệt biểu đồ - https://github.com/tinkerpop/gremlin. Xem tài liệu của mình để tải về các ví dụ và chạy các truy vấn mẫu: https://github.com/tinkerpop/gremlin/wiki/Getting-Started

Một ý tưởng về cú pháp:

gremlin> // lets only take 'knows' labeled edges 
gremlin> v.out('knows') 
==>v[2] 
==>v[4] 
gremlin> // lets do a traversal from the '1' marko vertex to its outgoing edges. 
gremlin> // in the property graph world, edges are first class citizens that can be traversed to. 
gremlin> v.outE 
==>e[7][1-knows->2] 
==>e[9][1-created->3] 
==>e[8][1-knows->4] 
Các vấn đề liên quan