Thứ tư, 15/01/2014 | 00:00 GMT+7

Cách cài đặt Neo4J trên VPS Ubuntu

Đồ thị là một tập hợp các đỉnh được nối với nhau bởi các cạnh. Trong lĩnh vực database , biểu đồ là một tập hợp các mục với mỗi mục có bất kỳ kiểu quan hệ nào với một mục khác trong tập dữ liệu.


Đồ thị là gì?


Đỉnh và cạnh là gì?


  • Các đỉnh - Các đỉnh là các điểm dữ liệu trong một biểu đồ. Đối với những người quen thuộc với bất kỳ dạng database SQL nào, một đỉnh có thể được xem như một hàng / bản ghi. Đối với những người không quen thuộc với SQL, một đỉnh có thể được xem như một phần dữ liệu.

  • Edges - Cạnh là mối quan hệ giữa hai đỉnh khác nhau. Một cạnh khó có thể chuyển thành các thuật ngữ SQL vì chúng linh hoạt như thế nào với database đồ thị, nhưng một cạnh có thể được xem như cách hai phần dữ liệu được kết nối.

Thí dụ


Mạng xã hội là một trong những ví dụ tốt nhất về biểu đồ mà hầu hết mọi người có thể liên quan đến. Trong mạng xã hội, bạn có mọi người và bạn có mối quan hệ giữa mỗi người. Con người được biểu diễn dưới dạng đỉnh và các mối quan hệ được biểu diễn dưới dạng cạnh. Có nhiều loại mối quan hệ khác nhau như: kết hôn, bạn bè với, trong mối quan hệ với, làm việc cùng, vv Điều này cũng tương tự đối với đồ thị. Có vô số khả năng cho các loại cạnh khác nhau và có vô số khả năng cho các loại đỉnh khác nhau.

Một ví dụ bằng hình ảnh


<img src = “https://assets.digitalocean.com/articles/Neo4J_Ubuntu/1.png”>

Trong hình này, các đỉnh của đồ thị chỉ là số nguyên và các cạnh không được gắn nhãn. Mặc dù đơn giản, đây vẫn là một đồ thị.

Đồ thị có trọng số


Trong ví dụ về một công ty hàng không, khi giải quyết việc đưa máy bay từ điểm A đến điểm B, bạn muốn chọn con đường tốt nhất có thể để máy bay cất cánh. Hãy để các sân bay được hình dung như các đỉnh và các đường bay giữa chúng là các cạnh.

<img src = “https://assets.digitalocean.com/articles/Neo4J_Ubuntu/2.png”>

Mỗi cạnh được ấn định một trọng lượng, hoặc một chi phí, để sử dụng nó. Ở đây, trọng lượng thể hiện khoảng cách giữa hai sân bay. Vì vậy, ví dụ, trong biểu đồ trên, chi phí để đi từ LAX đến ORD là 1749. Biểu đồ có trọng số đặc biệt hữu ích trong biểu diễn dữ liệu địa lý trong đó khoảng cách là một yếu tố.

Database đồ thị


Database đồ thị là database NoSQL lưu trữ thông tin dưới dạng đỉnh và cạnh ( các node và mối quan hệ). Thay vì có foreign keys và câu lệnh select, bạn sử dụng các cạnh và đường truyền biểu đồ để truy vấn dữ liệu. Phương pháp truy vấn dữ liệu này cực kỳ mạnh mẽ trong nhiều trường hợp như mạng xã hội, sinh học, hóa học, phân tích kinh doanh và bất kỳ tình huống nào mà dữ liệu được thể hiện tốt nhất dưới dạng các mục có mối quan hệ với các mục khác trong tập dữ liệu.

Trong hướng dẫn này, ta sẽ cài đặt Neo4J: một database đồ thị cực kỳ phổ biến với nhiều ràng buộc ngôn ngữ cho khá nhiều ngôn ngữ lập trình phổ biến.

Cài đặt Neo4J


Thêm khóa Neo4J vào trình quản lý gói apt:

wget -O - http://debian.neo4j.org/neotechnology.gpg.key | apt-key add - 

Thêm Neo4J vào danh sách nguồn Apt:

echo 'deb http://debian.neo4j.org/repo stable/' > /etc/apt/sources.list.d/neo4j.list 

Cập nhật trình quản lý gói:

apt-get update 

Cài đặt Neo4J:

apt-get install neo4j 

Neo4J sẽ được chạy. Bạn có thể kiểm tra bằng lệnh sau

service neo4j-service status 

API RESTful của Neo4J và Ngôn ngữ truy vấn Cypher


Một trong những điều làm cho Neo4J trở nên tuyệt vời là nó có API RESTful rất dễ sử dụng, nghĩa là nó được dùng bởi hầu như bất kỳ ngôn ngữ lập trình nào có thể thực hiện các yêu cầu web. Nhiều hoạt động được thực hiện trên database Neo4J được thực thi bằng truy vấn Cypher. Ngôn ngữ truy vấn Cypher là ngôn ngữ truy vấn được Neo4J sử dụng để thao tác và đọc dữ liệu. Cypher là Neo4J vì SQL là MySQL.

