NEO4J LÀ GÌ

  -  

cũng có thể bạn vẫn khôn xiết rất gần gũi cùng với việc tầm nã vấn cửa hàng dữ liệu bởi ngữ điệu SQL. SQL là ngôn từ truy vấn vấn có cấu trúc được áp dụng cho những các đại lý dữ liệu quan hệ tình dục như Mysql, PostgreSquốc lộ,... . Tuy nhiên, những hệ quản trị đại lý tài liệu phi quan hệ nam nữ NoSQL lại không sử dụng ngôn từ này. Nếu bạn đang tò mò cửa hàng dữ liệu đồ gia dụng thị như Neo4j, Infinite graph,... hãy bắt đầu với Cypher.

Bạn đang xem: Neo4j là gì

Trong nội dung bài viết này, bản thân vẫn reviews mang lại các bạn về Cypher - ngữ điệu tầm nã vấn cơ sở tài liệu thiết bị thị.

1. Những có mang cơ bản

Cypher là ngôn từ truy hỏi vấn thứ thị của Neo4j cho phép người dùng lưu trữ và tróc nã xuất tài liệu từ bỏ các đại lý dữ liệu đồ dùng thị. Cypher được dùng để làm truy hỏi vấn cũng giống như update những đồ thị (Graph). Cypher dựa trên thẩm mỹ và nghệ thuật ASCII, bởi vậy cú pháp của nó dễ nắm bắt cùng có tác dụng cho các truy nã vấn dễ dàng nắm bắt rộng. Nó tập trung vào vấn đề diễn đạt ví dụ hầu như gì đề nghị truy xuất xuất phát từ một biểu trang bị, chứ đọng không phải về cách truy vấn nó.Cypher Được xem như là ngôn từ truy tìm vấn đồ gia dụng thị dễ dàng tò mò tốt nhất.

*

1.1 Những định nghĩa cơ phiên bản của đại lý dữ liệu Neo4j

Vì Cypher là ngôn từ tróc nã vấn của Neo4j, yêu cầu mình vẫn ra mắt qua về một số định nghĩa cơ phiên bản của Neo4j. Để dễ nắm bắt, mình vẫn so sánh những định nghĩa này với những định nghĩa không còn xa lạ trong RDBMS.

RDBMSNeo4j
TableGraph
RowNode
column and dataproperty và value
constrainrelationship
jointraversal

Neo4j lưu trữ dữ liệu bên trên những nút ít, xây đắp các cấu tạo dl khác nhau dựa trên relationships.

Nút (node):Là một trong các nhì đơn vị chức năng cơ bạn dạng tạo nên trang bị thị.Thường thay mặt cho những thực thể (tùy ở trong vào quan hệ miền).Các nút ít với những quan hệ phần lớn hoàn toàn có thể đựng các nằm trong tính.Đồ thị dễ dàng và đơn giản duy nhất chỉ có một nút ít nhất.Các quan hệ (relationships):Một quan hệ liên kết nhị nút ít.Các quan hệ tổ chức những nút thành những cấu trúc, có thể chấp nhận được biểu vật như là cùng với cây, danh sách, bạn dạng vật dụng hoặc thực thể các thành phần hỗn hợp.Mối quan hệ rất có thể tất cả nằm trong tính.Mối quan hệ tình dục liên kết nhì nút được bảo đảm an toàn phù hợp lệ trường đoản cú nút ít bước đầu mang đến nút dứt.Mối tình dục luôn luôn được đặt theo hướng, được xác minh theo phía lấn sân vào hoặc rời khỏi một nút ít => là yếu tố đặc biệt quan trọng đc sd Khi thông qua thiết bị thị.Một nút có thể có quan hệ giới tính cùng với chủ yếu nó.Loại mối quan hệ (relationship type): một mối quan hệ đề xuất có đúng mực loại quan hệ.Thuộc tính (property):Các ở trong tính là các cặp khóa - cực hiếm (key-value) nhưng khóa đó là một chuỗi string.Thuộc tính ko cất quý giá null, nếu một thuộc tính tất cả value = null thì ở trong tính đó coi nlỗi không mãi sau.Nhãn (label):Là tên một cấu tạo đồ vật thị nhằm team các node vào một tập hợp (bộ).Các nhãn định hình miền bằng phương pháp nhóm các nút thành các tập thích hợp mang tên khăng khăng (label name).Các nhãn có thể thêm, xóa vào thời hạn chạy, được áp dụng nhằm lưu lại tâm trạng trong thời điểm tạm thời cho những nút ít. Một nút ít hoàn toàn có thể gồm 0 hoặc các nhãn.Duyệt thiết bị thị (traversal): Là phương pháp truy vấn trang bị thị, điều hướng ban đầu từ một node mang đến những node liên quan.

