2012-03-26 19 views
5

Tôi đã chơi xung quanh bằng cách sử dụng biểu đồ để phân tích dữ liệu lớn. Nó hoạt động rất tốt và thực sự thú vị nhưng tôi tự hỏi phải làm gì khi dữ liệu ngày càng lớn hơn?Có thể lưu trữ đồ thị hbase không? nếu vậy làm thế nào để bạn mô hình hóa cơ sở dữ liệu để hỗ trợ một cấu trúc đồ thị?

Hãy cho tôi biết nếu có giải pháp nào khác nhưng tôi nghĩ thử Hbase vì nó có chiều ngang và tôi có thể lấy hadoop để chạy phân tích trên biểu đồ (hầu hết mã của tôi đã được viết bằng java), nhưng tôi không chắc chắn làm thế nào để cấu trúc một đồ thị trên một cơ sở dữ liệu nosql? Tôi biết mỗi nút có thể là một mục trong cơ sở dữ liệu nhưng tôi không chắc chắn làm thế nào để mô hình cạnh và thêm thuộc tính cho họ (như tên của các nút, thuộc tính, pagerank, trọng số trên các cạnh, vv ..).

Xem cách hbase/hadoop được mô hình hóa sau khi các bảng lớn và bản đồ giảm tôi nghi ngờ có một cách để làm điều này nhưng không chắc chắn như thế nào. Bất kỳ đề xuất?

Ngoài ra, điều này có ý nghĩa với những gì tôi đang cố gắng làm không? hoặc là có giải pháp tốt hơn cho các đồ thị dữ liệu lớn?

+0

Đến điểm - Bạn có thể lưu trữ Đồ thị trong HBase. Nhưng nó không phải là giải pháp tốt nhất để xử lý dữ liệu được liên kết. Traversing sẽ là vấn đề dễ bị. Bạn sẽ cần phải sử dụng bộ lọc để truy xuất dựa trên giá trị (giá trị thuộc tính) trong trường hợp nút nodeid (src) được sử dụng làm khóa hàng. Cách tốt hơn là sử dụng các cơ sở dữ liệu đồ thị có sẵn hỗ trợ BigData. Đây chỉ là một gợi ý, không phải là một câu trả lời, do đó tôi đang thêm vào trong khối bình luận. –

Trả lời

6

Bạn có thể lưu trữ danh sách kề trong HBase/Accumulo trong cột theo định hướng thời trang. Tôi quen thuộc hơn với Accumulo (HBase ngữ có thể là hơi khác nhau), do đó bạn có thể sử dụng một sơ đồ tương tự như:

SrcNode(RowKey) EdgeType(CF):DestNode(CFQ) Edge/Node Properties(Value) 

đâu CF = ColumnFamily và CFQ = ColumnFamilyQualifier

Bạn có thể cũng cửa hàng nút/đỉnh tài sản như hàng riêng biệt sử dụng một cái gì đó như:

Node(RowKey) PropertyType(CF):PropertyValue(CFQ) PropertyValue(Value) 

các PropertyValue có thể là một trong hai trong CFQ hoặc giá trị

Từ một quá trình graph quan điểm ing như đã đề cập bởi @Arnon Rotem-Gal-Oz, bạn có thể xem Apache Giraph là triển khai Google Pregel. Pregel là phương thức mà Google sử dụng để xử lý đồ thị lớn.

Sử dụng HBase/Accumulo như là đầu vào để giraph đã được gửi gần đây (ngày 07 tháng 3 2012) là một yêu cầu tính năng mới để Giraph: HBase/Accumulo Input and Output formats (GIRAPH-153)

2

Bạn có thể lưu trữ biểu đồ trong HBase dưới dạng danh sách kề kề, ví dụ, mỗi cột sẽ có các cột cho thuộc tính chung (tên, pagerank, v.v.) và danh sách các nút của các nút liền kề (nếu nó là đồ thị được hướng các nút bạn có thể nhận được từ nút này hoặc cột bổ sung theo hướng của mỗi nút)

Hãy xem apache Giraph (bạn cũng có thể đọc thêm một chút về nó here) trong khi đó không phải là về HBase. đồ thị trong Hadoop. Ngoài ra, bạn có thể muốn xem Hadoop 0.23 (và lên) vì động cơ YARN (còn gọi là map/reduce2) mở rộng hơn đối với các thuật toán không phải bản đồ/giảm bớt

1

tôi sẽ không sử dụng HBase trong cách "Nerd Binary "đề xuất nó as HBase does not perform very well when handling multiple column families.

hiệu suất tốt nhất đạt được với một gia đình cột đơn (một thứ hai chỉ nên được sử dụng nếu bạn rất thường xuyên chỉ truy cập vào nội dung của một gia đình cột và các dữ liệu được lưu giữ trong gia đình cột khác là rất lớn)

+0

bạn không cần phải sử dụng nhiều gia đình cột. Một cái duy nhất, là đủ. Chuyên mục thứ hai dành riêng cho Edges sẽ vẫn hoạt động tốt. Đề xuất tối đa là hai. Tuy nhiên, bạn có thể lưu trữ các cạnh dưới một cột chuyên dụng trong một họ cột đơn. – gextra

1

Có cơ sở dữ liệu đồ thị xây dựng trên đầu trang của HBase bạn có thể thử và/hoặc nghiên cứu.

Apache S2Graph cung cấp API REST để lưu trữ, truy vấn dữ liệu biểu đồ được biểu thị bằng cạnh và đỉnh.Ở đó bạn có thể tìm thấy một bài thuyết trình, nơi mà việc xây dựng các phím hàng/cột được giải thích. Phân tích hiệu suất hoạt động có ảnh hưởng hoặc bị ảnh hưởng bởi thiết kế cũng được đưa ra.

Titan có thể sử dụng các chương trình phụ trợ lưu trữ khác ngoài HBase và có tích hợp với khung phân tích. Nó cũng được thiết kế với bộ dữ liệu lớn trong tâm trí.