Cấu trúc của một yêu cầu web đối với API Neo4J RESTful như sau:

curl -H "Accept: application/json; charset=UTF-8" -H "Content-Type: application/json" -X POST http://SERVERNAME:7474/db/data/cypher -d '{                                                         "query" : "CYPHER QUERY GOES HERE",   "params" : {     QUERY PARAMETERS GO HERE   } }' 

Thêm dữ liệu vào Neo4J


Neo4J là một database và database cần dữ liệu, vì vậy hãy thêm một số dữ liệu!

Tạo một nút mới:

curl -H "Accept: application/json; charset=UTF-8" -H "Content-Type: application/json" -X POST http://localhost:7474/db/data/cypher -d '{                                                         "query" : "CREATE (n:Person { name : {name} }) RETURN n",   "params" : {     "name" : "Foo"   } }' 

Tôi đã đề cập trước đó rằng database đồ thị lưu trữ dữ liệu dưới dạng các node và mối quan hệ. Một mối quan hệ yêu cầu hai nút, vì vậy hãy tạo một nút khác:

curl -H "Accept: application/json; charset=UTF-8" -H "Content-Type: application/json" -X POST http://localhost:7474/db/data/cypher -d '{                                                         "query" : "CREATE (n:Person { name : {name} }) RETURN n",   "params" : {     "name" : "Bar"   } }'  

Bây giờ ta có thể tạo mối quan hệ giữa hai nút này:

curl -H "Accept: application/json; charset=UTF-8" -H "Content-Type: application/json" -X POST http://localhost:7474/db/data/node/0/relationships -d '{   "to" : "http://localhost:7474/db/data/node/1",   "type" : "Comes Before" } }' 

Sử dụng Cypher để truy vấn Neo4J


Dưới đây là một số truy vấn cypher ví dụ mà ta có thể sử dụng để xem dữ liệu mà ta đã chèn trước đó.

Ta có thể bắt đầu ở nút đầu tiên mà ta đã tạo và nhận tất cả các node được kết nối và các mối quan hệ tương ứng:

curl -H "Accept: application/json; charset=UTF-8" -H "Content-Type: application/json" -X POST http://localhost:7474/db/data/cypher -d '{   "query" : "MATCH (x {name: {startName}})-[r]->(n) RETURN type(r), n.name",   "params" : {      "startName" : "Foo"   } }' 

Trả về thuộc tính tên của tất cả các node trong biểu đồ (Lưu ý: Điều này không nên được thực hiện trên đồ thị lớn):

curl -H "Accept: application/json; charset=UTF-8" -H "Content-Type: application/json" -X POST http://localhost:7474/db/data/cypher -d '{     "query" : "START n = node(*) return n.name",     "params" : {     } }' 

Trả về tất cả các loại mối quan hệ trong biểu đồ (Lưu ý: Điều này không nên được thực hiện trên biểu đồ lớn):

curl -H "Accept: application/json; charset=UTF-8" -H "Content-Type: application/json" -X POST http://localhost:7474/db/data/cypher -d '{     "query" : "START r=rel(*) return type(r) ",     "params" : {     } }' 

Bạn có thể tìm thấy mô tả đầy đủ hơn và danh sách các phương pháp được cung cấp bởi Neo4J RESTful API <a href=p>http://docs.neo4j.org/chunked/milestone/rest-api.html[> tại đây </a> và thông tin về ngôn ngữ truy vấn Cypher có thể được tìm thấy <a href=p>http://docs.neo4j.org/chunked/stable/cypher-query-lang.html[> tại đây </a>.

<div class = “author”> Được gửi bởi: <a href=p>http://blog.opendev.ioosystem> Cooper Thompson </a> </div>


Tags:

Các tin liên quan

Cách sử dụng PM2 để thiết lập môi trường sản xuất Node.js trên VPS Ubuntu
2014-01-10
Cách sử dụng psad để phát hiện nỗ lực xâm nhập mạng trên VPS Ubuntu
2014-01-10
Cách sử dụng Makefiles để tự động hóa các tác vụ lặp đi lặp lại trên Ubuntu VPS
2014-01-07
Cách thiết lập CouchDB với ElasticSearch trên VPS Ubuntu 13.10
2013-12-30
Cách sử dụng Celery với RabbitMQ để xếp hàng các tác vụ trên Ubuntu VPS
2013-12-19
Cách thiết lập một Honeypot Pháo binh trên VPS Ubuntu
2013-12-04
Cách triển khai Bộ sao chép trong MongoDB trên VPS Ubuntu
2013-12-03
Cách tạo một cụm Sharded trong MongoDB bằng VPS Ubuntu 12.04
2013-12-02
Cách sử dụng ApacheBench để thực hiện kiểm tra tải trên VPS Ubuntu 13.10
2013-11-25
Cách cài đặt control panel Ajenti trên Ubuntu 13.04
2013-11-12