1.2 Những quan niệm cơ phiên bản của Cypher

Tương quan thân phương pháp truy hỏi vấn cơ bạn dạng của Cypher và SQL

*

1.3 Định dạng của Cypher

Định dạng nút ít (nodes)(): nút ít rỗng(varname:NodeName): Nút có nhãn là NodeName, tên trở nên của nút ít là varname. Nút có thể không có tên trở nên.Truy vấn clean: Gợi ý sử dụng cách đánh tên nhãn theo kiểu CamelCase(viết hoa chữ cái đầu).Nên đánh tên nhãn mang tính chất gợi nhớ cho tới đối tượng người tiêu dùng, nhãn nút ít bắt buộc là một danh tự.Tên nhãn tất cả tách biệt chữ hoa chữ thường xuyên.Định dạng quan hệ nam nữ (relationship): mối quan hệ gồm nhãn là RELATIONSHIP_NAME cùng phát triển thành quan hệ là varname.Truy vấn clean: Gợi ý cách viết tên nhãn theo phong cách upper_case, tất cả được viết hoa với áp dụng vết gạch men nối thân những từ bỏ.Nhãn của các quan hệ giới tính buộc phải là hễ từ bỏ. Tên nhãn tất cả minh bạch chữ hoa chữ hay.Khóa ở trong tính, thay đổi, tyêu thích số, túng bấn danh và hàm:Ví dụ: title, size(), count(), firstName...Có tách biệt chữ hoa chữ hay.Truy vấn sạch: yêu cầu viết theo định dạng camelCase(chữ cái đầu viết thường).Mệnh đề:Ví dụ: MATCH, WHERE, WITH, UNWIND...Các mệnh đề ko khác nhau chữ hoa chữ hay.Truy vấn sạch: những mệnh đề bắt buộc được chế tạo kiểu dáng là tất cả những chữ in hoa, được đặt tại đầu từng mẫu để dễ nhìn đọc cùng dễ dàng truy vấn vấn.Keyword:Ví dụ: AND, OR, IN, NOT, DISTINCT, STARTS WITH, CONTAINS, ENDS WITH,...Các từ khoá ko riêng biệt chữ hoa chữ thường.Truy vấn sạch: Nên được viết in hoa, ko nên đặt tại đầu mẫu bắt đầu.Thụt mẫu và ngắt dòngMỗi mệnh đề nên được ngắt mẫu, hơn nữa, các kăn năn tróc nã vấn nhỏ, ON CREATE, ON MATCH cần được ngắt loại với thụt vào 2 khoảng tầm White.Sử dụng dấu ngoặc nhọn nhằm đội kân hận tróc nã vấn con. Nếu truy tìm vấn bé chỉ có 1 loại, không phải đặt nó xuống chiếc riêng hoặc thụt lề.Metacharacter:Dấu nháy đơn: bắt buộc dùng cho những quý hiếm chuỗi bằng chữ.Ví dụ: "Mats" quote: "statement" ", "Cypher"s a nice language"BackticksDùng nhằm tránh bay những ký kết tự có khoảng white hoặc cam kết tự quan trọng đặc biệt.Dấu chnóng phẩyDùng vào trường đúng theo có 1 tập các câu lệnh Cypher cùng cần phân bóc tách giữa những lệnh. Không cần cần sử dụng khi chỉ có một lệnh.Giá trị null cùng booleanNên được viết thường xuyên trong tầm nã vấn.Ví dụ: p.birthday = null, missingBirth = trueXử lý những mẫuNếu một mẫu(pattern) bị tràn dòng, đề xuất ngắt chiếc sau mũi thương hiệu, chưa hẳn trước.Ví dụ:

MATCH (:Person)--(:Company)--> (:Country)Sử dụng các nút với quan hệ ẩn danh còn nếu như không được áp dụng về sau trong truy vấn vấn.Ví dụ:MATCH (:Person)-<:Likes>->(technology:Technology) RETURN technologyCác mẫu đề xuất nối cùng nhau để tách lặp lại thay đổi.Các nút ít chọn cái tên hoặc các điểm tầm thường nên được đặt tại đầu mệnh đề MATCH. Các quan hệ mẫu đi (-->) yêu cầu nhằm trước các quan hệ chủng loại cho (Khoảng trắngKhông phải để khoảng chừng White thân không khí vị từ bỏ nhãn. Không có tầm khoảng White giữa những mẫu.Một khoảng White sinh sống phía 2 bên toán thù tử. Một khoảng Trắng sau lốt phẩy.Không bắt buộc để khoảng tầm white thân 2 lốt ngoặc solo.Dùng khoảng chừng White giữa truy nã vấn nhỏ với lốt ngoặc nhọn.

*

2. Các lệnh cơ bản vào Cypher

2.1 MATCH cùng RETURN

lấy ví dụ 1: Cho label Person có 1 node cùng với property name:"Jennifer"

Cypher command:

MATCH (p: Person name: "Jennifer") RETURN p

Đọc thêm tư liệu về MATCH

2.2 Create data với Cypher

Ví dụ 2: Tạo thêm 1 node gồm nhãn(label) Person với property name: "Mark"

Cypher command:

CREATE (p: Person name: "Mark") RETURN p

Lưu ý: lệnh return là ko nên. Node vừa tạo thành đã đứng tự do với chưa tồn tại mối quan hệ.

Để thiết lập mối quan hệ đến nó, ta đề nghị sử dụng MATCH nhằm rời tái diễn nút đã sinh sản.

Cypher command:

MATCH (jennifer: Person name: “Jennifer”)MATCH (mark: Person name: “Mark”)CREATE (jennifer)-->(mark)Lưu ý: Nếu không tồn tại 2 lệnh MATCH như trên, Cypher sẽ tự động hóa chế tạo các node new mà không chất vấn coi nó đang tồn tại trong csdl tốt chưa.

2.3 Update data với Cypher

Sử dụng MATCH ... SET nhằm thêm,sửa,xóa các thuộc tính(property) trong 1 nút ít.

ví dụ như 1: Thêm thuộc tính birthday cho Person Jennifer

Cypher command:

Cypher command:

MATCH (:Person name: “Jennifer”)-->(:Company {name: “Neo4j”)SET rel.start_year = date(year:2018)

2.4 Delete data với Cypher

Ví dụ 1: xóa quan hệ bằng hữu thân Jennifer cùng Mark

Cypher command:

MATCH (j: Person name: “Jennifer”)-->(m: Person name: “Mark”)DELETE friendlấy ví dụ 2: xóa nút Person có property name: "Mark"

Cypher command:

MATCH (p: Person {name: “Mark”) DELETE plấy một ví dụ 3: Xóa đôi khi nút ít với quan hệ của nó

Cypher command:

MATCH (p: Person name: “Mark”) DETACH DELETE p

2.5 Delete property với Cypher

REMOVE: xóa trọn vẹn thuộc tính khỏi nút ít cùng không tàng trữ nó nữa.

lấy một ví dụ 1: Xóa thuộc tính birthday của Jennifer

MATCH (p: Person name: “Jennifer”)REMOVE p.birthdaySET: Sử dụng tự khóa SET để tại vị cực hiếm thuộc tính thành null (trong quy mô csdl Neo4j không tàng trữ quý giá null).

Ví dụ 2: Đặt giá trị của nằm trong tính birthday thành null

MATCH (p: Person name: “Jennifer”)SET p.birthday = null

2.6 Merge trong Cypher

Merge triển khai chọn lọc cùng bình chọn tài liệu bao gồm sống thọ vào csdl hay là không, trước khi cnhát vào csdl.

lấy ví dụ 1: Chèn Person Mark vào csdl bởi Merge

Cypher command:

MERGE (mark: Person name: “Mark”)RETURN markNút ít mark sẽ sống thọ trong csdl trước kia, phải câu lệnh trên sẽ không còn chế tạo thêm nút ít mark new mà lại chỉ trả về nút ít mark vẫn tất cả.

Merge bên trên 1 côn trùng quan lại hệ: Sử dụng tương tự như nhỏng Create. Nếu mối quan hệ chưa được tùy chỉnh cấu hình, merge vẫn triển khai chế tác mới toàn thể (tuy nhiên nút sẽ tồn tại).

ví dụ như 2: Thực hiện nay chế tạo ra mối quan hệ bạn bè giữa Jennifer với Mark

Cypher command:

MATCH (j: Person name: “Jennifer”)MATCH (m: Person name: “Mark”)MERGE (j)-->(m)RETURN j, r, mSử dụng MATCH nhằm triển khai khớp dữ liệu trước khi sinh sản quan hệ. Mối quan hệ tình dục này đã làm được tạo ra trước đó nên Merge chỉ cần trả về dữ liệu vẫn mãi mãi.

Lưu ý: Nếu chỉ áp dụng MERGE nhưng mà không phù hợp dữ liệu đã dẫn tới sự việc lệnh MERGE chế tạo ra lại các nút sẽ chế tạo giả dụ không kiếm thấy mối quan hệ giữa những nút đó -> bị lặp tài liệu.

Xem thêm: Cách Dùng Cấu Trúc It Was Not Until Là Gì ? Cấu Trúc It Was Not Until Là Gì

2.7 Kết phù hợp MERGE, CREATE, MATCH với SET

Nếu muốn áp dụng MERGE nhằm bảo vệ ko tạo thành các bản sao, bên cạnh đó khởi tạo ra một trong những thuộc tính new hoặc cập nhật lại các ở trong tính khác giả dụ nó chỉ được khớp, trong trường đúng theo này, ta thực hiện ON CREATE hoặc ON MATCH với SET.

Cypher command:

Cypher comm& before:

MATCH (person: Person name: “Jennifer”)RETURN personCypher comm& with WHERE:

MATCH (person: Person)WHERE person.name = “Jennifer”RETURN personCả hai truy vấn vấn phần đa trả về cùng 1 công dụng. WHERE hoàn toàn có thể làm cho những hơn thế nữa.

WHERE NOT: trả về nằm trong tính không hợp cùng với mẫu.

Cypher command:

MATCH (person: Person)WHERE NOT person.name = “Jennifer”RETURN personHình như, WHERE còn rất có thể đi cùng rất AND, OR, XOR.

Truy vấn vào một phạm vi một mực cùng với WHERE:

MATCH (person: Person)WHERE 1999 WHERE exists(property): chất vấn xem nằm trong tính gồm vĩnh cửu trong nút hoặc một quan hệ bao gồm lâu dài vào mẫu mã.

Cypher command:

MATCH (varname: NodeLabel)WHERE exists(varname.property)RETURN varnameWHERE ... IN: Kiểm tra coi quý hiếm thuộc tính có phải là quý hiếm trong danh sách vẫn mang đến.

Cypher command:

MATCH (varname: NodeLabel)WHERE varname.property IN your_arrayRETURN varname

2.9 Cypher giải pháp xử lý chuỗi string

STARTS WITH: tìm chuỗi ban đầu bởi chuỗi chúng ta hướng dẫn và chỉ định.

MATCH (varname: NodeLabel)WHERE varname.property STARTS WITH your_stringRETURN varname.propertyCONTAINS: chất vấn coi chuỗi được hướng dẫn và chỉ định gồm cần 1 phần của cực hiếm trực thuộc tính ko.

MATCH (varname: NodeLabel)WHERE varname.property CONTAINS your_stringRETURN varname.propertyENDS WITH: tra cứu chuỗi gồm hoàn thành bởi chuỗi bạn chỉ định.

MATCH (varname: NodeLabel)WHERE varname.property ENDS WITH your_stringRETURN varname.propertyRegular expressions: chất vấn 1 phần giá trị của chuỗi bởi biểu thức thiết yếu quy.

Ví dụ: Tìm tất cả những nút ít Person bao gồm bước đầu bởi "Jo".

Cypher command:

MATCH (p: Person)WHERE p.name =~ "Jo.*"RETURN p.name

2.10 Optional patterns trong Cypher

Trả về kết quả kể cả khi bọn chúng không phù hợp cùng với cục bộ mẫu hoặc tất cả các tiêu chí. Nó tựa như như outer join trong Squốc lộ.

OPTIONAL MATCH: trường hợp không tìm thấy tác dụng, mặt hàng được khớp vẫn trả về null.

Ví dụ: Tìm những người mang tên ban đầu bởi "J" cùng thao tác làm việc vào chủ thể.

MATCH (p: Person) WHERE p.name STARTS WITH "J"OPTIONAL MATCH (p)-<:WORK_FOR>->(c:Company)RETURN p.name, c.nameLệnh Cypher bên trên đang trả về toàn bộ những người dân có tên bắt đầu bởi "J", và tên đơn vị mà người ta đã thao tác. Những fan ko thao tác sinh hoạt đơn vị, tên đơn vị mà người ta làm việc đã trả về cực hiếm null.

2.11 Các mẫu phức tạp

Ví dụ: Tìm những người dân đều thích technology đồ gia dụng thị ko kể Jennifer cùng họ là bạn của Jennifer.

Xem thêm: Electronic Là Gì - Nghĩa Của Từ Electronic

MATCH (j: Person name: “Jennifer”)-<:LIKES>->(:Technology name: “Graph”)lấy ví dụ như trên áp dụng vết phẩy để nối các mẫu mã, vết phẩy có thể chấp nhận được xâu chuỗi những chủng loại lại với nhau (tựa như WHERE exists(pattern)). Tuy nhiên cấu tạo này rất có thể thêm những chủng loại khác biệt linch hoạt hơn vào đồ vật thị.

Trên đấy là nội dung bài viết tổng quan về Cypher tương tự như các lệnh nhằm tầm nã vấn Cypher căn uống phiên bản cơ mà mình đã tổng phù hợp được. Hi vọng bài viết này để giúp đỡ chúng ta vào những bước đầu tiên tò mò ngôn ngữ truy vấn vấn bắt đầu này. Chúc chúng ta có một ngày thao tác hiệu quả